From 1639f76cfefb0b976bdde278e1c24b0d6e4dc0fd Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:22:15 +1000 Subject: [PATCH 01/17] chore: scaffold repo per the k8s feature/provider-dev reference pattern - package.json (type module, node >=20, @stackql/provider-utils 0.7.6 latest) - bin/ wrappers mirrored from stackql-provider-k8s; split.mjs rewritten for multi-source split driven by provider-dev/scripts/service_rules.mjs - bin/fetch-specs.sh + provider-dev/scripts/pin_specs.mjs (pin/record/check) - directory skeleton per CLAUDE.md layout - initial README in the k8s style with the positioning note, deprecation rule and sibling notes Co-Authored-By: Claude Fable 5 --- .gitignore | 7 + .npmrc | 1 + CLAUDE.md | 155 ++++++ README.md | 67 ++- bin/fetch-specs.sh | 40 ++ bin/generate-docs.mjs | 44 ++ bin/generate-docs.sh | 63 +++ bin/generate-mappings.mjs | 42 ++ bin/generate-mappings.sh | 83 +++ bin/generate-provider.mjs | 70 +++ bin/generate-provider.sh | 134 +++++ bin/normalize.mjs | 56 ++ bin/normalize.sh | 9 + bin/server-status.sh | 78 +++ bin/split.mjs | 112 ++++ bin/split.sh | 9 + bin/start-server.sh | 132 +++++ bin/stop-server.sh | 43 ++ bin/test-meta-routes.cjs | 458 ++++++++++++++++ package-lock.json | 573 +++++++++++++++++++++ package.json | 41 ++ provider-dev/config/.gitkeep | 0 provider-dev/docgen/provider-data/.gitkeep | 0 provider-dev/downloaded/.gitkeep | 0 provider-dev/openapi/src/nvidia/.gitkeep | 0 provider-dev/scripts/pin_specs.mjs | 86 ++++ provider-dev/source/.gitkeep | 0 tests/fixtures/.gitkeep | 0 tests/integration/.gitkeep | 0 website/.gitkeep | 0 30 files changed, 2301 insertions(+), 2 deletions(-) create mode 100644 .npmrc create mode 100644 CLAUDE.md create mode 100644 bin/fetch-specs.sh create mode 100644 bin/generate-docs.mjs create mode 100644 bin/generate-docs.sh create mode 100644 bin/generate-mappings.mjs create mode 100644 bin/generate-mappings.sh create mode 100644 bin/generate-provider.mjs create mode 100644 bin/generate-provider.sh create mode 100644 bin/normalize.mjs create mode 100644 bin/normalize.sh create mode 100644 bin/server-status.sh create mode 100644 bin/split.mjs create mode 100644 bin/split.sh create mode 100644 bin/start-server.sh create mode 100644 bin/stop-server.sh create mode 100644 bin/test-meta-routes.cjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 provider-dev/config/.gitkeep create mode 100644 provider-dev/docgen/provider-data/.gitkeep create mode 100644 provider-dev/downloaded/.gitkeep create mode 100644 provider-dev/openapi/src/nvidia/.gitkeep create mode 100644 provider-dev/scripts/pin_specs.mjs create mode 100644 provider-dev/source/.gitkeep create mode 100644 tests/fixtures/.gitkeep create mode 100644 tests/integration/.gitkeep create mode 100644 website/.gitkeep diff --git a/.gitignore b/.gitignore index 872d5f6..343bfcb 100644 --- a/.gitignore +++ b/.gitignore @@ -141,3 +141,10 @@ dist vite.config.js.timestamp-* vite.config.ts.timestamp-* .vite/ + +# StackQL binary and server logs +stackql +stackql.exe +stackql-server.log +meta-routes*.log +.stackql/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..691d217 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +@jsr:registry=https://npm.jsr.io \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c3e6a0e --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,155 @@ +# CLAUDE.md + +## Project + +This repository builds and documents the `nvidia` provider for [StackQL](https://github.com/stackql/stackql), enabling SQL-based query and provisioning operations against the NVIDIA NGC platform - organizations, users, the private registry and catalog (containers, models, resources, helm charts), and NVIDIA Cloud Functions (NVCF: functions, versions, deployments, cluster groups, GPUs, queues). + +**Sibling scope notes, recorded so they are never relitigated**: Run:ai (published OpenAPI, its own control plane) and DGX Cloud Lepton are reserved future siblings, out of scope here. The NIM/API-catalog inference endpoints (`integrate.api.nvidia.com`, OpenAI-compatible) are a data-plane LLM surface, not a control plane - out of scope. NVCF function *invocation* is scoped by the inventory (see design principles); streaming and gRPC invocation forms are skipped per the standing exclusions. + +The provider is built using the `@stackql/provider-utils` package and follows the repository pattern established in [`stackql-registry/stackql-provider-k8s`](https://github.com/stackql-registry/stackql-provider-k8s/tree/feature/provider-dev) (branch `feature/provider-dev`). Sibling-build NOTES.md findings are reused, not re-derived - dockerhub (registry-shaped resources, public-read surface), proxmox/vsphere (mock-first CI where live access is gated), snowflake/prefect (body-driven invocation decision frameworks), oci (deprecation-aware mapping). + +## Positioning context + +There is no Terraform provider for the NGC/NVCF control plane - and the reason is structural, not neglect: the Terraform model requires a Go SDK to vendor, and NVIDIA's ecosystem is Python-first (the NGC CLI and `ngcsdk` are Python; no stable Go SDK exists). StackQL's build chain has no language binding in it - spec -> provider - so this domain is reachable where the resource/state model cannot follow without someone first authoring a Go client. This provider is the proof case for that argument; the README states it once, factually, and the docs otherwise lead with capability statements and runnable examples, never editorializing. The query surfaces that matter: GPU and cluster-group inventory, NVCF function fleet state, registry/model estate audit, and org membership - the AI infrastructure control plane as data. + +## Spec sources: one published, one harvested + +Two sources, resolved and pinned in phase 1: + +1. **NVCF** - a published OpenAPI spec (linked from the NVCF documentation, with a companion Postman collection), covering function management, deployments, cluster groups and GPUs, queue details, and authorizations. Record the canonical spec URL, fetch, validate, pin. Management operations are served from `api.ngc.nvidia.com/v2/nvcf`; invocation/queue-detail operations from `api.nvcf.nvidia.com` - two hosts, carried per operation (the elasticsearch per-service-server precedent, here per-method-group). +2. **NGC core** - the API reference at `docs.ngc.nvidia.com/api/` is a spec-driven explorer whose underlying definition is currently flagged as lacking a standard version field. Phase 1 harvests that definition, and `clean_specs.mjs` normalizes it (stamp/repair the version field, whatever else swagger-parser flags) with a full fix report. **Fallback, as a recorded decision only if the harvest proves unusable**: derive the NGC core spec from the `ngcsdk` Python SDK (archetype 2) - the decision and evidence go in `provider-dev/config/spec_pin.json` either way. + +**Deprecation-aware mapping**: NVIDIA publishes a formal NGC API deprecation schedule - notably, team-scoped paths (`/teams/{team}` segments) end September 2026. Org-scoped paths are mapped; team-scoped twins are skipped with a `deprecated` reason code citing the schedule. The pin-and-diff CI job watches the deprecation page as well as the specs. + +## Design principles + +- **Bearer auth, NGC Personal API Key** - `Authorization: Bearer` with `NGC_API_KEY`. The docs cover key generation with the required service scopes (Private Registry, and Cloud Functions at the *organization* level - NVIDIA's own docs warn team-level roles break NVCF keys), and note the legacy-key type exists but personal keys are the documented path. Key scopes are static (no rotation of scope) - noted for users. +- **Org scoping** - registry and org resources live under `/v2/org/{org_name}/...`; `org_name` is the universal scoping parameter (the `compartmentId` role). Catalog/public reads may work without org scope (and possibly without auth - the dockerhub public-read precedent; confirm in phase 1 and, if so, lead the docs with the zero-setup entry point). +- **NVCF is the flagship service** - functions and versions (CRUD), deployment specifications (GPU type, instance counts - deep config blobs), cluster groups and GPUs (`SELECT` inventory - the GPU estate demo), queues, and authorizations (function sharing as the grants-as-data pattern: authorize = `INSERT`, list = `SELECT`, revoke = `DELETE`). +- **Invocation is scoped, not assumed** - HTTP-polling invocation (`invoke` returning a request ID, poll for status) may map as `EXEC` plus a status `SELECT` per the proxmox async precedent if the shapes are clean; streaming/gRPC forms are reason-coded skips. The inventory decides with the snowflake/prefect frameworks; management-first is the v1 posture. +- **Registry resources are metadata** - container images, models, resources, and helm charts map as metadata reads (and writes where the API supports them); artifact binary push/pull is the registry data plane, skipped per the standing exclusions (the dockerhub scope precedent). +- **Pagination is an inventory question** - NGC/NVCF pagination idioms are recorded per resource from the specs and confirmed live; no assumption carries from siblings. + +## Toolchain rules + +- Use the **latest** `@stackql/provider-utils` (see [npm](https://www.npmjs.com/package/@stackql/provider-utils)). Check for a newer version before starting work; do not pin to an old minor. +- Node.js >= 20. `type: module` in package.json. +- Wrap the two CLI entry points (`provider-dev-utils.mjs`, `docgen-utils.mjs`) as npm scripts, invoked through `node` (not `.bin` shims). Pass flags with npm's `--` separator. +- A local `stackql` binary is required for testing (`$STACKQL`, `./stackql`, or on `PATH`). + +## Repository layout + +``` +provider-dev/ + downloaded/ # pinned NVCF spec + harvested NGC core definition + source/ # cleaned + split per-service specs (build artifacts) + config/ # spec pins (incl harvest/fallback decision), service names, all_services.csv + openapi/src/nvidia/ # generated provider output + scripts/ # harvest_ngc_spec.mjs, clean_specs.mjs, map_operations.mjs, pre_normalize.mjs, post_process.mjs +bin/ # thin shell/node wrappers for npm scripts (mirror k8s repo) +tests/ + integration/ # mock NGC/NVCF servers (both hosts) + row-level assertions + fixtures/ # seed definitions for UAT objects + smoke_test.py # pystackql smoke suite +website/ # Docusaurus 3.10 microsite +CLAUDE.md +README.md # k8s-README style, steps 0-8, incl the Go-SDK positioning note and sibling notes +``` + +## Build pipeline + +Every step is deterministic and re-runnable. Manual mapping decisions are applied as rules in scripts, never hand-edits to CSVs or specs. Validate-and-fail-without-writing is the standard for every script. + +### 0. Acquire, pin, clean + +`bin/fetch-specs.sh` + `harvest_ngc_spec.mjs` per the spec-sources section; `clean_specs.mjs` normalizes the harvested definition (version-field repair first) and validates both sources with `@apidevtools/swagger-parser`, with per-source fix reports. Fail without writing on anything unfixable; the archetype-2 fallback is a recorded decision, not a silent switch. + +### 1. Split into service specs + +`npm run split` with `--provider-name nvidia`. Candidate service split (final decision from the endpoint inventory, recorded in `provider-dev/config/service_names.json`): + +`orgs` (organizations, users, memberships), `registry` (container images, models, resources, helm charts - metadata), `catalog` (public catalog reads, if distinct from registry), `nvcf_functions` (functions, versions, authorizations), `nvcf_deployments` (deployments, cluster groups, GPUs), `nvcf_queues` (queue details, position), `usage` (any billing/measurement surface found in the harvest, if present) + +### 2. Generate mappings + +`npm run generate-mappings`, then `node provider-dev/scripts/map_operations.mjs`: + +| Operation pattern | StackQL verb | Resource / method | +|---|---|---| +| GET collection | `SELECT` | `.list` (envelope/objectKey per resource from the specs) | +| GET single | `SELECT` | `.get` | +| POST create | `INSERT` | `.create` | +| PATCH/PUT update (semantics per resource; keycloak REPLACE warning applies) | `UPDATE`/`REPLACE` per finding | `.update` | +| DELETE | `DELETE` | `.delete` | +| function authorization add / remove | `INSERT` / `DELETE` | `nvcf_functions.authorizations` - grants-as-data | +| deployment create / update / delete | `INSERT`/`UPDATE`/`DELETE` | `nvcf_deployments.deployments` (deployment specs as blobs) | +| HTTP-polling invocation (if scoped in) | `EXEC` + status `SELECT` | per the proxmox async precedent | +| streaming/gRPC invocation, artifact binary transfer | skipped | reason-coded | +| team-scoped path twins | skipped | `deprecated`, citing the schedule | + +Resource names are plural snake_case (`functions`, `function_versions`, `cluster_groups`, `gpus`, `models`, `helm_charts`), consistent with the sibling builds. The script validates: every generator-relevant operation mapped or explicitly skipped with a reason code, method names unique per resource, overloaded SQL verbs have unique required-parameter signatures. Fail without writing on any violation. + +### 3. Normalize + +`node provider-dev/scripts/pre_normalize.mjs` (harvest-specific quirks from the clean report), then `npm run normalize -- --api-dir provider-dev/source`. Expect deployment specifications, model metadata, and GPU/cluster attributes lowered to JSON-blob columns addressed with `json_extract`. + +### 4. Generate the provider + +```bash +rm -rf provider-dev/openapi/* +npm run generate-provider -- \ + --provider-name nvidia \ + --input-dir provider-dev/source \ + --output-dir provider-dev/openapi/src/nvidia \ + --config-path provider-dev/config/all_services.csv \ + --provider-config '{"auth": {"type": "bearer", "credentialsenvvar": "NGC_API_KEY"}}' \ + --naive-req-body-translate \ + --overwrite +``` + +Servers carried per operation group (`api.ngc.nvidia.com` / `api.nvcf.nvidia.com` - both fixed literals, no dotted-host concern). Pagination config per the inventory findings, at service level. Then `node provider-dev/scripts/post_process.mjs` for whatever the integration tests surface. + +### 5. Test + +Same four layers as the k8s repo, in order - mock-first for NVCF, per the proxmox/vsphere precedent, because NVCF requires org-level enablement that a free NGC account may lack: + +1. **Offline validation** - local file registry, `SHOW SERVICES/RESOURCES/METHODS`, `DESCRIBE EXTENDED` on representative resources (`nvidia.nvcf_functions.functions`, `nvidia.nvcf_deployments.gpus`, `nvidia.registry.models`) +2. **Meta-route tests** - `npm run start-server` / `npm run test-meta-routes -- nvidia --verbose` / `npm run stop-server` +3. **Integration tests** - `tests/integration/mock_nvidia_server.mjs` (both hosts) serving real wire shapes (captured from live where accessible, from documentation examples otherwise, and marked accordingly); assert row-level results per archetype: list unwrapping per resource, org-scoped routing, a function/version `INSERT`/`UPDATE`/`DELETE` lifecycle with a deployment round trip, an authorization grants round trip, and the bearer key throughout +4. **Smoke tests** - `tests/smoke_test.py` (pystackql), tiered by access: catalog/public reads (and org/registry reads with a free NGC account) run whenever credentials allow; NVCF smokes run only where the org has Cloud Functions enabled, skip-with-notice otherwise (the vsphere capacity-degradation pattern); any function actually deployed in a smoke uses the smallest instance spec, `stackql-smoke-` naming, and is deleted within the run, breadcrumbs swept first + +Never run tests against a production organization. + +### 6. Publish + +Push the `nvidia` dir to `providers/src` in a feature branch of [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry) and follow the registry release flow. Verify with `registry pull nvidia` against the dev registry. + +### 7. Docs microsite + +`website/` is Docusaurus 3.10 following the shared architecture: shared `stackql/docusaurus-config` vendored to `.shared-config/`; site-local files limited to `website/provider.js` (`providerName = 'nvidia'`, `providerTitle = 'NVIDIA NGC'`), thin config wrappers, shared components, and `static/CNAME` pinning `nvidia-provider.stackql.io`. + +- Author `headerContent1.txt` / `headerContent2.txt` in `provider-dev/docgen/provider-data/` (installation, NGC Personal API Key generation with the org-level role warning, `NGC_API_KEY`, the org scoping pattern, the NVCF-enablement note, sibling notes, example queries) +- `npm run generate-docs`, then `node website/scripts/sanitize-docs.mjs` +- Publish via GitHub Pages, DNS: `nvidia-provider.stackql.io` CNAME -> `stackql.github.io.` + +Lead the docs examples with the queries this provider exists for: GPU and cluster-group inventory (what GPU capacity exists, where - the estate demo), NVCF function fleet state (functions by status, version, deployment spec, min/max instances - the GPU FinOps angle), function sharing audit (the authorizations grants query), model and container estate reports (registry contents by org, size, update recency), and one cross-provider join for the campaign: NVCF GPU allocations alongside the hyperscaler GPU instance inventory (`aws`/`azure`/`google`/`oci`) - the whole GPU estate, cloud and NGC, in one `SELECT`. + +### 8. CI + +GitHub Actions: acquire + pin check + clean + build, integration tests against the mock, meta-route tests, the tiered smokes (public/registry ungated where a free-account secret exists; NVCF secret-gated). The drift job watches both specs and the deprecation schedule page. Model on the k8s repo's `build-and-test.yml`. + +## Writing conventions + +- README and docs copy: measured, precise, no hyperbole. Third-person or passive framing for descriptive copy. The Go-SDK/Terraform structural point is stated once, factually, in the README positioning note - everywhere else, capability statements and runnable examples, never editorializing. +- No em dashes; use `-`. No characters not on a QWERTY keyboard; use `->` for arrows. +- Sample queries follow the k8s README style: realistic, runnable, `json_extract` for nested fields. + +## Non-negotiables + +1. Latest `@stackql/provider-utils`, always +2. The k8s `feature/provider-dev` repo is the reference pattern; sibling-build NOTES.md findings are reused, not re-derived - deviate only with a documented reason in the README +3. The harvest-vs-fallback decision for the NGC core spec is recorded with evidence - never a silent archetype switch +4. Team-scoped deprecated paths are never mapped - the deprecation schedule is a build input +5. Deterministic scripts, never hand-edits to derived artifacts +6. Every regeneration is followed by the integration test suite before commit +7. Smoke tests never leave a deployed function running - a failed run must not leave GPU-billing resources behind diff --git a/README.md b/README.md index 59e6732..674366e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,65 @@ -# stackql-provider-nvidia -StackQL provider for NVIDIA +# `nvidia` provider for [`stackql`](https://github.com/stackql/stackql) + +StackQL provider for the NVIDIA NGC platform - organizations, users, the private registry and catalog (containers, models, resources, helm charts), and NVIDIA Cloud Functions (NVCF: functions, versions, deployments, cluster groups, GPUs, queues). Query and provision the NGC control plane with SQL: GPU and cluster-group inventory, NVCF function fleet state, registry and model estate audits, and org membership. + +## Positioning + +There is no Terraform provider for the NGC/NVCF control plane. The reason is structural: the Terraform model requires a Go SDK to vendor, and NVIDIA's ecosystem is Python-first (the NGC CLI and `ngcsdk` are Python; no stable Go SDK exists). StackQL's build chain is spec -> provider, with no language binding in between, so this control plane is reachable without anyone first authoring a Go client. + +## Design Principles + +- **Bearer auth with an NGC Personal API Key** - `Authorization: Bearer` with the key in `NGC_API_KEY`. Keys need the Private Registry service scope and, for NVCF, Cloud Functions at the organization level (NVIDIA's own docs warn that team-level roles break NVCF keys). +- **Org scoping** - registry and org resources are scoped by `org_name`; it is the universal scoping parameter. +- **NVCF is the flagship service** - functions and versions (CRUD), deployment specifications, cluster groups and GPUs (`SELECT` inventory), queues, and authorizations (function sharing: authorize = `INSERT`, list = `SELECT`, revoke = `DELETE`). +- **Deprecation-aware mapping** - NVIDIA publishes a formal NGC API deprecation schedule; team-scoped paths (`/team/{team}` segments) end September 2026. Org-scoped paths are mapped; team-scoped twins are skipped with a `deprecated` reason code citing the schedule. +- **Registry resources are metadata** - container images, models, resources, and helm charts map as metadata reads (and writes where the API supports them); artifact binary push/pull is the registry data plane and out of scope. +- **Deterministic builds** - every step is a re-runnable script; manual mapping decisions are rules in scripts, never hand-edits to derived artifacts. + +Sibling-build findings are reused, not re-derived: dockerhub (registry-shaped resources, public-read classification), proxmox (async polling, mock-first CI), vsphere (skip-with-notice access gating), snowflake/prefect (invocation scoping frameworks), keycloak (REPLACE-vs-UPDATE semantics), oci (deprecation-aware mapping). + +## Prerequisites + +- Node.js >= 20 +- npm +- a local `stackql` binary for testing (`$STACKQL`, `./stackql`, or on `PATH`) +- an NGC account with a Personal API Key in `NGC_API_KEY` (live tests only; catalog reads and the mock-backed suites run without one) + +```bash +npm install +``` + +## 1. Acquire, Pin, Clean the Upstream Specs + +Two spec sources: + +1. **NVCF** - a published OpenAPI spec served by the NVCF API itself. Management operations are served from `api.ngc.nvidia.com/v2/nvcf`; invocation and queue-detail operations from `api.nvcf.nvidia.com` - two hosts, carried per operation group. +2. **NGC core** - the API reference at `docs.ngc.nvidia.com/api/` is a spec-driven explorer over per-service definitions; `harvest_ngc_spec.mjs` retrieves the definitions behind it and `clean_specs.mjs` normalizes them with a full fix report. + +```bash +npm run fetch-specs # download NVCF spec + harvest NGC definitions, record pins +npm run clean-specs # validate + repair, write provider-dev/downloaded/cleaned + fix report +npm run fetch-specs -- --check # CI drift check against the recorded pins +``` + +Pins (URL, date, sha256) live in `provider-dev/config/spec_pin.json`, including the harvest-vs-fallback decision for the NGC core source. The downloaded specs are committed: NVIDIA versions neither URL, so the pinned bytes in-repo are the reproducible input. + +## 2. Split into Service Specs + +```bash +npm run split -- --provider-name nvidia --overwrite +``` + +Service assignment is a deterministic rule set in `provider-dev/scripts/service_rules.mjs`; the service list is recorded in `provider-dev/config/service_names.json`. + +## 3. Generate Mappings + +```bash +npm run generate-mappings -- --provider-name nvidia --input-dir provider-dev/source --output-dir provider-dev/config +node provider-dev/scripts/map_operations.mjs +``` + +`map_operations.mjs` populates the StackQL resource/method/verb columns in `provider-dev/config/all_services.csv`, driven by rules. It validates that every generator-relevant operation is mapped or explicitly skipped with a reason code, that method names are unique per resource, and that overloaded SQL verbs have unique required-parameter signatures - and fails without writing on any violation. + +## License + +MIT diff --git a/bin/fetch-specs.sh b/bin/fetch-specs.sh new file mode 100644 index 0000000..2f6124d --- /dev/null +++ b/bin/fetch-specs.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# +# Acquire both upstream spec sources into provider-dev/downloaded/: +# 1. NVCF - published OpenAPI spec served by the NVCF API itself +# 2. NGC - per-service definitions harvested from the API explorer at +# docs.ngc.nvidia.com/api/ (harvest_ngc_spec.mjs) +# then record/verify pins (URL, date, sha256) in provider-dev/config/spec_pin.json. +# +# Re-runnable. Pass --check to verify current downloads against the recorded +# pins without writing anything (CI drift job). + +set -euo pipefail + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" +DOWNLOAD_DIR="$REPO_ROOT/provider-dev/downloaded" + +NVCF_SPEC_URL="https://api.nvcf.nvidia.com/v3/openapi" + +CHECK_MODE="" +if [ "${1:-}" = "--check" ]; then + CHECK_MODE="--check" +fi + +mkdir -p "$DOWNLOAD_DIR" + +echo "Fetching NVCF OpenAPI spec: $NVCF_SPEC_URL" +TMP_FILE="$(mktemp)" +curl -sSf "$NVCF_SPEC_URL" -o "$TMP_FILE" +# fail without writing if the payload is not parseable JSON with an openapi field +node -e "const s=JSON.parse(require('fs').readFileSync('$TMP_FILE','utf8')); if(!s.openapi||!s.paths){console.error('NVCF payload is not an OpenAPI document');process.exit(1);} console.log('NVCF spec ok: openapi='+s.openapi+' version='+(s.info&&s.info.version)+' paths='+Object.keys(s.paths).length);" +mv "$TMP_FILE" "$DOWNLOAD_DIR/nvcf_openapi.json" + +echo "Harvesting NGC definitions from docs.ngc.nvidia.com/api/" +node "$REPO_ROOT/provider-dev/scripts/harvest_ngc_spec.mjs" + +echo "Recording/verifying pins" +node "$REPO_ROOT/provider-dev/scripts/pin_specs.mjs" $CHECK_MODE + +echo "Done. Downloaded specs in $DOWNLOAD_DIR" diff --git a/bin/generate-docs.mjs b/bin/generate-docs.mjs new file mode 100644 index 0000000..4be9b84 --- /dev/null +++ b/bin/generate-docs.mjs @@ -0,0 +1,44 @@ +#!/usr/bin/env node + +import { docgen } from '@stackql/provider-utils'; + +async function generateDocs() { + // Get command line arguments + const args = process.argv.slice(2); + const getArg = (flag) => { + const index = args.indexOf(flag); + return index !== -1 ? args[index + 1] : null; + }; + + const providerName = getArg('--provider-name'); + const providerDir = getArg('--provider-dir'); + const outputDir = getArg('--output-dir'); + const providerDataDir = getArg('--provider-data-dir'); + + if (!providerName || !providerDir || !outputDir || !providerDataDir) { + console.error('Error: Missing required arguments'); + console.error('Usage: node generate-docs.mjs --provider-name NAME --provider-dir DIR --output-dir DIR --provider-data-dir DIR'); + process.exit(1); + } + + try { + console.log(`Generating docs for provider: ${providerName}`); + console.log(`Provider directory: ${providerDir}`); + console.log(`Output directory: ${outputDir}`); + console.log(`Provider data directory: ${providerDataDir}`); + + const result = await docgen.generateDocs({ + providerName, + providerDir, + outputDir, + providerDataDir + }); + + console.log('Documentation generated successfully:', result); + } catch (error) { + console.error('Error generating documentation:', error); + process.exit(1); + } +} + +generateDocs(); \ No newline at end of file diff --git a/bin/generate-docs.sh b/bin/generate-docs.sh new file mode 100644 index 0000000..0602e15 --- /dev/null +++ b/bin/generate-docs.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# Exit on error +set -e + +# Get the script directory for relative paths +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --provider-name) + PROVIDER_NAME="$2" + shift 2 + ;; + --provider-dir) + PROVIDER_DIR="$2" + shift 2 + ;; + --output-dir) + OUTPUT_DIR="$2" + shift 2 + ;; + --provider-data-dir) + PROVIDER_DATA_DIR="$2" + shift 2 + ;; + --help) + echo "Usage: generate-docs.sh [OPTIONS]" + echo "" + echo "Options:" + echo " --provider-name NAME Provider name (default: snowflake)" + echo " --provider-dir DIR Provider directory path (default: $PROVIDER_DIR)" + echo " --output-dir DIR Output directory for docs (default: $OUTPUT_DIR)" + echo " --provider-data-dir DIR Provider data directory (default: $PROVIDER_DATA_DIR)" + echo " --help Show this help message" + exit 0 + ;; + *) + echo "Unknown option: $1" + echo "Use --help for usage information" + exit 1 + ;; + esac +done + +echo "šŸ“š Generating documentation using @stackql/provider-utils..." + +# Run the Node.js script with arguments +node --experimental-modules "$SCRIPT_DIR/generate-docs.mjs" \ + --provider-name "$PROVIDER_NAME" \ + --provider-dir "$PROVIDER_DIR" \ + --output-dir "$OUTPUT_DIR" \ + --provider-data-dir "$PROVIDER_DATA_DIR" + +# Check if command succeeded +if [ $? -ne 0 ]; then + echo "āŒ Documentation generation failed" + exit 1 +fi + +echo "āœ… Documentation generated successfully" \ No newline at end of file diff --git a/bin/generate-mappings.mjs b/bin/generate-mappings.mjs new file mode 100644 index 0000000..f711fbc --- /dev/null +++ b/bin/generate-mappings.mjs @@ -0,0 +1,42 @@ +#!/usr/bin/env node + +import { providerdev } from '@stackql/provider-utils'; + +async function generateMappings() { + // Get command line arguments + const args = process.argv.slice(2); + const getArg = (flag) => { + const index = args.indexOf(flag); + return index !== -1 ? args[index + 1] : null; + }; + + const providerName = getArg('--provider-name'); + const inputDir = getArg('--input-dir'); + const outputDir = getArg('--output-dir'); + const verbose = args.includes('--verbose'); + + if (!providerName || !inputDir || !outputDir) { + console.error('Error: Missing required arguments'); + console.error('Usage: node generate-mappings.mjs --provider-name NAME --input-dir DIR --output-dir DIR [--verbose]'); + process.exit(1); + } + + try { + console.log(`Analyzing OpenAPI specs for provider: ${providerName}`); + console.log(`Input directory: ${inputDir}`); + console.log(`Output directory: ${outputDir}`); + + const result = await providerdev.analyze({ + inputDir, + outputDir, + verbose + }); + + console.log('Analysis completed successfully:', result); + } catch (error) { + console.error('Error analyzing OpenAPI specs:', error); + process.exit(1); + } +} + +generateMappings(); \ No newline at end of file diff --git a/bin/generate-mappings.sh b/bin/generate-mappings.sh new file mode 100644 index 0000000..a4921c1 --- /dev/null +++ b/bin/generate-mappings.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash + +# Exit on error +set -e + +# Get the script directory for relative paths +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" + +# Default values +PROVIDER_NAME="" +INPUT_DIR="" +OUTPUT_DIR="" +VERBOSE=false + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --provider-name) + PROVIDER_NAME="$2" + shift 2 + ;; + --input-dir) + INPUT_DIR="$2" + shift 2 + ;; + --output-dir) + OUTPUT_DIR="$2" + shift 2 + ;; + --verbose) + VERBOSE=true + shift + ;; + --help) + echo "Usage: generate-mappings.sh [OPTIONS]" + echo "" + echo "Options:" + echo " --provider-name NAME Provider name (required)" + echo " --input-dir DIR Input directory containing split OpenAPI files (required)" + echo " --output-dir DIR Output directory for mapping file (required)" + echo " --verbose Enable verbose output" + echo " --help Show this help message" + exit 0 + ;; + *) + echo "Unknown option: $1" + echo "Use --help for usage information" + exit 1 + ;; + esac +done + +# Check required arguments +if [ -z "$PROVIDER_NAME" ] || [ -z "$INPUT_DIR" ] || [ -z "$OUTPUT_DIR" ]; then + echo "Error: Missing required arguments" + echo "Use --help for usage information" + exit 1 +fi + +echo "šŸ” Analyzing OpenAPI specs to generate mappings..." +echo "Provider: $PROVIDER_NAME" +echo "Input Directory: $INPUT_DIR" +echo "Output Directory: $OUTPUT_DIR" + +# Build command arguments +ARGS=("--provider-name" "$PROVIDER_NAME" "--input-dir" "$INPUT_DIR" "--output-dir" "$OUTPUT_DIR") + +if [ "$VERBOSE" = true ]; then + ARGS+=("--verbose") + echo "Verbose: Yes" +fi + +# Run the Node.js script with arguments +node --experimental-modules "$SCRIPT_DIR/generate-mappings.mjs" "${ARGS[@]}" + +# Check if command succeeded +if [ $? -ne 0 ]; then + echo "āŒ Mapping generation failed" + exit 1 +fi + +echo "āœ… Mapping file generated successfully at: $OUTPUT_DIR/all_services.csv" \ No newline at end of file diff --git a/bin/generate-provider.mjs b/bin/generate-provider.mjs new file mode 100644 index 0000000..ddd27bd --- /dev/null +++ b/bin/generate-provider.mjs @@ -0,0 +1,70 @@ +#!/usr/bin/env node + +import { providerdev } from '@stackql/provider-utils'; + +async function generateProvider() { + // Get command line arguments + const args = process.argv.slice(2); + const getArg = (flag) => { + const index = args.indexOf(flag); + return index !== -1 ? args[index + 1] : null; + }; + + const providerName = getArg('--provider-name'); + const inputDir = getArg('--input-dir'); + const outputDir = getArg('--output-dir'); + const configPath = getArg('--config-path'); + const servers = getArg('--servers'); + const providerConfig = getArg('--provider-config'); + const serviceConfig = getArg('--service-config'); + const skipFiles = getArg('--skip-files')?.split(',') || []; + const overwrite = args.includes('--overwrite'); + const verbose = args.includes('--verbose'); + const naiveReqBodyTranslate = args.includes('--naive-req-body-translate'); + + if (!providerName || !inputDir || !outputDir || !configPath) { + console.error('Error: Missing required arguments'); + console.error('Usage: node generate-provider.mjs --provider-name NAME --input-dir DIR --output-dir DIR --config-path PATH [--servers JSON] [--provider-config JSON] [--skip-files LIST] [--overwrite] [--verbose]'); + process.exit(1); + } + + try { + console.log(`Generating StackQL provider extensions for: ${providerName}`); + console.log(`Input directory: ${inputDir}`); + console.log(`Output directory: ${outputDir}`); + console.log(`Config path: ${configPath}`); + + if (servers) { + console.log(`Custom servers configuration provided`); + } + + if (providerConfig) { + console.log(`Custom provider configuration provided`); + } + + if (skipFiles.length > 0) { + console.log(`Skipping files: ${skipFiles.join(', ')}`); + } + + const result = await providerdev.generate({ + inputDir, + outputDir, + configPath, + providerId: providerName, + servers, + providerConfig, + serviceConfig, + skipFiles, + naiveReqBodyTranslate, + overwrite, + verbose + }); + + console.log('Provider generation completed successfully:', result); + } catch (error) { + console.error('Error generating provider extensions:', error); + process.exit(1); + } +} + +generateProvider(); \ No newline at end of file diff --git a/bin/generate-provider.sh b/bin/generate-provider.sh new file mode 100644 index 0000000..429933a --- /dev/null +++ b/bin/generate-provider.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash + +# Exit on error +set -e + +# Get the script directory for relative paths +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" + +# Default values +PROVIDER_NAME="" +INPUT_DIR="" +OUTPUT_DIR="" +CONFIG_PATH="" +SERVERS="" +PROVIDER_CONFIG="" +SKIP_FILES="" +OVERWRITE=false +VERBOSE=false + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --provider-name) + PROVIDER_NAME="$2" + shift 2 + ;; + --input-dir) + INPUT_DIR="$2" + shift 2 + ;; + --output-dir) + OUTPUT_DIR="$2" + shift 2 + ;; + --config-path) + CONFIG_PATH="$2" + shift 2 + ;; + --servers) + SERVERS="$2" + shift 2 + ;; + --provider-config) + PROVIDER_CONFIG="$2" + shift 2 + ;; + --skip-files) + SKIP_FILES="$2" + shift 2 + ;; + --overwrite) + OVERWRITE=true + shift + ;; + --verbose) + VERBOSE=true + shift + ;; + --help) + echo "Usage: generate-provider.sh [OPTIONS]" + echo "" + echo "Options:" + echo " --provider-name NAME Provider name/ID (required)" + echo " --input-dir DIR Input directory containing split OpenAPI files (required)" + echo " --output-dir DIR Output directory for provider (required)" + echo " --config-path PATH Path to CSV mapping file (required)" + echo " --servers JSON JSON string with servers configuration" + echo " --provider-config JSON JSON string with provider configuration" + echo " --skip-files LIST Comma-separated list of files to skip" + echo " --overwrite Overwrite existing files" + echo " --verbose Enable verbose output" + echo " --help Show this help message" + exit 0 + ;; + *) + echo "Unknown option: $1" + echo "Use --help for usage information" + exit 1 + ;; + esac +done + +# Check required arguments +if [ -z "$PROVIDER_NAME" ] || [ -z "$INPUT_DIR" ] || [ -z "$OUTPUT_DIR" ] || [ -z "$CONFIG_PATH" ]; then + echo "Error: Missing required arguments" + echo "Use --help for usage information" + exit 1 +fi + +echo "šŸ”§ Generating StackQL provider extensions..." +echo "Provider: $PROVIDER_NAME" +echo "Input Directory: $INPUT_DIR" +echo "Output Directory: $OUTPUT_DIR" +echo "Config Path: $CONFIG_PATH" + +# Build command arguments +ARGS=("--provider-name" "$PROVIDER_NAME" "--input-dir" "$INPUT_DIR" "--output-dir" "$OUTPUT_DIR" "--config-path" "$CONFIG_PATH") + +if [ -n "$SERVERS" ]; then + ARGS+=("--servers" "$SERVERS") + echo "Custom servers configuration provided" +fi + +if [ -n "$PROVIDER_CONFIG" ]; then + ARGS+=("--provider-config" "$PROVIDER_CONFIG") + echo "Custom provider configuration provided" +fi + +if [ -n "$SKIP_FILES" ]; then + ARGS+=("--skip-files" "$SKIP_FILES") + echo "Skipping files: $SKIP_FILES" +fi + +if [ "$OVERWRITE" = true ]; then + ARGS+=("--overwrite") + echo "Overwrite: Yes" +fi + +if [ "$VERBOSE" = true ]; then + ARGS+=("--verbose") + echo "Verbose: Yes" +fi + +# Run the Node.js script with arguments +node --experimental-modules "$SCRIPT_DIR/generate-provider.mjs" "${ARGS[@]}" + +# Check if command succeeded +if [ $? -ne 0 ]; then + echo "āŒ Provider generation failed" + exit 1 +fi + +echo "āœ… Provider generated successfully at: $OUTPUT_DIR" \ No newline at end of file diff --git a/bin/normalize.mjs b/bin/normalize.mjs new file mode 100644 index 0000000..01ffcdf --- /dev/null +++ b/bin/normalize.mjs @@ -0,0 +1,56 @@ +#!/usr/bin/env node + +import { providerdev } from '@stackql/provider-utils'; +import fs from 'fs'; + +async function normalizeSpecs() { + const args = process.argv.slice(2); + const getArg = (flag) => { + const index = args.indexOf(flag); + return index !== -1 ? args[index + 1] : null; + }; + + const apiDir = getArg('--api-dir'); + const verbose = args.includes('--verbose'); + const bareArrayOverridesStr = getArg('--bare-array-overrides'); + + if (!apiDir) { + console.error('Error: Missing required arguments'); + console.error('Usage: node normalize.mjs --api-dir DIR [--verbose] [--bare-array-overrides JSON|FILE.json]'); + process.exit(1); + } + + // --bare-array-overrides accepts inline JSON or a path to a JSON file + let bareArrayOverrides = null; + if (bareArrayOverridesStr) { + try { + const trimmed = bareArrayOverridesStr.trim(); + bareArrayOverrides = trimmed.startsWith('{') + ? JSON.parse(trimmed) + : JSON.parse(fs.readFileSync(trimmed, 'utf8')); + } catch (err) { + console.error('Error parsing bare array overrides (inline JSON or file path):', err.message); + process.exit(1); + } + } + + try { + const stats = await providerdev.normalize({ apiDir, verbose, bareArrayOverrides }); + console.log('Normalize completed:', JSON.stringify({ + filesProcessed: stats.filesProcessed, + allOfFlattened: stats.allOfFlattened, + oneOfRenamed: stats.oneOfRenamed, + anyOfRenamed: stats.anyOfRenamed, + misplacedKeywordsStripped: stats.stripped.length, + opaqueObjectsConverted: stats.opaqueConverted.length, + pathParamsLifted: stats.pathParamsLifted, + serversStripped: stats.serversStripped, + bareArraysWrapped: stats.bareArrayWrapped + }, null, 2)); + } catch (error) { + console.error('Error normalizing specs:', error); + process.exit(1); + } +} + +normalizeSpecs(); diff --git a/bin/normalize.sh b/bin/normalize.sh new file mode 100644 index 0000000..b0a04c0 --- /dev/null +++ b/bin/normalize.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Thin passthrough to normalize.mjs (kept for bash users; `npm run normalize` calls normalize.mjs directly) + +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +node "$SCRIPT_DIR/normalize.mjs" "$@" diff --git a/bin/server-status.sh b/bin/server-status.sh new file mode 100644 index 0000000..a522337 --- /dev/null +++ b/bin/server-status.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +# Default port +PORT="5444" + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --port) + PORT="$2" + shift 2 + ;; + --help) + echo "Usage: server-status.sh [--port PORT]" + echo "Check status of StackQL server" + exit 0 + ;; + *) + echo "Unknown option: $1" + echo "Usage: server-status.sh [--port PORT]" + exit 1 + ;; + esac +done + +# Search for stackql process running on specified port +stackql_process=$(ps -ef | grep -E "[s]tackql.*--pgsrv.port=${PORT}") + +# Check if the process is running +if [ -z "$stackql_process" ]; then + echo "StackQL server is not running on port ${PORT}." + exit 1 +else + # Extract PID using awk + pid=$(echo "$stackql_process" | awk '{print $2}') + + # Get process start time + if [ "$(uname)" == "Darwin" ]; then + # macOS + start_time=$(ps -p $pid -o lstart= 2>/dev/null) + else + # Linux + start_time=$(ps -p $pid -o lstart= 2>/dev/null) + fi + + # Get registry path if possible + registry_info=$(echo "$stackql_process" | grep -o -E "registry=\{[^}]+\}") + + echo "StackQL server is running on port ${PORT} (PID: ${pid})" + echo "Started: ${start_time}" + + if [ ! -z "$registry_info" ]; then + echo "Registry: ${registry_info#*=}" + fi + + # Check if we can connect to the server + echo "Testing connection..." + if command -v psql &> /dev/null; then + if PGPASSWORD=stackql psql -h localhost -p ${PORT} -U stackql -d stackql -c "SELECT 1 as test" &> /dev/null; then + echo "āœ… Server is accepting connections" + else + echo "āŒ Could not connect to server" + fi + else + echo "Note: Install psql client to test connection" + fi + + # Check server log + BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" + LOG_FILE="${BASE_DIR}/stackql-server.log" + + if [ -f "$LOG_FILE" ]; then + echo "Recent log entries:" + tail -n 5 "$LOG_FILE" + fi + + exit 0 +fi \ No newline at end of file diff --git a/bin/split.mjs b/bin/split.mjs new file mode 100644 index 0000000..c05f4fc --- /dev/null +++ b/bin/split.mjs @@ -0,0 +1,112 @@ +#!/usr/bin/env node + +// Split the cleaned upstream specs (provider-dev/downloaded/cleaned) into +// per-service specs in provider-dev/source. Service assignment is a +// deterministic rule set in provider-dev/scripts/service_rules.mjs - one +// rule module for every source spec, never hand-edits to the outputs. +// +// Usage: node bin/split.mjs --provider-name nvidia [--input-dir DIR] [--output-dir DIR] [--overwrite] [--verbose] + +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { providerdev } from '@stackql/provider-utils'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); + +async function main() { + const args = process.argv.slice(2); + const getArg = (flag) => { + const index = args.indexOf(flag); + return index !== -1 ? args[index + 1] : null; + }; + + const providerName = getArg('--provider-name'); + const inputDir = getArg('--input-dir') || path.join(repoRoot, 'provider-dev', 'downloaded', 'cleaned'); + const outputDir = getArg('--output-dir') || path.join(repoRoot, 'provider-dev', 'source'); + const overwrite = args.includes('--overwrite'); + const verbose = args.includes('--verbose'); + + if (!providerName) { + console.error('Error: Missing required arguments'); + console.error('Usage: node bin/split.mjs --provider-name NAME [--input-dir DIR] [--output-dir DIR] [--overwrite] [--verbose]'); + process.exit(1); + } + + const rulesPath = path.join(repoRoot, 'provider-dev', 'scripts', 'service_rules.mjs'); + if (!fs.existsSync(rulesPath)) { + console.error(`Error: Service rules module not found: ${rulesPath}`); + process.exit(1); + } + const { serviceFor } = await import(`file://${rulesPath}`); + + const specFiles = fs.readdirSync(inputDir).filter((f) => f.endsWith('.json')).sort(); + if (specFiles.length === 0) { + console.error(`Error: No cleaned specs found in ${inputDir}`); + process.exit(1); + } + + // Prepare the output directory, preserving non-spec files (e.g. .gitkeep) + fs.mkdirSync(outputDir, { recursive: true }); + const existing = fs.readdirSync(outputDir).filter((f) => /\.(yaml|yml|json)$/.test(f)); + if (existing.length > 0) { + if (!overwrite) { + console.error(`Error: Output directory ${outputDir} is not empty. Use --overwrite to replace existing service specs.`); + process.exit(1); + } + for (const f of existing) { + fs.rmSync(path.join(outputDir, f)); + } + } + + const written = new Map(); // service spec file -> source spec that produced it + + for (const specFile of specFiles) { + const sourceName = specFile.replace(/\.json$/, ''); + console.log(`Splitting ${specFile} (source: ${sourceName})`); + + // provider-utils split() cleans its output dir on every call, so split + // each source spec into a temp dir and collect the service specs from there + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'stackql-split-')); + try { + const result = await providerdev.split({ + apiDoc: path.join(inputDir, specFile), + providerName, + outputDir: tmpDir, + svcDiscriminator: 'function', + svcDiscriminatorFn: (pathKey, operationId, tags, ctx) => + serviceFor(sourceName, pathKey, operationId, tags, ctx), + overwrite: true, + verbose, + svcNameOverrides: {} + }); + if (!result) { + console.error(`Error: Split failed for ${specFile}`); + process.exit(1); + } + + for (const outFile of fs.readdirSync(tmpDir)) { + const dest = path.join(outputDir, outFile); + if (written.has(outFile)) { + console.error(`Error: Service spec ${outFile} produced by both ${written.get(outFile)} and ${specFile} - service names must not collide across sources`); + process.exit(1); + } + fs.copyFileSync(path.join(tmpDir, outFile), dest); + written.set(outFile, specFile); + } + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }); + } + } + + console.log(`Split operation completed successfully: ${written.size} service specs written to ${outputDir}`); + for (const f of [...written.keys()].sort()) { + console.log(` ${f}`); + } +} + +main().catch((err) => { + console.error('Error splitting OpenAPI doc(s):', err); + process.exit(1); +}); diff --git a/bin/split.sh b/bin/split.sh new file mode 100644 index 0000000..00f5718 --- /dev/null +++ b/bin/split.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Thin passthrough to split.mjs (kept for bash users; `npm run split` calls split.mjs directly) + +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +node "$SCRIPT_DIR/split.mjs" "$@" diff --git a/bin/start-server.sh b/bin/start-server.sh new file mode 100644 index 0000000..e050450 --- /dev/null +++ b/bin/start-server.sh @@ -0,0 +1,132 @@ +#!/bin/bash + +# Get current directory +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +BASE_DIR="$( cd "$DIR/.." && pwd )" + +# Parse command line arguments +PROVIDER="" +REG_PATH="" +PORT="5444" +VERIFY="false" + +function display_help() { + echo "Usage: start-server.sh [OPTIONS]" + echo "Options:" + echo " --provider NAME Provider name (default: use provider from package.json)" + echo " --registry PATH Path to local registry (default: current directory)" + echo " --port PORT Port to run server on (default: 5444)" + echo " --verify Enable signature verification (default: false)" + echo " --help Display this help message" +} + +while [[ $# -gt 0 ]]; do + case $1 in + --provider) + PROVIDER="$2" + shift 2 + ;; + --registry) + REG_PATH="$2" + shift 2 + ;; + --port) + PORT="$2" + shift 2 + ;; + --verify) + VERIFY="true" + shift + ;; + --help) + display_help + exit 0 + ;; + *) + echo "Unknown option: $1" + display_help + exit 1 + ;; + esac +done + +# If provider not specified, try to get from package.json +if [ -z "$PROVIDER" ]; then + if [ -f "$BASE_DIR/package.json" ]; then + PROVIDER=$(grep -o '"name": "stackql-provider-[^"]*"' "$BASE_DIR/package.json" | sed 's/"name": "stackql-provider-//' | sed 's/"//') + fi +fi + +# If registry path not specified, use current directory +if [ -z "$REG_PATH" ]; then + REG_PATH="$BASE_DIR/provider-dev/openapi/src" +fi + +echo "Using provider: $PROVIDER" +echo "Registry path: $REG_PATH" +echo "Port: $PORT" +echo "Verify signatures: $VERIFY" + +# Check if stackql binary exists +if [ ! -f "$BASE_DIR/stackql" ]; then + echo "StackQL binary not found. Downloading..." + + # Determine OS and architecture + OS=$(uname -s | tr '[:upper:]' '[:lower:]') + ARCH=$(uname -m) + + # Map architecture to stackql naming + if [ "$ARCH" = "x86_64" ]; then + ARCH="amd64" + elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then + ARCH="arm64" + fi + + # Set download URL based on OS + if [ "$OS" = "darwin" ]; then + DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_darwin_${ARCH}.zip" + elif [ "$OS" = "linux" ]; then + DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_linux_${ARCH}.zip" + else + echo "Unsupported OS: $OS" + echo "Please download stackql manually from https://github.com/stackql/stackql/releases" + exit 1 + fi + + # Download and extract + cd "$BASE_DIR" + curl -L -o stackql.zip "$DOWNLOAD_URL" + unzip -o stackql.zip + rm stackql.zip + chmod +x stackql + echo "StackQL binary downloaded successfully" +fi + +# Set registry configuration +if [ "$VERIFY" = "true" ]; then + REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": false}}' +else + REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": true}}' +fi + +# Check if server is already running +if pgrep -f "stackql.*--pgsrv.port=${PORT}" > /dev/null; then + echo "StackQL server is already running on port ${PORT}" + exit 0 +fi + +# Start the server +echo "Starting StackQL server with registry: $REG" +cd "$BASE_DIR" +nohup ./stackql --registry="${REG}" --pgsrv.port="${PORT}" srv > stackql-server.log 2>&1 & +SERVER_PID=$! + +# Check if server started successfully +sleep 2 +if ps -p $SERVER_PID > /dev/null; then + echo "StackQL server started successfully with PID: $SERVER_PID" + echo "Server log: $BASE_DIR/stackql-server.log" +else + echo "Failed to start StackQL server. Check log file: $BASE_DIR/stackql-server.log" + exit 1 +fi \ No newline at end of file diff --git a/bin/stop-server.sh b/bin/stop-server.sh new file mode 100644 index 0000000..fc7f070 --- /dev/null +++ b/bin/stop-server.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Get command line arguments +PORT="5444" + +while [[ $# -gt 0 ]]; do + case $1 in + --port) + PORT="$2" + shift 2 + ;; + *) + echo "Unknown option: $1" + echo "Usage: stop-server.sh [--port PORT]" + exit 1 + ;; + esac +done + +# Find the process ID of the StackQL server on the specified port +PID=$(pgrep -f "stackql.*--pgsrv.port=${PORT}") + +if [ -z "$PID" ]; then + echo "No stackql server found running on port ${PORT}." +else + echo "Stopping stackql server on port ${PORT} (PID: $PID)..." + kill $PID + + # Check if server stopped + sleep 2 + if ps -p $PID > /dev/null; then + echo "Server did not stop gracefully, attempting force kill..." + kill -9 $PID + + sleep 1 + if ps -p $PID > /dev/null; then + echo "Failed to stop server. Please check manually with 'ps -ef | grep stackql'" + exit 1 + fi + fi + + echo "StackQL server stopped successfully." +fi \ No newline at end of file diff --git a/bin/test-meta-routes.cjs b/bin/test-meta-routes.cjs new file mode 100644 index 0000000..99f7c5d --- /dev/null +++ b/bin/test-meta-routes.cjs @@ -0,0 +1,458 @@ +#!/usr/bin/env node + +const { runQuery } = require('@stackql/pgwire-lite'); +const fs = require('fs'); +const path = require('path'); + +// Get current directory +const baseDir = path.resolve(path.dirname(process.argv[1]), '..'); + +// Default connection settings +const defaultOptions = { + user: 'stackql', + database: 'stackql', + // IPv4 loopback, not 'localhost': stackql srv binds 0.0.0.0 and Node + // resolves 'localhost' to ::1 first, which refuses the connection + host: '127.0.0.1', + port: 5444, + debug: false, +}; + +// Parse command line arguments +const args = process.argv.slice(2); +let provider = null; +let port = 5444; +let host = '127.0.0.1'; +let verbose = false; +let outputFormat = 'json'; +let timeoutMs = 60000; // Default timeout: 60 seconds + +for (let i = 0; i < args.length; i++) { + if (args[i].startsWith('--')) { + switch (args[i]) { + case '--port': + port = parseInt(args[++i], 10); + break; + case '--host': + host = args[++i]; + break; + case '--verbose': + verbose = true; + break; + case '--format': + outputFormat = args[++i]; + if (!['json', 'csv', 'markdown'].includes(outputFormat)) { + console.error(`Error: Invalid output format "${outputFormat}". Must be json, csv, or markdown.`); + process.exit(1); + } + break; + case '--timeout': + timeoutMs = parseInt(args[++i], 10); + break; + case '--help': + console.log(` +Usage: test-meta-routes.js [OPTIONS] + +Test all metadata routes for a StackQL provider. + +Arguments: + provider Name of the provider to test + +Options: + --port PORT Server port (default: 5444) + --verbose Enable verbose output + --format FORMAT Output format: json, csv, markdown (default: json) + --timeout MILLISECONDS Query timeout in milliseconds (default: 60000) + --help Display this help message + `); + process.exit(0); + break; + default: + console.error(`Error: Unknown option "${args[i]}"`); + process.exit(1); + } + } else if (!provider) { + provider = args[i]; + } +} + +// Check that provider was specified +if (!provider) { + console.error('Error: Provider name must be specified'); + console.error('Usage: test-meta-routes.js [OPTIONS]'); + process.exit(1); +} + +// Set up connection options +const connectionOptions = { + ...defaultOptions, + host, + port, + // Set query timeout + statement_timeout: timeoutMs, +}; + +// Get start time +const startTime = new Date(); + +// resources whose select response is a scalar (text) body - a single +// anonymous column at query time, so DESCRIBE EXTENDED is legitimately +// empty. Currently empty: pods_log gets a response transform (one row per +// log line) in post_process.mjs, so it has real columns. +const SCALAR_RESPONSE_RESOURCES = new Set([]); + +const results = { + provider, + totalServices: 0, + totalResources: 0, + totalMethods: 0, + selectableMethods: 0, + nonSelectableResourceCount: 0, + nonSelectableResources: [], + scalarResponseResources: [], + failures: [], +}; + +/** + * Run a query and handle errors + * @param {string} query - SQL query to run + * @param {string} description - Description for logging + * @returns {Promise} - Query results + */ +async function executeQuery(query, description) { + if (verbose) { + console.log(`Running: ${query}`); + } else { + process.stdout.write(`${description}... `); + } + + try { + const result = await runQuery(connectionOptions, query); + + if (!verbose) { + if (result.data && result.data.length) { + console.log(`āœ… (${result.data.length} rows)`); + } else { + console.log('āœ…'); + } + } else { + console.info(result.data); + } + + return result.data; + } catch (error) { + if (!verbose) { + console.log('āŒ'); + } + + results.errors.push({ + query, + description, + error: error.message, + timestamp: new Date().toISOString() + }); + + results.summary.errors++; + + if (error.message.includes('the last operation didn\'t produce a result')) { + return []; + } + + if (error.message.includes('SELECT not supported for this resource')) { + if (verbose) { + console.warn(` Warning: Resource is not selectable`); + } + return null; + } + + console.error(`Error executing ${description}: ${error.message}`); + return []; + } +} + +/** + * Test all provider meta routes + */ +async function testMetaRoutes() { + try { + console.log(`\nšŸ” Testing meta routes for provider: ${provider}\n`); + + // SHOW PROVIDERS to verify provider exists + const registryQuery = "SHOW PROVIDERS"; + const providers = await executeQuery(registryQuery, "Checking registry providers"); + + const providerExists = providers && providers.some(p => p.name === provider); + if (!providerExists) { + console.error(`Error: Provider '${provider}' not found in registry`); + if (providers && providers.length > 0) { + console.log("Available providers:"); + providers.forEach(p => console.log(` - ${p.name}`)); + } + process.exit(1); + } + + // SHOW SERVICES IN + const servicesQuery = `SHOW SERVICES IN ${provider}`; + const services = await executeQuery(servicesQuery, "Getting services"); + + if (!services || services.length === 0) { + console.error(`Error: No services found for provider '${provider}'`); + process.exit(1); + } + + console.log(`\nFound ${services.length} services in ${provider}`); + results.totalServices += services.length; + + // for each service + for (const service of services) { + const serviceName = service.name; + console.log(`\nšŸ“Š Processing service: ${serviceName}`); + + // SHOW RESOURCES IN . + const resourcesQuery = `SHOW RESOURCES IN ${provider}.${serviceName}`; + const resources = await executeQuery(resourcesQuery, `Getting resources for ${serviceName}`); + + if (!resources || resources.length === 0) { + console.error(`Error: No resources found for ${provider}.${serviceName}`); + process.exit(1); + } + + console.log(`Found ${resources.length} resources in ${serviceName}`); + results.totalResources += resources.length; + + // for each resource + for (const resource of resources) { + const resourceName = resource.name; + console.log(`\n šŸ”¹ Testing resource: ${resourceName}`); + + const resourceFQRN = `${provider}.${serviceName}.${resourceName}`; + const resourceData = { + name: resourceName, + service: serviceName, + selectable: false, + sqlVerbs: {} + }; + + // SHOW EXTENDED METHODS IN .. + const methodsQuery = `SHOW EXTENDED METHODS IN ${resourceFQRN}`; + const methods = await executeQuery(methodsQuery, ` Getting methods for ${resourceName}`); + if (!methods || methods.length === 0) { + console.error(`Error: Resource ${resourceName} has no methods`); + process.exit(1); + } else { + console.log(`Found ${methods.length} methods for ${resourceName}`); + } + + results.totalMethods += methods.length; + + for (const method of methods) { + const methodName = method.MethodName; + const sqlVerb = method.SQLVerb || 'exec'; + + if(sqlVerb.toLowerCase() === 'select') { + results.selectableMethods++; + resourceData.selectable = true; + } + + // Initialize the array if it doesn't exist yet + if(!resourceData.sqlVerbs[sqlVerb]) { + resourceData.sqlVerbs[sqlVerb] = []; + } + + // Convert comma-delimited list to an array of trimmed values + let requiredParamsArray = []; + if (method.RequiredParams) { + requiredParamsArray = method.RequiredParams + .split(',') + .map(param => param.trim()) + .filter(param => param.length > 0); + } + + // Push the method info to the array with the parsed required params + resourceData.sqlVerbs[sqlVerb].push({ + methodName, + requiredParams: requiredParamsArray + }); + } + + // non exec methods must have unique signatures within a resource + // in other words no two methods mapped to the same sqlVerb should have the exact same set of required params, order is not important + // if this condition is detected, log it and exit the program immediately + let hasSelect = false; + for (const [verb, methods] of Object.entries(resourceData.sqlVerbs)) { + if (verb.toLowerCase() === 'select') { + hasSelect = true; + } + if (verb.toLowerCase() === 'exec') { + continue; + } + const seenSignatures = new Set(); + for (const method of methods) { + const signature = JSON.stringify(method.requiredParams); + if (seenSignatures.has(signature)) { + console.error(`Error: Duplicate method signature found for ${verb} in ${resourceData.service}.${resourceName}:`, method); + process.exit(1); + } + seenSignatures.add(signature); + } + } + + if (!hasSelect) { + results.nonSelectableResourceCount++; + results.nonSelectableResources.push(`${resourceData.service}.${resourceName}`); + } + + // Try DESCRIBE EXTENDED if available + if(resourceData.selectable) { + try { + const describeExtendedQuery = `DESCRIBE EXTENDED ${resourceFQRN}`; + const extendedColumns = await executeQuery(describeExtendedQuery, ` Describing extended ${resourceName}`); + + if (extendedColumns !== null && extendedColumns.length > 0) { + console.log(`Found ${extendedColumns.length} extended columns for ${resourceName}`); + } else if (SCALAR_RESPONSE_RESOURCES.has(resourceName)) { + // scalar (text) response - a single anonymous column at query + // time, so DESCRIBE is legitimately empty + console.log(`WARN: no columns for ${resourceName} (known scalar response)`); + results.scalarResponseResources.push(`${resourceData.service}.${resourceName}`); + } else { + console.error(`ERROR: No columns found for ${resourceName}`); + results.failures.push(`${resourceData.service}.${resourceName}: DESCRIBE EXTENDED returned no columns`); + } + } catch (error) { + console.error(`Error describing extended ${resourceName}:`, error.message); + results.failures.push(`${resourceData.service}.${resourceName}: ${error.message}`); + } + } + + } + } + + // Calculate execution time + const endTime = new Date(); + const executionTime = (endTime - startTime) / 1000; // in seconds + results.executionTime = executionTime; + + // Output summary + console.log("\nšŸ“‹ Test Summary:"); + console.info(results); + + if (results.failures.length > 0) { + console.error(`\nāŒ ${results.failures.length} failure(s):`); + for (const f of results.failures) console.error(` - ${f}`); + process.exit(1); + } + console.log("\nāœ… All meta route tests passed"); + + // Save results to file + // const resultsDir = path.join(baseDir, 'test-results'); + // if (!fs.existsSync(resultsDir)) { + // fs.mkdirSync(resultsDir, { recursive: true }); + // } + + // const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + + // if (outputFormat === 'json') { + // const resultsFile = path.join(resultsDir, `${provider}-meta-test-${timestamp}.json`); + // fs.writeFileSync(resultsFile, JSON.stringify(results, null, 2)); + // console.log(`\nDetailed results saved to: ${resultsFile}`); + // } + // else if (outputFormat === 'csv') { + // // Generate CSV files + + // // Main summary CSV + // const summaryFile = path.join(resultsDir, `${provider}-meta-test-summary-${timestamp}.csv`); + // const summaryCSV = [ + // 'Provider,Timestamp,Services,Resources,Methods,Selectable,Insertable,Updatable,Deletable,Executable,Errors,ExecutionTime', + // `${provider},${results.timestamp},${results.summary.totalServices},${results.summary.totalResources},${results.summary.totalMethods},${results.summary.selectableMethods},${results.summary.insertableMethods},${results.summary.updatableMethods},${results.summary.deletableMethods},${results.summary.executableMethods},${results.summary.errors},${results.executionTime}` + // ].join('\n'); + // fs.writeFileSync(summaryFile, summaryCSV); + + // // Services CSV + // const servicesFile = path.join(resultsDir, `${provider}-meta-test-services-${timestamp}.csv`); + // const servicesCSV = [ + // 'Service,Title,ResourceCount', + // ...results.services.map(s => `${s.name},${s.title || ''},${s.resourceCount || 0}`) + // ].join('\n'); + // fs.writeFileSync(servicesFile, servicesCSV); + + // // Resources CSV + // const resourcesFile = path.join(resultsDir, `${provider}-meta-test-resources-${timestamp}.csv`); + // const resourcesCSV = [ + // 'Service,Resource,FQRN,Selectable,ColumnCount,MethodCount', + // ...results.resources.map(r => `${r.service},${r.name},${r.fqrn},${r.selectable},${r.columnCount || 0},${r.methodCount || 0}`) + // ].join('\n'); + // fs.writeFileSync(resourcesFile, resourcesCSV); + + // // Methods CSV + // const methodsFile = path.join(resultsDir, `${provider}-meta-test-methods-${timestamp}.csv`); + // const methodsCSV = [ + // 'Service,Resource,Method,SQLVerb,FQRN', + // ...results.methods.map(m => `${m.service},${m.resource},${m.name},${m.sqlVerb},${m.fqrn}`) + // ].join('\n'); + // fs.writeFileSync(methodsFile, methodsCSV); + + // console.log(`\nDetailed results saved to CSV files in: ${resultsDir}`); + // } + // else if (outputFormat === 'markdown') { + // const mdFile = path.join(resultsDir, `${provider}-meta-test-${timestamp}.md`); + + // const markdownContent = [ + // `# StackQL Provider Test Results: ${provider}`, + // '', + // `Test run: ${results.timestamp}`, + // '', + // '## Summary', + // '', + // '| Metric | Count |', + // '|--------|-------|', + // `| Services | ${results.summary.totalServices} |`, + // `| Resources | ${results.summary.totalResources} |`, + // `| Methods | ${results.summary.totalMethods} |`, + // `| Errors | ${results.summary.errors} |`, + // `| Execution Time | ${results.executionTime.toFixed(2)} seconds |`, + // '', + // '### Methods by SQL Verb', + // '', + // '| Verb | Count |', + // '|------|-------|', + // ...Object.entries(results.verbs).map(([verb, count]) => `| ${verb.toUpperCase()} | ${count} |`), + // '', + // '## Services', + // '', + // '| Service | Resources |', + // '|---------|-----------|', + // ...results.services.map(s => `| ${s.name} | ${s.resourceCount || 0} |`), + // '', + // '## Resources with Most Methods', + // '', + // '| Resource | Service | Methods | Selectable |', + // '|----------|---------|---------|------------|', + // ...results.resources + // .sort((a, b) => (b.methodCount || 0) - (a.methodCount || 0)) + // .slice(0, 20) + // .map(r => `| ${r.name} | ${r.service} | ${r.methodCount || 0} | ${r.selectable ? 'āœ“' : 'āœ—'} |`), + // '', + // '## Errors', + // '', + // results.errors.length > 0 + // ? [ + // '| Query | Error |', + // '|-------|-------|', + // ...results.errors.map(e => `| \`${e.query}\` | ${e.error} |`) + // ].join('\n') + // : 'No errors encountered during testing.', + // ].join('\n'); + + // fs.writeFileSync(mdFile, markdownContent); + // console.log(`\nDetailed results saved to: ${mdFile}`); + // } + + } catch (error) { + console.error('Error in meta routes test:', error); + process.exit(1); + } +} + +// Run the tests +testMetaRoutes(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b2908f7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,573 @@ +{ + "name": "stackql-provider-nvidia", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "stackql-provider-nvidia", + "version": "0.1.0", + "dependencies": { + "@apidevtools/swagger-parser": "^12.1.0", + "@stackql/pgwire-lite": "^1.0.1", + "@stackql/provider-utils": "^0.7.6", + "js-yaml": "^4.1.0", + "pluralize": "^8.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.0.1.tgz", + "integrity": "sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "license": "MIT" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-12.1.0.tgz", + "integrity": "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==", + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "14.0.1", + "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/swagger-methods": "^3.0.2", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "call-me-maybe": "^1.0.2" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", + "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", + "license": "MIT", + "dependencies": { + "@so-ric/colorspace": "^1.1.6", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" + }, + "node_modules/@so-ric/colorspace": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", + "license": "MIT", + "dependencies": { + "color": "^5.0.2", + "text-hex": "1.0.x" + } + }, + "node_modules/@stackql/deno-openapi-dereferencer": { + "name": "@jsr/stackql__deno-openapi-dereferencer", + "version": "0.3.1", + "resolved": "https://npm.jsr.io/~/11/@jsr/stackql__deno-openapi-dereferencer/0.3.1.tgz", + "integrity": "sha512-7Ucdom3SYxvzp7VwzulQMe66E+1LeCZIprFQ70PwRPIUfL90bYNQDrLfe5L1WaB+X7StWdHmoFSFxoa9RDlN7w==", + "dependencies": { + "jsonpath-plus": "7.0.0" + } + }, + "node_modules/@stackql/pgwire-lite": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stackql/pgwire-lite/-/pgwire-lite-1.0.1.tgz", + "integrity": "sha512-jgA6ogzlXySZ1xiJzBxuvgRNu9V38Gs3qUZ4AjinlT7hj+8RH3UhYaDvyBd33QWiK3tVNkglYcnXPQ7q0+rmNA==", + "license": "MIT", + "dependencies": { + "winston": "^3.14.2" + } + }, + "node_modules/@stackql/provider-utils": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.6.tgz", + "integrity": "sha512-1aa7xdVKoA9RppNIE/ojOTmc8k/I+glyKqAjZjTvcA87kyP7gmbMJPOdsX+LDFxSJ5xfslxTR+/ZZD3M5HZsiw==", + "license": "MIT", + "dependencies": { + "@apidevtools/swagger-parser": "^10.1.1", + "@stackql/deno-openapi-dereferencer": "npm:@jsr/stackql__deno-openapi-dereferencer@^0.3.1", + "csv-parser": "^3.2.0", + "js-yaml": "^4.1.0", + "pluralize": "^8.0.0" + }, + "bin": { + "docgen-utils": "bin/docgen-utils.mjs", + "provider-dev-utils": "bin/provider-dev-utils.mjs" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@stackql/provider-utils/node_modules/@apidevtools/json-schema-ref-parser": { + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz", + "integrity": "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==", + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, + "node_modules/@stackql/provider-utils/node_modules/@apidevtools/swagger-parser": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.1.tgz", + "integrity": "sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==", + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "11.7.2", + "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "call-me-maybe": "^1.0.2" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "license": "MIT" + }, + "node_modules/color": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", + "license": "MIT", + "dependencies": { + "color-convert": "^3.1.3", + "color-string": "^2.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-convert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", + "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color-string": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csv-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.2.1.tgz", + "integrity": "sha512-v8RPMSglouR9od735SnwSxLBbCJqEPSbgm1R5qfr8yIiMUCEFjox56kRZid0SvgHJEkxeIEu3+a9QS3YRh7CuA==", + "license": "MIT", + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", + "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-yaml": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", + "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/jsonpath-plus": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.0.0.tgz", + "integrity": "sha512-MH4UnrWrU1hJGVEyEyjvYgONkzNTO6Yol0nq18EMnUQ/ZC5cTuJheirXXIwu1b9mZ6t3XL0P79gPsu+zlTnDIQ==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT" + }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT", + "peer": true + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "license": "MIT" + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/winston": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.8", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "license": "MIT", + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..28e7354 --- /dev/null +++ b/package.json @@ -0,0 +1,41 @@ +{ + "name": "stackql-provider-nvidia", + "version": "0.1.0", + "description": "StackQL Provider for NVIDIA NGC and NVIDIA Cloud Functions (NVCF)", + "type": "module", + "scripts": { + "fetch-specs": "bash ./bin/fetch-specs.sh", + "harvest-ngc": "node ./provider-dev/scripts/harvest_ngc_spec.mjs", + "clean-specs": "node ./provider-dev/scripts/clean_specs.mjs", + "pin-specs": "node ./provider-dev/scripts/pin_specs.mjs", + "build-inventory": "node ./provider-dev/scripts/build_inventory.mjs", + "split": "node ./bin/split.mjs", + "generate-mappings": "bash ./bin/generate-mappings.sh", + "map-operations": "node ./provider-dev/scripts/map_operations.mjs", + "normalize": "node ./bin/normalize.mjs", + "generate-provider": "bash ./bin/generate-provider.sh", + "generate-docs": "bash ./bin/generate-docs.sh", + "start-server": "bash ./bin/start-server.sh", + "stop-server": "bash ./bin/stop-server.sh", + "server-status": "bash ./bin/server-status.sh", + "test-meta-routes": "node ./bin/test-meta-routes.cjs", + "test-integration": "node ./tests/integration/run_integration_tests.mjs" + }, + "dependencies": { + "@apidevtools/swagger-parser": "^12.1.0", + "@stackql/pgwire-lite": "^1.0.1", + "@stackql/provider-utils": "^0.7.6", + "js-yaml": "^4.1.0", + "pluralize": "^8.0.0" + }, + "keywords": [ + "stackql", + "nvidia", + "ngc", + "nvcf", + "provider" + ], + "engines": { + "node": ">=20.0.0" + } +} diff --git a/provider-dev/config/.gitkeep b/provider-dev/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/provider-dev/docgen/provider-data/.gitkeep b/provider-dev/docgen/provider-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/provider-dev/downloaded/.gitkeep b/provider-dev/downloaded/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/provider-dev/openapi/src/nvidia/.gitkeep b/provider-dev/openapi/src/nvidia/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/provider-dev/scripts/pin_specs.mjs b/provider-dev/scripts/pin_specs.mjs new file mode 100644 index 0000000..64d77d6 --- /dev/null +++ b/provider-dev/scripts/pin_specs.mjs @@ -0,0 +1,86 @@ +#!/usr/bin/env node + +// Record or verify pins (URL, date, sha256) for every downloaded spec in +// provider-dev/config/spec_pin.json. Default mode records pins for the +// current downloads, preserving decision/evidence fields already present in +// the pin file. --check verifies the current downloads against the recorded +// hashes and fails without writing on any drift (CI drift job). +// +// Usage: node provider-dev/scripts/pin_specs.mjs [--check] + +import crypto from 'crypto'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const downloadDir = path.join(repoRoot, 'provider-dev', 'downloaded'); +const pinPath = path.join(repoRoot, 'provider-dev', 'config', 'spec_pin.json'); +const manifestPath = path.join(downloadDir, 'download_manifest.json'); + +const checkMode = process.argv.includes('--check'); + +if (!fs.existsSync(manifestPath)) { + console.error(`Error: ${manifestPath} not found - run fetch-specs first (the fetchers record source URLs there)`); + process.exit(1); +} +const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8')); + +const pin = fs.existsSync(pinPath) ? JSON.parse(fs.readFileSync(pinPath, 'utf8')) : { sources: {} }; +pin.sources = pin.sources || {}; + +const sha256 = (file) => crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex'); + +const errors = []; +const today = new Date().toISOString().slice(0, 10); + +for (const [file, meta] of Object.entries(manifest.files || {})) { + const abs = path.join(downloadDir, file); + if (!fs.existsSync(abs)) { + errors.push(`manifest lists ${file} but it is not in ${downloadDir}`); + continue; + } + const hash = sha256(abs); + const existing = pin.sources[file]; + if (checkMode) { + if (!existing) { + errors.push(`${file}: downloaded but has no recorded pin`); + } else if (existing.sha256 !== hash) { + errors.push(`${file}: sha256 drift (pinned ${existing.sha256.slice(0, 12)}..., current ${hash.slice(0, 12)}...)`); + } + continue; + } + pin.sources[file] = { + ...existing, + url: meta.url, + fetched: today, + sha256: hash, + bytes: fs.statSync(abs).size, + ...(meta.info || {}) + }; +} + +if (checkMode) { + for (const file of Object.keys(pin.sources)) { + if (!(manifest.files || {})[file]) { + errors.push(`${file}: pinned but not present in the current download manifest`); + } + } + if (errors.length > 0) { + console.error(`Pin check FAILED with ${errors.length} error(s):`); + for (const e of errors) console.error(` ${e}`); + process.exit(1); + } + console.log(`Pin check passed: ${Object.keys(pin.sources).length} source(s) match the recorded pins`); + process.exit(0); +} + +if (errors.length > 0) { + console.error(`Pinning FAILED with ${errors.length} error(s) - nothing written:`); + for (const e of errors) console.error(` ${e}`); + process.exit(1); +} + +fs.mkdirSync(path.dirname(pinPath), { recursive: true }); +fs.writeFileSync(pinPath, JSON.stringify(pin, null, 2) + '\n'); +console.log(`Recorded pins for ${Object.keys(manifest.files || {}).length} source(s) in ${pinPath}`); diff --git a/provider-dev/source/.gitkeep b/provider-dev/source/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/.gitkeep b/tests/fixtures/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/integration/.gitkeep b/tests/integration/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/website/.gitkeep b/website/.gitkeep new file mode 100644 index 0000000..e69de29 From 233c7f8c26f746eb4c537cb07dc314e06ecabc95 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:24:41 +1000 Subject: [PATCH 02/17] feat: acquire and pin the NVCF OpenAPI spec - fetch_nvcf_spec.mjs downloads https://api.nvcf.nvidia.com/v3/openapi (the OpenAPI Spec link on https://docs.nvidia.com/nvcf/api) and records the source in download_manifest.json; fails without writing on non-OpenAPI payloads - pinned in spec_pin.json: version 2.245.1, sha256, 35 paths / 54 operations - swagger-parser validation is clean, no repairs required - two-host finding recorded: management on api.ngc.nvidia.com, invocation and queue details on api.nvcf.nvidia.com, carried per operation group Co-Authored-By: Claude Fable 5 --- bin/fetch-specs.sh | 21 ++---- provider-dev/config/spec_pin.json | 19 ++++++ .../downloaded/download_manifest.json | 13 ++++ provider-dev/downloaded/nvcf_openapi.json | 1 + provider-dev/scripts/fetch_nvcf_spec.mjs | 64 +++++++++++++++++++ 5 files changed, 101 insertions(+), 17 deletions(-) create mode 100644 provider-dev/config/spec_pin.json create mode 100644 provider-dev/downloaded/download_manifest.json create mode 100644 provider-dev/downloaded/nvcf_openapi.json create mode 100644 provider-dev/scripts/fetch_nvcf_spec.mjs diff --git a/bin/fetch-specs.sh b/bin/fetch-specs.sh index 2f6124d..5bc5c2f 100644 --- a/bin/fetch-specs.sh +++ b/bin/fetch-specs.sh @@ -2,8 +2,9 @@ # # Acquire both upstream spec sources into provider-dev/downloaded/: # 1. NVCF - published OpenAPI spec served by the NVCF API itself +# (provider-dev/scripts/fetch_nvcf_spec.mjs) # 2. NGC - per-service definitions harvested from the API explorer at -# docs.ngc.nvidia.com/api/ (harvest_ngc_spec.mjs) +# docs.ngc.nvidia.com/api/ (provider-dev/scripts/harvest_ngc_spec.mjs) # then record/verify pins (URL, date, sha256) in provider-dev/config/spec_pin.json. # # Re-runnable. Pass --check to verify current downloads against the recorded @@ -13,28 +14,14 @@ set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" -DOWNLOAD_DIR="$REPO_ROOT/provider-dev/downloaded" - -NVCF_SPEC_URL="https://api.nvcf.nvidia.com/v3/openapi" CHECK_MODE="" if [ "${1:-}" = "--check" ]; then CHECK_MODE="--check" fi -mkdir -p "$DOWNLOAD_DIR" - -echo "Fetching NVCF OpenAPI spec: $NVCF_SPEC_URL" -TMP_FILE="$(mktemp)" -curl -sSf "$NVCF_SPEC_URL" -o "$TMP_FILE" -# fail without writing if the payload is not parseable JSON with an openapi field -node -e "const s=JSON.parse(require('fs').readFileSync('$TMP_FILE','utf8')); if(!s.openapi||!s.paths){console.error('NVCF payload is not an OpenAPI document');process.exit(1);} console.log('NVCF spec ok: openapi='+s.openapi+' version='+(s.info&&s.info.version)+' paths='+Object.keys(s.paths).length);" -mv "$TMP_FILE" "$DOWNLOAD_DIR/nvcf_openapi.json" - -echo "Harvesting NGC definitions from docs.ngc.nvidia.com/api/" +node "$REPO_ROOT/provider-dev/scripts/fetch_nvcf_spec.mjs" node "$REPO_ROOT/provider-dev/scripts/harvest_ngc_spec.mjs" - -echo "Recording/verifying pins" node "$REPO_ROOT/provider-dev/scripts/pin_specs.mjs" $CHECK_MODE -echo "Done. Downloaded specs in $DOWNLOAD_DIR" +echo "Done. Downloaded specs in $REPO_ROOT/provider-dev/downloaded" diff --git a/provider-dev/config/spec_pin.json b/provider-dev/config/spec_pin.json new file mode 100644 index 0000000..de1bf72 --- /dev/null +++ b/provider-dev/config/spec_pin.json @@ -0,0 +1,19 @@ +{ + "sources": { + "nvcf_openapi.json": { + "url": "https://api.nvcf.nvidia.com/v3/openapi", + "fetched": "2026-07-14", + "sha256": "b79060bfb9f6ff7295286f46d7c8e422f36d4ac94588183cc623f6acf3489efd", + "bytes": 112602, + "docsPage": "https://docs.nvidia.com/nvcf/api", + "openapi": "3.1.0", + "title": "Cloud Functions", + "specVersion": "2.245.1", + "decision": { + "canonicalSource": "The OpenAPI Spec link on the NVCF API documentation page (docsPage) resolves to this URL, served by the NVCF API itself. A companion Postman collection is referenced from the same documentation set.", + "hostSplit": "The spec declares a single server (https://api.nvcf.nvidia.com) but the NVCF documentation (cloud-functions user guide, API page) states the primary domain for function management is api.ngc.nvidia.com and the NVCF domain for function invocation and queue details is api.nvcf.nvidia.com. Hosts are carried per operation group; the per-operation assignment with evidence is recorded in endpoint_inventory.csv.", + "validation": "swagger-parser 12.1.0 validate: clean, no repairs required" + } + } + } +} diff --git a/provider-dev/downloaded/download_manifest.json b/provider-dev/downloaded/download_manifest.json new file mode 100644 index 0000000..8106647 --- /dev/null +++ b/provider-dev/downloaded/download_manifest.json @@ -0,0 +1,13 @@ +{ + "files": { + "nvcf_openapi.json": { + "url": "https://api.nvcf.nvidia.com/v3/openapi", + "info": { + "docsPage": "https://docs.nvidia.com/nvcf/api", + "openapi": "3.1.0", + "title": "Cloud Functions", + "specVersion": "2.245.1" + } + } + } +} diff --git a/provider-dev/downloaded/nvcf_openapi.json b/provider-dev/downloaded/nvcf_openapi.json new file mode 100644 index 0000000..e240309 --- /dev/null +++ b/provider-dev/downloaded/nvcf_openapi.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"Cloud Functions","termsOfService":"https://www.nvidia.com/en-us/legal_info","contact":{"name":"NVIDIA","url":"https://www.nvidia.com/"},"version":"2.245.1"},"servers":[{"url":"https://api.nvcf.nvidia.com","description":"Generated server url"}],"tags":[{"name":"Function Invocation","description":"Defines function pass-through invocation endpoints where the invocation payload is passed as-is without any wrapper. All the endpoints defined in this API require a bearer token with 'invoke_function' scope in the HTTP Authorization header. "},{"name":"Asset Management","description":"Deprecated. Users can provide assets directly as part of the input during function invocation. There is no need to upload assets and then include the asset-id as part of input to the function invocation. Defines Asset Management endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token in the HTTP Authorization header with 'invoke_function' scope."},{"name":"User Ratelimit Management","description":"Defines User Ratelimit Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_function' scope in the HTTP Authorization header. "},{"name":"Queue Details","description":"Defines Queue Details endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token with 'queue_details' scope in the HTTP Authorization header. "},{"name":"Function Sharing","description":"Defines endpoints related to authorizing other accounts to invoke a function for Account Admins. All the endpoints defined in this API require a bearer token with 'authorize_clients' scope in HTTP Authorization header."},{"name":"Telemetry Management","description":"Defines Telemetry Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token or an api-key with appropriate scope in the HTTP Authorization header. "},{"name":"Cluster Groups and GPUs","description":"Deprecated. Please use corresponding ICMS endpoints directly. These endpoints will be removed. Defines endpoints to list Cluster Groups and GPUs for Account Admins. All tne endpoints defined in this API require a bearer token with 'list_cluster_groups' scope in the HTTP Authorization header."},{"name":"Function Deployment","description":"Defines Function Deployment endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'deploy_function' scope in the HTTP Authorization header."},{"name":"User Secret Management","description":"Defines User Secret Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_secrets' scope in the HTTP Authorization header. "},{"name":"Function Management","description":"Defines Function Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with appropriate scope in the HTTP Authorization header. The scope is specified in the documentation for each of the endpoints. "},{"name":"Function Invocation Assertion Token","description":"Defines endpoints that issue an assertion token from Notary Service to be used for function invocation later "},{"name":"Registry Credential Management","description":"Defines Registry Credential Management endpoints. These endpoints can only be invoked by Account Admins and require a bearer token in HTTP Authorization header with 'manage_registry_credentials' scope. "},{"name":"nspect_id","description":"NSPECT-F7NT-ONT3"}],"paths":{"/v2/nvcf/secrets/telemetries/{telemetryId}":{"put":{"tags":["User Secret Management"],"summary":"Update secret for a specific Telemetry Id","description":"Updates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ","operationId":"updateTelemetrySecret","parameters":[{"name":"telemetryId","in":"path","description":"NVIDIA Cloud Account Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTelemetrySecretRequest"}}},"required":true},"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/secrets/functions/{functionId}/versions/{versionId}":{"put":{"tags":["User Secret Management"],"summary":"Update user secrets for a function version","description":"Updates secrets for the specified function version. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ","operationId":"updateFunctionSecrets","parameters":[{"name":"functionId","in":"path","description":"Function Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function Version Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionSecretsRequest"}}},"required":true},"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId}":{"put":{"tags":["User Ratelimit Management"],"summary":"Update user ratelimit for a function version","description":"Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{versionId} to update ratelimit and other mutable function fields. This legacy endpoint only updates ratelimit for the specified function version and requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"updateRateLimit","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionRequest"}}},"required":true},"responses":{"204":{"description":"No Content"}},"deprecated":true},"delete":{"tags":["User Ratelimit Management"],"summary":"Delete user ratelimit for a function version","description":"Delete ratelimit for the specified function version. This endpoint requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"deleteRateLimit","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId}":{"put":{"tags":["Function Management"],"summary":"Update Function Metadata","description":"Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update tags, rate limit, model-specific LLM config, and other mutable function fields. This legacy endpoint updates the same mutable function version fields for the authenticated NVIDIA Cloud Account and requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"updateFunctionMetadata","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}},"deprecated":true}},"/v2/nvcf/functions/{functionId}/versions/{functionVersionId}":{"get":{"tags":["Function Management"],"summary":"Get Function Version Details","description":"Retrieves detailed information of the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ","operationId":"getFunction","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id ","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"includeSecrets","in":"query","description":"Query param 'includeSecrets' indicates whether to include secret names\n for the function in the response.\n","required":false,"schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}}},"put":{"tags":["Function Management"],"summary":"Updates mutable fields of the specified function version.","description":"Updates mutable fields of the specified function version within the authenticated NVIDIA Cloud Account. The current request payload supports tags updates, rate limit updates, and model-specific LLM config updates. Requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"updateFunction","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}}},"delete":{"tags":["Function Management"],"summary":"Delete Function","description":"Deletes the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'delete_function' scope in the HTTP Authorization header. If the function version is public, then Account Admin cannot delete the function. ","operationId":"deleteFunction","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}":{"get":{"tags":["Function Deployment"],"summary":"Get Function Deployment Details","description":"Allows Account Admins to retrieve the deployment details of the specified function version. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"getFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}}},"put":{"tags":["Function Deployment"],"summary":"Update Function Deployment","description":" Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"updateFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}},"deprecated":true},"post":{"tags":["Function Deployment"],"summary":"Deploy Function","description":"Initiates deployment for the specified function version. Upon invocation of this endpoint, the function's status transitions to 'DEPLOYING'. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"createFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}}},"delete":{"tags":["Function Deployment"],"summary":"Delete Function Deployment","description":"Deletes the deployment associated with the specified function. Upon deletion, any active instances will be terminated, and the function's status will transition to 'INACTIVE'. To undeploy a function version gracefully, specify 'graceful=true' query parameter, allowing current tasks to complete before terminating the instances. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"deleteFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"graceful","in":"query","description":"Query param to deactivate function for graceful shutdown","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}}}},"/v2/nvcf/tokens/functions":{"post":{"tags":["Function Invocation Assertion Token"],"summary":"Issue Function Invocation Token","description":"Issues an assertion token from Notary Service for specified functionIds and/or functionVersionIds ","operationId":"issueMultiFunctionsInvocationToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiFunctionsInvocationTokenRequest"}}},"required":true},"responses":{"200":{"description":"Invocation assertion token is issued","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}}}}},"/v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId}":{"post":{"tags":["Function Invocation Assertion Token"],"summary":"Issue Function Invocation Token","description":"Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ","operationId":"issueInvocationToken","parameters":[{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvocationTokenRequest"}}},"required":true},"responses":{"200":{"description":"Invocation assertion token is issued","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}}}}},"/v2/nvcf/tokens/functions/{functionId}":{"post":{"tags":["Function Invocation Assertion Token"],"summary":"Issue Function Invocation Token","description":"Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ","operationId":"issueInvocationToken_1","parameters":[{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvocationTokenRequest"}}},"required":true},"responses":{"200":{"description":"Invocation assertion token is issued","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}}}}},"/v2/nvcf/telemetries":{"get":{"tags":["Telemetry Management"],"summary":"List Telemetries","description":"Retrieves telemetry configurations for a specific NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ","operationId":"getTelemetriesByAccount","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTelemetryResponse"}}}}}},"post":{"tags":["Telemetry Management"],"summary":"Create Telemetry","description":"Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ","operationId":"createTelemetry","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryResponse"}}}}}}},"/v2/nvcf/registry-credentials":{"get":{"tags":["Registry Credential Management"],"summary":"List Registry Credentials","description":"Lists all the registry credentials associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"listRegistryCredentialDetails","parameters":[{"name":"artifactType","in":"query","description":"Filters registry credentials using the specified 'artifactType' query param.\n","required":false,"schema":{"type":"array","default":["CONTAINER","HELM","MODEL","RESOURCE"],"items":{"type":"string","format":"UTF-8","enum":["CONTAINER","HELM","MODEL","RESOURCE"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}},{"name":"provisionedBy","in":"query","description":"Filters registry credentials using the specified 'provisionedBy' query param.\n","required":false,"schema":{"type":"array","default":["SYSTEM","USER"],"items":{"type":"string","format":"UTF-8","enum":["SYSTEM","USER"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistryCredentialDetailsResponse"}}}}}},"post":{"tags":["Registry Credential Management"],"summary":"Add new registry credential to the account","description":"Adds a new registry credential to the account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"addRegistryCredential","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddRegistryCredentialRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialDetailsResponse"}}}}}}},"/v2/nvcf/pexec/functions/{functionId}":{"post":{"tags":["Function Invocation"],"summary":"Call Function","description":"Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ","operationId":"invokeFunction","parameters":[{"name":"NVCF-INPUT-ASSET-REFERENCES","in":"header","required":false,"schema":{"type":"array","items":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0}},{"name":"NVCF-POLL-SECONDS","in":"header","required":false,"schema":{"type":"integer","format":"int32","maximum":300,"minimum":0}},{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Invocation is fulfilled","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"202":{"description":"Result is pending. Client should poll using the requestId.","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"302":{"description":"Client should use the URL specified in the 'Location' response header to fetch\n large result.\n","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}},"Location":{"description":"URL to get the result","style":"simple","schema":{"type":"string"}}}},"402":{"description":"Cloud credits expired for public functions. Please contact NVIDIA representatives.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}}},"deprecated":true}},"/v2/nvcf/pexec/functions/{functionId}/versions/{versionId}":{"post":{"tags":["Function Invocation"],"summary":"Call Function","description":"Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ","operationId":"invokeFunction_1","parameters":[{"name":"NVCF-INPUT-ASSET-REFERENCES","in":"header","required":false,"schema":{"type":"array","items":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0}},{"name":"NVCF-POLL-SECONDS","in":"header","required":false,"schema":{"type":"integer","format":"int32","maximum":300,"minimum":0}},{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Invocation is fulfilled","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"202":{"description":"Result is pending. Client should poll using the requestId.","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"302":{"description":"Client should use the URL specified in the 'Location' response header to fetch\n large result.\n","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}},"Location":{"description":"URL to get the result","style":"simple","schema":{"type":"string"}}}},"402":{"description":"Cloud credits expired for public functions. Please contact NVIDIA representatives.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}}},"deprecated":true}},"/v2/nvcf/functions":{"get":{"tags":["Function Management"],"summary":"List Functions","description":"Lists all the functions associated with the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scope in the HTTP Authorization header.","operationId":"getFunctions","parameters":[{"name":"visibility","in":"query","description":"Query param 'visibility' indicates the kind of functions to be included\n in the response.\n","required":false,"schema":{"type":"array","default":["authorized","private","public"],"items":{"type":"string","format":"UTF-8","enum":["authorized","private","public"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFunctionsResponse"}}}}}},"post":{"tags":["Function Management"],"summary":"Create Function","description":"Creates a new function within the authenticated NVIDIA Cloud Account. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. ","operationId":"createFunction","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionResponse"}}}}}}},"/v2/nvcf/functions/{functionId}/versions":{"get":{"tags":["Function Management"],"summary":"List Function Versions","description":"Lists details of all the versions of the specified function in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ","operationId":"getFunctions_1","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFunctionsResponse"}}}}}},"post":{"tags":["Function Management"],"summary":"Create Function Version","description":"Creates a version of the specified function within the authenticated NVIDIA Cloud Account. If the function is public, then Account Admin cannot create a version. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. ","operationId":"createFunction_1","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}":{"get":{"tags":["Function Sharing"],"summary":"List Account Authorizations For Function","description":"Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"getAuthorizedPartiesForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedPartiesResponse"}}}}}},"post":{"tags":["Function Sharing"],"summary":"Authorize Accounts To Invoke Function","description":"Authorizes additional NVIDIA Cloud Accounts to invoke any version of the specified function. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"createAuthorizedPartiesForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}},"delete":{"tags":["Function Sharing"],"summary":"Delete All Authorizations At Function Level","description":"Deletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"deleteAuthorizedPartiesForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}":{"get":{"tags":["Function Sharing"],"summary":"Get Account Authorizations For Function Version","description":"Gets NVIDIA Cloud Account IDs that are authorized to invoke specified function version. Response includes authorized accounts that were added specifically at the version level and the authorized accounts that were inherited from function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"getAuthorizedPartiesForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}},"post":{"tags":["Function Sharing"],"summary":"Authorize Accounts To Invoke/List Function Version","description":"Authorizes additional NVIDIA Cloud Accounts to invoke a specific function version. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Note that the response does NOT include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"createAuthorizedPartiesForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}},"delete":{"tags":["Function Sharing"],"summary":"Delete All Authorizations At Version Level","description":"Deletes all the authorized accounts that are directly associated with the specified function version. Authorized parties that are inherited by the function version are not deleted. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"deleteAuthorizedPartiesForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/assets":{"get":{"tags":["Asset Management"],"summary":"List Assets","description":"List assets owned by the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"getAssets","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResponse"}}}}},"deprecated":true},"post":{"tags":["Asset Management"],"summary":"Create Asset","description":"Creates a unique id representing an asset and a pre-signed URL to upload the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"createAsset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssetRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssetResponse"}}}}},"deprecated":true}},"/v2/nvcf/registry-credentials/{registryCredentialId}":{"get":{"tags":["Registry Credential Management"],"summary":"Get Registry Credential Details","description":"Retrieves detailed information of the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"getRegistryCredentialDetails","parameters":[{"name":"registryCredentialId","in":"path","description":"Registry Credential id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialDetailsResponse"}}}}}},"delete":{"tags":["Registry Credential Management"],"summary":"Delete Registry Credential","description":"Deletes the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"deleteRegistryCredential","parameters":[{"name":"registryCredentialId","in":"path","description":"Registry Credential id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}}},"patch":{"tags":["Registry Credential Management"],"summary":"Update registry credential","description":"Updates the secret and/or the artifact types associated with the specified registry credential. Artifact types specified in the request body are added to the set of artifact types that already exist for the specified registry credential. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"updateRegistryCredential","parameters":[{"name":"registryCredentialId","in":"path","description":"Registry Credential id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRegistryCredentialRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialDetailsResponse"}}}}}}},"/v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId}":{"patch":{"tags":["Function Deployment"],"summary":"Update the specified GPU specification under the specified deployment","description":" Updates the GPU specification of the specified function version's deployment. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"updateGpuSpecification","parameters":[{"name":"deploymentId","in":"path","description":"Deployment id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"gpuSpecId","in":"path","description":"GPU Specification id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGpuSpecificationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGpuSpecificationResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove":{"patch":{"tags":["Function Sharing"],"summary":"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function Version","description":"Removes the specified NVIDIA Cloud Account from the set of authorized accounts that are directly associated with specified function version. If the specified function version does not have any of its own(not inherited) authorized accounts, it results in a response with status 404. Also, if the specified authorized account is not in the set of existing authorized parties that are directly associated with the specified function version, it results in a response with status code 404. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"removeAuthorizedPartyForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add":{"patch":{"tags":["Function Sharing"],"summary":"Authorize Another Account To Invoke, List, and Check Queue Details of Function Version","description":"Adds the specified NVIDIA Cloud Account to the set of authorized accounts that can invoke the specified function version. If the specified function version does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing authorized accounts that are directly associated with the function version, it results in a response wit status code 409. If a function is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"addAuthorizedPartyForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/remove":{"patch":{"tags":["Function Sharing"],"summary":"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function","description":"Removes the specified NVIDIA Cloud Account from the set of authorized accounts that can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized parties, it results in a response with status 404. Also, if the specified account is not in the existing set of inheritable authorized accounts, it results in a response with status 404. If the specified function is public, then Account Admin cannot perform this operation. Note that response only includes the remaining authorized accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"removeAuthorizedPartyForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/add":{"patch":{"tags":["Function Sharing"],"summary":"Authorize Another Account To Invoke, List, and Check Queue Details of Function","description":"Adds the specified NVIDIA Cloud Account to the set of authorized accounts that are can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing inheritable authorized accounts, it results in a response with status code 409. If a function is public, then Account Admin cannot perform this operation. Note that response only includes authz accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"addAuthorizedPartyForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/telemetries/{telemetryId}":{"get":{"tags":["Telemetry Management"],"summary":"Get Telemetry Details","description":"Retrieves the details of a specific telemetry configuration by its ID. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ","operationId":"getTelemetry","parameters":[{"name":"telemetryId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryResponse"}}}}}},"delete":{"tags":["Telemetry Management"],"summary":"Delete Telemetry","description":"Deletes a specific telemetry configuration for a NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. If there any functions that are dependent on the Telemetry that is being deleted, then response with 400 status code will be returned. ","operationId":"deleteTelemetry","parameters":[{"name":"telemetryId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Cannot be deleted till Functions depend on it"}}}},"/v2/nvcf/recognized-registries":{"get":{"tags":["Registry Credential Management"],"summary":"List Recognized Registries","description":"Lists all the registries that are recognized by NVCF. Only when a registry is recognized by NVCF that the users can add its credential to their account and then use it to create functions. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"getRecognizedRegistries","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecognizedRegistriesResponse"}}}}}}},"/v2/nvcf/queues/{requestId}/position":{"get":{"tags":["Queue Details"],"summary":"Queue Position","description":"Using the specified function invocation request id, returns the estimated position of the corresponding message up to 1000 in the queue. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ","operationId":"getPositionInQueue","parameters":[{"name":"requestId","in":"path","description":"Function invocation request id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPositionInQueueResponse"}}}}}}},"/v2/nvcf/queues/functions/{functionId}/versions/{versionId}":{"get":{"tags":["Queue Details"],"summary":"Queue Details","description":"Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ","operationId":"getQueuesDetails","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetQueuesResponse"}}}}}}},"/v2/nvcf/queues/functions/{functionId}":{"get":{"tags":["Queue Details"],"summary":"Queue Details","description":"Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ","operationId":"getQueuesDetails_1","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetQueuesResponse"}}}}}}},"/v2/nvcf/pexec/status/{requestId}":{"get":{"tags":["Function Invocation"],"summary":"Poll For Result Using Function Invocation Request","description":"Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function and stream results without polling. Retrieves the status of an in-progress or pending request using its unique invocation request ID. If the result is available, it will be included in the response, marking the request as fulfilled. Conversely, if the result is not yet available, the request is deemed pending. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ","operationId":"getFunctionInvocationResult","parameters":[{"name":"requestId","in":"path","description":"Invocation Request Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"Invocation is fulfilled","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"202":{"description":"Result is pending. Client should poll using the requestId.","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"302":{"description":"Client should use the URL specified in the 'Location' response header to fetch\n large result.\n","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}},"Location":{"description":"URL to get the result","style":"simple","schema":{"type":"string"}}}},"402":{"description":"Cloud credits expired for public functions. Please contact NVIDIA representatives.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}}},"deprecated":true}},"/v2/nvcf/functions/ids":{"get":{"tags":["Function Management"],"summary":"List Function Ids","description":"Lists ids of all the functions in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ","operationId":"getFunctionIds","parameters":[{"name":"visibility","in":"query","description":"Query param 'visibility' indicates the kind of functions to be included\n in the response.\n","required":false,"schema":{"type":"array","default":["authorized","private","public"],"items":{"type":"string","format":"UTF-8","enum":["authorized","private","public"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFunctionIdsResponse"}}}}}}},"/v2/nvcf/deployments/{deploymentId}":{"get":{"tags":["Function Deployment"],"summary":"Get Function Deployment Details","description":"Allows Account Admins to retrieve the deployment details of the specified deployment id. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"getFunctionDeployment_1","parameters":[{"name":"deploymentId","in":"path","description":"Deployment id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}}}},"/v2/nvcf/clusterGroups":{"get":{"tags":["Cluster Groups and GPUs"],"summary":"List Cluster Groups","description":"Lists Cluster Groups for the current account. The response includes cluster groups defined specifically in the current account and publicly available cluster groups such as GFN, OCI, etc. Requires a bearer token with 'list_cluster_groups' scope in HTTP Authorization header. ","operationId":"getClusterGroups","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterGroupsResponse"}}}}},"deprecated":true}},"/v2/nvcf/assets/{assetId}":{"get":{"tags":["Asset Management"],"summary":"Show Asset Details","description":"Returns details for the specified asset-id belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"getAsset","parameters":[{"name":"assetId","in":"path","description":"Asset id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}}},"deprecated":true},"delete":{"tags":["Asset Management"],"summary":"Delete Asset","description":"Deletes asset belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"deleteAsset","parameters":[{"name":"assetId","in":"path","description":"Id of the asset to be deleted","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}},"deprecated":true}},"/health":{"get":{"tags":["health-controller"],"operationId":"getHealth","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/HealthComponent"}}}}}}}},"components":{"schemas":{"JsonNode":{},"SecretDto":{"type":"object","description":"Data Transfer Object(DTO) representing secret name/value pair","properties":{"name":{"type":"string","format":"UTF-8","description":"Secret name","maxLength":48,"minLength":1,"pattern":"^[a-z0-9A-Z][a-z0-9A-Z\\_\\.\\-]*$"},"value":{"$ref":"#/components/schemas/JsonNode","description":"Secret value must be 1 - 32768 chars long"}},"required":["name"]},"UpdateTelemetrySecretRequest":{"type":"object","description":"Request payload to update secret","properties":{"secret":{"$ref":"#/components/schemas/SecretDto","description":"Telemetry secret"}},"required":["secret"]},"UpdateFunctionSecretsRequest":{"type":"object","description":"Request payload to update secrets","properties":{"secrets":{"type":"array","description":"Secrets","items":{"$ref":"#/components/schemas/SecretDto"},"maxItems":2147483647,"minItems":0,"uniqueItems":true}},"required":["secrets"]},"LlmConfigUpdateDto":{"type":"object","description":"Partial update payload for LLM-specific model configuration fields.","properties":{"tokenRateLimit":{"type":"string","format":"UTF-8","description":"Updated token-level rate limit for the model. When omitted, the existing value is preserved.","maxLength":262144,"minLength":0},"routingMethod":{"type":"string","format":"UTF-8","description":"Updated routing method for the model. When omitted, the existing value is preserved.","maxLength":262144,"minLength":0}}},"ModelUpdateDto":{"type":"object","description":"Model-specific update request.","properties":{"modelName":{"type":"string","format":"UTF-8","description":"Name of the model to update.","maxLength":262144,"minLength":1},"llmConfig":{"$ref":"#/components/schemas/LlmConfigUpdateDto","description":"Optional updates to this model's LLM config fields."}},"required":["modelName"]},"RateLimitDto":{"type":"object","description":"Data Transfer Object(DTO) representing Rate limit config","properties":{"rateLimit":{"type":"string","format":"UTF-8","description":"Rate","maxLength":262144,"minLength":0,"pattern":"^(?!.*-([SMHD]).*-\\1)[1-9]\\d*-[SMHD](,\\s*[1-9]\\d*-[SMHD])*$"},"exemptedNcaIds":{"type":"array","description":"NCA ID Exemptions","items":{"type":"string"},"maxItems":32,"minItems":0,"uniqueItems":true},"perNcaIdRate":{"type":"object","additionalProperties":{"type":"string"},"description":"Per NCA ID Rate"},"syncCheck":{"type":"boolean","description":"Sync check. Defaults to false"},"perUserRate":{"type":"string","format":"UTF-8","description":"Per-user rate, intended for traffic authenticated with an invocation delegation token (InvocationToken). When set, this single rate is enforced individually against every unique caller identity, in addition to the NCA-tier limit.","maxLength":262144,"minLength":0,"pattern":"^(?!.*-([SMHD]).*-\\1)[1-9]\\d*-[SMHD](,\\s*[1-9]\\d*-[SMHD])*$"}}},"UpdateFunctionRequest":{"type":"object","description":"Request payload to update mutable function configuration fields.","properties":{"tags":{"type":"array","description":"Optional set of function tags. When omitted, the existing value is preserved.","items":{"type":"string","pattern":"[a-zA-Z0-9\\-_:=]+"},"maxItems":64,"minItems":0,"uniqueItems":true},"rateLimit":{"$ref":"#/components/schemas/RateLimitDto","description":"Optional full replacement for the function rate limit configuration. When omitted, the existing value is preserved. Use the delete rate-limit endpoint to clear it."},"modelUpdates":{"type":"array","description":"Optional list of model-specific updates.","items":{"$ref":"#/components/schemas/ModelUpdateDto"},"maxItems":2147483647,"minItems":0}}},"ArtifactDto":{"type":"object","description":"Data Transfer Object(DTO) representing an artifact","properties":{"name":{"type":"string","format":"UTF-8","description":"Artifact name","maxLength":262144,"minLength":0},"version":{"type":"string","format":"UTF-8","description":"Artifact version","maxLength":262144,"minLength":0},"uri":{"type":"string","format":"uri","description":"Artifact URI"}},"required":["name","uri","version"]},"ContainerEnvironmentEntryDto":{"type":"object","description":"Data Transfer Object(DTO) representing a container environment entry","properties":{"key":{"type":"string","format":"UTF-8","description":"Container environment key","maxLength":262144,"minLength":0},"value":{"type":"string","format":"UTF-8","description":"Container environment value","maxLength":262144,"minLength":0}},"required":["key","value"]},"FunctionDto":{"type":"object","description":"Data Transfer Object (DTO) representing a function","properties":{"id":{"type":"string","format":"uuid","description":"Unique function id","maxLength":36,"minLength":36},"ncaId":{"type":"string","format":"UTF-8","description":"NVIDIA Cloud Account Id","maxLength":262144,"minLength":0},"versionId":{"type":"string","format":"uuid","description":"Unique function version id","maxLength":36,"minLength":36},"name":{"type":"string","format":"UTF-8","description":"Function name","maxLength":262144,"minLength":0},"status":{"type":"string","format":"UTF-8","description":"Function status","enum":["ACTIVE","DEPLOYING","ERROR","INACTIVE","DELETED","DEGRADED","DEGRADING"],"maxLength":262144,"minLength":0},"inferenceUrl":{"type":"string","format":"uri","description":"Entrypoint for invoking the container to process requests"},"ownedByDifferentAccount":{"type":"boolean","description":"Indicates whether the function is owned by another account. If the account\n that is being used to lookup functions happens to be authorized to invoke/list\n this function which is owned by a different account, then this field is set\n to true and ncaId will contain the id of the account that owns the function.\n Otherwise, this field is not set as it defaults to false.\n"},"inferencePort":{"type":"integer","format":"int32","description":"Optional port number where the inference listener is running - defaults to 8000 for Triton","maximum":2147483647,"minimum":-2147483648},"containerArgs":{"type":"string","format":"UTF-8","description":"Args used to launch the container","maxLength":262144,"minLength":0},"containerEnvironment":{"type":"array","description":"Environment settings used to launch the container","items":{"$ref":"#/components/schemas/ContainerEnvironmentEntryDto"},"maxItems":2147483647,"minItems":0},"models":{"type":"array","description":"Optional list of models","items":{"$ref":"#/components/schemas/FunctionModelDto"},"maxItems":2147483647,"minItems":0},"containerImage":{"type":"string","format":"uri","description":"Optional custom container"},"apiBodyFormat":{"type":"string","format":"UTF-8","description":"Invocation request body format","enum":["PREDICT_V2","CUSTOM"],"maxLength":262144,"minLength":0},"helmChart":{"type":"string","format":"uri","description":"Optional Helm Chart"},"helmChartServiceName":{"type":"string","format":"UTF-8","description":"Helm Chart Service Name specified only when helmChart property is specified\n","maxLength":262144,"minLength":0},"healthUri":{"type":"string","format":"uri","deprecated":true,"description":"Health endpoint for the container or helmChart. Deprecated, use health.uri instead."},"createdAt":{"type":"string","format":"date-time","description":"Function creation timestamp","maxLength":30,"minLength":8},"activeInstances":{"type":"array","description":"List of active instances for this function.","items":{"$ref":"#/components/schemas/InstanceDto"},"maxItems":2147483647,"minItems":0},"resources":{"type":"array","description":"Optional set of resources.","items":{"$ref":"#/components/schemas/ArtifactDto"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"tags":{"type":"array","description":"Optional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars.","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"description":{"type":"string","format":"UTF-8","description":"Function/version description","maxLength":262144,"minLength":0},"health":{"$ref":"#/components/schemas/HealthDto","description":"Function health configuration"},"functionType":{"type":"string","format":"UTF-8","description":"Used to indicate a STREAMING function. Defaults to DEFAULT.","enum":["DEFAULT","STREAMING","LLM"],"maxLength":262144,"minLength":0},"secrets":{"type":"array","description":"Optional secret names","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"rateLimit":{"$ref":"#/components/schemas/RateLimitDto","description":"Optional rate limit policy"},"telemetries":{"$ref":"#/components/schemas/TelemetriesDto","description":"Optional telemetry configuration for the function"}},"required":["createdAt","functionType","healthUri","id","name","ncaId","status","versionId"]},"FunctionModelDto":{"type":"object","description":"Model associated with a function, including optional LLM routing metadata","properties":{"name":{"type":"string","format":"UTF-8","description":"Model name","maxLength":262144,"minLength":0},"version":{"type":"string","format":"UTF-8","description":"Model version. Optional for LLM-type functions.","maxLength":262144,"minLength":0},"uri":{"type":"string","format":"uri","description":"Model URI. Optional for LLM-type functions."},"llmConfig":{"$ref":"#/components/schemas/LlmConfigDto","description":"LLM-specific configuration for this model. Only relevant for LLM-type functions."}},"required":["name"]},"FunctionResponse":{"type":"object","description":"Response body with function details","properties":{"function":{"$ref":"#/components/schemas/FunctionDto","description":"Function details"}},"required":["function"]},"HealthDto":{"type":"object","description":"Data Transfer Object(DTO) representing a function ne","properties":{"protocol":{"type":"string","format":"UTF-8","description":"HTTP/gPRC protocol type for health endpoint","enum":["HTTP","gRPC"],"maxLength":262144,"minLength":0},"uri":{"type":"string","format":"uri","description":"Health endpoint for the container or the helmChart"},"port":{"type":"integer","format":"int32","description":"Port number where the health listener is running","maximum":2147483647,"minimum":-2147483648},"timeout":{"type":"string","format":"duration","description":"ISO 8601 duration string in PnDTnHnMn.nS format","example":"PT10S"},"expectedStatusCode":{"type":"integer","format":"int32","description":"Expected return status code considered as successful.","maximum":2147483647,"minimum":-2147483648}},"required":["expectedStatusCode","port","protocol","timeout","uri"]},"InstanceDto":{"type":"object","description":"Data Transfer Object(DTO) representing an instance","properties":{"instanceId":{"type":"string","format":"UTF-8","description":"Unique id of the instance","maxLength":262144,"minLength":0},"functionId":{"type":"string","format":"uuid","description":"Function executing on the instance","maxLength":36,"minLength":36},"functionVersionId":{"type":"string","format":"uuid","description":"Function version executing on the instance","maxLength":36,"minLength":36},"instanceType":{"type":"string","format":"UTF-8","description":"GPU instance-type powering the instance","maxLength":262144,"minLength":0},"instanceStatus":{"type":"string","format":"UTF-8","description":"Instance status","enum":["ACTIVE","STARTING","RUNNING","ERRORED","PREEMPTED","DELETED","TERMINATED"],"maxLength":262144,"minLength":0},"icmsRequestId":{"type":"string","format":"uuid","description":"ICMS request-id used to launch this instance","maxLength":36,"minLength":36},"ncaId":{"type":"string","format":"UTF-8","description":"NVIDIA Cloud Account Id that owns the function running on the instance","maxLength":262144,"minLength":0},"gpu":{"type":"string","format":"UTF-8","description":"GPU name powering the instance","maxLength":262144,"minLength":0},"backend":{"type":"string","format":"UTF-8","description":"Backend where the instance is running","maxLength":262144,"minLength":0},"location":{"type":"string","format":"UTF-8","description":"Location such as zone name or region where the instance is running","maxLength":262144,"minLength":0},"instanceCreatedAt":{"type":"string","format":"date-time","description":"Instance creation timestamp","maxLength":30,"minLength":8},"instanceUpdatedAt":{"type":"string","format":"date-time","description":"Instance's last updated timestamp","maxLength":30,"minLength":8}}},"LlmConfigDto":{"type":"object","description":"LLM-specific configuration for a model","properties":{"uris":{"type":"array","description":"OpenAI-compatible URIs supported by this model (e.g. /v1/chat/completions). Required for LLM models.","items":{"type":"string"},"maxItems":2147483647,"minItems":1},"tokenRateLimit":{"type":"string","format":"UTF-8","description":"Token-level rate limit for this model.","maxLength":262144,"minLength":0},"tokenizer":{"type":"string","format":"UTF-8","description":"Tokenizer identifier for this model.","maxLength":262144,"minLength":0},"routingMethod":{"type":"string","format":"UTF-8","description":"Routing method for this model.","maxLength":262144,"minLength":0}},"required":["uris"]},"TelemetriesDto":{"type":"object","description":"Telemetry configuration for logs, metrics, and traces.","properties":{"logsTelemetryId":{"type":"string","format":"uuid","description":"UUID representing the logs telemetry.","maxLength":36,"minLength":36},"metricsTelemetryId":{"type":"string","format":"uuid","description":"UUID representing the metrics telemetry.","maxLength":36,"minLength":36},"tracesTelemetryId":{"type":"string","format":"uuid","description":"UUID representing the traces telemetry.","maxLength":36,"minLength":36}}},"UpdateFunctionDeploymentRequest":{"type":"object","description":"Request to update function deployment spec","properties":{"deploymentSpecifications":{"type":"array","description":"Deployment specs with GPU, instance-type, etc. details for update request","items":{"$ref":"#/components/schemas/UpdateGpuSpecificationDto"},"maxItems":2147483647,"minItems":1}},"required":["deploymentSpecifications"]},"UpdateGpuSpecificationDto":{"type":"object","description":"Data Transfer Object (DTO) representing GPU specification for Deployment Update case.","properties":{"gpuSpecificationId":{"type":"string","format":"uuid","description":"GPU specification id","maxLength":36,"minLength":36},"gpu":{"type":"string","format":"UTF-8","description":"GPU name from the cluster. Deprecated: this is read-only field, should not be specified in update request.","maxLength":262144,"minLength":0},"backend":{"type":"string","format":"UTF-8","description":"Backend/CSP where the GPU powered instance has been launched. The original value\nwould not be updated and it should be the same as original. The field is required\nonly for validation.\n","maxLength":262144,"minLength":0},"clusters":{"type":"array","description":"Specific clusters within instance or worker node powered by the selected\ninstance-type to deploy function. The original value would not be updated and it\nshould be the same as original. The field is required only for validation.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"maxInstances":{"type":"integer","format":"int32","description":"Maximum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"minInstances":{"type":"integer","format":"int32","description":"Minimum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"instanceType":{"type":"string","format":"UTF-8","description":"Instance type, based on GPU, assigned to a Worker. Deprecated: this is read-only field, should not be specified in update request.","maxLength":262144,"minLength":0},"maxRequestConcurrency":{"type":"integer","format":"int32","description":"Max request concurrency between 1 (default) and 16384.","maximum":16384,"minimum":1}},"required":["maxInstances","minInstances"]},"AutoscalingConfigurationDto":{"type":"object","description":"Data Transfer Object(DTO) representing autoscaling configuration","properties":{"scaleUpDetails":{"$ref":"#/components/schemas/ScalingDetails","description":"Configuration for scaling up"},"scaleDownDetails":{"$ref":"#/components/schemas/ScalingDetails","description":"Configuration for scaling down"}}},"DeploymentHealthDto":{"type":"object","description":"Data Transfer Object(DTO) representing deployment error","properties":{"icmsRequestId":{"type":"string","format":"uuid","description":"ICMS Request ID","maxLength":36,"minLength":36},"gpu":{"type":"string","format":"UTF-8","description":"GPU Type as per SDD","maxLength":262144,"minLength":1},"backend":{"type":"string","format":"UTF-8","description":"Backend/CSP where the GPU powered instance will be launched","maxLength":262144,"minLength":1},"instanceType":{"type":"string","format":"UTF-8","description":"Instance type","maxLength":262144,"minLength":0},"error":{"type":"string","format":"UTF-8","description":"Deployment error","maxLength":262144,"minLength":1}},"required":["backend","error","gpu","icmsRequestId"]},"DeploymentResponse":{"type":"object","description":"Function Deployment Response","properties":{"deployment":{"$ref":"#/components/schemas/FunctionDeploymentDto","description":"Deployment details"}},"required":["deployment"]},"FunctionDeploymentDto":{"type":"object","description":"Function deployment response","properties":{"functionId":{"type":"string","format":"uuid","description":"Function id","maxLength":36,"minLength":36},"functionVersionId":{"type":"string","format":"uuid","description":"Function version id","maxLength":36,"minLength":36},"deploymentId":{"type":"string","format":"uuid","description":"Last deployment id","maxLength":36,"minLength":36},"functionName":{"type":"string","format":"UTF-8","description":"Function name","maxLength":262144,"minLength":1},"ncaId":{"type":"string","format":"UTF-8","description":"NVIDIA Cloud Account Id","maxLength":262144,"minLength":1},"functionStatus":{"type":"string","format":"UTF-8","description":"Function status","enum":["ACTIVE","DEPLOYING","ERROR","INACTIVE","DELETED","DEGRADED","DEGRADING"],"maxLength":262144,"minLength":0},"healthInfo":{"type":"array","description":"Health info for a deployment specification is included only if there are any\n issues/errors.\n","items":{"$ref":"#/components/schemas/DeploymentHealthDto"},"maxItems":2147483647,"minItems":0},"deploymentSpecifications":{"type":"array","description":"Function deployment details","items":{"$ref":"#/components/schemas/GpuSpecificationDto"},"maxItems":2147483647,"minItems":0},"createdAt":{"type":"string","format":"date-time","description":"Function deployment creation timestamp","maxLength":30,"minLength":8},"lastUpdatedAt":{"type":"string","format":"date-time","description":"Function deployment modification timestamp","maxLength":30,"minLength":8}},"required":["createdAt","deploymentId","deploymentSpecifications","functionId","functionName","functionStatus","functionVersionId","lastUpdatedAt","ncaId"]},"GpuSpecificationDto":{"type":"object","description":"Data Transfer Object(DTO) representing GPU specification.","properties":{"gpuSpecificationId":{"type":"string","format":"uuid","description":"GPU specification id","maxLength":36,"minLength":36},"gpu":{"type":"string","format":"UTF-8","description":"GPU name from the cluster","maxLength":262144,"minLength":1},"backend":{"type":"string","format":"UTF-8","description":"Use clusters instead of this property. Legacy property typically used when deploying a function to GFN.","maxLength":262144,"minLength":0},"maxInstances":{"type":"integer","format":"int32","description":"Maximum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"minInstances":{"type":"integer","format":"int32","description":"Minimum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"instanceType":{"type":"string","format":"UTF-8","description":"Instance type, based on GPU, assigned to a Worker","maxLength":262144,"minLength":1},"availabilityZones":{"type":"array","description":"List of availability-zones(or clusters) in the cluster group","items":{"type":"string"},"maxItems":2147483647,"minItems":0},"maxRequestConcurrency":{"type":"integer","format":"int32","description":"Max request concurrency between 1 (default) and 16384.","maximum":16384,"minimum":1},"configuration":{"type":"object","description":"Typically used when the function is based on Helm Charts to substitute\n placeholders in values yaml.\n"},"clusters":{"type":"array","description":"Specific clusters powered by the selected instance-type to deploy function.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"regions":{"type":"array","description":"List of regions allowed to deploy. The instance or worker node will be in one of\nthe specified geographical regions.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"attributes":{"type":"array","description":"Specific cluster attributes/capabilities to deploy functions. For example,\nHIPPA Compliant, Confidential Compute Compliant, etc.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"cpuArch":{"type":"string","format":"UTF-8","description":"CPU Architecture details","maxLength":262144,"minLength":0},"os":{"type":"string","format":"UTF-8","description":"Operating System details","maxLength":262144,"minLength":0},"driverVersion":{"type":"string","format":"UTF-8","description":"GPU driver version","maxLength":262144,"minLength":0},"storage":{"type":"string","format":"UTF-8","description":"Amount of available storage, e.g. 80G","maxLength":262144,"minLength":0},"systemMemory":{"type":"string","format":"UTF-8","description":"Amount of RAM","maxLength":262144,"minLength":0},"gpuMemory":{"type":"string","format":"UTF-8","description":"Amount of GPU memory","maxLength":262144,"minLength":0},"autoscalingConfiguration":{"$ref":"#/components/schemas/AutoscalingConfigurationDto","description":"Customizable autoscaling configuration"},"helmValidationPolicy":{"$ref":"#/components/schemas/HelmValidationPolicyDto","description":"Helm validation policy"}},"required":["gpu","instanceType","maxInstances","minInstances"]},"HelmValidationPolicyDto":{"type":"object","description":"Data Transfer Object(DTO) representing Helm validation policy","properties":{"name":{"type":"string","format":"UTF-8","description":"Helm validation policy name.","enum":["Default","Unrestricted"],"maxLength":262144,"minLength":0},"extraKubernetesTypes":{"type":"array","description":"An API Group in Kubernetes is a collection of related functionality.\nWhen present, must contain at least one entry; each entry must be a valid\nKubernetesType (group, version, kind).\n","items":{"$ref":"#/components/schemas/KubernetesType"},"maxItems":2147483647,"minItems":1}},"required":["name"]},"KubernetesType":{"type":"object","properties":{"group":{"type":"string","format":"UTF-8","description":"Name of API Group","maxLength":262144,"minLength":1},"version":{"type":"string","format":"UTF-8","description":"Version of API Group","maxLength":262144,"minLength":1},"kind":{"type":"string","format":"UTF-8","description":"API Group resource or Kind","maxLength":262144,"minLength":1}},"required":["group","kind","version"]},"ScalingDetails":{"type":"object","properties":{"metric":{"type":"string","format":"UTF-8","description":"Scaling metric","maxLength":262144,"minLength":0},"factor":{"type":"number","format":"float","description":"Scaling factor must be greater-than 1.0 for scale up and less-than 1.0 for scale down. This factor is used to multiply the currentinstance count when specified threshold is met."},"threshold":{"type":"integer","format":"int32","description":"Scaling threshold (0-100) as a percentage of utilizationupon which the number of current instances are multiplied with thespecified factor.","maximum":2147483647,"minimum":-2147483648},"stickiness":{"$ref":"#/components/schemas/StickinessWindow","description":"Stickiness window configuration"}},"required":["factor","threshold"]},"StickinessWindow":{"type":"object","properties":{"size":{"type":"string","format":"duration","description":"Window size must be less than or equal to PT1H and will berounded to the nearest minute","example":"PT30M"},"threshold":{"type":"string","format":"duration","description":"Window threshold must be less than size","example":"PT5M"}},"required":["size","threshold"]},"BasicFunctionDto":{"type":"object","description":"Basic Data Transfer Object (DTO) representing a function","properties":{"functionId":{"type":"string","format":"uuid","description":"Unique function id","maxLength":36,"minLength":36},"functionVersionId":{"type":"string","format":"uuid","description":"Unique function version id","maxLength":36,"minLength":36}},"required":["functionId"]},"MultiFunctionsInvocationTokenRequest":{"type":"object","description":"Request body for issuing a function invocation token","properties":{"functions":{"type":"array","description":"Functions to invoke","items":{"$ref":"#/components/schemas/BasicFunctionDto"},"maxItems":4,"minItems":0},"clientId":{"type":"string","format":"UTF-8","description":"ClientId for client to pass in to track who will eventually use the token","maxLength":262144,"minLength":1}},"required":["clientId","functions"]},"InvocationTokenResponse":{"type":"object","description":"Function invocation token response","properties":{"access_token":{"type":"string","format":"UTF-8","description":"Token issued by Notary Service","maxLength":262144,"minLength":0},"expires_in":{"type":"integer","format":"int32","description":"Token expiration time in seconds","maximum":2147483647,"minimum":-2147483648}}},"InvocationTokenRequest":{"type":"object","description":"Request body for issuing a function invocation token","properties":{"clientId":{"type":"string","format":"UTF-8","description":"ClientId for client to pass in to track who will eventually use the token","maxLength":262144,"minLength":1}},"required":["clientId"]},"TelemetryRequest":{"type":"object","description":"Data Transfer Object (DTO) representing a telemetry request","properties":{"endpoint":{"type":"string","format":"UTF-8","description":"Telemetry endpoint URL","maxLength":262144,"minLength":1},"protocol":{"type":"string","format":"UTF-8","description":"Protocol used for communication","enum":["HTTP","GRPC"],"maxLength":262144,"minLength":0},"provider":{"type":"string","format":"UTF-8","description":"Telemetry provider","enum":["PROMETHEUS","GRAFANA_CLOUD","SPLUNK","DATADOG","SERVICENOW","KRATOS","KRATOS_THANOS","TIMESTREAM","VICTORIAMETRICS","AZURE_MONITOR","OTEL_COLLECTOR"],"maxLength":262144,"minLength":0},"types":{"type":"array","description":"Set of telemetry data types","items":{"type":"string","enum":["LOGS","METRICS","TRACES"]},"maxItems":2147483647,"minItems":1,"uniqueItems":true},"secret":{"$ref":"#/components/schemas/SecretDto","description":"Single secret associated with the telemetry configuration"}},"required":["endpoint","protocol","provider","secret","types"]},"TelemetryDto":{"type":"object","description":"Data Transfer Object (DTO) for Telemetry configurations","properties":{"telemetryId":{"type":"string","format":"uuid","description":"Unique telemetry ID","maxLength":36,"minLength":36},"name":{"type":"string","format":"UTF-8","description":"Telemetry name","maxLength":262144,"minLength":1},"endpoint":{"type":"string","format":"UTF-8","description":"URL for the telemetry endpoint","maxLength":262144,"minLength":1},"protocol":{"type":"string","format":"UTF-8","description":"Protocol used for communication","enum":["HTTP","GRPC"],"maxLength":262144,"minLength":0},"provider":{"type":"string","format":"UTF-8","description":"Telemetry provider","enum":["PROMETHEUS","GRAFANA_CLOUD","SPLUNK","DATADOG","SERVICENOW","KRATOS","KRATOS_THANOS","TIMESTREAM","VICTORIAMETRICS","AZURE_MONITOR","OTEL_COLLECTOR"],"maxLength":262144,"minLength":0},"types":{"type":"array","description":"Set of telemetry data types","items":{"type":"string","enum":["LOGS","METRICS","TRACES"]},"maxItems":2147483647,"minItems":1,"uniqueItems":true},"createdAt":{"type":"string","format":"date-time","description":"Telemetry creation timestamp","maxLength":30,"minLength":8}},"required":["createdAt","endpoint","name","protocol","provider","telemetryId","types"]},"TelemetryResponse":{"type":"object","description":"Data Transfer Object (DTO) representing a telemetry response","properties":{"telemetry":{"$ref":"#/components/schemas/TelemetryDto","description":"Telemetry details"}}},"AddRegistryCredentialRequest":{"type":"object","description":"Request body to add a registry credential to an account","properties":{"registryHostname":{"type":"string","format":"UTF-8","description":"Registry hostname","maxLength":255,"minLength":1,"pattern":"(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(? n + ['get', 'post', 'put', 'patch', 'delete', 'head', 'options'].filter((v) => p[v]).length, 0); +console.log(`Wrote ${outFile}: openapi=${spec.openapi} title="${spec.info.title}" version=${spec.info.version} paths=${Object.keys(spec.paths).length} ops=${ops}`); From 5de3ad5b40ffe18e2d83d0c73cb9cce7c9e20030 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:29:00 +1000 Subject: [PATCH 03/17] feat: harvest the NGC core definitions and clean both sources - harvest_ngc_spec.mjs extracts the definition list from the explorer JS bundle at docs.ngc.nvidia.com/api/ and fetches every in-scope definition; unreachable and out-of-scope entries are recorded with evidence in download_manifest.json - harvested: ngc_kas.json (NGC API Documentation v3.249.6 - orgs, teams, users; 77 paths) and ngc_models.json (Models API - registry artifact metadata; 231 paths). Org Mgmt / User IAM / Search / Metadata / Publishing hosts are not publicly routable - recorded, re-probe with a key in task 4 - clean_specs.mjs applies deterministic repair rules (missing version stamp, relative-server repair for ngc_kas) and validates all three sources with swagger-parser 12.1.0; all clean; full fix report in clean_report.json - ngcCoreDecision recorded in spec_pin.json: harvest-usable, ngcsdk archetype-2 fallback not invoked Co-Authored-By: Claude Fable 5 --- provider-dev/config/clean_report.json | 39 + provider-dev/config/spec_pin.json | 28 + provider-dev/downloaded/cleaned/ngc_kas.json | 22939 ++++++++ .../downloaded/cleaned/ngc_models.json | 45950 ++++++++++++++++ .../downloaded/cleaned/nvcf_openapi.json | 5757 ++ .../downloaded/download_manifest.json | 88 + provider-dev/downloaded/ngc_kas.json | 1 + provider-dev/downloaded/ngc_models.json | 1 + provider-dev/scripts/clean_specs.mjs | 138 + provider-dev/scripts/harvest_ngc_spec.mjs | 146 + 10 files changed, 75087 insertions(+) create mode 100644 provider-dev/config/clean_report.json create mode 100644 provider-dev/downloaded/cleaned/ngc_kas.json create mode 100644 provider-dev/downloaded/cleaned/ngc_models.json create mode 100644 provider-dev/downloaded/cleaned/nvcf_openapi.json create mode 100644 provider-dev/downloaded/ngc_kas.json create mode 100644 provider-dev/downloaded/ngc_models.json create mode 100644 provider-dev/scripts/clean_specs.mjs create mode 100644 provider-dev/scripts/harvest_ngc_spec.mjs diff --git a/provider-dev/config/clean_report.json b/provider-dev/config/clean_report.json new file mode 100644 index 0000000..f97aa37 --- /dev/null +++ b/provider-dev/config/clean_report.json @@ -0,0 +1,39 @@ +{ + "generated": "2026-07-14", + "sources": { + "ngc_kas.json": { + "openapi": "3.0.1", + "title": "NGC API Documentation", + "version": "v3.249.6", + "paths": 77, + "fixes": [ + { + "rule": "repair-relative-server", + "note": "servers [{\"url\":\"/\"}] is relative/absent; set to https://api.ngc.nvidia.com (the host the definition is served from)" + } + ], + "notes": [], + "validation": "clean" + }, + "ngc_models.json": { + "openapi": "3.1.0", + "title": "Models API", + "version": "0.0.1-SNAPSHOT", + "paths": 231, + "fixes": [], + "notes": [ + "info.version is a placeholder (0.0.1-SNAPSHOT); left as-is" + ], + "validation": "clean" + }, + "nvcf_openapi.json": { + "openapi": "3.1.0", + "title": "Cloud Functions", + "version": "2.245.1", + "paths": 35, + "fixes": [], + "notes": [], + "validation": "clean" + } + } +} diff --git a/provider-dev/config/spec_pin.json b/provider-dev/config/spec_pin.json index de1bf72..52cab03 100644 --- a/provider-dev/config/spec_pin.json +++ b/provider-dev/config/spec_pin.json @@ -1,4 +1,10 @@ { + "ngcCoreDecision": { + "outcome": "harvest-usable", + "date": "2026-07-14", + "evidence": "The explorer at docs.ngc.nvidia.com/api/ is a swagger-ui over 11 displayed per-service definitions (list extracted from its JS bundle, recorded in download_manifest.json). Two in-scope definitions are publicly retrievable and validate clean after deterministic repairs: ngc_kas.json (NGC API Documentation v3.249.6 - orgs, teams, users, invitations; repaired relative server to api.ngc.nvidia.com) and ngc_models.json (Models API - registry artifact metadata; info.version is a 0.0.1-SNAPSHOT placeholder, noted in clean_report.json). Five in-scope definitions (Org Mgmt, User IAM, Search, Metadata, Publishing) are served from *.ngc.nvidia.com hosts that resolve in DNS but refuse public connections - recorded as unreachable in download_manifest.json. Gateway probes api.ngc.nvidia.com/v3/openapi, /v3/search/api-docs and /v3/meta/api-docs return 401 unauthenticated; re-probe with a bearer key is a phase-1 task-4 follow-up.", + "fallback": "The archetype-2 fallback (derive the NGC core spec from the ngcsdk Python SDK) is NOT invoked: the harvested kas + models definitions cover the in-scope NGC core surface (orgs/users/teams and registry artifact metadata). Revisit only if the inventory shows a required resource absent from both harvested definitions and the authenticated gateway probes." + }, "sources": { "nvcf_openapi.json": { "url": "https://api.nvcf.nvidia.com/v3/openapi", @@ -14,6 +20,28 @@ "hostSplit": "The spec declares a single server (https://api.nvcf.nvidia.com) but the NVCF documentation (cloud-functions user guide, API page) states the primary domain for function management is api.ngc.nvidia.com and the NVCF domain for function invocation and queue details is api.nvcf.nvidia.com. Hosts are carried per operation group; the per-operation assignment with evidence is recorded in endpoint_inventory.csv.", "validation": "swagger-parser 12.1.0 validate: clean, no repairs required" } + }, + "ngc_models.json": { + "url": "https://models.ngc.nvidia.com/v3/openapi", + "fetched": "2026-07-14", + "sha256": "7541d8f6cbd983e41fda42a171ce4fd4f6c0367eceb65c188e79202b90a73d91", + "bytes": 614601, + "explorer": "https://docs.ngc.nvidia.com/api/", + "explorerName": "Private Artifacts (Models) API", + "openapi": "3.1.0", + "title": "Models API", + "specVersion": "0.0.1-SNAPSHOT" + }, + "ngc_kas.json": { + "url": "https://api-internal.ngc.nvidia.com/v3/api-docs", + "fetched": "2026-07-14", + "sha256": "dcaf78b003e94318b6e1e41ab9157f81ddc464b8455545ce16d33f378eebf987", + "bytes": 294470, + "explorer": "https://docs.ngc.nvidia.com/api/", + "explorerName": "KASv1 API (Deprecated)", + "openapi": "3.0.1", + "title": "NGC API Documentation", + "specVersion": "v3.249.6" } } } diff --git a/provider-dev/downloaded/cleaned/ngc_kas.json b/provider-dev/downloaded/cleaned/ngc_kas.json new file mode 100644 index 0000000..52d1bbd --- /dev/null +++ b/provider-dev/downloaded/cleaned/ngc_kas.json @@ -0,0 +1,22939 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "NGC API Documentation", + "description": "The NGC Web API is an interface for querying information from and enacting change in a NGC world. \n", + "license": { + "name": "Legal Notices", + "url": "https://www.nvidia.com/en-us/legal_info" + }, + "version": "v3.249.6" + }, + "servers": [ + { + "url": "https://api.ngc.nvidia.com" + } + ], + "security": [ + { + "api-key": [] + }, + { + "bearer-token": [] + } + ], + "tags": [ + { + "name": "Services" + }, + { + "name": "Orgs" + }, + { + "name": "Super Admin User Controller" + }, + { + "name": "Super Admin Org Controller" + }, + { + "name": "Teams", + "description": "Team Operations" + }, + { + "name": "Users Management", + "description": "Operation to manager users" + } + ], + "paths": { + "/v3/orgs/{org-name}/users/nca-invitations": { + "post": { + "tags": [ + "Users Management" + ], + "summary": "Invite User to NCA (org version)", + "description": "Invites and creates a User in org", + "operationId": "inviteUserToNcaInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserNcaInvitationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/nca-invitations": { + "post": { + "tags": [ + "Users Management" + ], + "summary": "Invite User to NCA (team version)", + "description": "Invites and creates a User in team", + "operationId": "inviteUserToNcaInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserNcaInvitationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/proto-org": { + "post": { + "tags": [ + "Orgs" + ], + "summary": "Create Organization from ProtoOrg", + "description": "Create a new organization based on the org info retrieved from the ProtoOrg.", + "operationId": "createOrganizationFromProtoOrg", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs": { + "post": { + "tags": [ + "Orgs" + ], + "summary": "Create Organization from Scratch", + "description": "Create a new organization based on the org info provided in the request.", + "operationId": "createOrganizationFromScratch", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/admin/orgs": { + "post": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Creates organization from scratch or proto organization", + "description": "OrgCreateRequest is used to create the organization or when no nca_id is provided upfront, the OrgCreateRequest is stored as proto org, and proto org flow initiates (SuperAdmin privileges required)", + "operationId": "createProtoOrganization", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/admin/orgs/ncaIds": { + "post": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Get Organization by NCA ID or Org Name", + "description": "Get Organization by NCA ID or Org Name. (SuperAdmin privileges required)", + "operationId": "getMapping", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgNcaMappingRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgNcaMappingResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/users/me/api-key": { + "post": { + "tags": [ + "Users Management" + ], + "summary": "Generate API Key", + "description": "Generate API Key", + "operationId": "generateUserApiKey", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserKeyResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/users": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "List users In org", + "description": "Get list of users in organization. (User Admin in org privileges required)", + "operationId": "listUsersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude-from-team", + "in": "query", + "description": "Name of team to exclude members from", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "q", + "in": "query", + "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Users Management" + ], + "summary": "Creates a User in org", + "description": "Creates a User", + "operationId": "createUserInOrg", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "send-email", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "idp-id", + "in": "query", + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/teams": { + "get": { + "tags": [ + "Teams" + ], + "summary": "List Teams", + "description": "List all Teams", + "operationId": "listTeams", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Teams" + ], + "summary": "Create Team", + "description": "Create team in org. (Org Admin Privileges Required)", + "operationId": "createTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamCreateResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Get User in team", + "description": "Get User details within team context", + "operationId": "getUserInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "idp-id", + "in": "query", + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Users Management" + ], + "summary": "Add a User to team", + "description": "Add a User to team", + "operationId": "addUserToTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user role", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Removes User from team", + "description": "Removes User from team. (Org Admin or Team Admin Privileges Required).", + "operationId": "removeUserFromTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/team/{team-name}/users": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "List users in team", + "description": "Get list of users in team. (User Admin in team privileges required)", + "operationId": "listUsersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "q", + "in": "query", + "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Users Management" + ], + "summary": "Creates a User in team", + "description": "Creates a User and add them to a team within the org.", + "operationId": "createUserInTeam", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "send-email", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "idp-id", + "in": "query", + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/users/{user-id}/org-owner-backfill": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Backfill the org owner for individual users", + "description": "Backfill the org owner for individual users", + "operationId": "backfillOrgOwnerByUser", + "parameters": [ + { + "name": "User ID of the user", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/users/{id}/migrate-deprecated-roles": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Migrate User Deprecated Roles", + "description": "Migrate User Deprecated Roles.", + "operationId": "migrateUserDeprecatedRoles", + "parameters": [ + { + "name": "user id (not email)", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/users/{id}/crm-sync": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Sync crm id with user email", + "description": "Sync crm id with user email (Super Admin privileges required)", + "operationId": "syncCrmUser", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/orgs": { + "post": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Create Organization", + "description": "Create a new organization. (SuperAdmin privileges required)", + "operationId": "createOrganization", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/users/{id}": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Add existing User to an Org", + "description": "Add existing User to an Org", + "operationId": "addUserToOrg", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user role, defaults to REGISTRY_READ", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "REGISTRY_READ" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + }, + "delete": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Remove User from org", + "description": "Remove User from org.", + "operationId": "removeUserFromOrg_2", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/users": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Create User", + "description": "Create an user in an Organization (Super Admin privileges required)", + "operationId": "createUserInOrg_1", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "send-email", + "in": "query", + "description": "Boolean to send email notification, default is true", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "idp-id", + "in": "query", + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users/{id}": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Add existing User to an Team", + "description": "Add existing User to an Team", + "operationId": "addUserToTeam_1", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user role, defaults to REGISTRY_READ", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "REGISTRY_READ" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Create User", + "description": "Create an Org-Admin User (Super Admin privileges required)", + "operationId": "createUserInTeam_1", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "send-email", + "in": "query", + "description": "Boolean to send email notification, default is true", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "idp-id", + "in": "query", + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/org-owner-backfill": { + "post": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Backfill the org owner for users", + "description": "Backfill the org owner for users", + "operationId": "backfillOrgOwnerByOrg", + "parameters": [ + { + "name": "Org Name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/backfill-orgs-to-kratos": { + "post": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Backfill Orgs to Kratos", + "description": "Backfill Orgs to Kratos", + "operationId": "backfillOrgsToKratos", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/users/{user-email-or-id}/add-role": { + "patch": { + "tags": [ + "Users Management" + ], + "summary": "Invite user or add role in org", + "description": "Invite if user does not exist, otherwise add role in org", + "operationId": "addRoleOrInviteUserToOrg", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user-email-or-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/add-role": { + "patch": { + "tags": [ + "Users Management" + ], + "summary": "Invite user or add role in team", + "description": "Invite if user does not exist, otherwise add role in team", + "operationId": "addRoleOrInviteUserToTeam", + "parameters": [ + { + "name": "ncid", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "VisitorID", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user-email-or-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/admin/org/{org-name}": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Get Organization or Proto Organization", + "description": "Get organization or proto organization info. (SuperAdmin privileges required)", + "operationId": "getOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude-fields", + "in": "query", + "description": "The list of fields to hide from the response", + "required": false, + "schema": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Update Organization", + "description": "Update org information and settings. Superadmin privileges required", + "operationId": "updateOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/users/me": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Who am I?", + "description": "What am I?", + "operationId": "whoAmI", + "parameters": [ + { + "name": "org-name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Users Management" + ], + "summary": "Edit current user profile", + "description": "Edit current user profile", + "operationId": "editUserProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/orgs/{org-name}": { + "get": { + "tags": [ + "Orgs" + ], + "summary": "Get Organization", + "description": "Get organization information", + "operationId": "getOrganization", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Orgs" + ], + "summary": "Update Organization", + "description": "Update organization information", + "operationId": "updateOrganization", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgProfileUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/users/{id}/update-role": { + "patch": { + "tags": [ + "Users Management" + ], + "summary": "Update User Role in org", + "description": "Update User Role in org", + "operationId": "updateUserRole", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/org/{org-name}/users/{id}/add-role": { + "patch": { + "tags": [ + "Users Management" + ], + "summary": "Add User Role in org", + "description": "Add User Role in org.", + "operationId": "addUserRole", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/org/{org-name}/teams/{team-name}": { + "get": { + "tags": [ + "Teams" + ], + "summary": "Get Team", + "description": "Get Team by name", + "operationId": "getTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Teams" + ], + "summary": "Delete Team", + "description": "Delete a Team", + "operationId": "deleteTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Teams" + ], + "summary": "Edit Team", + "description": "Edit a Team", + "operationId": "editTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}/update-role": { + "patch": { + "tags": [ + "Users Management" + ], + "summary": "Update User Role in team", + "description": "Update User Role in team", + "operationId": "updateUserRole_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}/add-role": { + "patch": { + "tags": [ + "Users Management" + ], + "summary": "Add User Role in team", + "description": "Add User Role in team.", + "operationId": "addUserRole_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/admin/users/invite": { + "patch": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Re invite user", + "description": "Invite an existing user again (Super Admin privileges required)", + "operationId": "emailInviteToUser", + "parameters": [ + { + "name": "email", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "send-email", + "in": "query", + "description": "Boolean to send email notification, default is true", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/admin/org/{org-name}": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Get Organization", + "description": "Get organization info. (SuperAdmin privileges required)", + "operationId": "getOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Update Organization", + "description": "Update org information and settings. Superadmin privileges required", + "operationId": "updateOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/admin/org/{org-name}/users/{id}/update-role": { + "patch": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Update User Role in org", + "description": "Update User Role in org", + "operationId": "updateUserRole_2", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/admin/org/{org-name}/users/{id}/add-role": { + "patch": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Add user role in org", + "description": "Add user role in org.", + "operationId": "addUserRole_2", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/admin/org/{org-name}/teams/{team-name}": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Get Team", + "description": "Get one team", + "operationId": "getTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "Edit Team", + "description": "Edit a Team", + "operationId": "editTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users/{id}/add-role": { + "patch": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Add user role in team", + "description": "Add user role in team.", + "operationId": "addUserRole_3", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/ping": { + "head": { + "tags": [ + "Users Management" + ], + "summary": "Head ping (heartbeat)", + "description": "A lightweight ping call (heartbeat). This would allow UI to show different overlays in case there is any problem with the subscription or if the user has not accepted TOU", + "operationId": "headPing", + "parameters": [ + { + "name": "Org name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Product name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/entitlements": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "List Organizations with Entitlements", + "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", + "operationId": "listOrganizationsWithEntitlement", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "filter by org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "product-name", + "in": "query", + "description": "filter by product-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is-paid-subscription", + "in": "query", + "description": "get is paid subscription entitlements", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListEntitlementResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/entitlements": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "List Organizations with Entitlements", + "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", + "operationId": "listOrganizationsWithEntitlement_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "filter by org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "product-name", + "in": "query", + "description": "filter by product-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is-paid-subscription", + "in": "query", + "description": "get is paid subscription entitlements", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListEntitlementResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/version": { + "get": { + "tags": [ + "Services" + ], + "summary": "Version Number", + "description": "Used to get the latest version number of a given package.", + "operationId": "getLatestPackageVersion", + "parameters": [ + { + "name": "repo", + "in": "query", + "description": "repository of package", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "package", + "in": "query", + "description": "name of package", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PackageVersionListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/users/{user-email-or-id}": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Get user in an org by email or id.", + "description": "Get info and role/invitation in an org by email or id", + "operationId": "listUserRolesInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user-email-or-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Get user in a team by email or id.", + "description": "Get info and role/invitation in a team by email or id", + "operationId": "listUserRolesInOrgTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user-email-or-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/proto-org/validate": { + "get": { + "tags": [ + "Orgs" + ], + "summary": "Validate org creation invite", + "description": "Validate org creation from proto org", + "operationId": "protoOrgInvitationValidate", + "parameters": [ + { + "name": "invitation_token", + "in": "query", + "description": "JWT that contains org owner email and proto org identifier", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgInvitationResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/admin/org": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "List Organizations and Proto Organizations", + "description": "List all organizations. (SuperAdmin privileges required)", + "operationId": "listOrganizations", + "parameters": [ + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "org-name", + "in": "query", + "description": "Org name to search", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "org-desc", + "in": "query", + "description": "Org description to search", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org display name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org owner name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org owner email. Email should be base-64-encoded.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "org-type", + "in": "query", + "description": "Org Type to search", + "required": false, + "schema": { + "type": "string", + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ] + } + }, + { + "name": "pec-id", + "in": "query", + "description": "PEC ID to search", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/orgs": { + "get": { + "tags": [ + "Orgs" + ], + "summary": "List Organizations", + "description": "List all organizations of the user", + "operationId": "listOrganizations_1", + "parameters": [ + { + "name": "Filter using PEC ID", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org display name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org owner name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org owner email", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/users/{id}/invite": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Create a new Invitation and send Email to User", + "description": "Create a new invitation and send email to a user. This is used when a previously sent invite email expired. (Org Admin privileges required)", + "operationId": "emailInviteToUser_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "send-email", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/org/{org-name}/users/{id}": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Get User in org", + "description": "Get User details in org context", + "operationId": "getUserInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "idp-id", + "in": "query", + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Remove User from org", + "description": "Remove User from org. (User Admin Privileges Required)", + "operationId": "removeUserFromOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "anonymize", + "in": "query", + "description": "If anonymize is true, then org owner permission is required.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/users/invitations/{id}/resend-invitation-email": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Resend email of a specific invitation in an org.", + "description": "Resend email of a specific invitation in an org (Org User Admin privileges required).", + "operationId": "resendUserInvitationEmailInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "invitation ID", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/users/invitations": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "List user invitations in an org.", + "description": "List invitations in an org. (Org User Admin privileges required)", + "operationId": "listInvitationsForUserInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "orderBy", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "NAME_ASC", + "NAME_DESC" + ] + } + }, + { + "name": "q", + "in": "query", + "description": "User Search Parameters", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInvitationListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/team/{team-name}/users/invitations/{id}/resend-invitation-email": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Resend email of a specific invitation in a team.", + "description": "Resend email of a specific invitation in a team (Org or Team User Admin privileges required).", + "operationId": "resendUserInvitationEmailInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "invitation ID", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/team/{team-name}/users/invitations": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "List user invitations in a team.", + "description": "List invitations in a team. (Team User Admin privileges required)", + "operationId": "listInvitationsForUserInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "orderBy", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "NAME_ASC", + "NAME_DESC" + ] + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "q", + "in": "query", + "description": "User Search Parameters", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInvitationListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/team/{team-name}/starfleetIds/{starfleet-id}": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Get User in team", + "description": "Get User details in team by starfleet Id", + "operationId": "getUserInTeamByStarfleetId", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "starfleet-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/starfleetIds/{starfleet-id}": { + "get": { + "tags": [ + "Users Management" + ], + "summary": "Get User in org", + "description": "Get User details in org by starfleet Id", + "operationId": "getUserInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "starfleet-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/users/{id}": { + "get": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Get User Information", + "description": "Get User details", + "operationId": "getUserDetails", + "parameters": [ + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/users/me": { + "get": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Who am I? Admin version", + "description": "What am I? Admin version, shows more info than regular endpoint", + "operationId": "whoAmI_1", + "parameters": [ + { + "name": "org-name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "List Organizations", + "description": "List all organizations. (SuperAdmin privileges required)", + "operationId": "listOrganizations_2", + "parameters": [ + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "org-name", + "in": "query", + "description": "Org name to search", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "org-desc", + "in": "query", + "description": "Org description to search", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org display name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org owner name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Filter using org owner email. Email should be base-64-encoded.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "org-type", + "in": "query", + "description": "Org Type to search", + "required": false, + "schema": { + "type": "string", + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ] + } + }, + { + "name": "pec-id", + "in": "query", + "description": "PEC ID to search", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/orgs/offboarded": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "List Offboarded Organizations", + "description": "List all Offboarded organizations.", + "operationId": "listOffboardedOrgs", + "parameters": [ + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/teams": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "List Teams", + "description": "List all Teams", + "operationId": "listTeams_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page-number", + "in": "query", + "description": "The page number of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page-size", + "in": "query", + "description": "The page size of result", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "team-name", + "in": "query", + "description": "Team name to search", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "scan-by-default", + "in": "query", + "description": "Get all team that has scan by default only", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "scan-allow-override", + "in": "query", + "description": "Get all team that has scan allow override only", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "scan-show-results", + "in": "query", + "description": "Get all team that has scan show results only", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/TeamListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/validate": { + "get": { + "tags": [ + "Super Admin Org Controller" + ], + "summary": "List Validated Organizations", + "description": "List all organizations that match the validate org params", + "operationId": "listValidatedOrganizations", + "parameters": [ + { + "name": "q", + "in": "query", + "description": "Validate Organization Parameters", + "required": true, + "schema": { + "$ref": "#/components/schemas/ValidateOrgQueryParams" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/roles": { + "get": { + "tags": [ + "Services" + ], + "summary": "NGC Roles", + "description": "List of roles in NGC and their scopes", + "operationId": "getRoles", + "parameters": [ + { + "name": "show-hidden", + "in": "query", + "description": "flag indicate if hidden roles should be included", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserRoleDefinitionsResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/public-keys": { + "get": { + "tags": [ + "Services" + ], + "summary": "Web Service Health Status", + "description": "Used to check the health status of the web service only", + "operationId": "getPublicKey", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/health/all": { + "get": { + "tags": [ + "Services" + ], + "summary": "All Service Health Status", + "description": "Used to get health status of all services", + "operationId": "statusDetails", + "parameters": [ + { + "name": "showDetails", + "in": "query", + "description": "boolean value to indicating to show details or not", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "secret", + "in": "query", + "description": "secret value that validates the call in order to show details", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/health": { + "get": { + "tags": [ + "Services" + ], + "summary": "Web Service Health Status", + "description": "Used to check the health status of the web service only", + "operationId": "status", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/users/{user-email-or-id}/remove-role": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Remove role or invitation in org", + "description": "Remove role in org if user exists, otherwise remove invitation", + "operationId": "removeRoleOrInvitationInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user-email-or-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/users/{id}": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Remove User from org", + "description": "Remove User from org.", + "operationId": "removeUserFromOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "anonymize", + "in": "query", + "description": "If anonymize is true, then org owner permission is required.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/remove-role": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Remove role or invitation in team", + "description": "Remove role in team if user exists, otherwise remove invitation", + "operationId": "removeRoleOrInvitationInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user-email-or-id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{id}": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Remove User from team", + "description": "Remove User from team.", + "operationId": "removeUserFromTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "anonymize", + "in": "query", + "description": "If anonymize is true, then org owner permission is required.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/users/{id}/remove-role": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Remove User Role in org", + "description": "Remove User Role in org (if the last role is removed, the user is removed from the org and org teams).", + "operationId": "removeUserRole", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/org/{org-name}/users/invitations/{id}": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Delete a specific invitation in an org.", + "description": "Delete a specific invitation in an org. (Org User Admin privileges required)", + "operationId": "deleteUserInvitationInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "invitation ID", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}/remove-role": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Remove User Role in team", + "description": "Remove User Role in team (if the last role is removed, the user is removed from the team).", + "operationId": "removeUserRole_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/org/{org-name}/team/{team-name}/users/invitations/{id}": { + "delete": { + "tags": [ + "Users Management" + ], + "summary": "Delete a specific invitation in a team.", + "description": "Delete a specific invitation in an team. (Org Admin or Team User Admin privileges required)", + "operationId": "deleteUserInvitationInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "invitation ID", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v2/admin/org/{org-name}/users/{id}/remove-role": { + "delete": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Remove user role in org", + "description": "Remove user role in org (if the last role is removed, the user is removed from the org and org teams).", + "operationId": "removeUserRole_2", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users/{id}/remove-role": { + "delete": { + "tags": [ + "Super Admin User Controller" + ], + "summary": "Remove user role in team", + "description": "Remove user role in team (if the last role is removed, the user is removed from the team).", + "operationId": "removeUserRole_3", + "parameters": [ + { + "name": "org-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "team-name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "user id or b64encoded email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roles", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Object Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/swagger-resources": { + "get": { + "tags": [ + "api-resource-controller" + ], + "operationId": "swaggerResources_4", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwaggerResource" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "api-resource-controller" + ], + "operationId": "swaggerResources_5", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwaggerResource" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "api-resource-controller" + ], + "operationId": "swaggerResources", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwaggerResource" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "api-resource-controller" + ], + "operationId": "swaggerResources_6", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwaggerResource" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "options": { + "tags": [ + "api-resource-controller" + ], + "operationId": "swaggerResources_3", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwaggerResource" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "head": { + "tags": [ + "api-resource-controller" + ], + "operationId": "swaggerResources_1", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwaggerResource" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "api-resource-controller" + ], + "operationId": "swaggerResources_2", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwaggerResource" + } + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/swagger-resources/configuration/ui": { + "get": { + "tags": [ + "api-resource-controller" + ], + "operationId": "uiConfiguration_4", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "api-resource-controller" + ], + "operationId": "uiConfiguration_5", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "api-resource-controller" + ], + "operationId": "uiConfiguration", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "api-resource-controller" + ], + "operationId": "uiConfiguration_6", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "options": { + "tags": [ + "api-resource-controller" + ], + "operationId": "uiConfiguration_3", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "head": { + "tags": [ + "api-resource-controller" + ], + "operationId": "uiConfiguration_1", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "api-resource-controller" + ], + "operationId": "uiConfiguration_2", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/swagger-resources/configuration/security": { + "get": { + "tags": [ + "api-resource-controller" + ], + "operationId": "securityConfiguration_4", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "api-resource-controller" + ], + "operationId": "securityConfiguration_5", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "api-resource-controller" + ], + "operationId": "securityConfiguration", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "api-resource-controller" + ], + "operationId": "securityConfiguration_6", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "options": { + "tags": [ + "api-resource-controller" + ], + "operationId": "securityConfiguration_3", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "head": { + "tags": [ + "api-resource-controller" + ], + "operationId": "securityConfiguration_1", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "patch": { + "tags": [ + "api-resource-controller" + ], + "operationId": "securityConfiguration_2", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + } + }, + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "402": { + "description": "Payment Required", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "405": { + "description": "Method Not Allowed", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "415": { + "description": "Unsupported Media Type", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "501": { + "description": "Not Implemented", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "ErrorResponse": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + } + }, + "RequestStatus": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + }, + "statusCode": { + "type": "string", + "description": "Describes response status reported by the server.", + "enum": [ + "UNKNOWN", + "SUCCESS", + "UNAUTHORIZED", + "PAYMENT_REQUIRED", + "FORBIDDEN", + "TIMEOUT", + "EXISTS", + "NOT_FOUND", + "INTERNAL_ERROR", + "INVALID_REQUEST", + "INVALID_REQUEST_VERSION", + "INVALID_REQUEST_DATA", + "METHOD_NOT_ALLOWED", + "CONFLICT", + "UNPROCESSABLE_ENTITY", + "TOO_MANY_REQUESTS", + "INSUFFICIENT_STORAGE", + "SERVICE_UNAVAILABLE", + "PAYLOAD_TOO_LARGE", + "NOT_ACCEPTABLE", + "UNAVAILABLE_FOR_LEGAL_REASONS", + "BAD_GATEWAY", + "PRECONDITION_FAILED" + ] + }, + "statusDescription": { + "type": "string" + }, + "requestId": { + "type": "string" + } + } + }, + "UserNcaInvitationRequest": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Is a message to the new user" + }, + "inviteAs": { + "type": "string", + "description": "Nca allow users to be invited as Admin and as Member", + "enum": [ + "ADMIN", + "MEMBER" + ] + }, + "email": { + "maxLength": 128, + "minLength": 7, + "type": "string", + "description": "Is the user email" + }, + "invitationExpirationIn": { + "type": "integer", + "description": "Is the numbers of days the invitation will expire", + "format": "int32" + } + }, + "description": "NCA User invitation request" + }, + "AlternateContact": { + "type": "object", + "properties": { + "fullName": { + "maxLength": 255, + "type": "string", + "description": "Full name of the alternate contact." + }, + "email": { + "maxLength": 128, + "minLength": 6, + "type": "string", + "description": "Alternate contact's email." + } + }, + "description": "Org Owner Alternate Contact" + }, + "InfinityManagerSettings": { + "type": "object", + "properties": { + "infinityManagerEnabled": { + "type": "boolean", + "description": "Enable the infinity manager or not. Used both in org and team level object" + }, + "infinityManagerEnableTeamOverride": { + "type": "boolean", + "description": "Allow override settings at team level. Only used in org level object" + } + }, + "description": "Infinity manager setting definition" + }, + "OrgOwner": { + "required": [ + "email" + ], + "type": "object", + "properties": { + "fullName": { + "maxLength": 64, + "minLength": 1, + "type": "string", + "description": "Org owner name." + }, + "email": { + "maxLength": 128, + "type": "string", + "description": "Email address of the org owner." + }, + "lastLoginDate": { + "type": "string", + "description": "Last time the org owner logged in." + } + }, + "description": "Org owner." + }, + "Organization": { + "type": "object", + "properties": { + "isSecureCredentialSharingServiceEnabled": { + "type": "boolean", + "description": "Secure Credential Sharing Service enable flag for an organization" + }, + "isInternal": { + "type": "boolean", + "description": "Is NVIDIA internal org or not" + }, + "idpId": { + "type": "string", + "description": "Identity Provider ID." + }, + "usersInfo": { + "$ref": "#/components/schemas/UsersInfo" + }, + "pecSfdcId": { + "type": "string", + "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer." + }, + "id": { + "type": "integer", + "description": "Unique Id of this team.", + "format": "int64" + }, + "isRegistrySSEEnabled": { + "type": "boolean", + "description": "If a server side encryption is enabled for private registry (models, resources)" + }, + "alternateContact": { + "$ref": "#/components/schemas/AlternateContact" + }, + "canAddOn": { + "type": "boolean", + "description": "Identifies if the org can be reused." + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + }, + "billingAccountId": { + "type": "string", + "description": "Billing account ID." + }, + "type": { + "type": "string", + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ] + }, + "isProto": { + "type": "boolean", + "description": "Indicates when the org is a proto org" + }, + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + }, + "ncaAccountNumber": { + "type": "string", + "description": "NVIDIA Cloud Account Number." + }, + "description": { + "type": "string", + "description": "Optional description of the organization." + }, + "productEnablements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductEnablement" + } + }, + "name": { + "type": "string", + "description": "Organization name." + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "displayName": { + "maxLength": 255, + "minLength": 1, + "type": "string", + "description": "Name of the organization that will be shown to users." + }, + "productSubscriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + } + }, + "country": { + "type": "string", + "description": "ISO country code of the organization." + }, + "industry": { + "type": "string", + "description": "Industry of the organization." + }, + "isSeparateInfluxDbUsed": { + "type": "boolean", + "description": "If a separate influx db used for an organization in BCP for job telemetry" + }, + "isDatasetServiceEnabled": { + "type": "boolean", + "description": "Dataset Service enable flag for an organization" + }, + "isSecretsManagerServiceEnabled": { + "type": "boolean", + "description": "Secrets Manager Service enable flag for an organization" + }, + "isQuickStartEnabled": { + "type": "boolean", + "description": "Quick Start enable flag for an organization" + }, + "orgOwners": { + "type": "array", + "description": "Org owners", + "items": { + "$ref": "#/components/schemas/OrgOwner" + } + } + }, + "description": "Information about the Organization" + }, + "ProductEnablement": { + "required": [ + "productName", + "type" + ], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Product Enablement Types", + "enum": [ + "NGC_ADMIN_EVAL", + "NGC_ADMIN_NFR", + "NGC_ADMIN_COMMERCIAL", + "EMS_EVAL", + "EMS_NFR", + "EMS_COMMERCIAL", + "NGC_ADMIN_DEVELOPER" + ] + }, + "expirationDate": { + "type": "string", + "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)" + }, + "poDetails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PurchaseOrder" + } + }, + "productName": { + "type": "string", + "description": "Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc)" + } + }, + "description": "Product Enablement" + }, + "ProductSubscription": { + "required": [ + "productName" + ], + "type": "object", + "properties": { + "startDate": { + "type": "string", + "description": "Date on which the subscription becomes active. (yyyy-MM-dd)" + }, + "productName": { + "type": "string", + "description": "Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc)." + }, + "emsEntitlementType": { + "type": "string", + "description": "EMS Subscription type. (options: EMS_EVAL, EMS_NFR and EMS_COMMERCIAL)", + "enum": [ + "EMS_EVAL", + "EMS_NFR", + "EMS_COMMERICAL", + "EMS_COMMERCIAL" + ] + }, + "expirationDate": { + "type": "string", + "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)" + }, + "type": { + "type": "string", + "description": "Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, NGC_ADMIN_COMMERCIAL)", + "enum": [ + "NGC_ADMIN_EVAL", + "NGC_ADMIN_NFR", + "NGC_ADMIN_COMMERCIAL" + ] + }, + "id": { + "type": "string", + "description": "Unique entitlement identifier" + } + }, + "description": "Product Subscription" + }, + "PurchaseOrder": { + "type": "object", + "properties": { + "pkId": { + "type": "string", + "description": "PAK (Product Activation Key) identifier." + }, + "entitlementId": { + "type": "string", + "description": "Entitlement identifier." + } + }, + "description": "Purchase Order." + }, + "RepoScanSettings": { + "type": "object", + "properties": { + "repoScanAllowOverride": { + "type": "boolean", + "description": "Allow org admin to override the org level repo scan settings" + }, + "repoScanShowResults": { + "type": "boolean", + "description": "Allow showing scan results to CLI or UI" + }, + "repoScanEnabled": { + "type": "boolean", + "description": "Enable the repository scan or not. Only used in org level object" + }, + "repoScanEnableNotifications": { + "type": "boolean", + "description": "Sends notification to end user after scanning is done" + }, + "repoScanByDefault": { + "type": "boolean", + "description": "Allow repository scanning by default" + }, + "repoScanEnableTeamOverride": { + "type": "boolean", + "description": "Allow override settings at team level. Only used in org level object" + } + }, + "description": "Repo scan setting definition" + }, + "TargetSystemUserIdentifier": { + "type": "object", + "properties": { + "uid": { + "type": "integer", + "description": "uid of the user on this team", + "format": "int64" + }, + "orgName": { + "type": "string", + "description": "Org context for the job" + }, + "userId": { + "type": "integer", + "description": "Unique ID of the user who submitted the job", + "format": "int64" + }, + "teamName": { + "type": "string", + "description": "Team context for the job" + }, + "gid": { + "type": "integer", + "description": "gid of the user on this team", + "format": "int64" + }, + "starfleetId": { + "type": "string", + "description": "Starfleet ID of the user creating the job." + } + }, + "description": "Information about the user who is attempting to run the job" + }, + "Team": { + "type": "object", + "properties": { + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + }, + "name": { + "type": "string", + "description": "team name" + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + }, + "id": { + "type": "integer", + "description": "unique Id of this team.", + "format": "int64" + }, + "isDeleted": { + "type": "boolean", + "description": "indicates if the team is deleted or not" + }, + "description": { + "type": "string", + "description": "description of the team" + } + }, + "description": "Information about the team" + }, + "User": { + "type": "object", + "properties": { + "hasSignedContainerPublishingEULA": { + "type": "boolean", + "description": "indicates if user has accepted container publishing eula" + }, + "hasSignedLlmEULA": { + "type": "boolean", + "description": "indicates if user has accepted LLM End User License Agreement." + }, + "hasSignedBaseCommandEULA": { + "type": "boolean", + "description": "indicates if user has accepted Base Command End User License Agreement." + }, + "storageQuota": { + "type": "array", + "description": "Storage quota for this user.", + "items": { + "$ref": "#/components/schemas/UserStorageQuota" + } + }, + "lastLoginDate": { + "type": "string", + "description": "Last time the user logged in" + }, + "hasSignedEgxEULA": { + "type": "boolean", + "description": "[Deprecated] indicates if user has accepted EGX End User License Agreement." + }, + "hasBetaAccess": { + "type": "boolean", + "description": "Determines if the user has beta access" + }, + "id": { + "type": "integer", + "description": "unique Id of this user.", + "format": "int64" + }, + "isDeleted": { + "type": "boolean", + "description": "Indicates if user was deleted from the system." + }, + "hasSignedAiFoundryPartnershipsEULA": { + "type": "boolean", + "description": "indicates if user has accepted AI Foundry Partnerships eula" + }, + "jobPositionTitle": { + "type": "string", + "description": "Title of user's job position." + }, + "verified": { + "type": "boolean", + "description": "Is user's email or phone number is verified" + }, + "hasSignedEarth2EULA": { + "type": "boolean", + "description": "indicates if user has accepted Earth-2 eula" + }, + "hasSignedNvidiaEULA": { + "type": "boolean", + "description": "Determines if the user has signed the NVIDIA End User License Agreement." + }, + "updatedDate": { + "type": "string", + "description": "Updated date for this user" + }, + "firstLoginDate": { + "type": "string", + "description": "Last time the user logged in" + }, + "email": { + "maxLength": 128, + "minLength": 7, + "type": "string", + "description": "Email address of the user. This should be unique." + }, + "hasSignedBioNeMoEULA": { + "type": "boolean", + "description": "indicates if user has accepted BioNeMo End User License Agreement." + }, + "hasSignedBaseCommandManagerEULA": { + "type": "boolean", + "description": "indicates if user has accepted Base Command Manager End User License Agreement." + }, + "hasSignedPrivacyPolicy": { + "type": "boolean", + "description": "Determines if the user has signed the Privacy Policy." + }, + "hasSignedEULA": { + "type": "boolean", + "description": "Determines if the user has signed the NGC End User License Agreement." + }, + "isSAML": { + "type": "boolean", + "description": "Determines if the user is a SAML account or not." + }, + "hasSignedAODTEULA": { + "type": "boolean", + "description": "indicates if user has accepted AODT End User License Agreement." + }, + "createdDate": { + "type": "string", + "description": "Created date for this user" + }, + "starfleetId": { + "type": "string", + "description": "unique starfleet id of this user." + }, + "hasSignedNVQCEULA": { + "type": "boolean", + "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement." + }, + "isActive": { + "type": "boolean", + "description": "Determines if the user is active or not." + }, + "name": { + "maxLength": 64, + "minLength": 1, + "type": "string", + "description": "user name" + }, + "roles": { + "type": "array", + "description": "List of roles that the user have", + "items": { + "$ref": "#/components/schemas/UserRole" + } + }, + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + }, + "hasSubscribedToEmail": { + "type": "boolean", + "description": "Determines if the user has opted in email subscription." + }, + "hasSignedCuOptEULA": { + "type": "boolean", + "description": "indicates if user has accepted CuOpt eula" + }, + "clientId": { + "type": "string", + "description": "unique auth client id of this user." + }, + "hasSignedOmniverseEULA": { + "type": "boolean", + "description": "indicates if user has accepted Omniverse End User License Agreement." + }, + "idpType": { + "type": "string", + "description": "Type of IDP, Identity Provider. Used for login.", + "enum": [ + "NVIDIA", + "ENTERPRISE" + ] + }, + "hasProfile": { + "type": "boolean", + "description": "indicate if user profile has been completed." + }, + "hasSignedFleetCommandEULA": { + "type": "boolean", + "description": "indicates if user has accepted Fleet Command End User License Agreement." + }, + "hasSignedNVAIEEULA": { + "type": "boolean", + "description": "indicates if user has accepted Fleet Command End User License Agreement." + }, + "hasSignedThirdPartyRegistryShareEULA": { + "type": "boolean", + "description": "indicates if user has consented to share their registration info with other parties" + } + }, + "description": "information about the user" + }, + "UserMetadata": { + "type": "object", + "properties": { + "companyUrl": { + "type": "string", + "description": "Company URL" + }, + "firstName": { + "maxLength": 255, + "type": "string", + "description": "User's first name" + }, + "country": { + "type": "string", + "description": "Country of the user" + }, + "company": { + "maxLength": 128, + "type": "string", + "description": "Name of the company" + }, + "role": { + "type": "string", + "description": "Role of the user in the company" + }, + "interest": { + "type": "array", + "description": "List of development areas that user has interest", + "items": { + "type": "string", + "description": "List of development areas that user has interest" + } + }, + "lastName": { + "maxLength": 255, + "type": "string", + "description": "User's last name" + }, + "industry": { + "type": "string", + "description": "Industry segment" + } + }, + "description": "Metadata information about the user." + }, + "UserResponse": { + "type": "object", + "properties": { + "activationToken": { + "type": "string", + "description": "token needed to activate the user to enable login and other features" + }, + "userRoles": { + "type": "array", + "description": "DEPRECATED - Please use roles inside user", + "items": { + "$ref": "#/components/schemas/UserRole" + } + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "ncaRole": { + "type": "string", + "description": "NCA role", + "enum": [ + "UNKNOWN", + "ADMINISTRATOR", + "MEMBER", + "OWNER", + "PENDING" + ] + }, + "user": { + "$ref": "#/components/schemas/User" + } + }, + "description": " about one user" + }, + "UserRole": { + "type": "object", + "properties": { + "roleTypes": { + "type": "array", + "description": "DEPRECATED - List of role types that the user have", + "items": { + "type": "string", + "description": "DEPRECATED - List of role types that the user have" + } + }, + "targetSystemUserIdentifier": { + "$ref": "#/components/schemas/TargetSystemUserIdentifier" + }, + "orgRoles": { + "type": "array", + "description": "List of org role types that the user have", + "items": { + "type": "string", + "description": "List of org role types that the user have" + } + }, + "team": { + "$ref": "#/components/schemas/Team" + }, + "org": { + "$ref": "#/components/schemas/Organization" + }, + "teamRoles": { + "type": "array", + "description": "List of team role types that the user have", + "items": { + "type": "string", + "description": "List of team role types that the user have" + } + } + }, + "description": "List of roles that the user have" + }, + "UserStorageQuota": { + "type": "object", + "properties": { + "available": { + "type": "integer", + "description": "Available space in bytes", + "format": "int64" + }, + "datasetsUsage": { + "type": "integer", + "description": "Space used by datasets in bytes", + "format": "int64" + }, + "aceName": { + "type": "string", + "description": "name of the ace" + }, + "workspacesCount": { + "type": "integer", + "description": "Number of workspaces that are a part of user's used storage", + "format": "int64" + }, + "orgName": { + "type": "string", + "description": "The org name that this user quota tied to. This is needed for analytics" + }, + "resultsetCount": { + "type": "integer", + "description": "Number of resultsets that are a part of user's used storage", + "format": "int64" + }, + "quota": { + "type": "integer", + "description": "Assigned quota in bytes", + "format": "int64" + }, + "storageClusterDescription": { + "type": "string", + "description": "Description of this storage cluster" + }, + "storageClusterUuid": { + "type": "string", + "description": "Identifier to this storage cluster" + }, + "datasetCount": { + "type": "integer", + "description": "Number of datasets that are a part of user's used storage", + "format": "int64" + }, + "aceId": { + "type": "integer", + "description": "id of the ace", + "format": "int64" + }, + "resultsetsUsage": { + "type": "integer", + "description": "Space used by resultsets in bytes", + "format": "int64" + }, + "workspacesUsage": { + "type": "integer", + "description": "Space used by workspaces in bytes", + "format": "int64" + }, + "storageClusterName": { + "type": "string", + "description": "Name of storage cluster" + } + }, + "description": "represents user storage quota for a given ace and available unused storage" + }, + "UsersInfo": { + "type": "object", + "properties": { + "totalUsers": { + "type": "integer", + "description": "Total number of users.", + "format": "int64" + } + }, + "description": "Users information." + }, + "OrgCreateRequestV3": { + "type": "object", + "properties": { + "salesforceAccountIndustry": { + "type": "string", + "description": "Company or organization industry" + }, + "pecName": { + "type": "string", + "description": "product end customer name for enterprise(Fleet Command) product" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwnerV3" + }, + "displayName": { + "maxLength": 255, + "minLength": 1, + "type": "string", + "description": "Name of the organization that will be shown to users." + }, + "name": { + "maxLength": 64, + "minLength": 2, + "type": "string", + "description": "Organization name" + }, + "sendEmail": { + "type": "boolean", + "description": "Send email to org owner or not. Default is true" + }, + "country": { + "type": "string", + "description": "user country" + }, + "description": { + "maxLength": 128, + "type": "string", + "description": "optional description of the organization" + }, + "initiator": { + "type": "string", + "description": "Identify the initiator of the org request" + }, + "productEnablements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductEnablement" + } + }, + "ncaNumber": { + "type": "string", + "description": "NVIDIA Cloud Account Number" + }, + "pecSfdcId": { + "type": "string", + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product" + }, + "ncaId": { + "type": "string", + "description": "NVIDIA Cloud Account Identifier" + }, + "isInternal": { + "type": "boolean", + "description": "Is NVIDIA internal org or not" + }, + "protoOrgId": { + "type": "string", + "description": "Proto org identifier" + }, + "type": { + "type": "string", + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ] + }, + "productSubscriptions": { + "type": "array", + "description": "This should be deprecated, use productEnablements instead", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + } + } + }, + "description": "Request to create new Organization in v3 flow" + }, + "OrgOwnerV3": { + "required": [ + "email" + ], + "type": "object", + "properties": { + "starfleetId": { + "type": "string", + "description": "Starfleet ID of the org owner." + }, + "fullName": { + "maxLength": 64, + "minLength": 1, + "type": "string", + "description": "Org owner name." + }, + "idpId": { + "type": "string", + "description": "Identity Provider ID of the org owner." + }, + "email": { + "maxLength": 128, + "type": "string", + "description": "Email address of the org owner." + } + }, + "description": "Org owner." + }, + "OrgResponse": { + "type": "object", + "properties": { + "organizations": { + "$ref": "#/components/schemas/Organization" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "description": "info about an organizations" + }, + "OrgNcaMappingRequest": { + "type": "object", + "properties": { + "orgNames": { + "type": "array", + "description": "List of org names", + "items": { + "type": "string", + "description": "List of org names" + } + }, + "ncaIds": { + "type": "array", + "description": "List of nca Ids", + "items": { + "type": "string", + "description": "List of nca Ids" + } + } + }, + "description": "object to get the org and nca mapping" + }, + "OrgNca": { + "type": "object", + "properties": { + "orgName": { + "type": "string", + "description": "Organization name" + }, + "ncaId": { + "type": "string", + "description": "NVIDIA Cloud Account Id" + } + }, + "description": "Org vs NcaId mapping" + }, + "OrgNcaMappingResponse": { + "type": "object", + "properties": { + "orgNcaMapping": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrgNca" + } + } + }, + "description": "org and nca mapping response" + }, + "UserKeyResponse": { + "required": [ + "key" + ], + "type": "object", + "properties": { + "cloudNfsKey": { + "type": "string" + }, + "cloudNfsKeyPwd": { + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "key": { + "maxLength": 255, + "type": "string" + }, + "cloudNfsUserName": { + "type": "string" + } + }, + "description": "response to a request to access key such as docker token" + }, + "UserCreateRequest": { + "required": [ + "email" + ], + "type": "object", + "properties": { + "roleType": { + "type": "string", + "description": "DEPRECATED - use roleTypes which allows multiple roles" + }, + "roleTypes": { + "type": "array", + "description": "feature roles to give to the user", + "items": { + "type": "string", + "description": "feature roles to give to the user" + } + }, + "name": { + "maxLength": 64, + "minLength": 1, + "type": "string", + "description": "user name" + }, + "eulaAccepted": { + "type": "boolean", + "description": "indicates if user has accepted EULA" + }, + "emailOptIn": { + "type": "boolean", + "description": "indicates if user has opt in to nvidia emails" + }, + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + }, + "salesforceContactJobRole": { + "type": "string", + "description": "user job role" + }, + "email": { + "maxLength": 128, + "minLength": 6, + "type": "string", + "description": "Email address of the user. This should be unique." + } + }, + "description": "object used request user creation in an existing org" + }, + "TeamCreateRequest": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "maxLength": 19, + "minLength": 2, + "type": "string", + "description": "team name" + }, + "description": { + "maxLength": 255, + "type": "string", + "description": "description of the team" + } + }, + "description": "Request to create new Team" + }, + "TeamCreateResponse": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "team": { + "$ref": "#/components/schemas/Team" + } + }, + "description": "response to an team creation request, includes unique team id" + }, + "Response": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + } + }, + "OrgCreateRequest": { + "required": [ + "orgOwner" + ], + "type": "object", + "properties": { + "salesforceAccountIndustry": { + "type": "string", + "description": "Company or organization industry" + }, + "pecName": { + "type": "string", + "description": "product end customer name for enterprise(Fleet Command) product" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "displayName": { + "maxLength": 255, + "minLength": 1, + "type": "string", + "description": "Name of the organization that will be shown to users." + }, + "name": { + "maxLength": 64, + "minLength": 2, + "type": "string", + "description": "Organization name" + }, + "sendEmail": { + "type": "boolean", + "description": "Send email to org owner or not. Default is true" + }, + "country": { + "type": "string", + "description": "user country" + }, + "description": { + "maxLength": 128, + "type": "string", + "description": "optional description of the organization" + }, + "idpId": { + "type": "string", + "description": "Identity Provider ID." + }, + "productEnablements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductEnablement" + } + }, + "pecSfdcId": { + "type": "string", + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product" + }, + "isInternal": { + "type": "boolean", + "description": "Is NVIDIA internal org or not" + }, + "type": { + "type": "string", + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ] + }, + "productSubscriptions": { + "type": "array", + "description": "This should be deprecated, use productEnablements instead", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + } + } + }, + "description": "Request to create new Organization" + }, + "OrgUpdateRequest": { + "type": "object", + "properties": { + "isSecureCredentialSharingServiceEnabled": { + "type": "boolean", + "description": "Secure Credential Sharing Service enable flag for an organization" + }, + "isInternal": { + "type": "boolean", + "description": "Is NVIDIA internal org or not" + }, + "idpId": { + "type": "string", + "description": "Identity Provider ID." + }, + "productEnablements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductEnablement" + } + }, + "pecSfdcId": { + "type": "string", + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product" + }, + "isRegistrySSEEnabled": { + "type": "boolean", + "description": "If a server side encryption is enabled for private registry (models, resources)" + }, + "alternateContact": { + "$ref": "#/components/schemas/AlternateContact" + }, + "isSeparateInfluxDbUsed": { + "type": "boolean", + "description": "If a separate influx db used for an organization in Base Command Platform job telemetry" + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + }, + "type": { + "type": "string", + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ] + }, + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + }, + "description": { + "maxLength": 128, + "type": "string", + "description": "optional description of the organization" + }, + "companyName": { + "maxLength": 128, + "type": "string", + "description": "Name of the company" + }, + "pecName": { + "type": "string", + "description": "product end customer name for enterprise(Fleet Command) product" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "displayName": { + "maxLength": 255, + "minLength": 1, + "type": "string", + "description": "Name of the organization that will be shown to users." + }, + "productSubscriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + } + }, + "isQuickStartEnabled": { + "type": "boolean", + "description": "Quick Start enable flag for an organization" + }, + "isDatasetServiceEnabled": { + "type": "boolean", + "description": "Dataset Service enable flag for an organization" + }, + "isSecretsManagerServiceEnabled": { + "type": "boolean", + "description": "Secrets Manager Service enable flag for an organization" + }, + "ngcClaimID": { + "type": "string", + "description": "NGC Reference ID for redeem subscription flow tracking purpose. Provided from RWA only." + }, + "orgOwners": { + "type": "array", + "description": "Org owners", + "items": { + "$ref": "#/components/schemas/OrgOwner" + } + } + }, + "description": "Object used to update Org information" + }, + "UserUpdateRequest": { + "type": "object", + "properties": { + "hasSignedBaseCommandManagerEULA": { + "type": "boolean", + "description": "indicates if user has accepted Base Command Manager End User License Agreement." + }, + "hasSignedContainerPublishingEULA": { + "type": "boolean", + "description": "indicates if user has accepted container publishing eula" + }, + "name": { + "maxLength": 64, + "minLength": 1, + "type": "string", + "description": "user name" + }, + "hasSignedLlmEULA": { + "type": "boolean", + "description": "indicates if user has accepted LLM End User License Agreement." + }, + "hasSignedPrivacyPolicy": { + "type": "boolean", + "description": "indicates if the user has signed the Privacy Policy" + }, + "hasSignedNvidiaEULA": { + "type": "boolean", + "description": "indicates if user has accepted NVIDIA EULA" + }, + "hasSignedCuOptEULA": { + "type": "boolean", + "description": "indicates if user has accepted CuOpt End User License Agreement." + }, + "hasSignedEarth2EULA": { + "type": "boolean", + "description": "indicates if user has accepted Earth-2 End User License Agreement." + }, + "hasSignedBaseCommandEULA": { + "type": "boolean", + "description": "indicates if user has accepted Base Command EULA" + }, + "hasSignedOmniverseEULA": { + "type": "boolean", + "description": "indicates if user has accepted Omniverse End User License Agreement." + }, + "hasSignedNVAIEEULA": { + "type": "boolean", + "description": "indicates if user has accepted Fleet Command End User License Agreement." + }, + "hasSignedAODTEULA": { + "type": "boolean", + "description": "indicates if user has accepted AODT End User License Agreement." + }, + "hasEmailOptIn": { + "type": "boolean", + "description": "indicates if user has opt in to nvidia emails" + }, + "hasSignedThirdPartyRegistryShareEULA": { + "type": "boolean", + "description": "indicates if user has consented to share their registration info with other parties" + }, + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + }, + "hasSignedEgxEULA": { + "type": "boolean", + "description": "indicates if user has accepted EGX EULA" + }, + "hasSignedFleetCommandEULA": { + "type": "boolean", + "description": "indicates if user has accepted Fleet Command End User License Agreement." + }, + "hasSignedNVQCEULA": { + "type": "boolean", + "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement." + }, + "hasSignedEULA": { + "type": "boolean", + "description": "indicates if user has accepted NGC EULA" + }, + "hasSignedBioNeMoEULA": { + "type": "boolean", + "description": "indicates if user has accepted BioNeMo End User License Agreement." + }, + "hasSignedAiFoundryPartnershipsEULA": { + "type": "boolean", + "description": "indicates if user has accepted AI Foundry Partnerships End User License Agreement." + } + }, + "description": "object used to request user update" + }, + "OrgProfileUpdateRequest": { + "type": "object", + "properties": { + "displayName": { + "maxLength": 255, + "minLength": 1, + "type": "string", + "description": "Name of the organization that will be shown to users" + }, + "description": { + "maxLength": 128, + "type": "string", + "description": "optional description of the organization" + } + }, + "description": "Object used to update Org profile information" + }, + "TeamUpdateRequest": { + "type": "object", + "properties": { + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + }, + "description": { + "maxLength": 255, + "type": "string", + "description": "description of the team" + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + } + }, + "description": "object used to update information about existing team" + }, + "TeamResponse": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "team": { + "$ref": "#/components/schemas/Team" + } + }, + "description": "details about one team" + }, + "Entitlement": { + "type": "object", + "properties": { + "entitlementState": { + "type": "string", + "description": "Entitlement state" + }, + "entitlementExpirationTime": { + "type": "string", + "description": "Entitlement expiration time" + }, + "pecSfdcId": { + "type": "string", + "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer" + }, + "entitlementId": { + "type": "string", + "description": "Unique entitlement identifier" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntitlementProduct" + } + } + }, + "description": "Information about the entitlement for an org" + }, + "EntitlementProduct": { + "type": "object", + "properties": { + "pkId": { + "type": "string", + "description": "Unique product key identifier" + }, + "subscriptionType": { + "type": "string", + "description": "Subscription type" + }, + "productName": { + "type": "string", + "description": "Product name. ex: FleetCommand, Batch, etc" + } + }, + "description": "Information about the entitlement product" + }, + "OrgListEntitlementResponse": { + "type": "object", + "properties": { + "entitlements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganizationEntitlement" + } + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "description": "List of all organizations which have entitlement information. Only accessible by NGC admin portal" + }, + "OrganizationEntitlement": { + "type": "object", + "properties": { + "orgName": { + "type": "string", + "description": "Organization name" + }, + "entitlements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Entitlement" + } + } + }, + "description": "Information about the organization entitlements" + }, + "PackageVersion": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "The version number" + }, + "name": { + "type": "string", + "description": "The name of the package" + }, + "createdAt": { + "type": "string", + "description": "The creation date of the version" + }, + "description": { + "type": "string", + "description": "Human readable description of the package" + } + }, + "description": "Latest version information for a specific package" + }, + "PackageVersionListResponse": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "versions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PackageVersion" + } + } + }, + "description": "an array of versions" + }, + "OrgInvitation": { + "type": "object", + "properties": { + "protoOrgId": { + "type": "string", + "description": "Proto Org identifier." + }, + "email": { + "type": "string", + "description": "Email address of the user." + } + }, + "description": "Org invitation to NGC" + }, + "OrgInvitationResponse": { + "type": "object", + "properties": { + "orgInvitation": { + "$ref": "#/components/schemas/OrgInvitation" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "description": "Invitation Validation Response." + }, + "OrgListResponse": { + "type": "object", + "properties": { + "organizations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Organization" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "description": "List of organizations." + }, + "PaginationInfo": { + "type": "object", + "properties": { + "totalPages": { + "type": "integer", + "description": "Total number of pages available", + "format": "int64" + }, + "index": { + "type": "integer", + "description": "Page index of results", + "format": "int32" + }, + "totalResults": { + "type": "integer", + "description": "Total number of results available", + "format": "int64" + }, + "nextPage": { + "type": "string", + "description": "Serialized pointer to the next results page. Should be used for fetching next page. Can be empty" + }, + "size": { + "type": "integer", + "description": "Number of results in page", + "format": "int32" + } + }, + "description": "object that describes the pagination information" + }, + "SearchParamFilter": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "SearchParamOrderBy": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "value": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + }, + "SearchParams": { + "type": "object", + "properties": { + "orderBy": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchParamOrderBy" + } + }, + "queryFields": { + "type": "array", + "items": { + "type": "string" + } + }, + "scoredSize": { + "type": "integer", + "format": "int64" + }, + "pageSize": { + "type": "integer", + "format": "int64" + }, + "fields": { + "type": "array", + "items": { + "type": "string" + } + }, + "page": { + "type": "integer", + "format": "int64" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchParamFilter" + } + }, + "query": { + "type": "string" + }, + "groupBy": { + "type": "string" + } + } + }, + "UserInvitation": { + "type": "object", + "properties": { + "name": { + "maxLength": 64, + "minLength": 1, + "type": "string", + "description": "user name" + }, + "roles": { + "type": "array", + "description": "List of roles that the user have.", + "items": { + "type": "string", + "description": "List of roles that the user have." + } + }, + "createdDate": { + "type": "string", + "description": "Date on which the invitation was created. (ISO-8601 format)" + }, + "isProcessed": { + "type": "boolean", + "description": "Flag indicating if the invitation has already been accepted by the user." + }, + "team": { + "type": "string", + "description": "Team to which a user was invited." + }, + "id": { + "type": "string", + "description": "Unique invitation ID" + }, + "org": { + "type": "string", + "description": "Org to which a user was invited." + }, + "type": { + "type": "string", + "description": "Type of invitation. The invitation is either to an organization or to a team within organization.", + "enum": [ + "ORGANIZATION", + "TEAM" + ] + }, + "email": { + "maxLength": 128, + "minLength": 7, + "type": "string", + "description": "Email address of the user." + } + }, + "description": "User invitation to an NGC org or team" + }, + "UserInvitationListResponse": { + "type": "object", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "invitations": { + "type": "array", + "description": "List of invitations.", + "items": { + "$ref": "#/components/schemas/UserInvitation" + } + } + }, + "description": "Response for a list of user invitations." + }, + "UserListResponse": { + "type": "object", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "users": { + "type": "array", + "description": "information about the user", + "items": { + "$ref": "#/components/schemas/User" + } + } + }, + "description": "Response for List User reponse" + }, + "TeamListResponse": { + "type": "object", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "teams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Team" + } + } + }, + "description": "listing of all teams" + }, + "ValidateOrgQueryParams": { + "required": [ + "orgOwner", + "pecSfdcId", + "productSubscriptions" + ], + "type": "object", + "properties": { + "pecSfdcId": { + "type": "string", + "description": "Product end customer salesforce.com id (external customer id) for enterprise product." + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "productSubscriptions": { + "type": "array", + "description": "Product Subscriptions.", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + } + } + }, + "description": "Object for defining params to validate org." + }, + "RoleProduct": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "description": "Display Name of the product from the product catalog to which this role is associated with" + }, + "name": { + "type": "string", + "description": "Name of the product from the product catalog to which this role is associated with" + } + }, + "description": "Product information of the role" + }, + "ServiceAccess": { + "type": "object", + "properties": { + "service": { + "type": "string", + "description": "Service that this role allows" + }, + "accessLevels": { + "type": "array", + "description": "List of access levels that this role allows", + "items": { + "type": "string", + "description": "List of access levels that this role allows" + } + } + }, + "description": "List of actions that this role allows" + }, + "UserRoleDefinition": { + "type": "object", + "properties": { + "shortDisplayName": { + "type": "string", + "description": "Short Display Name of the role" + }, + "product": { + "$ref": "#/components/schemas/RoleProduct" + }, + "displayName": { + "type": "string", + "description": "Display Name of the role" + }, + "name": { + "type": "string", + "description": "Name of the role" + }, + "allowedActions": { + "type": "array", + "description": "List of actions that this role allows", + "items": { + "$ref": "#/components/schemas/ServiceAccess" + } + } + }, + "description": "List of roles" + }, + "UserRoleDefinitionsResponse": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "roles": { + "type": "array", + "description": "List of roles", + "items": { + "$ref": "#/components/schemas/UserRoleDefinition" + } + } + }, + "description": "Response containing all the roles defined in NGC and their allowed actions" + }, + "Health": { + "type": "object", + "properties": { + "healthCodeDescription": { + "maxLength": 255, + "minLength": 1, + "type": "string", + "description": "Human readable description" + }, + "healthCode": { + "type": "string", + "description": "Enum that describes health of the service", + "enum": [ + "UNKNOWN", + "OK", + "UNDER_MAINTENANCE", + "WARNING", + "FAILED" + ] + }, + "metaData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetaData" + } + } + }, + "description": "object that describes health of the service" + }, + "HealthResponse": { + "type": "object", + "properties": { + "health": { + "$ref": "#/components/schemas/Health" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method" + }, + "MetaData": { + "type": "object", + "properties": { + "key": { + "maxLength": 255, + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" + } + } + }, + "SwaggerResource": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "swaggerVersion": { + "type": "string" + }, + "location": { + "type": "string", + "deprecated": true + } + } + }, + "UiConfiguration": { + "type": "object", + "properties": { + "deepLinking": { + "type": "boolean" + }, + "displayOperationId": { + "type": "boolean" + }, + "defaultModelsExpandDepth": { + "type": "integer", + "format": "int32" + }, + "defaultModelExpandDepth": { + "type": "integer", + "format": "int32" + }, + "defaultModelRendering": { + "type": "string", + "enum": [ + "example", + "model" + ] + }, + "displayRequestDuration": { + "type": "boolean" + }, + "docExpansion": { + "type": "string", + "enum": [ + "none", + "list", + "full" + ] + }, + "filter": { + "type": "object" + }, + "maxDisplayedTags": { + "type": "integer", + "format": "int32" + }, + "operationsSorter": { + "type": "string", + "enum": [ + "alpha", + "method" + ] + }, + "showExtensions": { + "type": "boolean" + }, + "tagsSorter": { + "type": "string", + "enum": [ + "alpha" + ] + }, + "validatorUrl": { + "type": "string" + }, + "apisSorter": { + "type": "string", + "deprecated": true + }, + "jsonEditor": { + "type": "boolean", + "deprecated": true + }, + "showRequestHeaders": { + "type": "boolean", + "deprecated": true + }, + "supportedSubmitMethods": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "SecurityConfiguration": { + "type": "object", + "properties": { + "apiKey": { + "type": "string", + "deprecated": true + }, + "apiKeyVehicle": { + "type": "string", + "deprecated": true + }, + "apiKeyName": { + "type": "string", + "deprecated": true + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "realm": { + "type": "string" + }, + "appName": { + "type": "string" + }, + "scopeSeparator": { + "type": "string" + }, + "additionalQueryStringParams": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "useBasicAuthenticationWithAccessCodeGrant": { + "type": "boolean" + } + } + } + }, + "securitySchemes": { + "api-key": { + "type": "apiKey", + "description": "Authenticate your API requests by adding the API key from https://ngc.nvidia.com/setup/api-key", + "name": "Authorization", + "in": "header" + }, + "bearer-token": { + "type": "http", + "description": "Users can issue API tokens by calling GET https://ngc.authn.nvidia.com/token?scope=group/ngc[:[/]].\nWhenever the user wants to access a protected route or resource, the user must get the token for that particular organization / team", + "scheme": "bearer", + "bearerFormat": "JWT" + } + } + } +} diff --git a/provider-dev/downloaded/cleaned/ngc_models.json b/provider-dev/downloaded/cleaned/ngc_models.json new file mode 100644 index 0000000..0147d74 --- /dev/null +++ b/provider-dev/downloaded/cleaned/ngc_models.json @@ -0,0 +1,45950 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Models API", + "termsOfService": "https://www.nvidia.com/en-us/legal_info", + "contact": { + "name": "NVIDIA", + "url": "https://www.nvidia.com/" + }, + "version": "0.0.1-SNAPSHOT" + }, + "servers": [ + { + "url": "https://models.ngc.nvidia.com", + "description": "Generated server url - production", + "x-internal": true + } + ], + "tags": [ + { + "name": "ArtifactChecksum", + "description": "Artifact file checksum verification and commit endpoints" + }, + { + "name": "Artifact deployment parameters", + "description": "Artifact-level overrides for cloud deployment parameters" + }, + { + "name": "ArtifactSigning", + "description": "Artifact signing and signature verification" + }, + { + "name": "Publish", + "description": "Publish artifacts to the NGC catalog" + }, + { + "name": "Artifact Versions", + "description": "Artifact (resource, model, helm chart) Version endpoints" + }, + { + "name": "Apps", + "description": "App-to-artifact associations" + }, + { + "name": "Deployment parameters meta", + "description": "Metadata describing cloud deployment parameter schemas" + }, + { + "name": "AIPlayground", + "description": "AI Playground demo metadata endpoints" + }, + { + "name": "Collections", + "description": "Collections endpoints" + }, + { + "name": "Models", + "description": "Model endpoints" + }, + { + "name": "Cloud service provider deployment parameters", + "description": "Default CSP-level cloud deployment parameters" + }, + { + "name": "Health", + "description": "Service health checks" + }, + { + "name": "Model Version Files", + "description": "Model endpoints" + }, + { + "name": "Artifacts", + "description": "Artifact (resource, model, helm chart) endpoints" + }, + { + "name": "Resources", + "description": "Resources endpoints, previously known as 'recipes'" + }, + { + "name": "MalwareScan", + "description": "Malware scan status for artifact files" + }, + { + "name": "Workflows", + "description": "Asynchronous artifact-registry workflow status endpoints" + }, + { + "name": "GpuByPci", + "description": "GPU metadata lookup by PCI identifier" + }, + { + "name": "Helm Charts", + "description": "Helm chart version management" + }, + { + "name": "Cloud service providers", + "description": "Cloud service provider registry entries" + }, + { + "name": "Artifact Version Files", + "description": "Artifact (resource, model, helm chart) Version File endpoints" + }, + { + "name": "Encryption Keys", + "description": "Customer-managed encryption keys for artifact storage" + }, + { + "name": "Artifact File", + "description": "Resource and Model File endpoints" + }, + { + "name": "Resource Versions", + "description": "Resource Versions endpoints, previously known as 'recipes'" + }, + { + "name": "Resource Version Files endpoints", + "description": "Resource Version File endpoints, previously known as 'recipes'" + }, + { + "name": "Model Version", + "description": "Model endpoints" + }, + { + "name": "nspect_id", + "description": "NSPECT-LOEJ-50BP" + } + ], + "paths": { + "/v1/org/{org}/{type}/{name}/versions/{version}/async-clone": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Clone Artifact files asynchronously", + "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", + "operationId": "cloneArtifactVersionFilesAsync", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "name", + "in": "path", + "description": "Target artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version", + "in": "path", + "description": "Target version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Clone Artifact files asynchronously", + "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", + "operationId": "cloneArtifactVersionFilesAsync_1", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "name", + "in": "path", + "description": "Target artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version", + "in": "path", + "description": "Target version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/files/multipart": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Complete a multipart upload for an artifact file.", + "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", + "operationId": "completeFileUpload", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCompleteRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Artifact File" + ], + "summary": "Initiate a multipart upload for an artifact file.", + "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", + "operationId": "fileUpload", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Artifact File" + ], + "summary": "Abort a multipart upload for an artifact file.", + "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", + "operationId": "abortFileUpload", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadAbortRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org}/team/{team}/files/multipart": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Complete a multipart upload for an artifact file.", + "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", + "operationId": "completeFileUpload_1", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCompleteRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Artifact File" + ], + "summary": "Initiate a multipart upload for an artifact file.", + "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", + "operationId": "fileUpload_1", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Artifact File" + ], + "summary": "Abort a multipart upload for an artifact file.", + "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", + "operationId": "abortFileUpload_1", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadAbortRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org}/files/clone/status": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Clone Artifact files Status", + "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", + "operationId": "cloneArtifactVersionFilesStatus", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/team/{team}/files/clone/status": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Clone Artifact files Status", + "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", + "operationId": "cloneArtifactVersionFilesStatus_1", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/files/clone": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Clone Artifact files", + "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", + "operationId": "cloneArtifactVersionFiles", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/team/{team}/files/clone": { + "put": { + "tags": [ + "Artifact File" + ], + "summary": "Clone Artifact files", + "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", + "operationId": "cloneArtifactVersionFiles_1", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/playground/{artifactName}": { + "get": { + "tags": [ + "AIPlayground" + ], + "description": "Get AI Playground for model", + "operationId": "getModelAIPlayground", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "tags": [ + "AIPlayground" + ], + "description": "Update AI Playground for model", + "operationId": "updateModelAIPlayground", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + }, + "delete": { + "tags": [ + "AIPlayground" + ], + "description": "Delete AI Playground for model", + "operationId": "deleteModelAIPlayground", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName}": { + "get": { + "tags": [ + "AIPlayground" + ], + "description": "Get AI Playground for model", + "operationId": "getModelAIPlayground_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "tags": [ + "AIPlayground" + ], + "description": "Update AI Playground for model", + "operationId": "updateModelAIPlayground_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + }, + "delete": { + "tags": [ + "AIPlayground" + ], + "description": "Delete AI Playground for model", + "operationId": "deleteModelAIPlayground_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/{artifactName}/spec": { + "get": { + "tags": [ + "AIPlayground" + ], + "summary": "Get AI Playground for artifactType", + "description": "Get AI Playground for artifactType", + "operationId": "getModelArtifactsSpec", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "tags": [ + "AIPlayground" + ], + "summary": "Update AI Playground for artifactType", + "description": "Update AI Playground for artifactType", + "operationId": "updateModelArtifactsSpec", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + }, + "delete": { + "tags": [ + "AIPlayground" + ], + "summary": "Delete AI Playground for artifactType", + "description": "Delete AI Playground for artifactType", + "operationId": "deleteModelArtifactsSpec", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec": { + "get": { + "tags": [ + "AIPlayground" + ], + "summary": "Get AI Playground for artifactType", + "description": "Get AI Playground for artifactType", + "operationId": "getModelArtifactsSpec_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "tags": [ + "AIPlayground" + ], + "summary": "Update AI Playground for artifactType", + "description": "Update AI Playground for artifactType", + "operationId": "updateModelArtifactsSpec_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + }, + "delete": { + "tags": [ + "AIPlayground" + ], + "summary": "Delete AI Playground for artifactType", + "description": "Delete AI Playground for artifactType", + "operationId": "deleteModelArtifactsSpec_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/terms-of-service": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Update artifact terms of service", + "description": "Update artifact terms of service", + "operationId": "updateTermsOfService", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact", + "kas" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Update artifact terms of service", + "description": "Update artifact terms of service", + "operationId": "updateTermsOfService_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact", + "kas" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/share": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish artifact to public", + "description": "Publish artifact to public", + "operationId": "publishArtifact", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "guest-can-download", + "in": "query", + "description": "Indicates if guest users can download this artifact", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "public-can-list", + "in": "query", + "description": "Indicates if artifact is listed publicly", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + }, + "delete": { + "tags": [ + "Publish" + ], + "summary": "Undo publishing of artifact to public", + "description": "Undo publishing of artifact to public", + "operationId": "undoPublishArtifact", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish artifact to product", + "description": "Publish artifact to product", + "operationId": "publishArtifactFromRequest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + }, + "delete": { + "tags": [ + "Publish" + ], + "summary": "Undo publishing of product artifacts", + "description": "Undo publishing of product artifacts", + "operationId": "undoPublishProduct", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "tags": [ + "ArtifactSigning" + ], + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", + "operationId": "getArtifactVersionSignature", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "redirect", + "in": "query", + "description": "Get redirect URL", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + }, + "put": { + "tags": [ + "ArtifactSigning" + ], + "description": "Request to sign artifact version", + "operationId": "signArtifactVersion", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "signArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "signArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "tags": [ + "ArtifactSigning" + ], + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", + "operationId": "getArtifactVersionSignature_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "redirect", + "in": "query", + "description": "Get redirect URL", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + }, + "put": { + "tags": [ + "ArtifactSigning" + ], + "description": "Request to sign artifact version", + "operationId": "signArtifactVersion_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "signArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "signArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/release-type": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Update artifact version release type", + "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", + "operationId": "updateReleaseLabel", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/release-type": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Update artifact version release type", + "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", + "operationId": "updateReleaseLabel_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}": { + "get": { + "tags": [ + "Artifacts" + ], + "summary": "Get artifact in org", + "description": "Get artifact details in org", + "operationId": "getArtifactInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "tags": [ + "Artifacts" + ], + "summary": "Replace artifact in org", + "description": "Replace artifact details in org", + "operationId": "replaceArtifactInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + }, + "delete": { + "tags": [ + "Artifacts" + ], + "summary": "Delete artifact in org", + "description": "Delete artifact in org", + "operationId": "deleteArtifactInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifact" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifact", + "kas" + ] + }, + "patch": { + "tags": [ + "Artifacts" + ], + "summary": "Update artifact in org", + "description": "Update artifact details in org", + "operationId": "updateArtifactInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish artifact to public", + "description": "Publish artifact to public", + "operationId": "publishArtifact_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "guest-can-download", + "in": "query", + "description": "Indicates if guest users can download this artifact", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "public-can-list", + "in": "query", + "description": "Indicates if artifact is listed publicly", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + }, + "delete": { + "tags": [ + "Publish" + ], + "summary": "Undo publishing of artifact to public", + "description": "Undo publishing of artifact to public", + "operationId": "undoPublishArtifact_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish artifact to product", + "description": "Publish artifact to product", + "operationId": "publishArtifactFromRequest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + }, + "delete": { + "tags": [ + "Publish" + ], + "summary": "Undo publishing of product artifacts", + "description": "Undo publishing of product artifacts", + "operationId": "undoPublishProduct_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}": { + "get": { + "tags": [ + "Artifacts" + ], + "summary": "Get artifact in team", + "description": "Get artifact details in team", + "operationId": "getArtifactInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "tags": [ + "Artifacts" + ], + "summary": "Replace artifact in team", + "description": "Replace artifact details in team", + "operationId": "replaceArtifactInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + }, + "delete": { + "tags": [ + "Artifacts" + ], + "summary": "Delete artifact in team", + "description": "Delete artifact in team", + "operationId": "deleteArtifactInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifact" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifact", + "kas" + ] + }, + "patch": { + "tags": [ + "Artifacts" + ], + "summary": "Update artifact in team", + "description": "Update artifact details in team", + "operationId": "updateArtifactInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name}": { + "put": { + "tags": [ + "Apps" + ], + "summary": "Update model app association", + "description": "Update model app association", + "operationId": "updateModelAppAssociation", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "path", + "description": "App Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Apps" + ], + "summary": "Delete model app association", + "description": "Delete model app association", + "operationId": "deleteModelAppAssociation", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "path", + "description": "App Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team}": { + "put": { + "tags": [ + "Models" + ], + "summary": "Share team model with the specified team", + "description": "This operation shares a team model with the team.", + "operationId": "shareModelInTeamWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Models" + ], + "summary": "Revoke shared team model with the specified team", + "description": "This operation revokes a shared team model with the team.", + "operationId": "revokeShareModelInTeamWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org": { + "put": { + "tags": [ + "Models" + ], + "summary": "Share team model with the org", + "description": "This operation shares a team model with the org.", + "operationId": "shareModelInTeamWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Models" + ], + "summary": "Revoke shared team model with the org", + "description": "This operation revokes a shared team model with the org.", + "operationId": "revokeShareModelInTeamWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Add artifact to collection in org and team", + "description": "Add artifact to the specified collection in the specified org and team", + "operationId": "addArtifactToCollectionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Remove artifact from collection in org and team", + "description": "Remove artifact from the specified collection in the specified org and team", + "operationId": "removeArtifactFromCollectionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Share team collection with the specified team", + "description": "Share team collection with the specified team", + "operationId": "shareCollectionInTeamWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Revoke shared team collection with the specified team", + "description": "Revoke shared team collection with the specified team", + "operationId": "revokeShareCollectionInTeamWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Share team collection with the org", + "description": "Share team collection with the org", + "operationId": "shareCollectionInTeamWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Revoke shared team collection with the org", + "description": "Revoke shared team collection with the org", + "operationId": "revokeShareCollectionInTeamWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish collection to public", + "description": "Publish collection to public", + "operationId": "publishCollection", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "guest-can-download", + "in": "query", + "description": "Indicates if guest users can download this collection", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "public-can-list", + "in": "query", + "description": "Indicates if collection is listed publicly", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "x-ssa-scopes": [ + "publishCollection" + ] + }, + "delete": { + "tags": [ + "Publish" + ], + "summary": "Undo publishing of collection to public", + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "undoPublishCollection" + ] + } + ], + "x-ssa-scopes": [ + "undoPublishCollection" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Add artifact to collection in org and team from another org", + "description": "Add artifact to the specified collection in the specified org and team from another org", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Remove artifact from collection in org and team from another org", + "description": "Remove artifact from the specified collection in the specified org and team from another org", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Add artifact to collection in org and team from another org and team", + "description": "Add artifact to the specified collection in the specified org and team from another org and team", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-team-name", + "in": "path", + "description": "Artifact team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Remove artifact from collection in org and team from another org and team", + "description": "Remove artifact from the specified collection in the specified org and team from another org and team", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-team-name", + "in": "path", + "description": "Artifact team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/shares/team/{target-team}": { + "put": { + "tags": [ + "Models" + ], + "summary": "Share org model with the specified team", + "description": "This operation shares an org model with the team.", + "operationId": "shareModelInOrgWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Models" + ], + "summary": "Revoke shared org model with the specified team", + "description": "This operation revokes a shared org model with the team.", + "operationId": "revokeShareModelInOrgWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/shares/org": { + "put": { + "tags": [ + "Models" + ], + "summary": "Share org model with the org", + "description": "This operation shares an org model with the org.", + "operationId": "shareModelInOrgWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Models" + ], + "summary": "Revoke shared org model with the org", + "description": "This operation revokes a shared org model with the org.", + "operationId": "revokeShareModelInOrgWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Add artifact to collection in org", + "description": "Add artifact to the specified collection in the specified org", + "operationId": "addArtifactToCollectionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Remove artifact from collection in org", + "description": "Remove artifact from the specified collection in the specified org", + "operationId": "removeArtifactFromCollectionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Share org collection with the specified team", + "description": "Share org collection with the specified team", + "operationId": "shareCollectionInOrgWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Revoke shared org collection with the specified team", + "description": "Revoke shared org collection with the specified team", + "operationId": "revokeShareCollectionInOrgWithTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "target-team", + "in": "path", + "description": "Target team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/shares/org": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Share org collection with the org", + "description": "Share org collection with the org", + "operationId": "shareCollectionInOrgWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Revoke shared org collection with the org", + "description": "Revoke shared org collection with the org", + "operationId": "revokeShareCollectionInOrgWithOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/share": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish collection to public", + "description": "Publish collection to public", + "operationId": "publishCollection_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "guest-can-download", + "in": "query", + "description": "Indicates if guest users can download this collection", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "public-can-list", + "in": "query", + "description": "Indicates if collection is listed publicly", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "x-ssa-scopes": [ + "publishCollection" + ] + }, + "delete": { + "tags": [ + "Publish" + ], + "summary": "Undo publishing of collection to public", + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "undoPublishCollection" + ] + } + ], + "x-ssa-scopes": [ + "undoPublishCollection" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/share/product": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish collection to product", + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "x-ssa-scopes": [ + "publishCollection" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product": { + "put": { + "tags": [ + "Publish" + ], + "summary": "Publish collection to product", + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "x-ssa-scopes": [ + "publishCollection" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Add artifact to collection in org from another org", + "description": "Add artifact to the specified collection in the specified org from another org", + "operationId": "addArtifactToCollectionInOrgFromAnotherOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Remove artifact from collection in org from another org", + "description": "Remove artifact from the specified collection in the specified org from another org", + "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { + "put": { + "tags": [ + "Collections" + ], + "summary": "Add artifact to collection in org from another org and team", + "description": "Add artifact to the specified collection in the specified org from another org and team", + "operationId": "addArtifactToCollectionInOrgFromAnotherOrgAndTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-team-name", + "in": "path", + "description": "Artifact team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Remove artifact from collection in org from another org", + "description": "Remove artifact from the specified collection in the specified org from another org", + "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-org-name", + "in": "path", + "description": "Artifact organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-team-name", + "in": "path", + "description": "Artifact team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/playground": { + "post": { + "tags": [ + "AIPlayground" + ], + "description": "Create AI Playground for model", + "operationId": "createModelAIPlayground", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/playground": { + "post": { + "tags": [ + "AIPlayground" + ], + "description": "Create AI Playground for model", + "operationId": "createModelAIPlayground_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/spec": { + "post": { + "tags": [ + "AIPlayground" + ], + "summary": "Create AI Playground for artifactType", + "description": "Create AI Playground for artifactType", + "operationId": "createModelArtifactsSpec", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/spec": { + "post": { + "tags": [ + "AIPlayground" + ], + "summary": "Create AI Playground for artifactType", + "description": "Create AI Playground for artifactType", + "operationId": "createModelArtifactsSpec_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan": { + "post": { + "tags": [ + "MalwareScan" + ], + "summary": "Initiates malwares can for the artifact", + "description": "Initiates malwares can for the artifact", + "operationId": "initiateMalwareScan", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + }, + { + "name": "contact-email", + "in": "query", + "description": "Contact email", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 320, + "minLength": 0 + } + }, + { + "name": "nspect-id", + "in": "query", + "description": "Nspect identifier", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 64, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan": { + "post": { + "tags": [ + "MalwareScan" + ], + "summary": "Initiates malwares can for the artifact", + "description": "Initiates malwares can for the artifact", + "operationId": "initiateMalwareScan_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + }, + { + "name": "contact-email", + "in": "query", + "description": "Contact email", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 320, + "minLength": 0 + } + }, + { + "name": "nspect-id", + "in": "query", + "description": "Nspect identifier", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 64, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create artifact version file deployment url in org", + "description": "Create artifact version file deployment url in org", + "operationId": "createArtifactVerionFileDeploymentUrlInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create artifact version deployment url in org", + "description": "Create artifact version deployment url in org", + "operationId": "createArtifactDeploymentUrlInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Get artifact deployment parameters details in org", + "description": "Get artifact deployment parameters details in org", + "operationId": "getArtifactDeploymentParametersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create artifact deployment parameters in org", + "description": "Create artifact deployment parameters in org", + "operationId": "createArtifactDeploymentParametersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "no-auto-labels", + "in": "query", + "description": "No auto labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "merge-csp-parameters", + "in": "query", + "description": "Merge CSP parameters in response", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Delete artifact deployment parameters in org", + "description": "Delete artifact deployment parameters in org", + "operationId": "deleteArtifactDeploymentParametersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Update artifact deployment parameters in org", + "description": "Update artifact deployment parameters in org", + "operationId": "updateArtifactDeploymentParametersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "merge-csp-parameters", + "in": "query", + "description": "Merge CSP parameters in response", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels": { + "post": { + "tags": [ + "Collections" + ], + "summary": "Sync collection release type labels for artifact", + "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", + "operationId": "syncCollectionReleaseTypeLabelsForArtifact", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "syncReleaseTypeLabels" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "syncReleaseTypeLabels" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels": { + "post": { + "tags": [ + "Collections" + ], + "summary": "Sync collection release type labels for artifact", + "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", + "operationId": "syncCollectionReleaseTypeLabelsForArtifact_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "syncReleaseTypeLabels" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "syncReleaseTypeLabels" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance": { + "get": { + "tags": [ + "Publish" + ], + "summary": "Check if user needs to accept license", + "description": "Check if user needs to accept license. Checks against uam", + "operationId": "getOrgArtifactLicenseAcceptance", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Publish" + ], + "summary": "Accept artifact license", + "description": "Record license acceptance for an org artifact.", + "operationId": "acceptArtifactLicense", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance": { + "get": { + "tags": [ + "Publish" + ], + "summary": "Check if user needs to accept license", + "description": "Check if user needs to accept license. Checks against uam", + "operationId": "getOrgArtifactLicenseAcceptance_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Publish" + ], + "summary": "Accept artifact license", + "description": "Record license acceptance for an org artifact.", + "operationId": "acceptArtifactLicense_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/files": { + "post": { + "tags": [ + "ArtifactChecksum" + ], + "summary": "Check if file exists based on checksum", + "description": "Check if file exists based on checksum provided in request", + "operationId": "checkArtifactFilesExistByChecksum", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Org Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact Type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/files": { + "post": { + "tags": [ + "ArtifactChecksum" + ], + "summary": "Check if file exists based on checksum", + "description": "Check if file exists based on checksum provided in request", + "operationId": "checkArtifactFilesExistByChecksum_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Org Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact Type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}": { + "get": { + "tags": [ + "Artifacts" + ], + "summary": "List artifacts in org", + "description": "List artifacts the user can access in the specified org", + "operationId": "listArtifactsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "listArtifacts", + "kas" + ] + }, + "post": { + "tags": [ + "Artifacts" + ], + "summary": "Create artifact in org", + "description": "Create artifact in org", + "operationId": "createArtifactInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createArtifact" + ] + } + ], + "x-ssa-scopes": [ + "createArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create artifact version file deployment url in team", + "description": "Create artifact version file deployment url in team", + "operationId": "createArtifactVersionFileDeploymentUrlInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create artifact version deployment url in team", + "description": "Create artifact version deployment url in team", + "operationId": "createArtifactDeploymentUrlInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Get artifact deployment parameters details in team", + "description": "Get artifact deployment parameters details in team", + "operationId": "getArtifactDeploymentParametersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create artifact deployment parameters in team", + "description": "Create artifact deployment parameters in team", + "operationId": "createArtifactDeploymentParametersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "no-auto-labels", + "in": "query", + "description": "No auto labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "merge-csp-parameters", + "in": "query", + "description": "Merge CSP parameters in response", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Delete artifact deployment parameters in team", + "description": "Delete artifact deployment parameters in team", + "operationId": "deleteArtifactDeploymentParametersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Update artifact deployment parameters in team", + "description": "Update artifact deployment parameters in team", + "operationId": "updateArtifactDeploymentParametersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "merge-csp-parameters", + "in": "query", + "description": "Merge CSP parameters in response", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/parameters": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create artifact deployment parameters in team", + "description": "Create artifact deployment parameters in team", + "operationId": "createArtifactDeploymentParametersInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "no-auto-labels", + "in": "query", + "description": "No auto labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "merge-csp-parameters", + "in": "query", + "description": "Merge CSP parameters in response", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}": { + "get": { + "tags": [ + "Artifacts" + ], + "summary": "List artifacts in team", + "description": "List artifacts the user can access in the specified org and team", + "operationId": "listArtifactsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "listArtifacts", + "kas" + ] + }, + "post": { + "tags": [ + "Artifacts" + ], + "summary": "Create artifact in team", + "description": "Create artifact in team", + "operationId": "createArtifactInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createArtifact" + ] + } + ], + "x-ssa-scopes": [ + "createArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in team", + "description": "List recipe versions in team", + "operationId": "listRecipeVersionsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "tags": [ + "Resource Versions" + ], + "summary": "Create recipe version in team", + "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in team", + "description": "List recipe versions in team", + "operationId": "listRecipeVersionsInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "tags": [ + "Resource Versions" + ], + "summary": "Create recipe version in team", + "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes": { + "get": { + "tags": [ + "Resources" + ], + "summary": "List recipes in team", + "description": "List recipes the user can access in the specified org and team", + "operationId": "listRecipesInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "query", + "description": "Application name", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "tags": [ + "Resources" + ], + "summary": "Create recipe in team", + "description": "Create recipe in team", + "operationId": "createRecipeInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources": { + "get": { + "tags": [ + "Resources" + ], + "summary": "List recipes in team", + "description": "List recipes the user can access in the specified org and team", + "operationId": "listRecipesInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "query", + "description": "Application name", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "tags": [ + "Resources" + ], + "summary": "Create recipe in team", + "description": "Create recipe in team", + "operationId": "createRecipeInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models": { + "get": { + "tags": [ + "Models" + ], + "summary": "List models in team", + "description": "This operation lists models the user can access in the org/team.", + "operationId": "listModelsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "query", + "description": "Application name", + "required": false, + "deprecated": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "[Deprecated] Page reference, Use page-number instead", + "required": false, + "deprecated": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModels" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "listModels" + ] + }, + "post": { + "tags": [ + "Models" + ], + "summary": "Create model in team", + "description": "This operation creates a model in the org/team.", + "operationId": "createModelInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModel" + ] + } + ], + "x-ssa-scopes": [ + "createModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List model versions in team", + "description": "List model versions in team", + "operationId": "listModelVersionsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + }, + "post": { + "tags": [ + "Model Version" + ], + "summary": "Create model version in team.", + "description": "Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModelVersion" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "createModelVersion" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List collections in team", + "description": "List collections the user can access in the specified org and team", + "operationId": "listCollectionsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Collections" + ], + "summary": "Create collection in org and team", + "description": "Create collection in org and team", + "operationId": "createCollectionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createCollection" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "createCollection" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in org", + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "tags": [ + "Resource Versions" + ], + "summary": "Create recipe version in org", + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in org", + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "tags": [ + "Resource Versions" + ], + "summary": "Create recipe version in org", + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes": { + "get": { + "tags": [ + "Resources" + ], + "summary": "List recipes in org", + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "query", + "description": "Application name", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "tags": [ + "Resources" + ], + "summary": "Create recipe in org", + "description": "Create recipe in org", + "operationId": "createRecipeInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources": { + "get": { + "tags": [ + "Resources" + ], + "summary": "List recipes in org", + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "query", + "description": "Application name", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "tags": [ + "Resources" + ], + "summary": "Create recipe in org", + "description": "Create recipe in org", + "operationId": "createRecipeInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/models": { + "get": { + "tags": [ + "Models" + ], + "summary": "List models in org", + "description": "This operation lists models the user can access in the org.", + "operationId": "listModelsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "app-name", + "in": "query", + "description": "Application name", + "required": false, + "deprecated": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "[Deprecated] Page reference, Use page-number instead", + "required": false, + "deprecated": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModels" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "listModels" + ] + }, + "post": { + "tags": [ + "Models" + ], + "summary": "Create model in org", + "description": "This operation creates a model in the org.", + "operationId": "createModelInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModel" + ] + } + ], + "x-ssa-scopes": [ + "createModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/versions": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List model versions in org", + "description": "List model versions in org", + "operationId": "listModelVersionsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + }, + "post": { + "tags": [ + "Model Version" + ], + "summary": "Create model version in org", + "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModelVersion" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "createModelVersion" + ] + } + }, + "/v1/org/{org-name}/files/commit": { + "post": { + "tags": [ + "ArtifactChecksum" + ], + "summary": "Commit artifact files metadata to database", + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Org Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "upload-pending", + "in": "query", + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/files/commit": { + "post": { + "tags": [ + "ArtifactChecksum" + ], + "summary": "Commit artifact files metadata to database", + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Org Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team Name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "upload-pending", + "in": "query", + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List collections in org", + "description": "List collections the user can access in the specified org", + "operationId": "listCollectionsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "tags": [ + "Collections" + ], + "summary": "Create collection in org", + "description": "Create collection in org", + "operationId": "createCollectionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createCollection" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "createCollection" + ] + } + }, + "/v1/malware-scan-notification": { + "post": { + "tags": [ + "MalwareScan" + ], + "summary": "Update artifact's malware scan result with MalwareScanNotification", + "description": "Update artifact's malware scan result with MalwareScanNotification", + "operationId": "notifyScanResult", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MalwareScanNotification" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotifyMalwareScanResultResponse" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "notifyScanResult" + ] + } + ], + "x-ssa-scopes": [ + "notifyScanResult", + "kas" + ] + } + }, + "/v1/gpus/pci-device-id/{pci-device-id}": { + "get": { + "tags": [ + "GpuByPci" + ], + "summary": "Get GPU by PCI Device ID", + "description": "Get all GPU records matching the given PCI Device ID", + "operationId": "getGpuByPciDeviceId", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + }, + "post": { + "tags": [ + "GpuByPci" + ], + "summary": "Create GPU by PCI Device ID only", + "description": "Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", + "operationId": "createGpuByPciDeviceId", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "createGpuByPci" + ] + }, + "delete": { + "tags": [ + "GpuByPci" + ], + "summary": "Delete GPU by PCI Device ID only", + "description": "Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", + "operationId": "deleteGpuByPciDeviceId", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "deleteGpuByPci", + "kas" + ] + }, + "patch": { + "tags": [ + "GpuByPci" + ], + "summary": "Partially update GPU by PCI Device ID only", + "description": "Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated.", + "operationId": "updateGpuByPciDeviceId", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "updateGpuByPci" + ] + } + }, + "/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id}": { + "get": { + "tags": [ + "GpuByPci" + ], + "summary": "Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "description": "Get a single GPU record matching the full PCI composite key", + "operationId": "getGpuByPciDeviceIdVendorIdSubsystemDeviceId", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-vendor-id", + "in": "path", + "description": "PCI Vendor ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-subsystem-device-id", + "in": "path", + "description": "PCI Subsystem Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + }, + "post": { + "tags": [ + "GpuByPci" + ], + "summary": "Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "description": "Create a new GPU record using the full PCI composite key", + "operationId": "createGpuByPciFullKey", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-vendor-id", + "in": "path", + "description": "PCI Vendor ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-subsystem-device-id", + "in": "path", + "description": "PCI Subsystem Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "createGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "createGpuByPci" + ] + }, + "delete": { + "tags": [ + "GpuByPci" + ], + "summary": "Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "description": "Delete a GPU record matching the full PCI composite key", + "operationId": "deleteGpuByPciFullKey", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-vendor-id", + "in": "path", + "description": "PCI Vendor ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-subsystem-device-id", + "in": "path", + "description": "PCI Subsystem Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "deleteGpuByPci", + "kas" + ] + }, + "patch": { + "tags": [ + "GpuByPci" + ], + "summary": "Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "description": "Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated.", + "operationId": "updateGpuByPciFullKey", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-vendor-id", + "in": "path", + "description": "PCI Vendor ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-subsystem-device-id", + "in": "path", + "description": "PCI Subsystem Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "updateGpuByPci" + ] + } + }, + "/v1/csps": { + "get": { + "tags": [ + "Cloud service providers" + ], + "summary": "List cloud service providers", + "description": "List cloud service providers", + "operationId": "listCloudServiceProviders", + "parameters": [ + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "integer", + "maximum": 5000, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "integer", + "maximum": 10000, + "minimum": 0 + } + }, + { + "name": "include-disabled", + "in": "query", + "description": "Include disabled", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + }, + "post": { + "tags": [ + "Cloud service providers" + ], + "summary": "Create cloud service provider", + "description": "Create cloud service provider", + "operationId": "createCloudServiceProvider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/csps/{csp-name}/deployments/params": { + "get": { + "tags": [ + "Cloud service provider deployment parameters" + ], + "summary": "Get cloud service provider deployment parameters details", + "description": "Get cloud service provider deployment parameters details", + "operationId": "getCloudServiceProviderDeploymentParametersDetails", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + }, + "post": { + "tags": [ + "Cloud service provider deployment parameters" + ], + "summary": "Create cloud service provider deployment parameters", + "description": "Create cloud service provider deployment parameters", + "operationId": "createCloudServiceProviderDeploymentParameters", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Cloud service provider deployment parameters" + ], + "summary": "Delete cloud service provider deployment parameters", + "description": "Delete cloud service provider deployment parameters", + "operationId": "deleteCloudServiceProviderDeploymentParameters", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "tags": [ + "Cloud service provider deployment parameters" + ], + "summary": "Update cloud service provider deployment parameters", + "description": "Update cloud service provider deployment parameters", + "operationId": "updateCloudServiceProviderDeploymentParameters", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/csps/{csp-name}/deployments/params/meta": { + "get": { + "tags": [ + "Deployment parameters meta" + ], + "summary": "Get cloud service provider deployment parameters meta details", + "description": "Get cloud service provider deployment parameters meta details", + "operationId": "getCloudServiceProviderDeploymentParametersMetaDetails", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + }, + "post": { + "tags": [ + "Deployment parameters meta" + ], + "summary": "Create cloud service provider deployment parameters meta", + "description": "Create cloud service provider deployment parameters meta", + "operationId": "createCloudServiceProviderDeploymentParametersMeta", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMetaCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Deployment parameters meta" + ], + "summary": "Delete cloud service provider deployment parameters meta", + "description": "Delete cloud service provider deployment parameters meta", + "operationId": "deleteCloudServiceProviderDeploymentParametersMeta", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "tags": [ + "Deployment parameters meta" + ], + "summary": "Update cloud service provider deployment parameters meta", + "description": "Update cloud service provider deployment parameters meta", + "operationId": "updateCloudServiceProviderDeploymentParametersMeta", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMetaUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create public artifact version file deployment url in org", + "description": "Create public artifact version file deployment url in org", + "operationId": "createPublicArtifactVersionFileDeploymentUrlInOrg", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create public artifact version deployment url in org", + "description": "Create public artifact version deployment url in org", + "operationId": "createPublicArtifactDeploymentUrlInOrg", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create public artifact version file deployment url in team", + "description": "Create public artifact version file deployment url in team", + "operationId": "createPublicArtifactVersionFileDeploymentUrlInTeam", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Create public artifact version deployment url in team", + "description": "Create public artifact version deployment url in team", + "operationId": "createPublicArtifactDeploymentUrlInTeam", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs": { + "patch": { + "tags": [ + "Publish" + ], + "summary": "Publish artifact version with configs like policy badge", + "description": "Update artifact version with configs like policy badge", + "operationId": "updateTagLevelPublishConfigs", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs": { + "patch": { + "tags": [ + "Publish" + ], + "summary": "Publish artifact version with configs like policy badge", + "description": "Update artifact version with configs like policy badge", + "operationId": "updateTagLevelPublishConfigs_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in team", + "description": "Get recipe version in team", + "operationId": "getRecipeVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "tags": [ + "Resource Versions" + ], + "summary": "Update recipe version in team", + "description": "Update recipe version information in team e.g. upload status", + "operationId": "updateRecipeVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "create-zip", + "in": "query", + "description": "Create zip of version content", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in team", + "description": "Get recipe version in team", + "operationId": "getRecipeVersionInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "tags": [ + "Resource Versions" + ], + "summary": "Update recipe version in team", + "description": "Update recipe version information in team e.g. upload status", + "operationId": "updateRecipeVersionInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "create-zip", + "in": "query", + "description": "Create zip of version content", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in team", + "description": "Get recipe details in team", + "operationId": "getRecipeInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "tags": [ + "Resources" + ], + "summary": "Update recipe in team", + "description": "Update recipe details in team", + "operationId": "updateRecipeInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in team", + "description": "Get recipe details in team", + "operationId": "getRecipeInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "tags": [ + "Resources" + ], + "summary": "Update recipe in team", + "description": "Update recipe details in team", + "operationId": "updateRecipeInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}": { + "get": { + "tags": [ + "Models" + ], + "summary": "Get model in team", + "description": "This operation gets info of a model in the org/team.", + "operationId": "getModelInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModel" + ] + } + ], + "x-ssa-scopes": [ + "getModel", + "kas" + ] + }, + "patch": { + "tags": [ + "Models" + ], + "summary": "Update model in team", + "description": "This operation updates details of a model in the org/team.", + "operationId": "updateModelInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModel" + ] + } + ], + "x-ssa-scopes": [ + "updateModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "Get model version in team", + "description": "Get model version in team", + "operationId": "getModelVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModelVersion", + "getModelVersionFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "getModelVersionFilterByOrgEnablement", + "getModelVersion", + "kas" + ] + }, + "patch": { + "tags": [ + "Model Version" + ], + "summary": "Update model version in team", + "description": "Update model version information in team e.g. upload status", + "operationId": "updateModelVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + }, + { + "name": "create-zip", + "in": "query", + "description": "Create zip of version content", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash": { + "patch": { + "tags": [ + "Model Version" + ], + "summary": "Stash artifact version in team", + "description": "Stash artifact version information in team in model version upload paused state", + "operationId": "stashArtifactVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id}": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "Get chart version in team", + "description": "Get chart version in team", + "operationId": "getHelmChartVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "getArtifactVersion", + "kas" + ] + }, + "patch": { + "tags": [ + "Helm Charts" + ], + "summary": "Update chart version in team", + "description": "Update chart version information in team e.g. upload status", + "operationId": "updateHelmChartVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "Get collection in team", + "description": "Get collection details in team", + "operationId": "getCollectionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getCollection" + ] + } + ], + "x-ssa-scopes": [ + "getCollection", + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Delete collection in org and team", + "description": "Delete collection in the specified org and team", + "operationId": "deleteCollectionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "tags": [ + "Collections" + ], + "summary": "Update collection in team", + "description": "Update collection details in team", + "operationId": "updateCollectionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateCollection" + ] + } + ], + "x-ssa-scopes": [ + "updateCollection", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts": { + "patch": { + "tags": [ + "Collections" + ], + "summary": "Patch collection in org and team", + "description": "Patch collection in the specified org and team", + "operationId": "patchCollectionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPatchRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "patchCollectionArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "patchCollectionArtifacts", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in org", + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "tags": [ + "Resource Versions" + ], + "summary": "Update recipe version in org", + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "create-zip", + "in": "query", + "description": "Create zip of version content", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in org", + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "tags": [ + "Resource Versions" + ], + "summary": "Update recipe version in org", + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "create-zip", + "in": "query", + "description": "Create zip of version content", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in org", + "description": "Get recipe in org", + "operationId": "getRecipeInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "tags": [ + "Resources" + ], + "summary": "Update recipe in org", + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in org", + "description": "Get recipe in org", + "operationId": "getRecipeInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "tags": [ + "Resources" + ], + "summary": "Update recipe in org", + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}": { + "get": { + "tags": [ + "Models" + ], + "summary": "Get model details in org", + "description": "This operation gets info of a model in the org.", + "operationId": "getModelInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModel" + ] + } + ], + "x-ssa-scopes": [ + "getModel", + "kas" + ] + }, + "patch": { + "tags": [ + "Models" + ], + "summary": "Update model in org", + "description": "This operation updates details of a model in the org.", + "operationId": "updateModelInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModel" + ] + } + ], + "x-ssa-scopes": [ + "updateModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/versions/{version-id}": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "Get model version in org", + "description": "Get model version in org", + "operationId": "getModelVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModelVersion", + "getModelVersionFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "getModelVersionFilterByOrgEnablement", + "getModelVersion", + "kas" + ] + }, + "patch": { + "tags": [ + "Model Version" + ], + "summary": "Update model version in org", + "description": "Update model version information in org e.g. upload status", + "operationId": "updateModelVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + }, + { + "name": "create-zip", + "in": "query", + "description": "Create zip of version content", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "set-latest", + "in": "query", + "description": "Set version to latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash": { + "patch": { + "tags": [ + "Model Version" + ], + "summary": "Stash artifact version in org", + "description": "Stash artifact version information in org during upload paused state", + "operationId": "stashArtifactVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id}": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "Get chart version in org", + "description": "Get chart version in org", + "operationId": "getHelmChartVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "getArtifactVersion", + "kas" + ] + }, + "patch": { + "tags": [ + "Helm Charts" + ], + "summary": "Update chart version in org", + "description": "Update chart version information in org e.g. upload status", + "operationId": "updateHelmChartVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "updateArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "Get collection in org", + "description": "Get collection details in org", + "operationId": "getCollectionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "getCollection" + ] + } + ], + "x-ssa-scopes": [ + "getCollection", + "kas" + ] + }, + "delete": { + "tags": [ + "Collections" + ], + "summary": "Delete collection in org", + "description": "Delete collection in the specified org", + "operationId": "deleteCollectionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "tags": [ + "Collections" + ], + "summary": "Update collection in org", + "description": "Update collection details in org", + "operationId": "updateCollectionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateCollection" + ] + } + ], + "x-ssa-scopes": [ + "updateCollection", + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts": { + "patch": { + "tags": [ + "Collections" + ], + "summary": "Patch collection in org", + "description": "Patch collection in the specified org", + "operationId": "patchCollectionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPatchRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "patchCollectionArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "patchCollectionArtifacts", + "kas" + ] + } + }, + "/v1/csps/{csp-name}": { + "get": { + "tags": [ + "Cloud service providers" + ], + "summary": "Get cloud service provider details", + "description": "Get cloud service provider details", + "operationId": "getCloudServiceProviderDetails", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + }, + "delete": { + "tags": [ + "Cloud service providers" + ], + "summary": "Delete cloud service provider", + "description": "Delete cloud service provider", + "operationId": "deleteCloudServiceProvider", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "tags": [ + "Cloud service providers" + ], + "summary": "Update cloud service provider", + "description": "Update cloud service provider", + "operationId": "updateCloudServiceProvider", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/{type}/org/{org}/{name}/{version}/files": { + "get": { + "tags": [ + "Artifact File" + ], + "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", + "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", + "operationId": "downloadAllArtifactFilesAsGuest", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "path", + "in": "query", + "description": "File path", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "redirect", + "in": "query", + "description": "Get redirect URL", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{type}/org/{org}/team/{team}/{name}/{version}/files": { + "get": { + "tags": [ + "Artifact File" + ], + "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", + "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", + "operationId": "downloadAllArtifactFilesAsGuest_1", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "path", + "in": "query", + "description": "File path", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "redirect", + "in": "query", + "description": "Get redirect URL", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{artifactName}/playground": { + "get": { + "tags": [ + "AIPlayground" + ], + "description": "Get AI Playground for public model", + "operationId": "getPublicModelAIPlayground", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/playground": { + "get": { + "tags": [ + "AIPlayground" + ], + "description": "Get AI Playground for public model", + "operationId": "getPublicModelAIPlayground_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{artifactName}/spec": { + "get": { + "tags": [ + "AIPlayground" + ], + "summary": "Get AI Playground for public artifactType", + "description": "Get AI Playground for public artifactType", + "operationId": "getPublicModelArtifactsSpec", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/spec": { + "get": { + "tags": [ + "AIPlayground" + ], + "summary": "Get AI Playground for public artifactType", + "description": "Get AI Playground for public artifactType", + "operationId": "getPublicModelArtifactsSpec_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/org/{org-name}/{artifact-name}/collections": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List artifact collections in org as guest", + "description": "List artifact collections the user can access in the specified org as guest", + "operationId": "listArtifactCollectionsInOrgAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/collections": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List artifact collections in org and team as guest", + "description": "List artifact collections the user can access in the specified org and team as guest", + "operationId": "listArtifactCollectionsInTeamAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "tags": [ + "ArtifactSigning" + ], + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", + "operationId": "getArtifactVersionSignatureAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "redirect", + "in": "query", + "description": "Get redirect URL", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "tags": [ + "ArtifactSigning" + ], + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", + "operationId": "getArtifactVersionSignatureAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "redirect", + "in": "query", + "description": "Get redirect URL", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download all files of a team artifact in a zip as guest", + "description": "Download all files of a team artifact in a zip as guest", + "operationId": "downloadAllFilesInTeamAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip/download": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Direct download all files of a team artifact in a zip as guest", + "description": "Direct download all files of a team artifact in a zip as guest", + "operationId": "directDownloadAllFilesInTeamAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in team as guest", + "description": "Download the specified file of the artifact version in team as guest", + "operationId": "downloadArtifactFileInTeamAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**/zip/download": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in team as guest as zip", + "description": "Download the specified file of the artifact version in team as guest as zip", + "operationId": "downloadArtifactFileInTeamAsGuestAsZip", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/latest-version/zip": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download all files of a team artifact's latest version in a zip as guest", + "description": "Download all files of a team artifact's latest version in a zip as guest", + "operationId": "downloadAllFilesInTeamAsGuest_1", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download all files of an org artifact in a zip as guest", + "description": "Download all files of an org artifact in a zip as guest", + "operationId": "downloadAllFilesInOrgAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip/download": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Direct download all files of a org artifact in a zip as guest", + "description": "Direct download all files of a org artifact in a zip as guest", + "operationId": "directDownloadAllFilesInOrgAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in org as guest", + "description": "Download the specified file of the artifact version in org as guest", + "operationId": "downloadArtifactFileInOrgAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**/zip/download": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in org as guest as zip", + "description": "Download the specified file of the artifact version in org as guest as zip", + "operationId": "downloadArtifactFileInOrgAsGuestAsZip", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/latest-version/zip": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download all files of an org artifact's latest version in a zip as guest", + "description": "Download all files of an org artifact's latest version in a zip as guest", + "operationId": "downloadAllFilesOfLatestVersionInOrgAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "List artifact files in team as guest", + "description": "List files of the artifact version in team as guest", + "operationId": "listArtifactFilesInTeamAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "List artifact files in org as guest", + "description": "List files of the artifact version in org as guest", + "operationId": "listArtifactFilesInOrgAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}": { + "get": { + "tags": [ + "Artifacts" + ], + "summary": "List public artifacts", + "description": "List public artifacts", + "operationId": "listPublicArtifacts", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}": { + "get": { + "tags": [ + "Artifacts" + ], + "summary": "Get artifact in team as guest", + "description": "Get artifact details in team as guest", + "operationId": "getChartInTeamAsGuest", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}": { + "get": { + "tags": [ + "Artifacts" + ], + "summary": "Get artifact in org as guest", + "description": "Get artifact details in org as guest", + "operationId": "getArtifactInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in team as guest", + "description": "List files of the recipe version in team as guest", + "operationId": "listModeFilesInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in team as guest", + "description": "List files of the recipe version in team as guest", + "operationId": "listModeFilesInTeamAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in team as guest", + "description": "Get recipe version in team as guest", + "operationId": "getRecipeVersionInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in team as guest", + "description": "Get recipe version in team as guest", + "operationId": "getRecipeVersionInTeamAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in team as guest", + "description": "List recipe versions in team as guest", + "operationId": "listRecipeVersionsInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in team as guest", + "description": "List recipe versions in team as guest", + "operationId": "listRecipeVersionsInTeamAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in team as guest", + "description": "Get recipe details in team as guest", + "operationId": "getRecipeInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in team as guest", + "description": "Get recipe details in team as guest", + "operationId": "getRecipeInTeamAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in org as guest", + "description": "List files of the recipe version in org as guest", + "operationId": "listModeFilesInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in org as guest", + "description": "List files of the recipe version in org as guest", + "operationId": "listModeFilesInOrgAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in org as guest", + "description": "Get recipe version in org as guest", + "operationId": "getRecipeVersionInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}/versions/{version-id}": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "Get recipe version in org as guest", + "description": "Get recipe version in org as guest", + "operationId": "getRecipeVersionInOrgAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in org as guest", + "description": "List recipe versions in org as guest", + "operationId": "listRecipeVersionsInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}/versions": { + "get": { + "tags": [ + "Resource Versions" + ], + "summary": "List recipe versions in org as guest", + "description": "List recipe versions in org as guest", + "operationId": "listRecipeVersionsInOrgAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in org as guest", + "description": "Get recipe details in org as guest", + "operationId": "getRecipeInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}": { + "get": { + "tags": [ + "Resources" + ], + "summary": "Get recipe in org as guest", + "description": "Get recipe details in org as guest", + "operationId": "getRecipeInOrgAsGuest_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/recipes": { + "get": { + "tags": [ + "Resources" + ], + "summary": "List public recipes", + "description": "List public recipes", + "operationId": "listPublicRecipes", + "parameters": [ + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/resources": { + "get": { + "tags": [ + "Resources" + ], + "summary": "List public recipes", + "description": "List public recipes", + "operationId": "listPublicRecipes_1", + "parameters": [ + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/org/{org}/{type}/{name}/{version}/files": { + "get": { + "tags": [ + "Artifact File" + ], + "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", + "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", + "operationId": "downloadAllArtifactFiles", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "path", + "in": "query", + "description": "File path", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile", + "downloadArtifactVersionFileFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "downloadArtifactVersionFileFilterByOrgEnablement", + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v1/org/{org}/team/{team}/{type}/{name}/{version}/files": { + "get": { + "tags": [ + "Artifact File" + ], + "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", + "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", + "operationId": "downloadAllArtifactFiles_1", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "path", + "in": "query", + "description": "File path", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile", + "downloadArtifactVersionFileFilterByOrgEnablement" + ] + } + ], + "x-ssa-scopes": [ + "downloadArtifactVersionFileFilterByOrgEnablement", + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "List artifact deployment parameters in org", + "description": "List artifact deployment parameters in org", + "operationId": "listArtifactDeploymentParametersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List artifact collections in org", + "description": "List artifact collections the user can access in the specified org", + "operationId": "listArtifactCollectionsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/catalog/flags": { + "get": { + "tags": [ + "Publish" + ], + "summary": "Get Catalog flags", + "description": "Get the Catalog Public flags for artifact in org", + "operationId": "getPublicFlagsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "getPublicFlags" + ] + } + ], + "x-ssa-scopes": [ + "getPublicFlags" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download all files of an org artifact in a zip", + "description": "Download all files of an org artifact in a zip", + "operationId": "downloadAllFilesInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/*/zip/download": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in org as zip", + "description": "Download the specified file of the artifact version in org as zip", + "operationId": "downloadArtifactFileInOrgAsZip", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in org", + "description": "Download the specified file of the artifact version in org", + "operationId": "downloadArtifactFileInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "downloadArtifactVersionFile" + ] + }, + "delete": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Delete artifact file in org", + "description": "Delete artifact file in org", + "operationId": "deleteArtifactFileInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "List artifact files in org", + "description": "List files of the artifact version in org", + "operationId": "listArtifactFilesInOrg", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifactVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listArtifactVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "List artifact deployment parameters in team", + "description": "List artifact deployment parameters in team", + "operationId": "listArtifactDeploymentParametersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List artifact collections in org and team", + "description": "List artifact collections the user can access in the specified org and team", + "operationId": "listArtifactCollectionsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/catalog/flags": { + "get": { + "tags": [ + "Publish" + ], + "summary": "Get Catalog flags", + "description": "Get the Catalog Public flags for artifact in team", + "operationId": "getPublicFlagsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "getPublicFlags" + ] + } + ], + "x-ssa-scopes": [ + "getPublicFlags" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download all files of a team artifact in a zip", + "description": "Download all files of a team artifact in a zip", + "operationId": "downloadAllFilesInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in team", + "description": "Download the specified file of the artifact version in team", + "operationId": "downloadArtifactFileInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "downloadArtifactVersionFile" + ] + }, + "delete": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Delete artifact file in team", + "description": "Delete artifact file in team", + "operationId": "deleteArtifactFileInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/zip/download": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "Download artifact file in team as zip", + "description": "Download the specified file of the artifact version in team as zip", + "operationId": "downloadArtifactFileInTeamAsZip", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "sc_cmp", + "in": "cookie", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Artifact Version Files" + ], + "summary": "List artifact files in team", + "description": "List files of the artifact version in team", + "operationId": "listArtifactFilesInTeam", + "parameters": [ + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifactVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listArtifactVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in team", + "description": "List recipe files in team", + "operationId": "listRecipeFilesInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in team", + "description": "List recipe files in team", + "operationId": "listRecipeFilesInTeam_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Model Version Files" + ], + "summary": "List model files in team", + "description": "List files of the model version in team", + "operationId": "listModeFilesInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "List chart versions in team", + "description": "List chart versions in team", + "operationId": "listHelmChartVersionsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifactVersions" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "listArtifactVersions" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List collection artifacts in org and team", + "description": "List collection artifacts the user can access in the specified org and team", + "operationId": "listCollectionArtifactsInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listCollectionArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "listCollectionArtifacts" + ] + } + }, + "/v1/org/{org-name}/repositories/{container-name}/associated-models": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List associated model versions by container", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "container-name", + "in": "path", + "description": "Container name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/associated-models": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List associated model versions by container", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "container-name", + "in": "path", + "description": "Container name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List associated model versions by container", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_2", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "container-name", + "in": "path", + "description": "Container name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "container-tag", + "in": "path", + "description": "Container tag", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List associated model versions by container", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_3", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "container-name", + "in": "path", + "description": "Container name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "container-tag", + "in": "path", + "description": "Container tag", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in org", + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Resource Version Files endpoints" + ], + "summary": "List recipe files in org", + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg_1", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "recipe-name", + "in": "path", + "description": "Recipe name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Model Version Files" + ], + "summary": "List model files in org", + "description": "List files of the model version in org", + "operationId": "listModeFilesInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersionFiles" + ] + } + ], + "x-ssa-scopes": [ + "listModelVersionFiles", + "kas" + ] + } + }, + "/v1/org/{org-name}/helm-charts/{artifact-name}/versions": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "List chart versions in org", + "description": "List chart versions in org", + "operationId": "listHelmChartVersionsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifactVersions" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "listArtifactVersions" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts/{artifact-type}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List collection artifacts in org", + "description": "List collection artifacts the user can access in the specified org", + "operationId": "listCollectionArtifactsInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "listCollectionArtifacts" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "listCollectionArtifacts" + ] + } + }, + "/v1/models": { + "get": { + "tags": [ + "Models" + ], + "summary": "List public models", + "description": "This operation lists public models.", + "operationId": "listPublicModels", + "parameters": [ + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}": { + "get": { + "tags": [ + "Models" + ], + "summary": "Get model in team as guest", + "description": "This operation gets info of a model in the org/team as guest.", + "operationId": "getModelInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}/versions": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List model versions in team as guest", + "description": "List model versions in team as guest", + "operationId": "listModelVersionsInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "Get model version in team as guest", + "description": "Get model version in team as guest", + "operationId": "getModelVersionInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Model Version Files" + ], + "summary": "List model files in team as guest", + "description": "List files of the model version in team as guest", + "operationId": "listModeFilesInTeamAsGuest_2", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}": { + "get": { + "tags": [ + "Models" + ], + "summary": "Get model in org as guest", + "description": "This operation gets info of a model in the org as guest.", + "operationId": "getModelInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}/versions": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "List model versions in org as guest", + "description": "List model versions in org as guest", + "operationId": "listModelVersionsInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}/versions/{version-id}": { + "get": { + "tags": [ + "Model Version" + ], + "summary": "Get model version in org as guest", + "description": "Get model version in org as guest", + "operationId": "getModelVersionInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}/versions/{version-id}/files": { + "get": { + "tags": [ + "Model Version Files" + ], + "summary": "List model files in org as guest", + "description": "List files of the model version in org as guest", + "operationId": "listModeFilesInOrgAsGuest_2", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-reference", + "in": "query", + "description": "Page reference", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "List chart versions in team as guest", + "description": "List chart versions in team as guest", + "operationId": "listHelmChartVersionsInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions/{version-id}": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "Get chart version in team as guest", + "description": "Get chart version in team as guest", + "operationId": "getHelmChartVersionInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/helm-charts/{org-name}/{artifact-name}/versions": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "List chart versions in org as guest", + "description": "List chart versions in org as guest", + "operationId": "listHelmChartVersionsInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "sort-order", + "in": "query", + "description": "Sort order", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "release-type", + "in": "query", + "description": "Release Type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id}": { + "get": { + "tags": [ + "Helm Charts" + ], + "summary": "Get chart version in org as guest", + "description": "Get chart version in org as guest", + "operationId": "getHelmChartVersionInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/gpus": { + "get": { + "tags": [ + "GpuByPci" + ], + "summary": "Get all GPUs", + "description": "Get all GPU by PCI records", + "operationId": "getGpus", + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + } + }, + "/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}": { + "get": { + "tags": [ + "GpuByPci" + ], + "summary": "Get GPUs by PCI Device ID and Vendor ID", + "description": "Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID", + "operationId": "getGpuByPciDeviceIdVendorId", + "parameters": [ + { + "name": "pci-device-id", + "in": "path", + "description": "PCI Device ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + }, + { + "name": "pci-vendor-id", + "in": "path", + "description": "PCI Vendor ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 32, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Get public artifact deployment parameters details in team as guest", + "description": "Get public artifact deployment parameters details in team as guest", + "operationId": "getPublicArtifactDeploymentParametersInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "List public artifact deployment parameters in team as guest", + "description": "List public artifact deployment parameters in team as guest", + "operationId": "listPublicArtifactDeploymentParametersInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Get public artifact deployment parameters details in org as guest", + "description": "Get public artifact deployment parameters details in org as guest", + "operationId": "getPublicArtifactDeploymentParametersInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "List public artifact deployment parameters in org as guest", + "description": "List public artifact deployment parameters in org as guest", + "operationId": "listPublicArtifactDeploymentParametersInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{csp-name}": { + "get": { + "tags": [ + "Cloud service providers" + ], + "summary": "Get cloud service provider details", + "description": "Get cloud service provider details", + "operationId": "getCloudServiceProviderDetails_1", + "parameters": [ + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Get public artifact deployment parameters details in team", + "description": "Get public artifact deployment parameters details in team", + "operationId": "getPublicArtifactDeploymentParametersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "List public artifact deployment parameters in team", + "description": "List public artifact deployment parameters in team", + "operationId": "listPublicArtifactDeploymentParametersInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "Get public artifact deployment parameters details in org", + "description": "Get public artifact deployment parameters details in org", + "operationId": "getPublicArtifactDeploymentParametersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "csp-name", + "in": "path", + "description": "Cloud service provider name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params": { + "get": { + "tags": [ + "Artifact deployment parameters" + ], + "summary": "List public artifact deployment parameters in org", + "description": "List public artifact deployment parameters in org", + "operationId": "listPublicArtifactDeploymentParametersInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "repositories", + "recipes", + "models" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "inherit-csp-parameters", + "in": "query", + "description": "Inherit CSP parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps": { + "get": { + "tags": [ + "Cloud service providers" + ], + "summary": "List cloud service providers", + "description": "List cloud service providers", + "operationId": "listCloudServiceProviders_1", + "parameters": [ + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "integer", + "maximum": 5000, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "integer", + "maximum": 10000, + "minimum": 0 + } + }, + { + "name": "include-disabled", + "in": "query", + "description": "Include disabled", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/collections": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List public collections", + "description": "List public collections", + "operationId": "listPublicCollections", + "parameters": [ + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{team-name}/{collection-name}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "Get collection in team as guest", + "description": "Get collection details in team as guest", + "operationId": "getCollectionInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{team-name}/{collection-name}/artifacts/{artifact-type}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List collection artifacts in org and team as guest", + "description": "List collection artifacts the user can access in the specified org and team as guest", + "operationId": "listCollectionArtifactsInTeamAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{collection-name}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "Get collection in org as guest", + "description": "Get collection details in org as guest", + "operationId": "getCollectionInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{collection-name}/artifacts/{artifact-type}": { + "get": { + "tags": [ + "Collections" + ], + "summary": "List collection artifacts in org as guest", + "description": "List collection artifacts the user can access in the specified org as guest", + "operationId": "listCollectionArtifactsInOrgAsGuest", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "collection-name", + "in": "path", + "description": "Collection name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "page-size", + "in": "query", + "description": "Page size", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1 + } + }, + { + "name": "page-number", + "in": "query", + "description": "Page number - zero based index", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0 + } + }, + { + "name": "order-by", + "in": "query", + "description": "Order by", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "resolve-labels", + "in": "query", + "description": "Resolve labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove-unresolved-labels", + "in": "query", + "description": "Remove unresolved labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/artifact-registry/org/{org}/workflows/{workflowId}": { + "get": { + "tags": [ + "Workflows" + ], + "summary": "Get workflow status", + "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization.", + "operationId": "getWorkflowStatus", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "workflowId", + "in": "path", + "description": "Workflow identifier", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/artifact-registry/org/{org}/team/{team}/workflows/{workflowId}": { + "get": { + "tags": [ + "Workflows" + ], + "summary": "Get team-scoped workflow status", + "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team.", + "operationId": "getWorkflowStatusForTeam", + "parameters": [ + { + "name": "org", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "workflowId", + "in": "path", + "description": "Workflow identifier", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys": { + "get": { + "tags": [ + "Encryption Keys" + ], + "summary": "List encryption keys in org/team", + "description": "List encryption keys in org/team", + "operationId": "listKeysInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id}": { + "get": { + "tags": [ + "Encryption Keys" + ], + "summary": "List artifacts for encryption key in org/team", + "description": "List artifacts for encryption key in org/team", + "operationId": "listArtifactsForKeyInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "key-id", + "in": "path", + "description": "Key ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "query", + "description": "Artifact type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "default": "MODEL", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Encryption Keys" + ], + "summary": "Revoke encryption key in org/team", + "description": "Revoke encryption key and disassociate from all artifacts in org/team", + "operationId": "deleteKeyFromTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "key-id", + "in": "path", + "description": "Key ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/artifact-registry/org/{org-name}/encryption-keys": { + "get": { + "tags": [ + "Encryption Keys" + ], + "summary": "List encryption keys in org", + "description": "List encryption keys in org", + "operationId": "listKeysInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id}": { + "get": { + "tags": [ + "Encryption Keys" + ], + "summary": "List artifacts for encryption key in org", + "description": "List artifacts for encryption key in org", + "operationId": "listArtifactsForKeyInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "key-id", + "in": "path", + "description": "Key ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "query", + "description": "Artifact type", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "default": "MODEL", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "delete": { + "tags": [ + "Encryption Keys" + ], + "summary": "Revoke encryption key in org", + "description": "Revoke encryption key and disassociate from all artifacts in org", + "operationId": "deleteKeyFromOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "key-id", + "in": "path", + "description": "Key ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/health": { + "get": { + "tags": [ + "Health" + ], + "summary": "Web Service Health Status", + "description": "Used to check the health status of the web service only", + "operationId": "status", + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/health/all": { + "get": { + "tags": [ + "Health" + ], + "summary": "All Service Health Status", + "description": "Used to get health status of all services", + "operationId": "statusDetails", + "parameters": [ + { + "name": "showDetails", + "in": "query", + "description": "boolean value to indicating to show details or not", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "secret", + "in": "query", + "description": "secret value that validates the call in order to show details", + "required": false, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 512, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/health/**": { + "get": { + "tags": [ + "Health" + ], + "summary": "Get Health Information", + "description": "Get Health Information about this service", + "operationId": "getHealth", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthComponent" + } + } + } + } + }, + "x-ssa-scopes": [] + } + }, + "/v1/org/{orgName}/{artifactType}/{artifactName}/purge": { + "delete": { + "tags": [ + "Artifacts" + ], + "summary": "Purge Search DB", + "description": "Purge Search DB for deleted artifacts", + "operationId": "purgeDeletedArtifact", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "purgeArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "purgeArtifact" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/purge": { + "delete": { + "tags": [ + "Artifacts" + ], + "summary": "Purge Search DB", + "description": "Purge Search DB for deleted artifacts", + "operationId": "purgeDeletedArtifact_1", + "parameters": [ + { + "name": "orgName", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "teamName", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactType", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifactName", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "purgeArtifact" + ] + } + ], + "x-ssa-scopes": [ + "kas", + "purgeArtifact" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}": { + "delete": { + "tags": [ + "Artifact Versions" + ], + "summary": "Delete a artifact version in org", + "description": "Delete a artifact version in org", + "operationId": "deleteArtifactVersionInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}": { + "delete": { + "tags": [ + "Artifact Versions" + ], + "summary": "Delete a artifact version in team", + "description": "Delete a artifact version in team", + "operationId": "deleteArtifactVersionInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "artifact-type", + "in": "path", + "description": "Artifact type", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "artifact-name", + "in": "path", + "description": "Artifact name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + }, + { + "name": "version-id", + "in": "path", + "description": "Version ID", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + } + } + ], + "responses": { + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifactVersion" + ] + } + ], + "x-ssa-scopes": [ + "deleteArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key": { + "delete": { + "tags": [ + "Models" + ], + "summary": "Disassociate encryption key from model in team", + "description": "Disassociate encryption key from model in team and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInTeam", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "team-name", + "in": "path", + "description": "Team name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/encryption-key": { + "delete": { + "tags": [ + "Models" + ], + "summary": "Disassociate encryption key from model in org", + "description": "Disassociate encryption key from model in org and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInOrg", + "parameters": [ + { + "name": "org-name", + "in": "path", + "description": "Organization name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + }, + { + "name": "model-name", + "in": "path", + "description": "Model name", + "required": true, + "schema": { + "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0 + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "429": { + "description": "Too many requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + }, + "500": { + "description": "Internal Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "x-ssa-scopes": [ + "kas" + ] + } + } + }, + "components": { + "schemas": { + "AsyncCloneArtifactVersionFilesRequest": { + "type": "object", + "description": "Request to asynchronously clone artifact version files. Artifact type, target artifact name, version, org, and team are provided via URL path parameters.", + "properties": { + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "type": "boolean", + "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'." + } + }, + "required": [ + "sourceArtifact" + ] + }, + "CloneableArtifact": { + "type": "object", + "description": "Cloneable Artifact Parameters object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the artifact" + }, + "org": { + "type": "string", + "description": "Name of the org that the artifact belongs to" + }, + "team": { + "type": "string", + "description": "Name of the team that the artifact belongs to" + }, + "version": { + "type": "string", + "description": "ID of the version or tag" + } + }, + "required": [ + "name", + "org", + "version" + ] + }, + "RequestStatus": { + "type": "object", + "description": "Request status information", + "properties": { + "statusCode": { + "type": "string", + "description": "Describes response status reported by the server.", + "enum": [ + "UNKNOWN", + "SUCCESS", + "UNAUTHORIZED", + "PAYMENT_REQUIRED", + "FORBIDDEN", + "TIMEOUT", + "EXISTS", + "NOT_FOUND", + "INTERNAL_ERROR", + "INVALID_REQUEST", + "INVALID_REQUEST_VERSION", + "INVALID_REQUEST_DATA", + "METHOD_NOT_ALLOWED", + "CONFLICT", + "UNPROCESSABLE_ENTITY", + "TOO_MANY_REQUESTS", + "INSUFFICIENT_STORAGE", + "SERVICE_UNAVAILABLE" + ] + }, + "statusDescription": { + "type": "string", + "description": "Status description" + }, + "requestId": { + "type": "string", + "description": "Request ID" + }, + "serverId": { + "type": "string", + "description": "Server ID" + } + } + }, + "Response": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + } + }, + "WorkflowStatusUrlResponse": { + "type": "object", + "description": "Response containing workflow status URL and ID", + "properties": { + "statusUrl": { + "type": "string", + "description": "URL to check the workflow status" + }, + "workflowId": { + "type": "string", + "description": "ID of the workflow" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + } + }, + "MultipartUploadCompleteRequest": { + "type": "object", + "description": "Request body for completing a multipart upload for artifacts", + "properties": { + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "version": { + "type": "string", + "description": "Artifact version" + }, + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "filePath": { + "type": "string", + "description": "The file path for the artifact upload" + }, + "uploadID": { + "type": "string", + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the entire file" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "sha256", + "uploadID", + "version" + ] + }, + "CloneArtifactVersionFilesRequest": { + "type": "object", + "description": "Request to clone artifact version files", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ] + }, + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "targetArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "type": "boolean", + "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'." + } + }, + "required": [ + "artifactType", + "sourceArtifact", + "targetArtifact" + ] + }, + "AIPlaygroundUpdateRequest": { + "type": "object", + "description": "Request to update an AI Playground config", + "properties": { + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + } + } + }, + "AIPlaygroundResponse": { + "type": "object", + "description": "Request to fetch an AI Playground config", + "properties": { + "artifactName": { + "type": "string", + "description": "Unique name of the model" + }, + "artifactType": { + "type": "string", + "description": "ArtifactTypeEnum of the artifact" + }, + "namespace": { + "type": "string", + "description": "org/team of the model" + }, + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z" + } + } + }, + "ArtifactPublishRequest": { + "type": "object", + "description": "Request to publish an artifact", + "properties": { + "canGuestPull": { + "type": "boolean" + }, + "canPublicList": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean" + }, + "productNames": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "accessType": { + "type": "string", + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ] + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + } + } + } + }, + "ConfiguredLicenseTerm": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type", + "example": "model", + "maxLength": 15, + "pattern": "^[\\s\\S]*$" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseTag" + } + }, + "generatedHtml": { + "type": "string", + "description": "Generated html", + "example": "

GOVERNING HOSTING TERMS: ...

", + "maxLength": 9999, + "pattern": "^[\\s\\S]*$" + } + } + }, + "ConfiguredLicenseTerms": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "hosting": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "description": "License information for the artifact" + }, + "download": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "description": "License information for the artifact" + } + } + }, + "LicenseMetadata": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "licenseId": { + "type": "string", + "description": "License ID", + "example": "NVIDIA proprietary", + "maxLength": 100, + "pattern": "^[\\s\\S]*$" + }, + "licenseVersion": { + "type": "string", + "description": "License version ID", + "example": "v1.0", + "maxLength": 100, + "pattern": "^[\\s\\S]*$" + }, + "needsAcceptance": { + "type": "boolean", + "description": "Indicator if user needs to accept this license" + }, + "governingTerms": { + "type": "string", + "description": "Comprehensive terms and links related to the license", + "example": "

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

", + "maxLength": 1000, + "pattern": "^[\\s\\S]*$" + }, + "configuredLicenseTerms": { + "$ref": "#/components/schemas/ConfiguredLicenseTerms", + "description": "License information for the artifact" + } + } + }, + "LicenseTag": { + "type": "object", + "description": "License tag information for individual term", + "properties": { + "key": { + "type": "string", + "description": "Key identifier for the tag", + "example": "nv-open-model", + "maxLength": 100, + "pattern": "^[\\s\\S]*$" + }, + "category": { + "type": "string", + "description": "Category of the tag", + "example": "terms", + "maxLength": 100, + "pattern": "^[\\s\\S]*$" + }, + "tag": { + "type": "string", + "description": "License tag name", + "example": "Model Agreement", + "maxLength": 100, + "pattern": "^[\\s\\S]*$" + }, + "url": { + "type": "string", + "description": "Link to the hosted license", + "example": "https://www.nvidia.com/.../nvidia-open-model-agreement/", + "maxLength": 1000, + "pattern": "^[\\s\\S]*$" + }, + "label": { + "type": "string", + "description": "License Label", + "example": "NVIDIA Open Model Agreement", + "maxLength": 100, + "pattern": "^[\\s\\S]*$" + } + } + }, + "UpdateReleaseTypeRequest": { + "type": "object", + "description": "Request to update release type of an artifact version", + "properties": { + "version": { + "type": "string", + "description": "Artifact version" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ] + } + }, + "required": [ + "version" + ] + }, + "ArtifactAttribute": { + "type": "object", + "description": "Attribute on the artifact", + "properties": { + "key": { + "type": "string", + "maxLength": 255, + "pattern": "[a-zA-Z0-9]+" + }, + "value": { + "type": "string", + "maxLength": 255 + } + } + }, + "ArtifactUpdateRequest": { + "type": "object", + "description": "Properties for the artifact to update", + "properties": { + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "description": "Description of the artifact" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the artifact", + "maxLength": 255 + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 128, + "minLength": 2 + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the artifact", + "maxLength": 255 + }, + "publisher": { + "type": "string", + "description": "organization that published the artifact", + "maxLength": 255 + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + } + } + } + }, + "CollectionPublishRequest": { + "type": "object", + "description": "Request to publish a collection", + "properties": { + "canGuestPull": { + "type": "boolean" + }, + "canPublicList": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean" + }, + "productNames": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "accessType": { + "type": "string", + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ] + } + } + }, + "MultipartUploadCreateRequest": { + "type": "object", + "description": "Request body for creating a multipart upload for artifacts", + "properties": { + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "version": { + "type": "string", + "description": "Artifact version" + }, + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "filePath": { + "type": "string", + "description": "The file path for the artifact upload" + }, + "size": { + "type": "integer", + "format": "int64", + "description": "total size of the artifact, in bytes" + }, + "customPartSize": { + "type": "integer", + "format": "int64", + "description": "Custom chunk size of the file to be uploaded, in bytes. should be >= 5MB and <= 500MB. default is 500 in MB." + }, + "uploadID": { + "type": "string", + "description": "Upload id of an already initiated Multipart upload" + }, + "partNumberList": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file to be uploaded" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "size", + "version" + ] + }, + "AIPlaygroundCreateRequest": { + "type": "object", + "description": "Request to create a new AI Playground config", + "properties": { + "artifactName": { + "type": "string", + "description": "Unique name of the model" + }, + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + } + }, + "required": [ + "artifactName", + "nvcfFunctionId" + ] + }, + "DeploymentArtifactParameters": { + "type": "object", + "description": "Deployment Artifact Parameters object", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ] + }, + "name": { + "type": "string", + "description": "Unique name of the artifact" + }, + "displayName": { + "type": "string", + "description": "Display name of the artifact" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the artifact belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the artifact belongs to" + }, + "versionId": { + "type": "string", + "description": "ID of the version or tag" + }, + "filePath": { + "type": "string", + "description": "Path to a file in an artifact version" + } + }, + "required": [ + "name", + "orgName" + ] + }, + "DeploymentCpuParameters": { + "type": "object", + "description": "Deployment CPU Parameters object", + "properties": { + "count": { + "type": "integer", + "format": "int64", + "description": "Total count of CPUs" + } + } + }, + "DeploymentGpuParameters": { + "type": "object", + "description": "Deployment GPU Parameters object", + "properties": { + "count": { + "type": "integer", + "format": "int64", + "description": "Total count of GPUs" + }, + "type": { + "type": "string", + "description": "GPU Type" + } + } + }, + "DeploymentMemoryParameters": { + "type": "object", + "description": "Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "type": "integer", + "format": "int64", + "description": "Capacity in GB" + } + } + }, + "DeploymentStorageParameters": { + "type": "object", + "description": "Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "type": "integer", + "format": "int64", + "description": "Capacity in GB" + } + } + }, + "DeploymentUrlCreateRequest": { + "type": "object", + "description": "Request to create a new deployment url", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + }, + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + } + } + }, + "DeploymentParametersCreateRequest": { + "type": "object", + "description": "Request to create a new deployment parameters", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + }, + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + } + } + }, + "AcceptArtifactLicenseRequest": { + "type": "object", + "description": "Request body to accept an org-scoped artifact license.", + "properties": { + "licenseId": { + "type": "string", + "description": "License identifier to accept (must match a licenseId from the artifact's published licenseTerms).", + "example": "NVIDIA Proprietary", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$" + }, + "licenseVersion": { + "type": "string", + "description": "License version to accept (must match licenseVersion for that license on the artifact).", + "example": 1, + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$" + } + }, + "required": [ + "licenseId", + "licenseVersion" + ] + }, + "ArtifactFileChecksumToValidate": { + "type": "object", + "description": "Artifact file checksum object in request to validate artifact file checksum exists or not", + "properties": { + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file" + } + }, + "required": [ + "sha256" + ] + }, + "ArtifactFilesChecksumExistsRequest": { + "type": "object", + "description": "File checksums", + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactFileChecksumToValidate" + } + } + } + }, + "ArtifactCreateRequest": { + "type": "object", + "description": "Properties for the artifact to create", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the artifact", + "maxLength": 250, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$" + }, + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "description": "Description of the artifact" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the artifact", + "maxLength": 255 + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 128, + "minLength": 2 + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the artifact", + "maxLength": 255 + }, + "publisher": { + "type": "string", + "description": "organization that published the artifact", + "maxLength": 255 + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + } + } + }, + "required": [ + "name", + "shortDescription" + ] + }, + "CustomMetric": { + "type": "object", + "description": "Custom metrics", + "properties": { + "key": { + "type": "string", + "maxLength": 255 + }, + "value": { + "type": "string", + "maxLength": 255 + } + } + }, + "CustomMetricGroup": { + "type": "object", + "description": "Defines the group of custom metrics.", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetric" + } + } + } + }, + "RecipeVersionCreateRequest": { + "type": "object", + "description": "Properties for the recipe version to be created", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use version instead. Unique ID of the version", + "maximum": 2147483647, + "minimum": 1 + }, + "versionId": { + "type": "string", + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "pattern": "[^/]+" + }, + "description": { + "type": "string", + "description": "Description of the recipe version" + }, + "accuracyReached": { + "type": "number", + "format": "float", + "description": "Accuracy this recipe reached", + "maximum": 100, + "minimum": 0 + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this recipe trained", + "minimum": 0 + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory", + "maxLength": 255 + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this recipe was trained with", + "minimum": 0 + }, + "memoryFootprint": { + "type": "string", + "description": "Recipe size/memory footprint for inference", + "maxLength": 255 + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "releaseNotes": { + "type": "string", + "description": "Text describing this release" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + } + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + } + } + }, + "Dataset": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the dataset", + "maxLength": 255 + }, + "link": { + "type": "string", + "description": "Link to the dataset", + "maxLength": 255 + }, + "license": { + "type": "string", + "description": "License of the dataset", + "maxLength": 255 + } + } + }, + "RecipeCreateRequest": { + "type": "object", + "description": "Properties for the recipe to create", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the recipe", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$" + }, + "trainingFramework": { + "type": "string", + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ] + }, + "modelFormat": { + "type": "string", + "description": "Format of the model this recipe produces", + "maxLength": 255 + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "description": "Description of the recipe" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the recipe", + "maxLength": 255 + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "advanced": { + "type": "string", + "description": "Text for describing advanced information" + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 64, + "minLength": 2 + }, + "precision": { + "type": "string", + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ] + }, + "application": { + "type": "string", + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ] + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the recipe", + "maxLength": 255 + }, + "publisher": { + "type": "string", + "description": "organization that published the recipe", + "maxLength": 255 + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + } + } + }, + "required": [ + "application", + "modelFormat", + "name", + "precision", + "publicDatasetUsed", + "shortDescription", + "trainingFramework" + ] + }, + "EncryptionKey": { + "type": "object", + "description": "Customer Managed Key shard configuration for the model", + "properties": { + "useExistingKey": { + "type": "boolean", + "description": "Whether to use an existing customer key shard or should a new one be created" + }, + "encryptionKeyId": { + "type": "string", + "description": "ID of the existing customer key shard to use" + }, + "description": { + "type": "string", + "description": "Description for a new customer key shard" + } + }, + "required": [ + "useExistingKey" + ] + }, + "ModelCreateRequest": { + "type": "object", + "description": "Properties for the models to be created", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the model", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$" + }, + "description": { + "type": "string", + "description": "Description of the model" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this model", + "maxLength": 255 + }, + "framework": { + "type": "string", + "description": "Framework used to train this model", + "maxLength": 255 + }, + "modelFormat": { + "type": "string", + "description": "Format of the model", + "maxLength": 255 + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "shortDescription": { + "type": "string", + "description": "Short description of the model", + "maxLength": 255 + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 64, + "minLength": 2 + }, + "precision": { + "type": "string", + "description": "Precision this model was trained with", + "maxLength": 255 + }, + "application": { + "type": "string", + "description": "Application of the model", + "maxLength": 255 + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the repository", + "maxLength": 255 + }, + "publisher": { + "type": "string", + "description": "organization that published the repository", + "maxLength": 255 + }, + "hasPlayground": { + "type": "boolean", + "description": "indicate if the Model has AI Playground configured" + }, + "isPlaygroundEnabled": { + "type": "boolean", + "description": "indicate if AI Playground is enabled in the catalog" + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + } + }, + "encryptionKey": { + "$ref": "#/components/schemas/EncryptionKey", + "description": "Customer Managed Key shard configuration for the model" + } + }, + "required": [ + "framework", + "name", + "precision" + ] + }, + "MetaData": { + "type": "object", + "properties": { + "key": { + "type": "string", + "maxLength": 255 + }, + "value": { + "type": "string", + "maxLength": 255 + } + } + }, + "ModelVersionCreateRequest": { + "type": "object", + "description": "Properties for the model version to be created", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use version instead. Unique ID of the version", + "maximum": 2147483647, + "minimum": 1 + }, + "versionId": { + "type": "string", + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "pattern": "[^/]+" + }, + "description": { + "type": "string", + "description": "Description of the model version", + "maxLength": 255 + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version", + "maxLength": 255 + }, + "accuracyReached": { + "type": "number", + "format": "float", + "description": "Accuracy this model reached", + "maximum": 100, + "minimum": 0 + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this model trained", + "minimum": 0 + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory", + "maxLength": 255 + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this model was trained with", + "minimum": 0 + }, + "memoryFootprint": { + "type": "string", + "description": "Model size/memory footprint for inference", + "maxLength": 255 + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + } + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + } + } + }, + "NvcfContainerConfiguration": { + "type": "object", + "description": "NVCF container configuration parameters", + "properties": { + "inferenceUrl": { + "type": "string", + "description": "Inference url" + }, + "inferencePort": { + "type": "string", + "description": "Inference port" + }, + "healthUri": { + "type": "string", + "description": "Health URI" + }, + "containerImage": { + "type": "string", + "description": "Container Image" + }, + "containerArgs": { + "type": "string", + "description": "Container arguments" + }, + "apiBodyFormat": { + "type": "string", + "description": "API body format" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NvcfContainerModel" + } + }, + "containerEnvironment": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetaData" + } + } + } + }, + "NvcfContainerModel": { + "type": "object", + "description": "Models version object metadata", + "properties": { + "name": { + "type": "string", + "description": "Model name" + }, + "version": { + "type": "string", + "description": "Model version" + }, + "uri": { + "type": "string", + "description": "Model URI" + } + } + }, + "NvcfDeploymentSpecification": { + "type": "object", + "description": "NVCF deployment specification", + "properties": { + "gpuType": { + "type": "string", + "description": "GPU type" + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "GPU count" + }, + "instanceType": { + "type": "string", + "description": "Instance type" + }, + "maxConcurrency": { + "type": "integer", + "format": "int32", + "description": "Maximum concurrency" + } + } + }, + "CollectionCreateRequest": { + "type": "object", + "description": "Properties for the collections to be created", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the collection", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$" + }, + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "description": "Description of the collection" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the collection", + "maxLength": 255 + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 64, + "minLength": 2 + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this collection", + "maxLength": 255 + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the collection" + }, + "publisher": { + "type": "string", + "description": "organization that published the collection", + "maxLength": 255 + }, + "category": { + "type": "string", + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ] + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + } + }, + "required": [ + "category", + "name", + "shortDescription" + ] + }, + "ArtifactFileCommitMetadata": { + "type": "object", + "properties": { + "commitType": { + "type": "string", + "enum": [ + "ADDITION", + "DELETION" + ] + }, + "filePath": { + "type": "string", + "description": "Artifact file path" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file. Required for addition and not required for deletion" + } + }, + "required": [ + "commitType", + "filePath" + ] + }, + "ArtifactFilesCommitRequest": { + "type": "object", + "description": "Artifact files to be committed", + "properties": { + "name": { + "type": "string", + "description": "Artifact name" + }, + "artifactType": { + "type": "string", + "description": "Artifact type - could be either model or resource" + }, + "version": { + "type": "string", + "description": "Artifact version" + }, + "baseVersion": { + "type": "string", + "description": "Artifact version that the commit is based on" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactFileCommitMetadata" + } + } + }, + "required": [ + "artifactType", + "name", + "version" + ] + }, + "MalwareScanNotification": { + "type": "object", + "properties": { + "uuid": { + "type": "string" + }, + "tenant": { + "type": "string" + }, + "contact": { + "type": "string" + }, + "nspect_id": { + "type": "string" + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "NotifyMalwareScanResultResponse": { + "type": "object", + "description": "Notify malware scan result response", + "properties": { + "status": { + "type": "string", + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ] + } + } + }, + "GpuByPciCreateRequest": { + "type": "object", + "description": "GPU by PCI properties", + "properties": { + "pciDeviceId": { + "type": "string", + "description": "PCI Device ID" + }, + "pciVendorId": { + "type": "string", + "description": "PCI Vendor ID" + }, + "pciSubsystemDeviceId": { + "type": "string", + "description": "PCI Subsystem Device ID" + }, + "labelName": { + "type": "string", + "description": "Label name for the GPU" + }, + "displayName": { + "type": "string", + "description": "Display name for the GPU" + }, + "cudaMajorVersion": { + "type": "string", + "description": "CUDA major version" + }, + "cudaMinorVersion": { + "type": "string", + "description": "CUDA minor version" + }, + "memorySizeGb": { + "type": "integer", + "format": "int32", + "description": "Memory size in GB (smallint range)", + "maximum": 32767, + "minimum": 0 + }, + "formFactor": { + "type": "string", + "description": "GPU form factor" + }, + "gpuCounts": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "maximum": 255, + "minimum": 0 + }, + "uniqueItems": true + } + }, + "required": [ + "displayName", + "pciDeviceId" + ] + }, + "CloudServiceProviderCreateRequest": { + "type": "object", + "description": "Request to create a new Cloud Service Provider", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the Cloud Service Provider" + }, + "displayName": { + "type": "string", + "description": "Display name of the Cloud Service Provider" + }, + "description": { + "type": "string", + "description": "Description of the Cloud Service Provider" + }, + "isEnabled": { + "type": "boolean", + "description": "Determines if this Cloud Service Provider is enabled" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name" + ] + }, + "CountableResource": { + "type": "object", + "description": "Countable Resource object", + "properties": { + "minValue": { + "type": "integer", + "format": "int64", + "description": "Minimum value" + }, + "maxValue": { + "type": "integer", + "format": "int64", + "description": "Maximum value" + }, + "defaultValue": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Default value. Please use actual CloudServiceProvider values instead" + } + } + }, + "DeploymentCpuParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment CPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "count" + ] + }, + "DeploymentGpuParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment GPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + }, + "type": { + "$ref": "#/components/schemas/EnumerableResource", + "description": "Enumerable Resource object" + } + }, + "required": [ + "type" + ] + }, + "DeploymentMemoryParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "capacityInGB" + ] + }, + "DeploymentParametersMetaCreateRequest": { + "type": "object", + "description": "Properties for the cloud service provider deployment parameters meta to create", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + }, + "required": [ + "gpu", + "storage" + ] + }, + "DeploymentStorageParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "capacityInGB" + ] + }, + "EnumerableResource": { + "type": "object", + "description": "Enumerable Resource object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumerableResourceItem" + } + }, + "defaultItemName": { + "type": "string", + "description": "Deprecated: Default item name. Please use actual CloudServiceProvider values instead" + } + } + }, + "EnumerableResourceItem": { + "type": "object", + "description": "Enumerable Resource Item object", + "properties": { + "name": { + "type": "string", + "description": "Name" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "logo": { + "type": "string", + "description": "Logo URL" + } + } + }, + "UpdateArtifactVersionConfigs": { + "type": "object", + "description": "Request to publish an artifact", + "properties": { + "policy": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GOV_READY", + "FedRAMP" + ] + } + } + } + }, + "DeploymentParametersUpdateRequest": { + "type": "object", + "description": "Request to update existing deployment parameters", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + }, + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + } + } + }, + "RecipeVersionUpdateRequest": { + "type": "object", + "description": "Version properties to update", + "properties": { + "status": { + "type": "string", + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ] + }, + "description": { + "type": "string", + "description": "Description of the recipe version" + }, + "accuracyReached": { + "type": "number", + "format": "float", + "description": "Accuracy this recipe reached", + "maximum": 100, + "minimum": 0 + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this recipe trained", + "minimum": 0 + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory", + "maxLength": 255 + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this recipe was trained with", + "minimum": 0 + }, + "memoryFootprint": { + "type": "string", + "description": "Recipe size/memory footprint for inference", + "maxLength": 255 + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "releaseNotes": { + "type": "string", + "description": "Text describing this release" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + } + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + } + } + }, + "ModelSimplified": { + "type": "object", + "description": "Model object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the model" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the model belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the model belongs to" + } + }, + "required": [ + "name", + "orgName" + ] + }, + "RecipeUpdateRequest": { + "type": "object", + "description": "Properties for the recipe to update", + "properties": { + "trainingFramework": { + "type": "string", + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ] + }, + "modelFormat": { + "type": "string", + "description": "Format of the model this recipe produces", + "maxLength": 255 + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "description": "Description of the recipe" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the recipe", + "maxLength": 255 + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "advanced": { + "type": "string", + "description": "Text for describing advanced information" + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 64, + "minLength": 2 + }, + "precision": { + "type": "string", + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ] + }, + "application": { + "type": "string", + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ] + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the recipe", + "maxLength": 255 + }, + "publisher": { + "type": "string", + "description": "organization that published the recipe", + "maxLength": 255 + }, + "relatedModels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelSimplified" + } + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + } + } + } + }, + "ModelUpdateRequest": { + "type": "object", + "description": "Properties for the model to update", + "properties": { + "description": { + "type": "string", + "description": "Description of the model" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this model", + "maxLength": 255 + }, + "framework": { + "type": "string", + "description": "Framework used to train this model", + "maxLength": 255 + }, + "modelFormat": { + "type": "string", + "description": "Format of the model", + "maxLength": 255 + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "shortDescription": { + "type": "string", + "description": "Short description of the model", + "maxLength": 255 + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 64, + "minLength": 2 + }, + "precision": { + "type": "string", + "description": "Precision this model was trained with", + "maxLength": 255 + }, + "hasPlayground": { + "type": "boolean", + "description": "indicate if the Model has AI Playground configured" + }, + "isPlaygroundEnabled": { + "type": "boolean", + "description": "indicate if AI Playground is enabled in the catalog" + }, + "application": { + "type": "string", + "description": "Application of the model", + "maxLength": 255 + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the repository", + "maxLength": 255 + }, + "publisher": { + "type": "string", + "description": "organization that published the repository", + "maxLength": 255 + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + } + } + } + }, + "ModelVersionUpdateRequest": { + "type": "object", + "description": "Version properties to update", + "properties": { + "status": { + "type": "string", + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ] + }, + "description": { + "type": "string", + "description": "Description of the model version", + "maxLength": 255 + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version", + "maxLength": 255 + }, + "accuracyReached": { + "type": "number", + "format": "float", + "description": "Accuracy this model reached", + "maximum": 100, + "minimum": 0 + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this model trained", + "minimum": 0 + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory", + "maxLength": 255 + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this model was trained with", + "minimum": 0 + }, + "memoryFootprint": { + "type": "string", + "description": "Model size/memory footprint for inference", + "maxLength": 255 + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + } + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + } + } + }, + "ArtifactVersionUpdateRequest": { + "type": "object", + "description": "Version properties to update", + "properties": { + "status": { + "type": "string", + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ] + }, + "description": { + "type": "string", + "description": "Description of the artifact version", + "maxLength": 255 + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + } + } + }, + "CollectionUpdateRequest": { + "type": "object", + "description": "Properties for the collection to update", + "properties": { + "labels": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "description": "Description of the collection" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the collection", + "maxLength": 255 + }, + "displayName": { + "type": "string", + "description": "Display name", + "maxLength": 64, + "minLength": 2 + }, + "logo": { + "type": "string", + "description": "URL for the logo image", + "maxLength": 255 + }, + "builtBy": { + "type": "string", + "description": "organization that built the collection" + }, + "publisher": { + "type": "string", + "description": "organization that published the collection", + "maxLength": 255 + }, + "category": { + "type": "string", + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ] + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this collection", + "maxLength": 255 + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + } + } + }, + "CollectionOperation": { + "type": "object", + "description": "Collection operation object", + "properties": { + "operation": { + "type": "string", + "description": "Collection operation", + "maxLength": 255 + }, + "path": { + "type": "string", + "description": "Path to a collection item in a scoped format", + "maxLength": 255, + "pattern": "^(/(?!/)([\\w- %\\.(?!\\.)])+)+$" + } + } + }, + "CollectionPatchRequest": { + "type": "object", + "description": "Properties for the collection to patch", + "properties": { + "operations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionOperation", + "maxItems": 100 + }, + "maxItems": 100 + } + } + }, + "GpuByPciUpdateRequest": { + "type": "object", + "description": "GPU by PCI update properties", + "properties": { + "labelName": { + "type": "string", + "description": "Label name for the GPU" + }, + "displayName": { + "type": "string", + "description": "Display name for the GPU" + }, + "cudaMajorVersion": { + "type": "string", + "description": "CUDA major version" + }, + "cudaMinorVersion": { + "type": "string", + "description": "CUDA minor version" + }, + "memorySizeGb": { + "type": "integer", + "format": "int32", + "description": "Memory size in GB (smallint range)", + "maximum": 32767, + "minimum": 0 + }, + "formFactor": { + "type": "string", + "description": "GPU form factor" + }, + "gpuCounts": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "maximum": 255, + "minimum": 0 + }, + "uniqueItems": true + } + } + }, + "CloudServiceProviderUpdateRequest": { + "type": "object", + "description": "Request to update existing Cloud Service Provider", + "properties": { + "displayName": { + "type": "string", + "description": "Display name of the Cloud Service Provider" + }, + "description": { + "type": "string", + "description": "Description of the Cloud Service Provider" + }, + "isEnabled": { + "type": "boolean", + "description": "Determines if this Cloud Service Provider is enabled" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + } + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "DeploymentParametersMetaUpdateRequest": { + "type": "object", + "description": "Properties for the cloud service provider deployment parameters meta to create", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + } + }, + "HealthComponent": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "status": { + "type": "string" + } + } + }, + "MultipartUploadAbortRequest": { + "type": "object", + "description": "Request body for aborting a multipart upload for artifacts", + "properties": { + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "version": { + "type": "string", + "description": "Artifact version" + }, + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "filePath": { + "type": "string", + "description": "The file path for the artifact upload" + }, + "uploadID": { + "type": "string", + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "uploadID", + "version" + ] + } + }, + "securitySchemes": { + "authn": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "authn.nvidia.com/token", + "scopes": {} + } + } + }, + "ssa": { + "type": "oauth2", + "description": "A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725", + "flows": { + "clientCredentials": { + "tokenUrl": "https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token", + "scopes": { + "kas": "{scope}", + "getPublicFlags": "{scope}", + "publishArtifact": "{scope}", + "undoPublishArtifact": "{scope}", + "helmProxy": "{scope}", + "undoPublishCollection": "{scope}", + "publishCollection": "{scope}", + "recreateArtifactVersionZip": "{scope}", + "cloneArtifact": "{scope}" + } + } + } + } + } + } +} diff --git a/provider-dev/downloaded/cleaned/nvcf_openapi.json b/provider-dev/downloaded/cleaned/nvcf_openapi.json new file mode 100644 index 0000000..8947bd6 --- /dev/null +++ b/provider-dev/downloaded/cleaned/nvcf_openapi.json @@ -0,0 +1,5757 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Cloud Functions", + "termsOfService": "https://www.nvidia.com/en-us/legal_info", + "contact": { + "name": "NVIDIA", + "url": "https://www.nvidia.com/" + }, + "version": "2.245.1" + }, + "servers": [ + { + "url": "https://api.nvcf.nvidia.com", + "description": "Generated server url" + } + ], + "tags": [ + { + "name": "Function Invocation", + "description": "Defines function pass-through invocation endpoints where the invocation payload is passed as-is without any wrapper. All the endpoints defined in this API require a bearer token with 'invoke_function' scope in the HTTP Authorization header. " + }, + { + "name": "Asset Management", + "description": "Deprecated. Users can provide assets directly as part of the input during function invocation. There is no need to upload assets and then include the asset-id as part of input to the function invocation. Defines Asset Management endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token in the HTTP Authorization header with 'invoke_function' scope." + }, + { + "name": "User Ratelimit Management", + "description": "Defines User Ratelimit Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_function' scope in the HTTP Authorization header. " + }, + { + "name": "Queue Details", + "description": "Defines Queue Details endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token with 'queue_details' scope in the HTTP Authorization header. " + }, + { + "name": "Function Sharing", + "description": "Defines endpoints related to authorizing other accounts to invoke a function for Account Admins. All the endpoints defined in this API require a bearer token with 'authorize_clients' scope in HTTP Authorization header." + }, + { + "name": "Telemetry Management", + "description": "Defines Telemetry Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token or an api-key with appropriate scope in the HTTP Authorization header. " + }, + { + "name": "Cluster Groups and GPUs", + "description": "Deprecated. Please use corresponding ICMS endpoints directly. These endpoints will be removed. Defines endpoints to list Cluster Groups and GPUs for Account Admins. All tne endpoints defined in this API require a bearer token with 'list_cluster_groups' scope in the HTTP Authorization header." + }, + { + "name": "Function Deployment", + "description": "Defines Function Deployment endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'deploy_function' scope in the HTTP Authorization header." + }, + { + "name": "User Secret Management", + "description": "Defines User Secret Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_secrets' scope in the HTTP Authorization header. " + }, + { + "name": "Function Management", + "description": "Defines Function Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with appropriate scope in the HTTP Authorization header. The scope is specified in the documentation for each of the endpoints. " + }, + { + "name": "Function Invocation Assertion Token", + "description": "Defines endpoints that issue an assertion token from Notary Service to be used for function invocation later " + }, + { + "name": "Registry Credential Management", + "description": "Defines Registry Credential Management endpoints. These endpoints can only be invoked by Account Admins and require a bearer token in HTTP Authorization header with 'manage_registry_credentials' scope. " + }, + { + "name": "nspect_id", + "description": "NSPECT-F7NT-ONT3" + } + ], + "paths": { + "/v2/nvcf/secrets/telemetries/{telemetryId}": { + "put": { + "tags": [ + "User Secret Management" + ], + "summary": "Update secret for a specific Telemetry Id", + "description": "Updates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ", + "operationId": "updateTelemetrySecret", + "parameters": [ + { + "name": "telemetryId", + "in": "path", + "description": "NVIDIA Cloud Account Id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateTelemetrySecretRequest" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content" + } + } + } + }, + "/v2/nvcf/secrets/functions/{functionId}/versions/{versionId}": { + "put": { + "tags": [ + "User Secret Management" + ], + "summary": "Update user secrets for a function version", + "description": "Updates secrets for the specified function version. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ", + "operationId": "updateFunctionSecrets", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function Id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "versionId", + "in": "path", + "description": "Function Version Id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateFunctionSecretsRequest" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content" + } + } + } + }, + "/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId}": { + "put": { + "tags": [ + "User Ratelimit Management" + ], + "summary": "Update user ratelimit for a function version", + "description": "Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{versionId} to update ratelimit and other mutable function fields. This legacy endpoint only updates ratelimit for the specified function version and requires a bearer token with 'update_function' scope in the HTTP Authorization header. ", + "operationId": "updateRateLimit", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "versionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateFunctionRequest" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content" + } + }, + "deprecated": true + }, + "delete": { + "tags": [ + "User Ratelimit Management" + ], + "summary": "Delete user ratelimit for a function version", + "description": "Delete ratelimit for the specified function version. This endpoint requires a bearer token with 'update_function' scope in the HTTP Authorization header. ", + "operationId": "deleteRateLimit", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "versionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "204": { + "description": "No Content" + } + } + } + }, + "/v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId}": { + "put": { + "tags": [ + "Function Management" + ], + "summary": "Update Function Metadata", + "description": "Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update tags, rate limit, model-specific LLM config, and other mutable function fields. This legacy endpoint updates the same mutable function version fields for the authenticated NVIDIA Cloud Account and requires a bearer token with 'update_function' scope in the HTTP Authorization header. ", + "operationId": "updateFunctionMetadata", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateFunctionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FunctionResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/nvcf/functions/{functionId}/versions/{functionVersionId}": { + "get": { + "tags": [ + "Function Management" + ], + "summary": "Get Function Version Details", + "description": "Retrieves detailed information of the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ", + "operationId": "getFunction", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Version id ", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "includeSecrets", + "in": "query", + "description": "Query param 'includeSecrets' indicates whether to include secret names\n for the function in the response.\n", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FunctionResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Function Management" + ], + "summary": "Updates mutable fields of the specified function version.", + "description": "Updates mutable fields of the specified function version within the authenticated NVIDIA Cloud Account. The current request payload supports tags updates, rate limit updates, and model-specific LLM config updates. Requires a bearer token with 'update_function' scope in the HTTP Authorization header. ", + "operationId": "updateFunction", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateFunctionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FunctionResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Function Management" + ], + "summary": "Delete Function", + "description": "Deletes the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'delete_function' scope in the HTTP Authorization header. If the function version is public, then Account Admin cannot delete the function. ", + "operationId": "deleteFunction", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "204": { + "description": "No Content" + } + } + } + }, + "/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}": { + "get": { + "tags": [ + "Function Deployment" + ], + "summary": "Get Function Deployment Details", + "description": "Allows Account Admins to retrieve the deployment details of the specified function version. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ", + "operationId": "getFunctionDeployment", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Function Deployment" + ], + "summary": "Update Function Deployment", + "description": " Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ", + "operationId": "updateFunctionDeployment", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateFunctionDeploymentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentResponse" + } + } + } + } + }, + "deprecated": true + }, + "post": { + "tags": [ + "Function Deployment" + ], + "summary": "Deploy Function", + "description": "Initiates deployment for the specified function version. Upon invocation of this endpoint, the function's status transitions to 'DEPLOYING'. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ", + "operationId": "createFunctionDeployment", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FunctionDeploymentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Function Deployment" + ], + "summary": "Delete Function Deployment", + "description": "Deletes the deployment associated with the specified function. Upon deletion, any active instances will be terminated, and the function's status will transition to 'INACTIVE'. To undeploy a function version gracefully, specify 'graceful=true' query parameter, allowing current tasks to complete before terminating the instances. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ", + "operationId": "deleteFunctionDeployment", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "graceful", + "in": "query", + "description": "Query param to deactivate function for graceful shutdown", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FunctionResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/tokens/functions": { + "post": { + "tags": [ + "Function Invocation Assertion Token" + ], + "summary": "Issue Function Invocation Token", + "description": "Issues an assertion token from Notary Service for specified functionIds and/or functionVersionIds ", + "operationId": "issueMultiFunctionsInvocationToken", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultiFunctionsInvocationTokenRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Invocation assertion token is issued", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + }, + "403": { + "description": "Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + }, + "429": { + "description": "Client is doing too many requests per second and should slow down request rate.", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId}": { + "post": { + "tags": [ + "Function Invocation Assertion Token" + ], + "summary": "Issue Function Invocation Token", + "description": "Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ", + "operationId": "issueInvocationToken", + "parameters": [ + { + "name": "functionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Invocation assertion token is issued", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + }, + "403": { + "description": "Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + }, + "429": { + "description": "Client is doing too many requests per second and should slow down request rate.", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/tokens/functions/{functionId}": { + "post": { + "tags": [ + "Function Invocation Assertion Token" + ], + "summary": "Issue Function Invocation Token", + "description": "Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ", + "operationId": "issueInvocationToken_1", + "parameters": [ + { + "name": "functionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Invocation assertion token is issued", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + }, + "403": { + "description": "Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + }, + "429": { + "description": "Client is doing too many requests per second and should slow down request rate.", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/InvocationTokenResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/telemetries": { + "get": { + "tags": [ + "Telemetry Management" + ], + "summary": "List Telemetries", + "description": "Retrieves telemetry configurations for a specific NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ", + "operationId": "getTelemetriesByAccount", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListTelemetryResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Telemetry Management" + ], + "summary": "Create Telemetry", + "description": "Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ", + "operationId": "createTelemetry", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TelemetryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TelemetryResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/registry-credentials": { + "get": { + "tags": [ + "Registry Credential Management" + ], + "summary": "List Registry Credentials", + "description": "Lists all the registry credentials associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ", + "operationId": "listRegistryCredentialDetails", + "parameters": [ + { + "name": "artifactType", + "in": "query", + "description": "Filters registry credentials using the specified 'artifactType' query param.\n", + "required": false, + "schema": { + "type": "array", + "default": [ + "CONTAINER", + "HELM", + "MODEL", + "RESOURCE" + ], + "items": { + "type": "string", + "format": "UTF-8", + "enum": [ + "CONTAINER", + "HELM", + "MODEL", + "RESOURCE" + ], + "maxLength": 262144, + "minLength": 0 + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + } + }, + { + "name": "provisionedBy", + "in": "query", + "description": "Filters registry credentials using the specified 'provisionedBy' query param.\n", + "required": false, + "schema": { + "type": "array", + "default": [ + "SYSTEM", + "USER" + ], + "items": { + "type": "string", + "format": "UTF-8", + "enum": [ + "SYSTEM", + "USER" + ], + "maxLength": 262144, + "minLength": 0 + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListRegistryCredentialDetailsResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Registry Credential Management" + ], + "summary": "Add new registry credential to the account", + "description": "Adds a new registry credential to the account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ", + "operationId": "addRegistryCredential", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddRegistryCredentialRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegistryCredentialDetailsResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/pexec/functions/{functionId}": { + "post": { + "tags": [ + "Function Invocation" + ], + "summary": "Call Function", + "description": "Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ", + "operationId": "invokeFunction", + "parameters": [ + { + "name": "NVCF-INPUT-ASSET-REFERENCES", + "in": "header", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + }, + "maxItems": 2147483647, + "minItems": 0 + } + }, + { + "name": "NVCF-POLL-SECONDS", + "in": "header", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "maximum": 300, + "minimum": 0 + } + }, + { + "name": "functionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Invocation is fulfilled", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "Result is pending. Client should poll using the requestId.", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "302": { + "description": "Client should use the URL specified in the 'Location' response header to fetch\n large result.\n", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + }, + "Location": { + "description": "URL to get the result", + "style": "simple", + "schema": { + "type": "string" + } + } + } + }, + "402": { + "description": "Cloud credits expired for public functions. Please contact NVIDIA representatives.", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "403": { + "description": "Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "429": { + "description": "Client is doing too many requests per second and should slow down request rate.", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/nvcf/pexec/functions/{functionId}/versions/{versionId}": { + "post": { + "tags": [ + "Function Invocation" + ], + "summary": "Call Function", + "description": "Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ", + "operationId": "invokeFunction_1", + "parameters": [ + { + "name": "NVCF-INPUT-ASSET-REFERENCES", + "in": "header", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0 + }, + "maxItems": 2147483647, + "minItems": 0 + } + }, + { + "name": "NVCF-POLL-SECONDS", + "in": "header", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "maximum": 300, + "minimum": 0 + } + }, + { + "name": "functionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "versionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Invocation is fulfilled", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "Result is pending. Client should poll using the requestId.", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "302": { + "description": "Client should use the URL specified in the 'Location' response header to fetch\n large result.\n", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + }, + "Location": { + "description": "URL to get the result", + "style": "simple", + "schema": { + "type": "string" + } + } + } + }, + "402": { + "description": "Cloud credits expired for public functions. Please contact NVIDIA representatives.", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "403": { + "description": "Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "429": { + "description": "Client is doing too many requests per second and should slow down request rate.", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/nvcf/functions": { + "get": { + "tags": [ + "Function Management" + ], + "summary": "List Functions", + "description": "Lists all the functions associated with the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scope in the HTTP Authorization header.", + "operationId": "getFunctions", + "parameters": [ + { + "name": "visibility", + "in": "query", + "description": "Query param 'visibility' indicates the kind of functions to be included\n in the response.\n", + "required": false, + "schema": { + "type": "array", + "default": [ + "authorized", + "private", + "public" + ], + "items": { + "type": "string", + "format": "UTF-8", + "enum": [ + "authorized", + "private", + "public" + ], + "maxLength": 262144, + "minLength": 0 + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListFunctionsResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Function Management" + ], + "summary": "Create Function", + "description": "Creates a new function within the authenticated NVIDIA Cloud Account. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. ", + "operationId": "createFunction", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFunctionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFunctionResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/functions/{functionId}/versions": { + "get": { + "tags": [ + "Function Management" + ], + "summary": "List Function Versions", + "description": "Lists details of all the versions of the specified function in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ", + "operationId": "getFunctions_1", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListFunctionsResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Function Management" + ], + "summary": "Create Function Version", + "description": "Creates a version of the specified function within the authenticated NVIDIA Cloud Account. If the function is public, then Account Admin cannot create a version. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. ", + "operationId": "createFunction_1", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFunctionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFunctionResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/authorizations/functions/{functionId}": { + "get": { + "tags": [ + "Function Sharing" + ], + "summary": "List Account Authorizations For Function", + "description": "Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "getAuthorizedPartiesForAllVersions", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListAuthorizedPartiesResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Function Sharing" + ], + "summary": "Authorize Accounts To Invoke Function", + "description": "Authorizes additional NVIDIA Cloud Accounts to invoke any version of the specified function. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "createAuthorizedPartiesForAllVersions", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Function Sharing" + ], + "summary": "Delete All Authorizations At Function Level", + "description": "Deletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "deleteAuthorizedPartiesForAllVersions", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}": { + "get": { + "tags": [ + "Function Sharing" + ], + "summary": "Get Account Authorizations For Function Version", + "description": "Gets NVIDIA Cloud Account IDs that are authorized to invoke specified function version. Response includes authorized accounts that were added specifically at the version level and the authorized accounts that were inherited from function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "getAuthorizedPartiesForSpecificVersion", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Function Sharing" + ], + "summary": "Authorize Accounts To Invoke/List Function Version", + "description": "Authorizes additional NVIDIA Cloud Accounts to invoke a specific function version. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Note that the response does NOT include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "createAuthorizedPartiesForSpecificVersion", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Function Sharing" + ], + "summary": "Delete All Authorizations At Version Level", + "description": "Deletes all the authorized accounts that are directly associated with the specified function version. Authorized parties that are inherited by the function version are not deleted. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "deleteAuthorizedPartiesForSpecificVersion", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/assets": { + "get": { + "tags": [ + "Asset Management" + ], + "summary": "List Assets", + "description": "List assets owned by the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ", + "operationId": "getAssets", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListAssetsResponse" + } + } + } + } + }, + "deprecated": true + }, + "post": { + "tags": [ + "Asset Management" + ], + "summary": "Create Asset", + "description": "Creates a unique id representing an asset and a pre-signed URL to upload the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ", + "operationId": "createAsset", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAssetRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAssetResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/nvcf/registry-credentials/{registryCredentialId}": { + "get": { + "tags": [ + "Registry Credential Management" + ], + "summary": "Get Registry Credential Details", + "description": "Retrieves detailed information of the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ", + "operationId": "getRegistryCredentialDetails", + "parameters": [ + { + "name": "registryCredentialId", + "in": "path", + "description": "Registry Credential id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegistryCredentialDetailsResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Registry Credential Management" + ], + "summary": "Delete Registry Credential", + "description": "Deletes the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ", + "operationId": "deleteRegistryCredential", + "parameters": [ + { + "name": "registryCredentialId", + "in": "path", + "description": "Registry Credential id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "204": { + "description": "No Content" + } + } + }, + "patch": { + "tags": [ + "Registry Credential Management" + ], + "summary": "Update registry credential", + "description": "Updates the secret and/or the artifact types associated with the specified registry credential. Artifact types specified in the request body are added to the set of artifact types that already exist for the specified registry credential. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ", + "operationId": "updateRegistryCredential", + "parameters": [ + { + "name": "registryCredentialId", + "in": "path", + "description": "Registry Credential id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRegistryCredentialRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegistryCredentialDetailsResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId}": { + "patch": { + "tags": [ + "Function Deployment" + ], + "summary": "Update the specified GPU specification under the specified deployment", + "description": " Updates the GPU specification of the specified function version's deployment. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ", + "operationId": "updateGpuSpecification", + "parameters": [ + { + "name": "deploymentId", + "in": "path", + "description": "Deployment id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "gpuSpecId", + "in": "path", + "description": "GPU Specification id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateGpuSpecificationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateGpuSpecificationResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove": { + "patch": { + "tags": [ + "Function Sharing" + ], + "summary": "Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function Version", + "description": "Removes the specified NVIDIA Cloud Account from the set of authorized accounts that are directly associated with specified function version. If the specified function version does not have any of its own(not inherited) authorized accounts, it results in a response with status 404. Also, if the specified authorized account is not in the set of existing authorized parties that are directly associated with the specified function version, it results in a response with status code 404. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "removeAuthorizedPartyForSpecificVersion", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchAuthorizedPartyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add": { + "patch": { + "tags": [ + "Function Sharing" + ], + "summary": "Authorize Another Account To Invoke, List, and Check Queue Details of Function Version", + "description": "Adds the specified NVIDIA Cloud Account to the set of authorized accounts that can invoke the specified function version. If the specified function version does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing authorized accounts that are directly associated with the function version, it results in a response wit status code 409. If a function is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "addAuthorizedPartyForSpecificVersion", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "functionVersionId", + "in": "path", + "description": "Function version", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchAuthorizedPartyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/authorizations/functions/{functionId}/remove": { + "patch": { + "tags": [ + "Function Sharing" + ], + "summary": "Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function", + "description": "Removes the specified NVIDIA Cloud Account from the set of authorized accounts that can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized parties, it results in a response with status 404. Also, if the specified account is not in the existing set of inheritable authorized accounts, it results in a response with status 404. If the specified function is public, then Account Admin cannot perform this operation. Note that response only includes the remaining authorized accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "removeAuthorizedPartyForAllVersions", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchAuthorizedPartyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/authorizations/functions/{functionId}/add": { + "patch": { + "tags": [ + "Function Sharing" + ], + "summary": "Authorize Another Account To Invoke, List, and Check Queue Details of Function", + "description": "Adds the specified NVIDIA Cloud Account to the set of authorized accounts that are can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing inheritable authorized accounts, it results in a response with status code 409. If a function is public, then Account Admin cannot perform this operation. Note that response only includes authz accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "addAuthorizedPartyForAllVersions", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchAuthorizedPartyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizedPartiesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/telemetries/{telemetryId}": { + "get": { + "tags": [ + "Telemetry Management" + ], + "summary": "Get Telemetry Details", + "description": "Retrieves the details of a specific telemetry configuration by its ID. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ", + "operationId": "getTelemetry", + "parameters": [ + { + "name": "telemetryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TelemetryResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Telemetry Management" + ], + "summary": "Delete Telemetry", + "description": "Deletes a specific telemetry configuration for a NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. If there any functions that are dependent on the Telemetry that is being deleted, then response with 400 status code will be returned. ", + "operationId": "deleteTelemetry", + "parameters": [ + { + "name": "telemetryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Cannot be deleted till Functions depend on it" + } + } + } + }, + "/v2/nvcf/recognized-registries": { + "get": { + "tags": [ + "Registry Credential Management" + ], + "summary": "List Recognized Registries", + "description": "Lists all the registries that are recognized by NVCF. Only when a registry is recognized by NVCF that the users can add its credential to their account and then use it to create functions. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ", + "operationId": "getRecognizedRegistries", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecognizedRegistriesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/queues/{requestId}/position": { + "get": { + "tags": [ + "Queue Details" + ], + "summary": "Queue Position", + "description": "Using the specified function invocation request id, returns the estimated position of the corresponding message up to 1000 in the queue. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ", + "operationId": "getPositionInQueue", + "parameters": [ + { + "name": "requestId", + "in": "path", + "description": "Function invocation request id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetPositionInQueueResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/queues/functions/{functionId}/versions/{versionId}": { + "get": { + "tags": [ + "Queue Details" + ], + "summary": "Queue Details", + "description": "Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ", + "operationId": "getQueuesDetails", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + }, + { + "name": "versionId", + "in": "path", + "description": "Function version id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetQueuesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/queues/functions/{functionId}": { + "get": { + "tags": [ + "Queue Details" + ], + "summary": "Queue Details", + "description": "Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ", + "operationId": "getQueuesDetails_1", + "parameters": [ + { + "name": "functionId", + "in": "path", + "description": "Function id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetQueuesResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/pexec/status/{requestId}": { + "get": { + "tags": [ + "Function Invocation" + ], + "summary": "Poll For Result Using Function Invocation Request", + "description": "Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function and stream results without polling. Retrieves the status of an in-progress or pending request using its unique invocation request ID. If the result is available, it will be included in the response, marking the request as fulfilled. Conversely, if the result is not yet available, the request is deemed pending. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ", + "operationId": "getFunctionInvocationResult", + "parameters": [ + { + "name": "requestId", + "in": "path", + "description": "Invocation Request Id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "Invocation is fulfilled", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "Result is pending. Client should poll using the requestId.", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "302": { + "description": "Client should use the URL specified in the 'Location' response header to fetch\n large result.\n", + "headers": { + "NVCF-REQID": { + "description": "Invocation Request Id", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-PERCENT-COMPLETE": { + "description": "Percentage complete", + "style": "simple", + "schema": { + "type": "string" + } + }, + "NVCF-STATUS": { + "description": "Invocation status", + "style": "simple", + "schema": { + "type": "string" + } + }, + "Location": { + "description": "URL to get the result", + "style": "simple", + "schema": { + "type": "string" + } + } + } + }, + "402": { + "description": "Cloud credits expired for public functions. Please contact NVIDIA representatives.", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + }, + "403": { + "description": "Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n", + "content": { + "*/*": { + "schema": { + "type": "object", + "properties": { + "short": { + "type": "integer", + "format": "int32" + }, + "char": { + "type": "string" + }, + "int": { + "type": "integer", + "format": "int32" + }, + "long": { + "type": "integer", + "format": "int64" + }, + "float": { + "type": "number", + "format": "float" + }, + "double": { + "type": "number", + "format": "double" + }, + "direct": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + } + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/nvcf/functions/ids": { + "get": { + "tags": [ + "Function Management" + ], + "summary": "List Function Ids", + "description": "Lists ids of all the functions in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ", + "operationId": "getFunctionIds", + "parameters": [ + { + "name": "visibility", + "in": "query", + "description": "Query param 'visibility' indicates the kind of functions to be included\n in the response.\n", + "required": false, + "schema": { + "type": "array", + "default": [ + "authorized", + "private", + "public" + ], + "items": { + "type": "string", + "format": "UTF-8", + "enum": [ + "authorized", + "private", + "public" + ], + "maxLength": 262144, + "minLength": 0 + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListFunctionIdsResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/deployments/{deploymentId}": { + "get": { + "tags": [ + "Function Deployment" + ], + "summary": "Get Function Deployment Details", + "description": "Allows Account Admins to retrieve the deployment details of the specified deployment id. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ", + "operationId": "getFunctionDeployment_1", + "parameters": [ + { + "name": "deploymentId", + "in": "path", + "description": "Deployment id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentResponse" + } + } + } + } + } + } + }, + "/v2/nvcf/clusterGroups": { + "get": { + "tags": [ + "Cluster Groups and GPUs" + ], + "summary": "List Cluster Groups", + "description": "Lists Cluster Groups for the current account. The response includes cluster groups defined specifically in the current account and publicly available cluster groups such as GFN, OCI, etc. Requires a bearer token with 'list_cluster_groups' scope in HTTP Authorization header. ", + "operationId": "getClusterGroups", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClusterGroupsResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v2/nvcf/assets/{assetId}": { + "get": { + "tags": [ + "Asset Management" + ], + "summary": "Show Asset Details", + "description": "Returns details for the specified asset-id belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ", + "operationId": "getAsset", + "parameters": [ + { + "name": "assetId", + "in": "path", + "description": "Asset id", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetResponse" + } + } + } + } + }, + "deprecated": true + }, + "delete": { + "tags": [ + "Asset Management" + ], + "summary": "Delete Asset", + "description": "Deletes asset belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ", + "operationId": "deleteAsset", + "parameters": [ + { + "name": "assetId", + "in": "path", + "description": "Id of the asset to be deleted", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36 + } + } + ], + "responses": { + "204": { + "description": "No Content" + } + }, + "deprecated": true + } + }, + "/health": { + "get": { + "tags": [ + "health-controller" + ], + "operationId": "getHealth", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/HealthComponent" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "JsonNode": {}, + "SecretDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing secret name/value pair", + "properties": { + "name": { + "type": "string", + "format": "UTF-8", + "description": "Secret name", + "maxLength": 48, + "minLength": 1, + "pattern": "^[a-z0-9A-Z][a-z0-9A-Z\\_\\.\\-]*$" + }, + "value": { + "$ref": "#/components/schemas/JsonNode", + "description": "Secret value must be 1 - 32768 chars long" + } + }, + "required": [ + "name" + ] + }, + "UpdateTelemetrySecretRequest": { + "type": "object", + "description": "Request payload to update secret", + "properties": { + "secret": { + "$ref": "#/components/schemas/SecretDto", + "description": "Telemetry secret" + } + }, + "required": [ + "secret" + ] + }, + "UpdateFunctionSecretsRequest": { + "type": "object", + "description": "Request payload to update secrets", + "properties": { + "secrets": { + "type": "array", + "description": "Secrets", + "items": { + "$ref": "#/components/schemas/SecretDto" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + } + }, + "required": [ + "secrets" + ] + }, + "LlmConfigUpdateDto": { + "type": "object", + "description": "Partial update payload for LLM-specific model configuration fields.", + "properties": { + "tokenRateLimit": { + "type": "string", + "format": "UTF-8", + "description": "Updated token-level rate limit for the model. When omitted, the existing value is preserved.", + "maxLength": 262144, + "minLength": 0 + }, + "routingMethod": { + "type": "string", + "format": "UTF-8", + "description": "Updated routing method for the model. When omitted, the existing value is preserved.", + "maxLength": 262144, + "minLength": 0 + } + } + }, + "ModelUpdateDto": { + "type": "object", + "description": "Model-specific update request.", + "properties": { + "modelName": { + "type": "string", + "format": "UTF-8", + "description": "Name of the model to update.", + "maxLength": 262144, + "minLength": 1 + }, + "llmConfig": { + "$ref": "#/components/schemas/LlmConfigUpdateDto", + "description": "Optional updates to this model's LLM config fields." + } + }, + "required": [ + "modelName" + ] + }, + "RateLimitDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing Rate limit config", + "properties": { + "rateLimit": { + "type": "string", + "format": "UTF-8", + "description": "Rate", + "maxLength": 262144, + "minLength": 0, + "pattern": "^(?!.*-([SMHD]).*-\\1)[1-9]\\d*-[SMHD](,\\s*[1-9]\\d*-[SMHD])*$" + }, + "exemptedNcaIds": { + "type": "array", + "description": "NCA ID Exemptions", + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "uniqueItems": true + }, + "perNcaIdRate": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Per NCA ID Rate" + }, + "syncCheck": { + "type": "boolean", + "description": "Sync check. Defaults to false" + }, + "perUserRate": { + "type": "string", + "format": "UTF-8", + "description": "Per-user rate, intended for traffic authenticated with an invocation delegation token (InvocationToken). When set, this single rate is enforced individually against every unique caller identity, in addition to the NCA-tier limit.", + "maxLength": 262144, + "minLength": 0, + "pattern": "^(?!.*-([SMHD]).*-\\1)[1-9]\\d*-[SMHD](,\\s*[1-9]\\d*-[SMHD])*$" + } + } + }, + "UpdateFunctionRequest": { + "type": "object", + "description": "Request payload to update mutable function configuration fields.", + "properties": { + "tags": { + "type": "array", + "description": "Optional set of function tags. When omitted, the existing value is preserved.", + "items": { + "type": "string", + "pattern": "[a-zA-Z0-9\\-_:=]+" + }, + "maxItems": 64, + "minItems": 0, + "uniqueItems": true + }, + "rateLimit": { + "$ref": "#/components/schemas/RateLimitDto", + "description": "Optional full replacement for the function rate limit configuration. When omitted, the existing value is preserved. Use the delete rate-limit endpoint to clear it." + }, + "modelUpdates": { + "type": "array", + "description": "Optional list of model-specific updates.", + "items": { + "$ref": "#/components/schemas/ModelUpdateDto" + }, + "maxItems": 2147483647, + "minItems": 0 + } + } + }, + "ArtifactDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing an artifact", + "properties": { + "name": { + "type": "string", + "format": "UTF-8", + "description": "Artifact name", + "maxLength": 262144, + "minLength": 0 + }, + "version": { + "type": "string", + "format": "UTF-8", + "description": "Artifact version", + "maxLength": 262144, + "minLength": 0 + }, + "uri": { + "type": "string", + "format": "uri", + "description": "Artifact URI" + } + }, + "required": [ + "name", + "uri", + "version" + ] + }, + "ContainerEnvironmentEntryDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing a container environment entry", + "properties": { + "key": { + "type": "string", + "format": "UTF-8", + "description": "Container environment key", + "maxLength": 262144, + "minLength": 0 + }, + "value": { + "type": "string", + "format": "UTF-8", + "description": "Container environment value", + "maxLength": 262144, + "minLength": 0 + } + }, + "required": [ + "key", + "value" + ] + }, + "FunctionDto": { + "type": "object", + "description": "Data Transfer Object (DTO) representing a function", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Unique function id", + "maxLength": 36, + "minLength": 36 + }, + "ncaId": { + "type": "string", + "format": "UTF-8", + "description": "NVIDIA Cloud Account Id", + "maxLength": 262144, + "minLength": 0 + }, + "versionId": { + "type": "string", + "format": "uuid", + "description": "Unique function version id", + "maxLength": 36, + "minLength": 36 + }, + "name": { + "type": "string", + "format": "UTF-8", + "description": "Function name", + "maxLength": 262144, + "minLength": 0 + }, + "status": { + "type": "string", + "format": "UTF-8", + "description": "Function status", + "enum": [ + "ACTIVE", + "DEPLOYING", + "ERROR", + "INACTIVE", + "DELETED", + "DEGRADED", + "DEGRADING" + ], + "maxLength": 262144, + "minLength": 0 + }, + "inferenceUrl": { + "type": "string", + "format": "uri", + "description": "Entrypoint for invoking the container to process requests" + }, + "ownedByDifferentAccount": { + "type": "boolean", + "description": "Indicates whether the function is owned by another account. If the account\n that is being used to lookup functions happens to be authorized to invoke/list\n this function which is owned by a different account, then this field is set\n to true and ncaId will contain the id of the account that owns the function.\n Otherwise, this field is not set as it defaults to false.\n" + }, + "inferencePort": { + "type": "integer", + "format": "int32", + "description": "Optional port number where the inference listener is running - defaults to 8000 for Triton", + "maximum": 2147483647, + "minimum": -2147483648 + }, + "containerArgs": { + "type": "string", + "format": "UTF-8", + "description": "Args used to launch the container", + "maxLength": 262144, + "minLength": 0 + }, + "containerEnvironment": { + "type": "array", + "description": "Environment settings used to launch the container", + "items": { + "$ref": "#/components/schemas/ContainerEnvironmentEntryDto" + }, + "maxItems": 2147483647, + "minItems": 0 + }, + "models": { + "type": "array", + "description": "Optional list of models", + "items": { + "$ref": "#/components/schemas/FunctionModelDto" + }, + "maxItems": 2147483647, + "minItems": 0 + }, + "containerImage": { + "type": "string", + "format": "uri", + "description": "Optional custom container" + }, + "apiBodyFormat": { + "type": "string", + "format": "UTF-8", + "description": "Invocation request body format", + "enum": [ + "PREDICT_V2", + "CUSTOM" + ], + "maxLength": 262144, + "minLength": 0 + }, + "helmChart": { + "type": "string", + "format": "uri", + "description": "Optional Helm Chart" + }, + "helmChartServiceName": { + "type": "string", + "format": "UTF-8", + "description": "Helm Chart Service Name specified only when helmChart property is specified\n", + "maxLength": 262144, + "minLength": 0 + }, + "healthUri": { + "type": "string", + "format": "uri", + "deprecated": true, + "description": "Health endpoint for the container or helmChart. Deprecated, use health.uri instead." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "Function creation timestamp", + "maxLength": 30, + "minLength": 8 + }, + "activeInstances": { + "type": "array", + "description": "List of active instances for this function.", + "items": { + "$ref": "#/components/schemas/InstanceDto" + }, + "maxItems": 2147483647, + "minItems": 0 + }, + "resources": { + "type": "array", + "description": "Optional set of resources.", + "items": { + "$ref": "#/components/schemas/ArtifactDto" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + }, + "tags": { + "type": "array", + "description": "Optional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars.", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + }, + "description": { + "type": "string", + "format": "UTF-8", + "description": "Function/version description", + "maxLength": 262144, + "minLength": 0 + }, + "health": { + "$ref": "#/components/schemas/HealthDto", + "description": "Function health configuration" + }, + "functionType": { + "type": "string", + "format": "UTF-8", + "description": "Used to indicate a STREAMING function. Defaults to DEFAULT.", + "enum": [ + "DEFAULT", + "STREAMING", + "LLM" + ], + "maxLength": 262144, + "minLength": 0 + }, + "secrets": { + "type": "array", + "description": "Optional secret names", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + }, + "rateLimit": { + "$ref": "#/components/schemas/RateLimitDto", + "description": "Optional rate limit policy" + }, + "telemetries": { + "$ref": "#/components/schemas/TelemetriesDto", + "description": "Optional telemetry configuration for the function" + } + }, + "required": [ + "createdAt", + "functionType", + "healthUri", + "id", + "name", + "ncaId", + "status", + "versionId" + ] + }, + "FunctionModelDto": { + "type": "object", + "description": "Model associated with a function, including optional LLM routing metadata", + "properties": { + "name": { + "type": "string", + "format": "UTF-8", + "description": "Model name", + "maxLength": 262144, + "minLength": 0 + }, + "version": { + "type": "string", + "format": "UTF-8", + "description": "Model version. Optional for LLM-type functions.", + "maxLength": 262144, + "minLength": 0 + }, + "uri": { + "type": "string", + "format": "uri", + "description": "Model URI. Optional for LLM-type functions." + }, + "llmConfig": { + "$ref": "#/components/schemas/LlmConfigDto", + "description": "LLM-specific configuration for this model. Only relevant for LLM-type functions." + } + }, + "required": [ + "name" + ] + }, + "FunctionResponse": { + "type": "object", + "description": "Response body with function details", + "properties": { + "function": { + "$ref": "#/components/schemas/FunctionDto", + "description": "Function details" + } + }, + "required": [ + "function" + ] + }, + "HealthDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing a function ne", + "properties": { + "protocol": { + "type": "string", + "format": "UTF-8", + "description": "HTTP/gPRC protocol type for health endpoint", + "enum": [ + "HTTP", + "gRPC" + ], + "maxLength": 262144, + "minLength": 0 + }, + "uri": { + "type": "string", + "format": "uri", + "description": "Health endpoint for the container or the helmChart" + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Port number where the health listener is running", + "maximum": 2147483647, + "minimum": -2147483648 + }, + "timeout": { + "type": "string", + "format": "duration", + "description": "ISO 8601 duration string in PnDTnHnMn.nS format", + "example": "PT10S" + }, + "expectedStatusCode": { + "type": "integer", + "format": "int32", + "description": "Expected return status code considered as successful.", + "maximum": 2147483647, + "minimum": -2147483648 + } + }, + "required": [ + "expectedStatusCode", + "port", + "protocol", + "timeout", + "uri" + ] + }, + "InstanceDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing an instance", + "properties": { + "instanceId": { + "type": "string", + "format": "UTF-8", + "description": "Unique id of the instance", + "maxLength": 262144, + "minLength": 0 + }, + "functionId": { + "type": "string", + "format": "uuid", + "description": "Function executing on the instance", + "maxLength": 36, + "minLength": 36 + }, + "functionVersionId": { + "type": "string", + "format": "uuid", + "description": "Function version executing on the instance", + "maxLength": 36, + "minLength": 36 + }, + "instanceType": { + "type": "string", + "format": "UTF-8", + "description": "GPU instance-type powering the instance", + "maxLength": 262144, + "minLength": 0 + }, + "instanceStatus": { + "type": "string", + "format": "UTF-8", + "description": "Instance status", + "enum": [ + "ACTIVE", + "STARTING", + "RUNNING", + "ERRORED", + "PREEMPTED", + "DELETED", + "TERMINATED" + ], + "maxLength": 262144, + "minLength": 0 + }, + "icmsRequestId": { + "type": "string", + "format": "uuid", + "description": "ICMS request-id used to launch this instance", + "maxLength": 36, + "minLength": 36 + }, + "ncaId": { + "type": "string", + "format": "UTF-8", + "description": "NVIDIA Cloud Account Id that owns the function running on the instance", + "maxLength": 262144, + "minLength": 0 + }, + "gpu": { + "type": "string", + "format": "UTF-8", + "description": "GPU name powering the instance", + "maxLength": 262144, + "minLength": 0 + }, + "backend": { + "type": "string", + "format": "UTF-8", + "description": "Backend where the instance is running", + "maxLength": 262144, + "minLength": 0 + }, + "location": { + "type": "string", + "format": "UTF-8", + "description": "Location such as zone name or region where the instance is running", + "maxLength": 262144, + "minLength": 0 + }, + "instanceCreatedAt": { + "type": "string", + "format": "date-time", + "description": "Instance creation timestamp", + "maxLength": 30, + "minLength": 8 + }, + "instanceUpdatedAt": { + "type": "string", + "format": "date-time", + "description": "Instance's last updated timestamp", + "maxLength": 30, + "minLength": 8 + } + } + }, + "LlmConfigDto": { + "type": "object", + "description": "LLM-specific configuration for a model", + "properties": { + "uris": { + "type": "array", + "description": "OpenAI-compatible URIs supported by this model (e.g. /v1/chat/completions). Required for LLM models.", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 1 + }, + "tokenRateLimit": { + "type": "string", + "format": "UTF-8", + "description": "Token-level rate limit for this model.", + "maxLength": 262144, + "minLength": 0 + }, + "tokenizer": { + "type": "string", + "format": "UTF-8", + "description": "Tokenizer identifier for this model.", + "maxLength": 262144, + "minLength": 0 + }, + "routingMethod": { + "type": "string", + "format": "UTF-8", + "description": "Routing method for this model.", + "maxLength": 262144, + "minLength": 0 + } + }, + "required": [ + "uris" + ] + }, + "TelemetriesDto": { + "type": "object", + "description": "Telemetry configuration for logs, metrics, and traces.", + "properties": { + "logsTelemetryId": { + "type": "string", + "format": "uuid", + "description": "UUID representing the logs telemetry.", + "maxLength": 36, + "minLength": 36 + }, + "metricsTelemetryId": { + "type": "string", + "format": "uuid", + "description": "UUID representing the metrics telemetry.", + "maxLength": 36, + "minLength": 36 + }, + "tracesTelemetryId": { + "type": "string", + "format": "uuid", + "description": "UUID representing the traces telemetry.", + "maxLength": 36, + "minLength": 36 + } + } + }, + "UpdateFunctionDeploymentRequest": { + "type": "object", + "description": "Request to update function deployment spec", + "properties": { + "deploymentSpecifications": { + "type": "array", + "description": "Deployment specs with GPU, instance-type, etc. details for update request", + "items": { + "$ref": "#/components/schemas/UpdateGpuSpecificationDto" + }, + "maxItems": 2147483647, + "minItems": 1 + } + }, + "required": [ + "deploymentSpecifications" + ] + }, + "UpdateGpuSpecificationDto": { + "type": "object", + "description": "Data Transfer Object (DTO) representing GPU specification for Deployment Update case.", + "properties": { + "gpuSpecificationId": { + "type": "string", + "format": "uuid", + "description": "GPU specification id", + "maxLength": 36, + "minLength": 36 + }, + "gpu": { + "type": "string", + "format": "UTF-8", + "description": "GPU name from the cluster. Deprecated: this is read-only field, should not be specified in update request.", + "maxLength": 262144, + "minLength": 0 + }, + "backend": { + "type": "string", + "format": "UTF-8", + "description": "Backend/CSP where the GPU powered instance has been launched. The original value\nwould not be updated and it should be the same as original. The field is required\nonly for validation.\n", + "maxLength": 262144, + "minLength": 0 + }, + "clusters": { + "type": "array", + "description": "Specific clusters within instance or worker node powered by the selected\ninstance-type to deploy function. The original value would not be updated and it\nshould be the same as original. The field is required only for validation.\n", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + }, + "maxInstances": { + "type": "integer", + "format": "int32", + "description": "Maximum number of instances for the deployment", + "maximum": 2147483647, + "minimum": -2147483648 + }, + "minInstances": { + "type": "integer", + "format": "int32", + "description": "Minimum number of instances for the deployment", + "maximum": 2147483647, + "minimum": -2147483648 + }, + "instanceType": { + "type": "string", + "format": "UTF-8", + "description": "Instance type, based on GPU, assigned to a Worker. Deprecated: this is read-only field, should not be specified in update request.", + "maxLength": 262144, + "minLength": 0 + }, + "maxRequestConcurrency": { + "type": "integer", + "format": "int32", + "description": "Max request concurrency between 1 (default) and 16384.", + "maximum": 16384, + "minimum": 1 + } + }, + "required": [ + "maxInstances", + "minInstances" + ] + }, + "AutoscalingConfigurationDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing autoscaling configuration", + "properties": { + "scaleUpDetails": { + "$ref": "#/components/schemas/ScalingDetails", + "description": "Configuration for scaling up" + }, + "scaleDownDetails": { + "$ref": "#/components/schemas/ScalingDetails", + "description": "Configuration for scaling down" + } + } + }, + "DeploymentHealthDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing deployment error", + "properties": { + "icmsRequestId": { + "type": "string", + "format": "uuid", + "description": "ICMS Request ID", + "maxLength": 36, + "minLength": 36 + }, + "gpu": { + "type": "string", + "format": "UTF-8", + "description": "GPU Type as per SDD", + "maxLength": 262144, + "minLength": 1 + }, + "backend": { + "type": "string", + "format": "UTF-8", + "description": "Backend/CSP where the GPU powered instance will be launched", + "maxLength": 262144, + "minLength": 1 + }, + "instanceType": { + "type": "string", + "format": "UTF-8", + "description": "Instance type", + "maxLength": 262144, + "minLength": 0 + }, + "error": { + "type": "string", + "format": "UTF-8", + "description": "Deployment error", + "maxLength": 262144, + "minLength": 1 + } + }, + "required": [ + "backend", + "error", + "gpu", + "icmsRequestId" + ] + }, + "DeploymentResponse": { + "type": "object", + "description": "Function Deployment Response", + "properties": { + "deployment": { + "$ref": "#/components/schemas/FunctionDeploymentDto", + "description": "Deployment details" + } + }, + "required": [ + "deployment" + ] + }, + "FunctionDeploymentDto": { + "type": "object", + "description": "Function deployment response", + "properties": { + "functionId": { + "type": "string", + "format": "uuid", + "description": "Function id", + "maxLength": 36, + "minLength": 36 + }, + "functionVersionId": { + "type": "string", + "format": "uuid", + "description": "Function version id", + "maxLength": 36, + "minLength": 36 + }, + "deploymentId": { + "type": "string", + "format": "uuid", + "description": "Last deployment id", + "maxLength": 36, + "minLength": 36 + }, + "functionName": { + "type": "string", + "format": "UTF-8", + "description": "Function name", + "maxLength": 262144, + "minLength": 1 + }, + "ncaId": { + "type": "string", + "format": "UTF-8", + "description": "NVIDIA Cloud Account Id", + "maxLength": 262144, + "minLength": 1 + }, + "functionStatus": { + "type": "string", + "format": "UTF-8", + "description": "Function status", + "enum": [ + "ACTIVE", + "DEPLOYING", + "ERROR", + "INACTIVE", + "DELETED", + "DEGRADED", + "DEGRADING" + ], + "maxLength": 262144, + "minLength": 0 + }, + "healthInfo": { + "type": "array", + "description": "Health info for a deployment specification is included only if there are any\n issues/errors.\n", + "items": { + "$ref": "#/components/schemas/DeploymentHealthDto" + }, + "maxItems": 2147483647, + "minItems": 0 + }, + "deploymentSpecifications": { + "type": "array", + "description": "Function deployment details", + "items": { + "$ref": "#/components/schemas/GpuSpecificationDto" + }, + "maxItems": 2147483647, + "minItems": 0 + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "Function deployment creation timestamp", + "maxLength": 30, + "minLength": 8 + }, + "lastUpdatedAt": { + "type": "string", + "format": "date-time", + "description": "Function deployment modification timestamp", + "maxLength": 30, + "minLength": 8 + } + }, + "required": [ + "createdAt", + "deploymentId", + "deploymentSpecifications", + "functionId", + "functionName", + "functionStatus", + "functionVersionId", + "lastUpdatedAt", + "ncaId" + ] + }, + "GpuSpecificationDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing GPU specification.", + "properties": { + "gpuSpecificationId": { + "type": "string", + "format": "uuid", + "description": "GPU specification id", + "maxLength": 36, + "minLength": 36 + }, + "gpu": { + "type": "string", + "format": "UTF-8", + "description": "GPU name from the cluster", + "maxLength": 262144, + "minLength": 1 + }, + "backend": { + "type": "string", + "format": "UTF-8", + "description": "Use clusters instead of this property. Legacy property typically used when deploying a function to GFN.", + "maxLength": 262144, + "minLength": 0 + }, + "maxInstances": { + "type": "integer", + "format": "int32", + "description": "Maximum number of instances for the deployment", + "maximum": 2147483647, + "minimum": -2147483648 + }, + "minInstances": { + "type": "integer", + "format": "int32", + "description": "Minimum number of instances for the deployment", + "maximum": 2147483647, + "minimum": -2147483648 + }, + "instanceType": { + "type": "string", + "format": "UTF-8", + "description": "Instance type, based on GPU, assigned to a Worker", + "maxLength": 262144, + "minLength": 1 + }, + "availabilityZones": { + "type": "array", + "description": "List of availability-zones(or clusters) in the cluster group", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0 + }, + "maxRequestConcurrency": { + "type": "integer", + "format": "int32", + "description": "Max request concurrency between 1 (default) and 16384.", + "maximum": 16384, + "minimum": 1 + }, + "configuration": { + "type": "object", + "description": "Typically used when the function is based on Helm Charts to substitute\n placeholders in values yaml.\n" + }, + "clusters": { + "type": "array", + "description": "Specific clusters powered by the selected instance-type to deploy function.\n", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + }, + "regions": { + "type": "array", + "description": "List of regions allowed to deploy. The instance or worker node will be in one of\nthe specified geographical regions.\n", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + }, + "attributes": { + "type": "array", + "description": "Specific cluster attributes/capabilities to deploy functions. For example,\nHIPPA Compliant, Confidential Compute Compliant, etc.\n", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "uniqueItems": true + }, + "cpuArch": { + "type": "string", + "format": "UTF-8", + "description": "CPU Architecture details", + "maxLength": 262144, + "minLength": 0 + }, + "os": { + "type": "string", + "format": "UTF-8", + "description": "Operating System details", + "maxLength": 262144, + "minLength": 0 + }, + "driverVersion": { + "type": "string", + "format": "UTF-8", + "description": "GPU driver version", + "maxLength": 262144, + "minLength": 0 + }, + "storage": { + "type": "string", + "format": "UTF-8", + "description": "Amount of available storage, e.g. 80G", + "maxLength": 262144, + "minLength": 0 + }, + "systemMemory": { + "type": "string", + "format": "UTF-8", + "description": "Amount of RAM", + "maxLength": 262144, + "minLength": 0 + }, + "gpuMemory": { + "type": "string", + "format": "UTF-8", + "description": "Amount of GPU memory", + "maxLength": 262144, + "minLength": 0 + }, + "autoscalingConfiguration": { + "$ref": "#/components/schemas/AutoscalingConfigurationDto", + "description": "Customizable autoscaling configuration" + }, + "helmValidationPolicy": { + "$ref": "#/components/schemas/HelmValidationPolicyDto", + "description": "Helm validation policy" + } + }, + "required": [ + "gpu", + "instanceType", + "maxInstances", + "minInstances" + ] + }, + "HelmValidationPolicyDto": { + "type": "object", + "description": "Data Transfer Object(DTO) representing Helm validation policy", + "properties": { + "name": { + "type": "string", + "format": "UTF-8", + "description": "Helm validation policy name.", + "enum": [ + "Default", + "Unrestricted" + ], + "maxLength": 262144, + "minLength": 0 + }, + "extraKubernetesTypes": { + "type": "array", + "description": "An API Group in Kubernetes is a collection of related functionality.\nWhen present, must contain at least one entry; each entry must be a valid\nKubernetesType (group, version, kind).\n", + "items": { + "$ref": "#/components/schemas/KubernetesType" + }, + "maxItems": 2147483647, + "minItems": 1 + } + }, + "required": [ + "name" + ] + }, + "KubernetesType": { + "type": "object", + "properties": { + "group": { + "type": "string", + "format": "UTF-8", + "description": "Name of API Group", + "maxLength": 262144, + "minLength": 1 + }, + "version": { + "type": "string", + "format": "UTF-8", + "description": "Version of API Group", + "maxLength": 262144, + "minLength": 1 + }, + "kind": { + "type": "string", + "format": "UTF-8", + "description": "API Group resource or Kind", + "maxLength": 262144, + "minLength": 1 + } + }, + "required": [ + "group", + "kind", + "version" + ] + }, + "ScalingDetails": { + "type": "object", + "properties": { + "metric": { + "type": "string", + "format": "UTF-8", + "description": "Scaling metric", + "maxLength": 262144, + "minLength": 0 + }, + "factor": { + "type": "number", + "format": "float", + "description": "Scaling factor must be greater-than 1.0 for scale up and less-than 1.0 for scale down. This factor is used to multiply the currentinstance count when specified threshold is met." + }, + "threshold": { + "type": "integer", + "format": "int32", + "description": "Scaling threshold (0-100) as a percentage of utilizationupon which the number of current instances are multiplied with thespecified factor.", + "maximum": 2147483647, + "minimum": -2147483648 + }, + "stickiness": { + "$ref": "#/components/schemas/StickinessWindow", + "description": "Stickiness window configuration" + } + }, + "required": [ + "factor", + "threshold" + ] + }, + "StickinessWindow": { + "type": "object", + "properties": { + "size": { + "type": "string", + "format": "duration", + "description": "Window size must be less than or equal to PT1H and will berounded to the nearest minute", + "example": "PT30M" + }, + "threshold": { + "type": "string", + "format": "duration", + "description": "Window threshold must be less than size", + "example": "PT5M" + } + }, + "required": [ + "size", + "threshold" + ] + }, + "BasicFunctionDto": { + "type": "object", + "description": "Basic Data Transfer Object (DTO) representing a function", + "properties": { + "functionId": { + "type": "string", + "format": "uuid", + "description": "Unique function id", + "maxLength": 36, + "minLength": 36 + }, + "functionVersionId": { + "type": "string", + "format": "uuid", + "description": "Unique function version id", + "maxLength": 36, + "minLength": 36 + } + }, + "required": [ + "functionId" + ] + }, + "MultiFunctionsInvocationTokenRequest": { + "type": "object", + "description": "Request body for issuing a function invocation token", + "properties": { + "functions": { + "type": "array", + "description": "Functions to invoke", + "items": { + "$ref": "#/components/schemas/BasicFunctionDto" + }, + "maxItems": 4, + "minItems": 0 + }, + "clientId": { + "type": "string", + "format": "UTF-8", + "description": "ClientId for client to pass in to track who will eventually use the token", + "maxLength": 262144, + "minLength": 1 + } + }, + "required": [ + "clientId", + "functions" + ] + }, + "InvocationTokenResponse": { + "type": "object", + "description": "Function invocation token response", + "properties": { + "access_token": { + "type": "string", + "format": "UTF-8", + "description": "Token issued by Notary Service", + "maxLength": 262144, + "minLength": 0 + }, + "expires_in": { + "type": "integer", + "format": "int32", + "description": "Token expiration time in seconds", + "maximum": 2147483647, + "minimum": -2147483648 + } + } + }, + "InvocationTokenRequest": { + "type": "object", + "description": "Request body for issuing a function invocation token", + "properties": { + "clientId": { + "type": "string", + "format": "UTF-8", + "description": "ClientId for client to pass in to track who will eventually use the token", + "maxLength": 262144, + "minLength": 1 + } + }, + "required": [ + "clientId" + ] + }, + "TelemetryRequest": { + "type": "object", + "description": "Data Transfer Object (DTO) representing a telemetry request", + "properties": { + "endpoint": { + "type": "string", + "format": "UTF-8", + "description": "Telemetry endpoint URL", + "maxLength": 262144, + "minLength": 1 + }, + "protocol": { + "type": "string", + "format": "UTF-8", + "description": "Protocol used for communication", + "enum": [ + "HTTP", + "GRPC" + ], + "maxLength": 262144, + "minLength": 0 + }, + "provider": { + "type": "string", + "format": "UTF-8", + "description": "Telemetry provider", + "enum": [ + "PROMETHEUS", + "GRAFANA_CLOUD", + "SPLUNK", + "DATADOG", + "SERVICENOW", + "KRATOS", + "KRATOS_THANOS", + "TIMESTREAM", + "VICTORIAMETRICS", + "AZURE_MONITOR", + "OTEL_COLLECTOR" + ], + "maxLength": 262144, + "minLength": 0 + }, + "types": { + "type": "array", + "description": "Set of telemetry data types", + "items": { + "type": "string", + "enum": [ + "LOGS", + "METRICS", + "TRACES" + ] + }, + "maxItems": 2147483647, + "minItems": 1, + "uniqueItems": true + }, + "secret": { + "$ref": "#/components/schemas/SecretDto", + "description": "Single secret associated with the telemetry configuration" + } + }, + "required": [ + "endpoint", + "protocol", + "provider", + "secret", + "types" + ] + }, + "TelemetryDto": { + "type": "object", + "description": "Data Transfer Object (DTO) for Telemetry configurations", + "properties": { + "telemetryId": { + "type": "string", + "format": "uuid", + "description": "Unique telemetry ID", + "maxLength": 36, + "minLength": 36 + }, + "name": { + "type": "string", + "format": "UTF-8", + "description": "Telemetry name", + "maxLength": 262144, + "minLength": 1 + }, + "endpoint": { + "type": "string", + "format": "UTF-8", + "description": "URL for the telemetry endpoint", + "maxLength": 262144, + "minLength": 1 + }, + "protocol": { + "type": "string", + "format": "UTF-8", + "description": "Protocol used for communication", + "enum": [ + "HTTP", + "GRPC" + ], + "maxLength": 262144, + "minLength": 0 + }, + "provider": { + "type": "string", + "format": "UTF-8", + "description": "Telemetry provider", + "enum": [ + "PROMETHEUS", + "GRAFANA_CLOUD", + "SPLUNK", + "DATADOG", + "SERVICENOW", + "KRATOS", + "KRATOS_THANOS", + "TIMESTREAM", + "VICTORIAMETRICS", + "AZURE_MONITOR", + "OTEL_COLLECTOR" + ], + "maxLength": 262144, + "minLength": 0 + }, + "types": { + "type": "array", + "description": "Set of telemetry data types", + "items": { + "type": "string", + "enum": [ + "LOGS", + "METRICS", + "TRACES" + ] + }, + "maxItems": 2147483647, + "minItems": 1, + "uniqueItems": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "Telemetry creation timestamp", + "maxLength": 30, + "minLength": 8 + } + }, + "required": [ + "createdAt", + "endpoint", + "name", + "protocol", + "provider", + "telemetryId", + "types" + ] + }, + "TelemetryResponse": { + "type": "object", + "description": "Data Transfer Object (DTO) representing a telemetry response", + "properties": { + "telemetry": { + "$ref": "#/components/schemas/TelemetryDto", + "description": "Telemetry details" + } + } + }, + "AddRegistryCredentialRequest": { + "type": "object", + "description": "Request body to add a registry credential to an account", + "properties": { + "registryHostname": { + "type": "string", + "format": "UTF-8", + "description": "Registry hostname", + "maxLength": 255, + "minLength": 1, + "pattern": "(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?[/]].\nWhenever the user wants to access a protected route or resource, the user must get the token for that particular organization / team","scheme":"bearer","bearerFormat":"JWT"}}}} \ No newline at end of file diff --git a/provider-dev/downloaded/ngc_models.json b/provider-dev/downloaded/ngc_models.json new file mode 100644 index 0000000..106c85e --- /dev/null +++ b/provider-dev/downloaded/ngc_models.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"Models API","termsOfService":"https://www.nvidia.com/en-us/legal_info","contact":{"name":"NVIDIA","url":"https://www.nvidia.com/"},"version":"0.0.1-SNAPSHOT"},"servers":[{"url":"https://models.ngc.nvidia.com","description":"Generated server url - production","x-internal":true}],"tags":[{"name":"ArtifactChecksum","description":"Artifact file checksum verification and commit endpoints"},{"name":"Artifact deployment parameters","description":"Artifact-level overrides for cloud deployment parameters"},{"name":"ArtifactSigning","description":"Artifact signing and signature verification"},{"name":"Publish","description":"Publish artifacts to the NGC catalog"},{"name":"Artifact Versions","description":"Artifact (resource, model, helm chart) Version endpoints"},{"name":"Apps","description":"App-to-artifact associations"},{"name":"Deployment parameters meta","description":"Metadata describing cloud deployment parameter schemas"},{"name":"AIPlayground","description":"AI Playground demo metadata endpoints"},{"name":"Collections","description":"Collections endpoints"},{"name":"Models","description":"Model endpoints"},{"name":"Cloud service provider deployment parameters","description":"Default CSP-level cloud deployment parameters"},{"name":"Health","description":"Service health checks"},{"name":"Model Version Files","description":"Model endpoints"},{"name":"Artifacts","description":"Artifact (resource, model, helm chart) endpoints"},{"name":"Resources","description":"Resources endpoints, previously known as 'recipes'"},{"name":"MalwareScan","description":"Malware scan status for artifact files"},{"name":"Workflows","description":"Asynchronous artifact-registry workflow status endpoints"},{"name":"GpuByPci","description":"GPU metadata lookup by PCI identifier"},{"name":"Helm Charts","description":"Helm chart version management"},{"name":"Cloud service providers","description":"Cloud service provider registry entries"},{"name":"Artifact Version Files","description":"Artifact (resource, model, helm chart) Version File endpoints"},{"name":"Encryption Keys","description":"Customer-managed encryption keys for artifact storage"},{"name":"Artifact File","description":"Resource and Model File endpoints"},{"name":"Resource Versions","description":"Resource Versions endpoints, previously known as 'recipes'"},{"name":"Resource Version Files endpoints","description":"Resource Version File endpoints, previously known as 'recipes'"},{"name":"Model Version","description":"Model endpoints"},{"name":"nspect_id","description":"NSPECT-LOEJ-50BP"}],"paths":{"/v1/org/{org}/{type}/{name}/versions/{version}/async-clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files asynchronously","description":"Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.","operationId":"cloneArtifactVersionFilesAsync","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Target artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Target version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncCloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["cloneArtifact"]}],"x-ssa-scopes":["cloneArtifact"]}},"/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files asynchronously","description":"Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.","operationId":"cloneArtifactVersionFilesAsync_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Target artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Target version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncCloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["cloneArtifact"]}],"x-ssa-scopes":["cloneArtifact"]}},"/v1/org/{org}/files/multipart":{"put":{"tags":["Artifact File"],"summary":"Complete a multipart upload for an artifact file.","description":"Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.","operationId":"completeFileUpload","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCompleteRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact File"],"summary":"Initiate a multipart upload for an artifact file.","description":"Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.","operationId":"fileUpload","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact File"],"summary":"Abort a multipart upload for an artifact file.","description":"Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.","operationId":"abortFileUpload","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadAbortRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org}/team/{team}/files/multipart":{"put":{"tags":["Artifact File"],"summary":"Complete a multipart upload for an artifact file.","description":"Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.","operationId":"completeFileUpload_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCompleteRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact File"],"summary":"Initiate a multipart upload for an artifact file.","description":"Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.","operationId":"fileUpload_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact File"],"summary":"Abort a multipart upload for an artifact file.","description":"Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.","operationId":"abortFileUpload_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadAbortRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org}/files/clone/status":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files Status","description":"Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.","operationId":"cloneArtifactVersionFilesStatus","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{org}/team/{team}/files/clone/status":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files Status","description":"Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.","operationId":"cloneArtifactVersionFilesStatus_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{org}/files/clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files","description":"Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).","operationId":"cloneArtifactVersionFiles","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{org}/team/{team}/files/clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files","description":"Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).","operationId":"cloneArtifactVersionFiles_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{orgName}/{artifactType}/playground/{artifactName}":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for model","operationId":"getModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"description":"Update AI Playground for model","operationId":"updateModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"description":"Delete AI Playground for model","operationId":"deleteModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName}":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for model","operationId":"getModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"description":"Update AI Playground for model","operationId":"updateModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"description":"Delete AI Playground for model","operationId":"deleteModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{orgName}/{artifactType}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for artifactType","description":"Get AI Playground for artifactType","operationId":"getModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"summary":"Update AI Playground for artifactType","description":"Update AI Playground for artifactType","operationId":"updateModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"summary":"Delete AI Playground for artifactType","description":"Delete AI Playground for artifactType","operationId":"deleteModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for artifactType","description":"Get AI Playground for artifactType","operationId":"getModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"summary":"Update AI Playground for artifactType","description":"Update AI Playground for artifactType","operationId":"updateModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"summary":"Delete AI Playground for artifactType","description":"Delete AI Playground for artifactType","operationId":"deleteModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/terms-of-service":{"put":{"tags":["Publish"],"summary":"Update artifact terms of service","description":"Update artifact terms of service","operationId":"updateTermsOfService","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact","kas"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service":{"put":{"tags":["Publish"],"summary":"Update artifact terms of service","description":"Update artifact terms of service","operationId":"updateTermsOfService_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact","kas"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/share":{"put":{"tags":["Publish"],"summary":"Publish artifact to public","description":"Publish artifact to public","operationId":"publishArtifact","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this artifact","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if artifact is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of artifact to public","description":"Undo publishing of artifact to public","operationId":"undoPublishArtifact","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish artifact to product","description":"Publish artifact to product","operationId":"publishArtifactFromRequest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of product artifacts","description":"Undo publishing of product artifacts","operationId":"undoPublishProduct","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version","operationId":"getArtifactVersionSignature","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"put":{"tags":["ArtifactSigning"],"description":"Request to sign artifact version","operationId":"signArtifactVersion","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","signArtifactVersion"]}],"x-ssa-scopes":["signArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version","operationId":"getArtifactVersionSignature_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"put":{"tags":["ArtifactSigning"],"description":"Request to sign artifact version","operationId":"signArtifactVersion_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","signArtifactVersion"]}],"x-ssa-scopes":["signArtifactVersion","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/release-type":{"put":{"tags":["Publish"],"summary":"Update artifact version release type","description":"Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.","operationId":"updateReleaseLabel","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateReleaseTypeRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","publishArtifact"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/release-type":{"put":{"tags":["Publish"],"summary":"Update artifact version release type","description":"Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.","operationId":"updateReleaseLabel_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateReleaseTypeRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","publishArtifact"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in org","description":"Get artifact details in org","operationId":"getArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["Artifacts"],"summary":"Replace artifact in org","description":"Replace artifact details in org","operationId":"replaceArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]},"delete":{"tags":["Artifacts"],"summary":"Delete artifact in org","description":"Delete artifact in org","operationId":"deleteArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifact"]}],"x-ssa-scopes":["deleteArtifact","kas"]},"patch":{"tags":["Artifacts"],"summary":"Update artifact in org","description":"Update artifact details in org","operationId":"updateArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share":{"put":{"tags":["Publish"],"summary":"Publish artifact to public","description":"Publish artifact to public","operationId":"publishArtifact_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this artifact","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if artifact is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of artifact to public","description":"Undo publishing of artifact to public","operationId":"undoPublishArtifact_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish artifact to product","description":"Publish artifact to product","operationId":"publishArtifactFromRequest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of product artifacts","description":"Undo publishing of product artifacts","operationId":"undoPublishProduct_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in team","description":"Get artifact details in team","operationId":"getArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["Artifacts"],"summary":"Replace artifact in team","description":"Replace artifact details in team","operationId":"replaceArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]},"delete":{"tags":["Artifacts"],"summary":"Delete artifact in team","description":"Delete artifact in team","operationId":"deleteArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifact"]}],"x-ssa-scopes":["deleteArtifact","kas"]},"patch":{"tags":["Artifacts"],"summary":"Update artifact in team","description":"Update artifact details in team","operationId":"updateArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name}":{"put":{"tags":["Apps"],"summary":"Update model app association","description":"Update model app association","operationId":"updateModelAppAssociation","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"app-name","in":"path","description":"App Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Apps"],"summary":"Delete model app association","description":"Delete model app association","operationId":"deleteModelAppAssociation","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"app-name","in":"path","description":"App Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team}":{"put":{"tags":["Models"],"summary":"Share team model with the specified team","description":"This operation shares a team model with the team.","operationId":"shareModelInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared team model with the specified team","description":"This operation revokes a shared team model with the team.","operationId":"revokeShareModelInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org":{"put":{"tags":["Models"],"summary":"Share team model with the org","description":"This operation shares a team model with the org.","operationId":"shareModelInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared team model with the org","description":"This operation revokes a shared team model with the org.","operationId":"revokeShareModelInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org and team","description":"Add artifact to the specified collection in the specified org and team","operationId":"addArtifactToCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org and team","description":"Remove artifact from the specified collection in the specified org and team","operationId":"removeArtifactFromCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team}":{"put":{"tags":["Collections"],"summary":"Share team collection with the specified team","description":"Share team collection with the specified team","operationId":"shareCollectionInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared team collection with the specified team","description":"Revoke shared team collection with the specified team","operationId":"revokeShareCollectionInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org":{"put":{"tags":["Collections"],"summary":"Share team collection with the org","description":"Share team collection with the org","operationId":"shareCollectionInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared team collection with the org","description":"Revoke shared team collection with the org","operationId":"revokeShareCollectionInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share":{"put":{"tags":["Publish"],"summary":"Publish collection to public","description":"Publish collection to public","operationId":"publishCollection","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this collection","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if collection is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of collection to public","description":"Undo publishing of collection to public","operationId":"undoPublishCollection","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishCollection"]}],"x-ssa-scopes":["undoPublishCollection"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org and team from another org","description":"Add artifact to the specified collection in the specified org and team from another org","operationId":"addArtifactToCollectionInTeamFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org and team from another org","description":"Remove artifact from the specified collection in the specified org and team from another org","operationId":"removeArtifactFromCollectionInTeamFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org and team from another org and team","description":"Add artifact to the specified collection in the specified org and team from another org and team","operationId":"addArtifactToCollectionInTeamFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org and team from another org and team","description":"Remove artifact from the specified collection in the specified org and team from another org and team","operationId":"removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/models/{model-name}/shares/team/{target-team}":{"put":{"tags":["Models"],"summary":"Share org model with the specified team","description":"This operation shares an org model with the team.","operationId":"shareModelInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared org model with the specified team","description":"This operation revokes a shared org model with the team.","operationId":"revokeShareModelInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/models/{model-name}/shares/org":{"put":{"tags":["Models"],"summary":"Share org model with the org","description":"This operation shares an org model with the org.","operationId":"shareModelInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared org model with the org","description":"This operation revokes a shared org model with the org.","operationId":"revokeShareModelInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org","description":"Add artifact to the specified collection in the specified org","operationId":"addArtifactToCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org","description":"Remove artifact from the specified collection in the specified org","operationId":"removeArtifactFromCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team}":{"put":{"tags":["Collections"],"summary":"Share org collection with the specified team","description":"Share org collection with the specified team","operationId":"shareCollectionInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared org collection with the specified team","description":"Revoke shared org collection with the specified team","operationId":"revokeShareCollectionInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/shares/org":{"put":{"tags":["Collections"],"summary":"Share org collection with the org","description":"Share org collection with the org","operationId":"shareCollectionInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared org collection with the org","description":"Revoke shared org collection with the org","operationId":"revokeShareCollectionInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/share":{"put":{"tags":["Publish"],"summary":"Publish collection to public","description":"Publish collection to public","operationId":"publishCollection_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this collection","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if collection is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of collection to public","description":"Undo publishing of collection to public","operationId":"undoPublishCollection_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishCollection"]}],"x-ssa-scopes":["undoPublishCollection"]}},"/v1/org/{org-name}/collections/{collection-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish collection to product","description":"Publish collection to product","operationId":"publishCollectionFromRequest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish collection to product","description":"Publish collection to product","operationId":"publishCollectionFromRequest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org from another org","description":"Add artifact to the specified collection in the specified org from another org","operationId":"addArtifactToCollectionInOrgFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org from another org","description":"Remove artifact from the specified collection in the specified org from another org","operationId":"removeArtifactFromCollectionInOrgFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org from another org and team","description":"Add artifact to the specified collection in the specified org from another org and team","operationId":"addArtifactToCollectionInOrgFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org from another org","description":"Remove artifact from the specified collection in the specified org from another org","operationId":"removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{orgName}/{artifactType}/playground":{"post":{"tags":["AIPlayground"],"description":"Create AI Playground for model","operationId":"createModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/playground":{"post":{"tags":["AIPlayground"],"description":"Create AI Playground for model","operationId":"createModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/{artifactType}/spec":{"post":{"tags":["AIPlayground"],"summary":"Create AI Playground for artifactType","description":"Create AI Playground for artifactType","operationId":"createModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/spec":{"post":{"tags":["AIPlayground"],"summary":"Create AI Playground for artifactType","description":"Create AI Playground for artifactType","operationId":"createModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan":{"post":{"tags":["MalwareScan"],"summary":"Initiates malwares can for the artifact","description":"Initiates malwares can for the artifact","operationId":"initiateMalwareScan","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"contact-email","in":"query","description":"Contact email","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":320,"minLength":0}},{"name":"nspect-id","in":"query","description":"Nspect identifier","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":64,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan":{"post":{"tags":["MalwareScan"],"summary":"Initiates malwares can for the artifact","description":"Initiates malwares can for the artifact","operationId":"initiateMalwareScan_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"contact-email","in":"query","description":"Contact email","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":320,"minLength":0}},{"name":"nspect-id","in":"query","description":"Nspect identifier","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":64,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version file deployment url in org","description":"Create artifact version file deployment url in org","operationId":"createArtifactVerionFileDeploymentUrlInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version deployment url in org","description":"Create artifact version deployment url in org","operationId":"createArtifactDeploymentUrlInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get artifact deployment parameters details in org","description":"Get artifact deployment parameters details in org","operationId":"getArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact deployment parameters in org","description":"Create artifact deployment parameters in org","operationId":"createArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"no-auto-labels","in":"query","description":"No auto labels","required":false,"schema":{"type":"boolean"}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact deployment parameters"],"summary":"Delete artifact deployment parameters in org","description":"Delete artifact deployment parameters in org","operationId":"deleteArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Artifact deployment parameters"],"summary":"Update artifact deployment parameters in org","description":"Update artifact deployment parameters in org","operationId":"updateArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels":{"post":{"tags":["Collections"],"summary":"Sync collection release type labels for artifact","description":"Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.","operationId":"syncCollectionReleaseTypeLabelsForArtifact","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","syncReleaseTypeLabels"]}],"x-ssa-scopes":["kas","syncReleaseTypeLabels"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels":{"post":{"tags":["Collections"],"summary":"Sync collection release type labels for artifact","description":"Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.","operationId":"syncCollectionReleaseTypeLabelsForArtifact_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","syncReleaseTypeLabels"]}],"x-ssa-scopes":["kas","syncReleaseTypeLabels"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance":{"get":{"tags":["Publish"],"summary":"Check if user needs to accept license","description":"Check if user needs to accept license. Checks against uam","operationId":"getOrgArtifactLicenseAcceptance","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Publish"],"summary":"Accept artifact license","description":"Record license acceptance for an org artifact.","operationId":"acceptArtifactLicense","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptArtifactLicenseRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance":{"get":{"tags":["Publish"],"summary":"Check if user needs to accept license","description":"Check if user needs to accept license. Checks against uam","operationId":"getOrgArtifactLicenseAcceptance_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Publish"],"summary":"Accept artifact license","description":"Record license acceptance for an org artifact.","operationId":"acceptArtifactLicense_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptArtifactLicenseRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/files":{"post":{"tags":["ArtifactChecksum"],"summary":"Check if file exists based on checksum","description":"Check if file exists based on checksum provided in request","operationId":"checkArtifactFilesExistByChecksum","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact Type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesChecksumExistsRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/files":{"post":{"tags":["ArtifactChecksum"],"summary":"Check if file exists based on checksum","description":"Check if file exists based on checksum provided in request","operationId":"checkArtifactFilesExistByChecksum_1","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact Type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesChecksumExistsRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}":{"get":{"tags":["Artifacts"],"summary":"List artifacts in org","description":"List artifacts the user can access in the specified org","operationId":"listArtifactsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifacts"]}],"x-ssa-scopes":["listArtifacts","kas"]},"post":{"tags":["Artifacts"],"summary":"Create artifact in org","description":"Create artifact in org","operationId":"createArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createArtifact"]}],"x-ssa-scopes":["createArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version file deployment url in team","description":"Create artifact version file deployment url in team","operationId":"createArtifactVersionFileDeploymentUrlInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version deployment url in team","description":"Create artifact version deployment url in team","operationId":"createArtifactDeploymentUrlInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get artifact deployment parameters details in team","description":"Get artifact deployment parameters details in team","operationId":"getArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact deployment parameters in team","description":"Create artifact deployment parameters in team","operationId":"createArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"no-auto-labels","in":"query","description":"No auto labels","required":false,"schema":{"type":"boolean"}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact deployment parameters"],"summary":"Delete artifact deployment parameters in team","description":"Delete artifact deployment parameters in team","operationId":"deleteArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Artifact deployment parameters"],"summary":"Update artifact deployment parameters in team","description":"Update artifact deployment parameters in team","operationId":"updateArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/parameters":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact deployment parameters in team","description":"Create artifact deployment parameters in team","operationId":"createArtifactDeploymentParametersInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"no-auto-labels","in":"query","description":"No auto labels","required":false,"schema":{"type":"boolean"}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}":{"get":{"tags":["Artifacts"],"summary":"List artifacts in team","description":"List artifacts the user can access in the specified org and team","operationId":"listArtifactsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifacts"]}],"x-ssa-scopes":["listArtifacts","kas"]},"post":{"tags":["Artifacts"],"summary":"Create artifact in team","description":"Create artifact in team","operationId":"createArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createArtifact"]}],"x-ssa-scopes":["createArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team","description":"List recipe versions in team","operationId":"listRecipeVersionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in team","description":"Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team","description":"List recipe versions in team","operationId":"listRecipeVersionsInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in team","description":"Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes":{"get":{"tags":["Resources"],"summary":"List recipes in team","description":"List recipes the user can access in the specified org and team","operationId":"listRecipesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in team","description":"Create recipe in team","operationId":"createRecipeInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources":{"get":{"tags":["Resources"],"summary":"List recipes in team","description":"List recipes the user can access in the specified org and team","operationId":"listRecipesInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in team","description":"Create recipe in team","operationId":"createRecipeInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/models":{"get":{"tags":["Models"],"summary":"List models in team","description":"This operation lists models the user can access in the org/team.","operationId":"listModelsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"[Deprecated] Page reference, Use page-number instead","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModels"]}],"x-ssa-scopes":["kas","listModels"]},"post":{"tags":["Models"],"summary":"Create model in team","description":"This operation creates a model in the org/team.","operationId":"createModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModel"]}],"x-ssa-scopes":["createModel","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in team","description":"List model versions in team","operationId":"listModelVersionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]},"post":{"tags":["Model Version"],"summary":"Create model version in team.","description":"Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createModelVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModelVersion"]}],"x-ssa-scopes":["kas","createModelVersion"]}},"/v1/org/{org-name}/team/{team-name}/collections":{"get":{"tags":["Collections"],"summary":"List collections in team","description":"List collections the user can access in the specified org and team","operationId":"listCollectionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Collections"],"summary":"Create collection in org and team","description":"Create collection in org and team","operationId":"createCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createCollection"]}],"x-ssa-scopes":["kas","createCollection"]}},"/v1/org/{org-name}/recipes/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org","description":"List recipe versions in org","operationId":"listRecipeVersionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in org","description":"Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org","description":"List recipe versions in org","operationId":"listRecipeVersionsInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in org","description":"Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/recipes":{"get":{"tags":["Resources"],"summary":"List recipes in org","description":"List recipes the user can access in the specified org","operationId":"listRecipesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in org","description":"Create recipe in org","operationId":"createRecipeInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/resources":{"get":{"tags":["Resources"],"summary":"List recipes in org","description":"List recipes the user can access in the specified org","operationId":"listRecipesInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in org","description":"Create recipe in org","operationId":"createRecipeInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/models":{"get":{"tags":["Models"],"summary":"List models in org","description":"This operation lists models the user can access in the org.","operationId":"listModelsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"[Deprecated] Page reference, Use page-number instead","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModels"]}],"x-ssa-scopes":["kas","listModels"]},"post":{"tags":["Models"],"summary":"Create model in org","description":"This operation creates a model in the org.","operationId":"createModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModel"]}],"x-ssa-scopes":["createModel","kas"]}},"/v1/org/{org-name}/models/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in org","description":"List model versions in org","operationId":"listModelVersionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]},"post":{"tags":["Model Version"],"summary":"Create model version in org","description":"Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createModelVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModelVersion"]}],"x-ssa-scopes":["kas","createModelVersion"]}},"/v1/org/{org-name}/files/commit":{"post":{"tags":["ArtifactChecksum"],"summary":"Commit artifact files metadata to database","description":"Commit artifact files metadata to database given request","operationId":"commitArtifactFiles","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"upload-pending","in":"query","description":"Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesCommitRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/files/commit":{"post":{"tags":["ArtifactChecksum"],"summary":"Commit artifact files metadata to database","description":"Commit artifact files metadata to database given request","operationId":"commitArtifactFiles_1","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"upload-pending","in":"query","description":"Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesCommitRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections":{"get":{"tags":["Collections"],"summary":"List collections in org","description":"List collections the user can access in the specified org","operationId":"listCollectionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Collections"],"summary":"Create collection in org","description":"Create collection in org","operationId":"createCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createCollection"]}],"x-ssa-scopes":["kas","createCollection"]}},"/v1/malware-scan-notification":{"post":{"tags":["MalwareScan"],"summary":"Update artifact's malware scan result with MalwareScanNotification","description":"Update artifact's malware scan result with MalwareScanNotification","operationId":"notifyScanResult","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MalwareScanNotification"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyMalwareScanResultResponse"}}}}},"security":[{"ssa":["kas","notifyScanResult"]}],"x-ssa-scopes":["notifyScanResult","kas"]}},"/v1/gpus/pci-device-id/{pci-device-id}":{"get":{"tags":["GpuByPci"],"summary":"Get GPU by PCI Device ID","description":"Get all GPU records matching the given PCI Device ID","operationId":"getGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]},"post":{"tags":["GpuByPci"],"summary":"Create GPU by PCI Device ID only","description":"Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')","operationId":"createGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createGpuByPci"]}],"x-ssa-scopes":["kas","createGpuByPci"]},"delete":{"tags":["GpuByPci"],"summary":"Delete GPU by PCI Device ID only","description":"Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')","operationId":"deleteGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteGpuByPci"]}],"x-ssa-scopes":["deleteGpuByPci","kas"]},"patch":{"tags":["GpuByPci"],"summary":"Partially update GPU by PCI Device ID only","description":"Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated.","operationId":"updateGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateGpuByPci"]}],"x-ssa-scopes":["kas","updateGpuByPci"]}},"/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id}":{"get":{"tags":["GpuByPci"],"summary":"Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Get a single GPU record matching the full PCI composite key","operationId":"getGpuByPciDeviceIdVendorIdSubsystemDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]},"post":{"tags":["GpuByPci"],"summary":"Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Create a new GPU record using the full PCI composite key","operationId":"createGpuByPciFullKey","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createGpuByPci"]}],"x-ssa-scopes":["kas","createGpuByPci"]},"delete":{"tags":["GpuByPci"],"summary":"Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Delete a GPU record matching the full PCI composite key","operationId":"deleteGpuByPciFullKey","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteGpuByPci"]}],"x-ssa-scopes":["deleteGpuByPci","kas"]},"patch":{"tags":["GpuByPci"],"summary":"Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated.","operationId":"updateGpuByPciFullKey","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateGpuByPci"]}],"x-ssa-scopes":["kas","updateGpuByPci"]}},"/v1/csps":{"get":{"tags":["Cloud service providers"],"summary":"List cloud service providers","description":"List cloud service providers","operationId":"listCloudServiceProviders","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0}},{"name":"include-disabled","in":"query","description":"Include disabled","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"post":{"tags":["Cloud service providers"],"summary":"Create cloud service provider","description":"Create cloud service provider","operationId":"createCloudServiceProvider","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudServiceProviderCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/csps/{csp-name}/deployments/params":{"get":{"tags":["Cloud service provider deployment parameters"],"summary":"Get cloud service provider deployment parameters details","description":"Get cloud service provider deployment parameters details","operationId":"getCloudServiceProviderDeploymentParametersDetails","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"post":{"tags":["Cloud service provider deployment parameters"],"summary":"Create cloud service provider deployment parameters","description":"Create cloud service provider deployment parameters","operationId":"createCloudServiceProviderDeploymentParameters","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Cloud service provider deployment parameters"],"summary":"Delete cloud service provider deployment parameters","description":"Delete cloud service provider deployment parameters","operationId":"deleteCloudServiceProviderDeploymentParameters","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Cloud service provider deployment parameters"],"summary":"Update cloud service provider deployment parameters","description":"Update cloud service provider deployment parameters","operationId":"updateCloudServiceProviderDeploymentParameters","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/csps/{csp-name}/deployments/params/meta":{"get":{"tags":["Deployment parameters meta"],"summary":"Get cloud service provider deployment parameters meta details","description":"Get cloud service provider deployment parameters meta details","operationId":"getCloudServiceProviderDeploymentParametersMetaDetails","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"post":{"tags":["Deployment parameters meta"],"summary":"Create cloud service provider deployment parameters meta","description":"Create cloud service provider deployment parameters meta","operationId":"createCloudServiceProviderDeploymentParametersMeta","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersMetaCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Deployment parameters meta"],"summary":"Delete cloud service provider deployment parameters meta","description":"Delete cloud service provider deployment parameters meta","operationId":"deleteCloudServiceProviderDeploymentParametersMeta","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Deployment parameters meta"],"summary":"Update cloud service provider deployment parameters meta","description":"Update cloud service provider deployment parameters meta","operationId":"updateCloudServiceProviderDeploymentParametersMeta","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersMetaUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version file deployment url in org","description":"Create public artifact version file deployment url in org","operationId":"createPublicArtifactVersionFileDeploymentUrlInOrg","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version deployment url in org","description":"Create public artifact version deployment url in org","operationId":"createPublicArtifactDeploymentUrlInOrg","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version file deployment url in team","description":"Create public artifact version file deployment url in team","operationId":"createPublicArtifactVersionFileDeploymentUrlInTeam","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version deployment url in team","description":"Create public artifact version deployment url in team","operationId":"createPublicArtifactDeploymentUrlInTeam","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs":{"patch":{"tags":["Publish"],"summary":"Publish artifact version with configs like policy badge","description":"Update artifact version with configs like policy badge","operationId":"updateTagLevelPublishConfigs","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateArtifactVersionConfigs"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs":{"patch":{"tags":["Publish"],"summary":"Publish artifact version with configs like policy badge","description":"Update artifact version with configs like policy badge","operationId":"updateTagLevelPublishConfigs_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateArtifactVersionConfigs"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team","description":"Get recipe version in team","operationId":"getRecipeVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in team","description":"Update recipe version information in team e.g. upload status","operationId":"updateRecipeVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team","description":"Get recipe version in team","operationId":"getRecipeVersionInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in team","description":"Update recipe version information in team e.g. upload status","operationId":"updateRecipeVersionInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team","description":"Get recipe details in team","operationId":"getRecipeInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in team","description":"Update recipe details in team","operationId":"updateRecipeInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team","description":"Get recipe details in team","operationId":"getRecipeInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in team","description":"Update recipe details in team","operationId":"updateRecipeInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}":{"get":{"tags":["Models"],"summary":"Get model in team","description":"This operation gets info of a model in the org/team.","operationId":"getModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModel"]}],"x-ssa-scopes":["getModel","kas"]},"patch":{"tags":["Models"],"summary":"Update model in team","description":"This operation updates details of a model in the org/team.","operationId":"updateModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModel"]}],"x-ssa-scopes":["updateModel","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in team","description":"Get model version in team","operationId":"getModelVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModelVersion","getModelVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getModelVersionFilterByOrgEnablement","getModelVersion","kas"]},"patch":{"tags":["Model Version"],"summary":"Update model version in team","description":"Update model version information in team e.g. upload status","operationId":"updateModelVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash":{"patch":{"tags":["Model Version"],"summary":"Stash artifact version in team","description":"Stash artifact version information in team in model version upload paused state","operationId":"stashArtifactVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in team","description":"Get chart version in team","operationId":"getHelmChartVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifactVersion"]}],"x-ssa-scopes":["getArtifactVersion","kas"]},"patch":{"tags":["Helm Charts"],"summary":"Update chart version in team","description":"Update chart version information in team e.g. upload status","operationId":"updateHelmChartVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifactVersion"]}],"x-ssa-scopes":["updateArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in team","description":"Get collection details in team","operationId":"getCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getCollection"]}],"x-ssa-scopes":["getCollection","kas"]},"delete":{"tags":["Collections"],"summary":"Delete collection in org and team","description":"Delete collection in the specified org and team","operationId":"deleteCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Collections"],"summary":"Update collection in team","description":"Update collection details in team","operationId":"updateCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateCollection"]}],"x-ssa-scopes":["updateCollection","kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts":{"patch":{"tags":["Collections"],"summary":"Patch collection in org and team","description":"Patch collection in the specified org and team","operationId":"patchCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPatchRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","patchCollectionArtifacts"]}],"x-ssa-scopes":["patchCollectionArtifacts","kas"]}},"/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org","description":"Get recipe version in org","operationId":"getRecipeVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in org","description":"Update recipe version information in org e.g. upload status","operationId":"updateRecipeVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org","description":"Get recipe version in org","operationId":"getRecipeVersionInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in org","description":"Update recipe version information in org e.g. upload status","operationId":"updateRecipeVersionInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/recipes/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org","description":"Get recipe in org","operationId":"getRecipeInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in org","description":"Update recipe details in org","operationId":"updateRecipeInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org","description":"Get recipe in org","operationId":"getRecipeInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in org","description":"Update recipe details in org","operationId":"updateRecipeInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/models/{model-name}":{"get":{"tags":["Models"],"summary":"Get model details in org","description":"This operation gets info of a model in the org.","operationId":"getModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModel"]}],"x-ssa-scopes":["getModel","kas"]},"patch":{"tags":["Models"],"summary":"Update model in org","description":"This operation updates details of a model in the org.","operationId":"updateModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModel"]}],"x-ssa-scopes":["updateModel","kas"]}},"/v1/org/{org-name}/models/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in org","description":"Get model version in org","operationId":"getModelVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModelVersion","getModelVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getModelVersionFilterByOrgEnablement","getModelVersion","kas"]},"patch":{"tags":["Model Version"],"summary":"Update model version in org","description":"Update model version information in org e.g. upload status","operationId":"updateModelVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash":{"patch":{"tags":["Model Version"],"summary":"Stash artifact version in org","description":"Stash artifact version information in org during upload paused state","operationId":"stashArtifactVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in org","description":"Get chart version in org","operationId":"getHelmChartVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifactVersion"]}],"x-ssa-scopes":["getArtifactVersion","kas"]},"patch":{"tags":["Helm Charts"],"summary":"Update chart version in org","description":"Update chart version information in org e.g. upload status","operationId":"updateHelmChartVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifactVersion"]}],"x-ssa-scopes":["updateArtifactVersion","kas"]}},"/v1/org/{org-name}/collections/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in org","description":"Get collection details in org","operationId":"getCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getCollection"]}],"x-ssa-scopes":["getCollection","kas"]},"delete":{"tags":["Collections"],"summary":"Delete collection in org","description":"Delete collection in the specified org","operationId":"deleteCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Collections"],"summary":"Update collection in org","description":"Update collection details in org","operationId":"updateCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateCollection"]}],"x-ssa-scopes":["updateCollection","kas"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts":{"patch":{"tags":["Collections"],"summary":"Patch collection in org","description":"Patch collection in the specified org","operationId":"patchCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPatchRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","patchCollectionArtifacts"]}],"x-ssa-scopes":["patchCollectionArtifacts","kas"]}},"/v1/csps/{csp-name}":{"get":{"tags":["Cloud service providers"],"summary":"Get cloud service provider details","description":"Get cloud service provider details","operationId":"getCloudServiceProviderDetails","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"delete":{"tags":["Cloud service providers"],"summary":"Delete cloud service provider","description":"Delete cloud service provider","operationId":"deleteCloudServiceProvider","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Cloud service providers"],"summary":"Update cloud service provider","description":"Update cloud service provider","operationId":"updateCloudServiceProvider","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudServiceProviderUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/{type}/org/{org}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version","description":"Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.","operationId":"downloadAllArtifactFilesAsGuest","parameters":[{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{type}/org/{org}/team/{team}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version","description":"Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.","operationId":"downloadAllArtifactFilesAsGuest_1","parameters":[{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{artifactName}/playground":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for public model","operationId":"getPublicModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/playground":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for public model","operationId":"getPublicModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for public artifactType","description":"Get AI Playground for public artifactType","operationId":"getPublicModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for public artifactType","description":"Get AI Playground for public artifactType","operationId":"getPublicModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/org/{org-name}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org as guest","description":"List artifact collections the user can access in the specified org as guest","operationId":"listArtifactCollectionsInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org and team as guest","description":"List artifact collections the user can access in the specified org and team as guest","operationId":"listArtifactCollectionsInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.","operationId":"getArtifactVersionSignatureAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.","operationId":"getArtifactVersionSignatureAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of a team artifact in a zip as guest","description":"Download all files of a team artifact in a zip as guest","operationId":"downloadAllFilesInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Direct download all files of a team artifact in a zip as guest","description":"Direct download all files of a team artifact in a zip as guest","operationId":"directDownloadAllFilesInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team as guest","description":"Download the specified file of the artifact version in team as guest","operationId":"downloadArtifactFileInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team as guest as zip","description":"Download the specified file of the artifact version in team as guest as zip","operationId":"downloadArtifactFileInTeamAsGuestAsZip","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/latest-version/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of a team artifact's latest version in a zip as guest","description":"Download all files of a team artifact's latest version in a zip as guest","operationId":"downloadAllFilesInTeamAsGuest_1","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of an org artifact in a zip as guest","description":"Download all files of an org artifact in a zip as guest","operationId":"downloadAllFilesInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Direct download all files of a org artifact in a zip as guest","description":"Direct download all files of a org artifact in a zip as guest","operationId":"directDownloadAllFilesInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org as guest","description":"Download the specified file of the artifact version in org as guest","operationId":"downloadArtifactFileInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org as guest as zip","description":"Download the specified file of the artifact version in org as guest as zip","operationId":"downloadArtifactFileInOrgAsGuestAsZip","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/latest-version/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of an org artifact's latest version in a zip as guest","description":"Download all files of an org artifact's latest version in a zip as guest","operationId":"downloadAllFilesOfLatestVersionInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in team as guest","description":"List files of the artifact version in team as guest","operationId":"listArtifactFilesInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in org as guest","description":"List files of the artifact version in org as guest","operationId":"listArtifactFilesInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}":{"get":{"tags":["Artifacts"],"summary":"List public artifacts","description":"List public artifacts","operationId":"listPublicArtifacts","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in team as guest","description":"Get artifact details in team as guest","operationId":"getChartInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in org as guest","description":"Get artifact details in org as guest","operationId":"getArtifactInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team as guest","description":"List files of the recipe version in team as guest","operationId":"listModeFilesInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team as guest","description":"List files of the recipe version in team as guest","operationId":"listModeFilesInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team as guest","description":"Get recipe version in team as guest","operationId":"getRecipeVersionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team as guest","description":"Get recipe version in team as guest","operationId":"getRecipeVersionInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team as guest","description":"List recipe versions in team as guest","operationId":"listRecipeVersionsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team as guest","description":"List recipe versions in team as guest","operationId":"listRecipeVersionsInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team as guest","description":"Get recipe details in team as guest","operationId":"getRecipeInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team as guest","description":"Get recipe details in team as guest","operationId":"getRecipeInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org as guest","description":"List files of the recipe version in org as guest","operationId":"listModeFilesInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org as guest","description":"List files of the recipe version in org as guest","operationId":"listModeFilesInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org as guest","description":"Get recipe version in org as guest","operationId":"getRecipeVersionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org as guest","description":"Get recipe version in org as guest","operationId":"getRecipeVersionInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org as guest","description":"List recipe versions in org as guest","operationId":"listRecipeVersionsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org as guest","description":"List recipe versions in org as guest","operationId":"listRecipeVersionsInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org as guest","description":"Get recipe details in org as guest","operationId":"getRecipeInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org as guest","description":"Get recipe details in org as guest","operationId":"getRecipeInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes":{"get":{"tags":["Resources"],"summary":"List public recipes","description":"List public recipes","operationId":"listPublicRecipes","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources":{"get":{"tags":["Resources"],"summary":"List public recipes","description":"List public recipes","operationId":"listPublicRecipes_1","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/org/{org}/{type}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"Provide a list of presigned urls for the download of all files belonging to an artifact version","description":"Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.","operationId":"downloadAllArtifactFiles","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","downloadArtifactVersionFile","downloadArtifactVersionFileFilterByOrgEnablement"]}],"x-ssa-scopes":["downloadArtifactVersionFileFilterByOrgEnablement","kas","downloadArtifactVersionFile"]}},"/v1/org/{org}/team/{team}/{type}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"Provide a list of presigned urls for the download of all files belonging to an artifact version","description":"Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.","operationId":"downloadAllArtifactFiles_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","downloadArtifactVersionFile","downloadArtifactVersionFileFilterByOrgEnablement"]}],"x-ssa-scopes":["downloadArtifactVersionFileFilterByOrgEnablement","kas","downloadArtifactVersionFile"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List artifact deployment parameters in org","description":"List artifact deployment parameters in org","operationId":"listArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org","description":"List artifact collections the user can access in the specified org","operationId":"listArtifactCollectionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/catalog/flags":{"get":{"tags":["Publish"],"summary":"Get Catalog flags","description":"Get the Catalog Public flags for artifact in org","operationId":"getPublicFlagsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["getPublicFlags"]}],"x-ssa-scopes":["getPublicFlags"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of an org artifact in a zip","description":"Download all files of an org artifact in a zip","operationId":"downloadAllFilesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/*/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org as zip","description":"Download the specified file of the artifact version in org as zip","operationId":"downloadArtifactFileInOrgAsZip","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org","description":"Download the specified file of the artifact version in org","operationId":"downloadArtifactFileInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","downloadArtifactVersionFile"]}],"x-ssa-scopes":["kas","downloadArtifactVersionFile"]},"delete":{"tags":["Artifact Version Files"],"summary":"Delete artifact file in org","description":"Delete artifact file in org","operationId":"deleteArtifactFileInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in org","description":"List files of the artifact version in org","operationId":"listArtifactFilesInOrg","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersionFiles"]}],"x-ssa-scopes":["listArtifactVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List artifact deployment parameters in team","description":"List artifact deployment parameters in team","operationId":"listArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org and team","description":"List artifact collections the user can access in the specified org and team","operationId":"listArtifactCollectionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/catalog/flags":{"get":{"tags":["Publish"],"summary":"Get Catalog flags","description":"Get the Catalog Public flags for artifact in team","operationId":"getPublicFlagsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["getPublicFlags"]}],"x-ssa-scopes":["getPublicFlags"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of a team artifact in a zip","description":"Download all files of a team artifact in a zip","operationId":"downloadAllFilesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team","description":"Download the specified file of the artifact version in team","operationId":"downloadArtifactFileInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","downloadArtifactVersionFile"]}],"x-ssa-scopes":["kas","downloadArtifactVersionFile"]},"delete":{"tags":["Artifact Version Files"],"summary":"Delete artifact file in team","description":"Delete artifact file in team","operationId":"deleteArtifactFileInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team as zip","description":"Download the specified file of the artifact version in team as zip","operationId":"downloadArtifactFileInTeamAsZip","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in team","description":"List files of the artifact version in team","operationId":"listArtifactFilesInTeam","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersionFiles"]}],"x-ssa-scopes":["listArtifactVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team","description":"List recipe files in team","operationId":"listRecipeFilesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team","description":"List recipe files in team","operationId":"listRecipeFilesInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in team","description":"List files of the model version in team","operationId":"listModeFilesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersionFiles"]}],"x-ssa-scopes":["listModelVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in team","description":"List chart versions in team","operationId":"listHelmChartVersionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersions"]}],"x-ssa-scopes":["kas","listArtifactVersions"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org and team","description":"List collection artifacts the user can access in the specified org and team","operationId":"listCollectionArtifactsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listCollectionArtifacts"]}],"x-ssa-scopes":["kas","listCollectionArtifacts"]}},"/v1/org/{org-name}/repositories/{container-name}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer_2","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-tag","in":"path","description":"Container tag","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/tags/{container-tag}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer_3","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-tag","in":"path","description":"Container tag","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org","description":"List recipe files in org","operationId":"listRecipeFilesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org","description":"List recipe files in org","operationId":"listRecipeFilesInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in org","description":"List files of the model version in org","operationId":"listModeFilesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersionFiles"]}],"x-ssa-scopes":["listModelVersionFiles","kas"]}},"/v1/org/{org-name}/helm-charts/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in org","description":"List chart versions in org","operationId":"listHelmChartVersionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersions"]}],"x-ssa-scopes":["kas","listArtifactVersions"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org","description":"List collection artifacts the user can access in the specified org","operationId":"listCollectionArtifactsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listCollectionArtifacts"]}],"x-ssa-scopes":["kas","listCollectionArtifacts"]}},"/v1/models":{"get":{"tags":["Models"],"summary":"List public models","description":"This operation lists public models.","operationId":"listPublicModels","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}":{"get":{"tags":["Models"],"summary":"Get model in team as guest","description":"This operation gets info of a model in the org/team as guest.","operationId":"getModelInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in team as guest","description":"List model versions in team as guest","operationId":"listModelVersionsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in team as guest","description":"Get model version in team as guest","operationId":"getModelVersionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in team as guest","description":"List files of the model version in team as guest","operationId":"listModeFilesInTeamAsGuest_2","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}":{"get":{"tags":["Models"],"summary":"Get model in org as guest","description":"This operation gets info of a model in the org as guest.","operationId":"getModelInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in org as guest","description":"List model versions in org as guest","operationId":"listModelVersionsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in org as guest","description":"Get model version in org as guest","operationId":"getModelVersionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in org as guest","description":"List files of the model version in org as guest","operationId":"listModeFilesInOrgAsGuest_2","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in team as guest","description":"List chart versions in team as guest","operationId":"listHelmChartVersionsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in team as guest","description":"Get chart version in team as guest","operationId":"getHelmChartVersionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in org as guest","description":"List chart versions in org as guest","operationId":"listHelmChartVersionsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in org as guest","description":"Get chart version in org as guest","operationId":"getHelmChartVersionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/gpus":{"get":{"tags":["GpuByPci"],"summary":"Get all GPUs","description":"Get all GPU by PCI records","operationId":"getGpus","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]}},"/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}":{"get":{"tags":["GpuByPci"],"summary":"Get GPUs by PCI Device ID and Vendor ID","description":"Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID","operationId":"getGpuByPciDeviceIdVendorId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in team as guest","description":"Get public artifact deployment parameters details in team as guest","operationId":"getPublicArtifactDeploymentParametersInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in team as guest","description":"List public artifact deployment parameters in team as guest","operationId":"listPublicArtifactDeploymentParametersInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in org as guest","description":"Get public artifact deployment parameters details in org as guest","operationId":"getPublicArtifactDeploymentParametersInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in org as guest","description":"List public artifact deployment parameters in org as guest","operationId":"listPublicArtifactDeploymentParametersInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{csp-name}":{"get":{"tags":["Cloud service providers"],"summary":"Get cloud service provider details","description":"Get cloud service provider details","operationId":"getCloudServiceProviderDetails_1","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in team","description":"Get public artifact deployment parameters details in team","operationId":"getPublicArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in team","description":"List public artifact deployment parameters in team","operationId":"listPublicArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in org","description":"Get public artifact deployment parameters details in org","operationId":"getPublicArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in org","description":"List public artifact deployment parameters in org","operationId":"listPublicArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps":{"get":{"tags":["Cloud service providers"],"summary":"List cloud service providers","description":"List cloud service providers","operationId":"listCloudServiceProviders_1","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0}},{"name":"include-disabled","in":"query","description":"Include disabled","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections":{"get":{"tags":["Collections"],"summary":"List public collections","description":"List public collections","operationId":"listPublicCollections","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{team-name}/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in team as guest","description":"Get collection details in team as guest","operationId":"getCollectionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{team-name}/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org and team as guest","description":"List collection artifacts the user can access in the specified org and team as guest","operationId":"listCollectionArtifactsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in org as guest","description":"Get collection details in org as guest","operationId":"getCollectionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org as guest","description":"List collection artifacts the user can access in the specified org as guest","operationId":"listCollectionArtifactsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/artifact-registry/org/{org}/workflows/{workflowId}":{"get":{"tags":["Workflows"],"summary":"Get workflow status","description":"Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization.","operationId":"getWorkflowStatus","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"workflowId","in":"path","description":"Workflow identifier","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/artifact-registry/org/{org}/team/{team}/workflows/{workflowId}":{"get":{"tags":["Workflows"],"summary":"Get team-scoped workflow status","description":"Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team.","operationId":"getWorkflowStatusForTeam","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"workflowId","in":"path","description":"Workflow identifier","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys":{"get":{"tags":["Encryption Keys"],"summary":"List encryption keys in org/team","description":"List encryption keys in org/team","operationId":"listKeysInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id}":{"get":{"tags":["Encryption Keys"],"summary":"List artifacts for encryption key in org/team","description":"List artifacts for encryption key in org/team","operationId":"listArtifactsForKeyInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifactType","in":"query","description":"Artifact type","required":false,"schema":{"type":"string","format":"UTF-8","default":"MODEL","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Encryption Keys"],"summary":"Revoke encryption key in org/team","description":"Revoke encryption key and disassociate from all artifacts in org/team","operationId":"deleteKeyFromTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/artifact-registry/org/{org-name}/encryption-keys":{"get":{"tags":["Encryption Keys"],"summary":"List encryption keys in org","description":"List encryption keys in org","operationId":"listKeysInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id}":{"get":{"tags":["Encryption Keys"],"summary":"List artifacts for encryption key in org","description":"List artifacts for encryption key in org","operationId":"listArtifactsForKeyInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"query","description":"Artifact type","required":false,"schema":{"type":"string","format":"UTF-8","default":"MODEL","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Encryption Keys"],"summary":"Revoke encryption key in org","description":"Revoke encryption key and disassociate from all artifacts in org","operationId":"deleteKeyFromOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/health":{"get":{"tags":["Health"],"summary":"Web Service Health Status","description":"Used to check the health status of the web service only","operationId":"status","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/health/all":{"get":{"tags":["Health"],"summary":"All Service Health Status","description":"Used to get health status of all services","operationId":"statusDetails","parameters":[{"name":"showDetails","in":"query","description":"boolean value to indicating to show details or not","required":false,"schema":{"type":"boolean"}},{"name":"secret","in":"query","description":"secret value that validates the call in order to show details","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/health/**":{"get":{"tags":["Health"],"summary":"Get Health Information","description":"Get Health Information about this service","operationId":"getHealth","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthComponent"}}}}},"x-ssa-scopes":[]}},"/v1/org/{orgName}/{artifactType}/{artifactName}/purge":{"delete":{"tags":["Artifacts"],"summary":"Purge Search DB","description":"Purge Search DB for deleted artifacts","operationId":"purgeDeletedArtifact","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","purgeArtifact"]}],"x-ssa-scopes":["kas","purgeArtifact"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/purge":{"delete":{"tags":["Artifacts"],"summary":"Purge Search DB","description":"Purge Search DB for deleted artifacts","operationId":"purgeDeletedArtifact_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","purgeArtifact"]}],"x-ssa-scopes":["kas","purgeArtifact"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}":{"delete":{"tags":["Artifact Versions"],"summary":"Delete a artifact version in org","description":"Delete a artifact version in org","operationId":"deleteArtifactVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifactVersion"]}],"x-ssa-scopes":["deleteArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}":{"delete":{"tags":["Artifact Versions"],"summary":"Delete a artifact version in team","description":"Delete a artifact version in team","operationId":"deleteArtifactVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifactVersion"]}],"x-ssa-scopes":["deleteArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key":{"delete":{"tags":["Models"],"summary":"Disassociate encryption key from model in team","description":"Disassociate encryption key from model in team and mark it for offline deletion","operationId":"disassociateKeyFromModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/models/{model-name}/encryption-key":{"delete":{"tags":["Models"],"summary":"Disassociate encryption key from model in org","description":"Disassociate encryption key from model in org and mark it for offline deletion","operationId":"disassociateKeyFromModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}}},"components":{"schemas":{"AsyncCloneArtifactVersionFilesRequest":{"type":"object","description":"Request to asynchronously clone artifact version files. Artifact type, target artifact name, version, org, and team are provided via URL path parameters.","properties":{"sourceArtifact":{"$ref":"#/components/schemas/CloneableArtifact","description":"Cloneable Artifact Parameters object"},"uploadPending":{"type":"boolean","description":"Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'."}},"required":["sourceArtifact"]},"CloneableArtifact":{"type":"object","description":"Cloneable Artifact Parameters object","properties":{"name":{"type":"string","description":"Unique name of the artifact"},"org":{"type":"string","description":"Name of the org that the artifact belongs to"},"team":{"type":"string","description":"Name of the team that the artifact belongs to"},"version":{"type":"string","description":"ID of the version or tag"}},"required":["name","org","version"]},"RequestStatus":{"type":"object","description":"Request status information","properties":{"statusCode":{"type":"string","description":"Describes response status reported by the server.","enum":["UNKNOWN","SUCCESS","UNAUTHORIZED","PAYMENT_REQUIRED","FORBIDDEN","TIMEOUT","EXISTS","NOT_FOUND","INTERNAL_ERROR","INVALID_REQUEST","INVALID_REQUEST_VERSION","INVALID_REQUEST_DATA","METHOD_NOT_ALLOWED","CONFLICT","UNPROCESSABLE_ENTITY","TOO_MANY_REQUESTS","INSUFFICIENT_STORAGE","SERVICE_UNAVAILABLE"]},"statusDescription":{"type":"string","description":"Status description"},"requestId":{"type":"string","description":"Request ID"},"serverId":{"type":"string","description":"Server ID"}}},"Response":{"type":"object","properties":{"requestStatus":{"$ref":"#/components/schemas/RequestStatus","description":"Request status information"}}},"WorkflowStatusUrlResponse":{"type":"object","description":"Response containing workflow status URL and ID","properties":{"statusUrl":{"type":"string","description":"URL to check the workflow status"},"workflowId":{"type":"string","description":"ID of the workflow"},"requestStatus":{"$ref":"#/components/schemas/RequestStatus","description":"Request status information"}}},"MultipartUploadCompleteRequest":{"type":"object","description":"Request body for completing a multipart upload for artifacts","properties":{"name":{"type":"string","description":"Name of the artifact"},"version":{"type":"string","description":"Artifact version"},"artifactType":{"type":"string","description":"Type of artifact"},"filePath":{"type":"string","description":"The file path for the artifact upload"},"uploadID":{"type":"string","description":"The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema"},"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the entire file"}},"required":["artifactType","filePath","name","sha256","uploadID","version"]},"CloneArtifactVersionFilesRequest":{"type":"object","description":"Request to clone artifact version files","properties":{"artifactType":{"type":"string","description":"Artifact type","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"]},"sourceArtifact":{"$ref":"#/components/schemas/CloneableArtifact","description":"Cloneable Artifact Parameters object"},"targetArtifact":{"$ref":"#/components/schemas/CloneableArtifact","description":"Cloneable Artifact Parameters object"},"uploadPending":{"type":"boolean","description":"Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'."}},"required":["artifactType","sourceArtifact","targetArtifact"]},"AIPlaygroundUpdateRequest":{"type":"object","description":"Request to update an AI Playground config","properties":{"nvcfFunctionId":{"type":"string","description":"NVCF function id for the model playground"},"attributes":{"type":"string","description":"Metadata json string"},"openAPISpec":{"type":"string","description":"OpenAPI specification for this model"}}},"AIPlaygroundResponse":{"type":"object","description":"Request to fetch an AI Playground config","properties":{"artifactName":{"type":"string","description":"Unique name of the model"},"artifactType":{"type":"string","description":"ArtifactTypeEnum of the artifact"},"namespace":{"type":"string","description":"org/team of the model"},"nvcfFunctionId":{"type":"string","description":"NVCF function id for the model playground"},"attributes":{"type":"string","description":"Metadata json string"},"openAPISpec":{"type":"string","description":"OpenAPI specification for this model"},"createdDate":{"type":"string","description":"Creation date in ISO-8601 format","pattern":"\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z"},"updatedDate":{"type":"string","description":"Updated date in ISO-8601 format","pattern":"\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z"}}},"ArtifactPublishRequest":{"type":"object","description":"Request to publish an artifact","properties":{"canGuestPull":{"type":"boolean"},"canPublicList":{"type":"boolean"},"isPublic":{"type":"boolean"},"productNames":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"accessType":{"type":"string","enum":["LISTED","EXCLUSIVE","NOT_LISTED"]},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"ConfiguredLicenseTerm":{"type":"object","description":"License information for the artifact","properties":{"artifactType":{"type":"string","description":"Artifact type","example":"model","maxLength":15,"pattern":"^[\\s\\S]*$"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/LicenseTag"}},"generatedHtml":{"type":"string","description":"Generated html","example":"

GOVERNING HOSTING TERMS: ...

","maxLength":9999,"pattern":"^[\\s\\S]*$"}}},"ConfiguredLicenseTerms":{"type":"object","description":"License information for the artifact","properties":{"hosting":{"$ref":"#/components/schemas/ConfiguredLicenseTerm","description":"License information for the artifact"},"download":{"$ref":"#/components/schemas/ConfiguredLicenseTerm","description":"License information for the artifact"}}},"LicenseMetadata":{"type":"object","description":"License information for the artifact","properties":{"licenseId":{"type":"string","description":"License ID","example":"NVIDIA proprietary","maxLength":100,"pattern":"^[\\s\\S]*$"},"licenseVersion":{"type":"string","description":"License version ID","example":"v1.0","maxLength":100,"pattern":"^[\\s\\S]*$"},"needsAcceptance":{"type":"boolean","description":"Indicator if user needs to accept this license"},"governingTerms":{"type":"string","description":"Comprehensive terms and links related to the license","example":"

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

","maxLength":1000,"pattern":"^[\\s\\S]*$"},"configuredLicenseTerms":{"$ref":"#/components/schemas/ConfiguredLicenseTerms","description":"License information for the artifact"}}},"LicenseTag":{"type":"object","description":"License tag information for individual term","properties":{"key":{"type":"string","description":"Key identifier for the tag","example":"nv-open-model","maxLength":100,"pattern":"^[\\s\\S]*$"},"category":{"type":"string","description":"Category of the tag","example":"terms","maxLength":100,"pattern":"^[\\s\\S]*$"},"tag":{"type":"string","description":"License tag name","example":"Model Agreement","maxLength":100,"pattern":"^[\\s\\S]*$"},"url":{"type":"string","description":"Link to the hosted license","example":"https://www.nvidia.com/.../nvidia-open-model-agreement/","maxLength":1000,"pattern":"^[\\s\\S]*$"},"label":{"type":"string","description":"License Label","example":"NVIDIA Open Model Agreement","maxLength":100,"pattern":"^[\\s\\S]*$"}}},"UpdateReleaseTypeRequest":{"type":"object","description":"Request to update release type of an artifact version","properties":{"version":{"type":"string","description":"Artifact version"},"releaseType":{"type":"string","description":"Release type enum for the artifact version in the product lifecycle.","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"]}},"required":["version"]},"ArtifactAttribute":{"type":"object","description":"Attribute on the artifact","properties":{"key":{"type":"string","maxLength":255,"pattern":"[a-zA-Z0-9]+"},"value":{"type":"string","maxLength":255}}},"ArtifactUpdateRequest":{"type":"object","description":"Properties for the artifact to update","properties":{"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the artifact"},"shortDescription":{"type":"string","description":"Short description of the artifact","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":128,"minLength":2},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the artifact","maxLength":255},"publisher":{"type":"string","description":"organization that published the artifact","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"CollectionPublishRequest":{"type":"object","description":"Request to publish a collection","properties":{"canGuestPull":{"type":"boolean"},"canPublicList":{"type":"boolean"},"isPublic":{"type":"boolean"},"productNames":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"accessType":{"type":"string","enum":["LISTED","EXCLUSIVE","NOT_LISTED"]}}},"MultipartUploadCreateRequest":{"type":"object","description":"Request body for creating a multipart upload for artifacts","properties":{"name":{"type":"string","description":"Name of the artifact"},"version":{"type":"string","description":"Artifact version"},"artifactType":{"type":"string","description":"Type of artifact"},"filePath":{"type":"string","description":"The file path for the artifact upload"},"size":{"type":"integer","format":"int64","description":"total size of the artifact, in bytes"},"customPartSize":{"type":"integer","format":"int64","description":"Custom chunk size of the file to be uploaded, in bytes. should be >= 5MB and <= 500MB. default is 500 in MB."},"uploadID":{"type":"string","description":"Upload id of an already initiated Multipart upload"},"partNumberList":{"type":"array","items":{"type":"integer","format":"int32"}},"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the artifact file to be uploaded"}},"required":["artifactType","filePath","name","size","version"]},"AIPlaygroundCreateRequest":{"type":"object","description":"Request to create a new AI Playground config","properties":{"artifactName":{"type":"string","description":"Unique name of the model"},"nvcfFunctionId":{"type":"string","description":"NVCF function id for the model playground"},"attributes":{"type":"string","description":"Metadata json string"},"openAPISpec":{"type":"string","description":"OpenAPI specification for this model"}},"required":["artifactName","nvcfFunctionId"]},"DeploymentArtifactParameters":{"type":"object","description":"Deployment Artifact Parameters object","properties":{"artifactType":{"type":"string","description":"Artifact type","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"]},"name":{"type":"string","description":"Unique name of the artifact"},"displayName":{"type":"string","description":"Display name of the artifact"},"orgName":{"type":"string","description":"Name of the org that the artifact belongs to"},"teamName":{"type":"string","description":"Name of the team that the artifact belongs to"},"versionId":{"type":"string","description":"ID of the version or tag"},"filePath":{"type":"string","description":"Path to a file in an artifact version"}},"required":["name","orgName"]},"DeploymentCpuParameters":{"type":"object","description":"Deployment CPU Parameters object","properties":{"count":{"type":"integer","format":"int64","description":"Total count of CPUs"}}},"DeploymentGpuParameters":{"type":"object","description":"Deployment GPU Parameters object","properties":{"count":{"type":"integer","format":"int64","description":"Total count of GPUs"},"type":{"type":"string","description":"GPU Type"}}},"DeploymentMemoryParameters":{"type":"object","description":"Deployment Memory Parameters object","properties":{"capacityInGB":{"type":"integer","format":"int64","description":"Capacity in GB"}}},"DeploymentStorageParameters":{"type":"object","description":"Deployment Storage Parameters object","properties":{"capacityInGB":{"type":"integer","format":"int64","description":"Capacity in GB"}}},"DeploymentUrlCreateRequest":{"type":"object","description":"Request to create a new deployment url","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParameters","description":"Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParameters","description":"Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParameters","description":"Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParameters","description":"Deployment Storage Parameters object"},"container":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"model":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"resource":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"}}},"DeploymentParametersCreateRequest":{"type":"object","description":"Request to create a new deployment parameters","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParameters","description":"Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParameters","description":"Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParameters","description":"Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParameters","description":"Deployment Storage Parameters object"},"container":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"model":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"resource":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"}}},"AcceptArtifactLicenseRequest":{"type":"object","description":"Request body to accept an org-scoped artifact license.","properties":{"licenseId":{"type":"string","description":"License identifier to accept (must match a licenseId from the artifact's published licenseTerms).","example":"NVIDIA Proprietary","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$"},"licenseVersion":{"type":"string","description":"License version to accept (must match licenseVersion for that license on the artifact).","example":1.0,"maxLength":128,"minLength":1,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$"}},"required":["licenseId","licenseVersion"]},"ArtifactFileChecksumToValidate":{"type":"object","description":"Artifact file checksum object in request to validate artifact file checksum exists or not","properties":{"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the artifact file"}},"required":["sha256"]},"ArtifactFilesChecksumExistsRequest":{"type":"object","description":"File checksums","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactFileChecksumToValidate"}}}},"ArtifactCreateRequest":{"type":"object","description":"Properties for the artifact to create","properties":{"name":{"type":"string","description":"Unique name of the artifact","maxLength":250,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the artifact"},"shortDescription":{"type":"string","description":"Short description of the artifact","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":128,"minLength":2},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the artifact","maxLength":255},"publisher":{"type":"string","description":"organization that published the artifact","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}},"required":["name","shortDescription"]},"CustomMetric":{"type":"object","description":"Custom metrics","properties":{"key":{"type":"string","maxLength":255},"value":{"type":"string","maxLength":255}}},"CustomMetricGroup":{"type":"object","description":"Defines the group of custom metrics.","properties":{"name":{"type":"string","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetric"}}}},"RecipeVersionCreateRequest":{"type":"object","description":"Properties for the recipe version to be created","properties":{"id":{"type":"integer","format":"int64","description":"Deprecated: Please use version instead. Unique ID of the version","maximum":2147483647,"minimum":1},"versionId":{"type":"string","description":"Unique version id. Please use this instead of 'id'","maxLength":255,"pattern":"[^/]+"},"description":{"type":"string","description":"Description of the recipe version"},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this recipe reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this recipe trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this recipe was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Recipe size/memory footprint for inference","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"releaseNotes":{"type":"string","description":"Text describing this release"},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"Dataset":{"type":"object","properties":{"name":{"type":"string","description":"Name of the dataset","maxLength":255},"link":{"type":"string","description":"Link to the dataset","maxLength":255},"license":{"type":"string","description":"License of the dataset","maxLength":255}}},"RecipeCreateRequest":{"type":"object","description":"Properties for the recipe to create","properties":{"name":{"type":"string","description":"Unique name of the recipe","maxLength":128,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"trainingFramework":{"type":"string","enum":["TensorFlow","Caffe2","CNTK","Torch","PyTorch","MXNet","Keras","Other","TransferLearningToolkit","TensorFlow2"]},"modelFormat":{"type":"string","description":"Format of the model this recipe produces","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the recipe"},"shortDescription":{"type":"string","description":"Short description of the recipe","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"advanced":{"type":"string","description":"Text for describing advanced information"},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","enum":["FP16","FP32","INT8","FPBOTH","OTHER","ALL"]},"application":{"type":"string","enum":["CLASSIFICATION","OBJECT_DETECTION","SEGMENTATION","TRANSLATION","TEXT_TO_SPEECH","RECOMMENDER","SENTIMENT","NLP","KUBEFLOW_PIPELINE","OTHER","SPEAKER_VERIFICATION","PUNCTUATION_AND_CAPITALIZATION","DIALOG_STATE_TRACKING","SPEAKER_DIARIZATION","SPEAKER_RECOGNITION","SPEECH_SYNTHESIS","VOICE_ACTIVITY_DETECTION","SPEECH_RECOGNITION","LANGUAGE_MODELING","NAMED_ENTITY_RECOGNITION","TEXT_CLASSIFICATION","TEXT_PROCESSING","QUESTION_ANSWERING","CONTENT_GENERATION"]},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the recipe","maxLength":255},"publisher":{"type":"string","description":"organization that published the recipe","maxLength":255},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}},"required":["application","modelFormat","name","precision","publicDatasetUsed","shortDescription","trainingFramework"]},"EncryptionKey":{"type":"object","description":"Customer Managed Key shard configuration for the model","properties":{"useExistingKey":{"type":"boolean","description":"Whether to use an existing customer key shard or should a new one be created"},"encryptionKeyId":{"type":"string","description":"ID of the existing customer key shard to use"},"description":{"type":"string","description":"Description for a new customer key shard"}},"required":["useExistingKey"]},"ModelCreateRequest":{"type":"object","description":"Properties for the models to be created","properties":{"name":{"type":"string","description":"Unique name of the model","maxLength":128,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"description":{"type":"string","description":"Description of the model"},"ownerName":{"type":"string","description":"Name of the user who owns this model","maxLength":255},"framework":{"type":"string","description":"Framework used to train this model","maxLength":255},"modelFormat":{"type":"string","description":"Format of the model","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"shortDescription":{"type":"string","description":"Short description of the model","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","description":"Precision this model was trained with","maxLength":255},"application":{"type":"string","description":"Application of the model","maxLength":255},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the repository","maxLength":255},"publisher":{"type":"string","description":"organization that published the repository","maxLength":255},"hasPlayground":{"type":"boolean","description":"indicate if the Model has AI Playground configured"},"isPlaygroundEnabled":{"type":"boolean","description":"indicate if AI Playground is enabled in the catalog"},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}},"encryptionKey":{"$ref":"#/components/schemas/EncryptionKey","description":"Customer Managed Key shard configuration for the model"}},"required":["framework","name","precision"]},"MetaData":{"type":"object","properties":{"key":{"type":"string","maxLength":255},"value":{"type":"string","maxLength":255}}},"ModelVersionCreateRequest":{"type":"object","description":"Properties for the model version to be created","properties":{"id":{"type":"integer","format":"int64","description":"Deprecated: Please use version instead. Unique ID of the version","maximum":2147483647,"minimum":1},"versionId":{"type":"string","description":"Unique version id. Please use this instead of 'id'","maxLength":255,"pattern":"[^/]+"},"description":{"type":"string","description":"Description of the model version","maxLength":255},"ownerName":{"type":"string","description":"Name of the user who owns this version","maxLength":255},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this model reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this model trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this model was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Model size/memory footprint for inference","maxLength":255},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"nvcfContainerConfiguration":{"$ref":"#/components/schemas/NvcfContainerConfiguration","description":"NVCF container configuration parameters"},"nvcfDeploymentSpecification":{"$ref":"#/components/schemas/NvcfDeploymentSpecification","description":"NVCF deployment specification"},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"NvcfContainerConfiguration":{"type":"object","description":"NVCF container configuration parameters","properties":{"inferenceUrl":{"type":"string","description":"Inference url"},"inferencePort":{"type":"string","description":"Inference port"},"healthUri":{"type":"string","description":"Health URI"},"containerImage":{"type":"string","description":"Container Image"},"containerArgs":{"type":"string","description":"Container arguments"},"apiBodyFormat":{"type":"string","description":"API body format"},"models":{"type":"array","items":{"$ref":"#/components/schemas/NvcfContainerModel"}},"containerEnvironment":{"type":"array","items":{"$ref":"#/components/schemas/MetaData"}}}},"NvcfContainerModel":{"type":"object","description":"Models version object metadata","properties":{"name":{"type":"string","description":"Model name"},"version":{"type":"string","description":"Model version"},"uri":{"type":"string","description":"Model URI"}}},"NvcfDeploymentSpecification":{"type":"object","description":"NVCF deployment specification","properties":{"gpuType":{"type":"string","description":"GPU type"},"gpuCount":{"type":"integer","format":"int32","description":"GPU count"},"instanceType":{"type":"string","description":"Instance type"},"maxConcurrency":{"type":"integer","format":"int32","description":"Maximum concurrency"}}},"CollectionCreateRequest":{"type":"object","description":"Properties for the collections to be created","properties":{"name":{"type":"string","description":"Unique name of the collection","maxLength":128,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the collection"},"shortDescription":{"type":"string","description":"Short description of the collection","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"ownerName":{"type":"string","description":"Name of the user who owns this collection","maxLength":255},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the collection"},"publisher":{"type":"string","description":"organization that published the collection","maxLength":255},"category":{"type":"string","enum":["HEALTHCARE","SMART_CITIES","RETAIL","MANUFACTURING","SUPERCOMPUTING","ROBOTICS","AUTOMOTIVE","TELECOMMUNICATIONS","FINANCE","OIL_AND_GAS","NATURAL_LANGUAGE_PROCESSING","AUTOMATIC_SPEECH_RECOGNITION","INTELLIGENT_VIDEO_ANALYTICS","OBJECT_DETECTION","IMAGE_CLASSIFICATION","ANNOTATION","IMAGE_SYNTHESIS","MACHINE_LEARNING","DEEP_LEARNING","INFRASTRUCTURE","HIGH_PERFORMANCE_COMPUTING","WINDOWS_RTX_ACCELERATED_MODELS","BEGINNER","ADVANCED"]},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}},"required":["category","name","shortDescription"]},"ArtifactFileCommitMetadata":{"type":"object","properties":{"commitType":{"type":"string","enum":["ADDITION","DELETION"]},"filePath":{"type":"string","description":"Artifact file path"},"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the artifact file. Required for addition and not required for deletion"}},"required":["commitType","filePath"]},"ArtifactFilesCommitRequest":{"type":"object","description":"Artifact files to be committed","properties":{"name":{"type":"string","description":"Artifact name"},"artifactType":{"type":"string","description":"Artifact type - could be either model or resource"},"version":{"type":"string","description":"Artifact version"},"baseVersion":{"type":"string","description":"Artifact version that the commit is based on"},"files":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactFileCommitMetadata"}}},"required":["artifactType","name","version"]},"MalwareScanNotification":{"type":"object","properties":{"uuid":{"type":"string"},"tenant":{"type":"string"},"contact":{"type":"string"},"nspect_id":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}},"NotifyMalwareScanResultResponse":{"type":"object","description":"Notify malware scan result response","properties":{"status":{"type":"string","description":"Malware scan status","enum":["NOT_SCANNED","IN_PROGRESS","CLEAN","SUSPICIOUS","FAILED","MALICIOUS"]}}},"GpuByPciCreateRequest":{"type":"object","description":"GPU by PCI properties","properties":{"pciDeviceId":{"type":"string","description":"PCI Device ID"},"pciVendorId":{"type":"string","description":"PCI Vendor ID"},"pciSubsystemDeviceId":{"type":"string","description":"PCI Subsystem Device ID"},"labelName":{"type":"string","description":"Label name for the GPU"},"displayName":{"type":"string","description":"Display name for the GPU"},"cudaMajorVersion":{"type":"string","description":"CUDA major version"},"cudaMinorVersion":{"type":"string","description":"CUDA minor version"},"memorySizeGb":{"type":"integer","format":"int32","description":"Memory size in GB (smallint range)","maximum":32767,"minimum":0},"formFactor":{"type":"string","description":"GPU form factor"},"gpuCounts":{"type":"array","items":{"type":"integer","format":"int32","maximum":255,"minimum":0},"uniqueItems":true}},"required":["displayName","pciDeviceId"]},"CloudServiceProviderCreateRequest":{"type":"object","description":"Request to create a new Cloud Service Provider","properties":{"name":{"type":"string","description":"Unique name of the Cloud Service Provider"},"displayName":{"type":"string","description":"Display name of the Cloud Service Provider"},"description":{"type":"string","description":"Description of the Cloud Service Provider"},"isEnabled":{"type":"boolean","description":"Determines if this Cloud Service Provider is enabled"},"logo":{"type":"string","description":"URL for the logo image"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"labels":{"type":"array","items":{"type":"string"}}},"required":["name"]},"CountableResource":{"type":"object","description":"Countable Resource object","properties":{"minValue":{"type":"integer","format":"int64","description":"Minimum value"},"maxValue":{"type":"integer","format":"int64","description":"Maximum value"},"defaultValue":{"type":"integer","format":"int64","description":"Deprecated: Default value. Please use actual CloudServiceProvider values instead"}}},"DeploymentCpuParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment CPU Parameters object","properties":{"count":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"}},"required":["count"]},"DeploymentGpuParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment GPU Parameters object","properties":{"count":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"},"type":{"$ref":"#/components/schemas/EnumerableResource","description":"Enumerable Resource object"}},"required":["type"]},"DeploymentMemoryParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment Memory Parameters object","properties":{"capacityInGB":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"}},"required":["capacityInGB"]},"DeploymentParametersMetaCreateRequest":{"type":"object","description":"Properties for the cloud service provider deployment parameters meta to create","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParametersMeta","description":"Cloud Service Provider Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParametersMeta","description":"Cloud Service Provider Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParametersMeta","description":"Cloud Service Provider Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParametersMeta","description":"Cloud Service Provider Deployment Storage Parameters object"}},"required":["gpu","storage"]},"DeploymentStorageParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment Storage Parameters object","properties":{"capacityInGB":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"}},"required":["capacityInGB"]},"EnumerableResource":{"type":"object","description":"Enumerable Resource object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EnumerableResourceItem"}},"defaultItemName":{"type":"string","description":"Deprecated: Default item name. Please use actual CloudServiceProvider values instead"}}},"EnumerableResourceItem":{"type":"object","description":"Enumerable Resource Item object","properties":{"name":{"type":"string","description":"Name"},"displayName":{"type":"string","description":"Display name"},"logo":{"type":"string","description":"Logo URL"}}},"UpdateArtifactVersionConfigs":{"type":"object","description":"Request to publish an artifact","properties":{"policy":{"type":"array","items":{"type":"string","enum":["GOV_READY","FedRAMP"]}}}},"DeploymentParametersUpdateRequest":{"type":"object","description":"Request to update existing deployment parameters","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParameters","description":"Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParameters","description":"Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParameters","description":"Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParameters","description":"Deployment Storage Parameters object"},"container":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"model":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"resource":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"}}},"RecipeVersionUpdateRequest":{"type":"object","description":"Version properties to update","properties":{"status":{"type":"string","description":"Version status","enum":["UPLOAD_PENDING","UPLOAD_COMPLETE"]},"description":{"type":"string","description":"Description of the recipe version"},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this recipe reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this recipe trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this recipe was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Recipe size/memory footprint for inference","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"releaseNotes":{"type":"string","description":"Text describing this release"},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"ModelSimplified":{"type":"object","description":"Model object","properties":{"name":{"type":"string","description":"Unique name of the model"},"orgName":{"type":"string","description":"Name of the org that the model belongs to"},"teamName":{"type":"string","description":"Name of the team that the model belongs to"}},"required":["name","orgName"]},"RecipeUpdateRequest":{"type":"object","description":"Properties for the recipe to update","properties":{"trainingFramework":{"type":"string","enum":["TensorFlow","Caffe2","CNTK","Torch","PyTorch","MXNet","Keras","Other","TransferLearningToolkit","TensorFlow2"]},"modelFormat":{"type":"string","description":"Format of the model this recipe produces","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the recipe"},"shortDescription":{"type":"string","description":"Short description of the recipe","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"advanced":{"type":"string","description":"Text for describing advanced information"},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","enum":["FP16","FP32","INT8","FPBOTH","OTHER","ALL"]},"application":{"type":"string","enum":["CLASSIFICATION","OBJECT_DETECTION","SEGMENTATION","TRANSLATION","TEXT_TO_SPEECH","RECOMMENDER","SENTIMENT","NLP","KUBEFLOW_PIPELINE","OTHER","SPEAKER_VERIFICATION","PUNCTUATION_AND_CAPITALIZATION","DIALOG_STATE_TRACKING","SPEAKER_DIARIZATION","SPEAKER_RECOGNITION","SPEECH_SYNTHESIS","VOICE_ACTIVITY_DETECTION","SPEECH_RECOGNITION","LANGUAGE_MODELING","NAMED_ENTITY_RECOGNITION","TEXT_CLASSIFICATION","TEXT_PROCESSING","QUESTION_ANSWERING","CONTENT_GENERATION"]},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the recipe","maxLength":255},"publisher":{"type":"string","description":"organization that published the recipe","maxLength":255},"relatedModels":{"type":"array","items":{"$ref":"#/components/schemas/ModelSimplified"}},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"ModelUpdateRequest":{"type":"object","description":"Properties for the model to update","properties":{"description":{"type":"string","description":"Description of the model"},"ownerName":{"type":"string","description":"Name of the user who owns this model","maxLength":255},"framework":{"type":"string","description":"Framework used to train this model","maxLength":255},"modelFormat":{"type":"string","description":"Format of the model","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"shortDescription":{"type":"string","description":"Short description of the model","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","description":"Precision this model was trained with","maxLength":255},"hasPlayground":{"type":"boolean","description":"indicate if the Model has AI Playground configured"},"isPlaygroundEnabled":{"type":"boolean","description":"indicate if AI Playground is enabled in the catalog"},"application":{"type":"string","description":"Application of the model","maxLength":255},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the repository","maxLength":255},"publisher":{"type":"string","description":"organization that published the repository","maxLength":255},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"ModelVersionUpdateRequest":{"type":"object","description":"Version properties to update","properties":{"status":{"type":"string","description":"Version status","enum":["UPLOAD_PENDING","UPLOAD_COMPLETE"]},"description":{"type":"string","description":"Description of the model version","maxLength":255},"ownerName":{"type":"string","description":"Name of the user who owns this version","maxLength":255},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this model reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this model trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this model was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Model size/memory footprint for inference","maxLength":255},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"nvcfContainerConfiguration":{"$ref":"#/components/schemas/NvcfContainerConfiguration","description":"NVCF container configuration parameters"},"nvcfDeploymentSpecification":{"$ref":"#/components/schemas/NvcfDeploymentSpecification","description":"NVCF deployment specification"}}},"ArtifactVersionUpdateRequest":{"type":"object","description":"Version properties to update","properties":{"status":{"type":"string","description":"Version status","enum":["UPLOAD_PENDING","UPLOAD_COMPLETE"]},"description":{"type":"string","description":"Description of the artifact version","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"CollectionUpdateRequest":{"type":"object","description":"Properties for the collection to update","properties":{"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the collection"},"shortDescription":{"type":"string","description":"Short description of the collection","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the collection"},"publisher":{"type":"string","description":"organization that published the collection","maxLength":255},"category":{"type":"string","enum":["HEALTHCARE","SMART_CITIES","RETAIL","MANUFACTURING","SUPERCOMPUTING","ROBOTICS","AUTOMOTIVE","TELECOMMUNICATIONS","FINANCE","OIL_AND_GAS","NATURAL_LANGUAGE_PROCESSING","AUTOMATIC_SPEECH_RECOGNITION","INTELLIGENT_VIDEO_ANALYTICS","OBJECT_DETECTION","IMAGE_CLASSIFICATION","ANNOTATION","IMAGE_SYNTHESIS","MACHINE_LEARNING","DEEP_LEARNING","INFRASTRUCTURE","HIGH_PERFORMANCE_COMPUTING","WINDOWS_RTX_ACCELERATED_MODELS","BEGINNER","ADVANCED"]},"ownerName":{"type":"string","description":"Name of the user who owns this collection","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"CollectionOperation":{"type":"object","description":"Collection operation object","properties":{"operation":{"type":"string","description":"Collection operation","maxLength":255},"path":{"type":"string","description":"Path to a collection item in a scoped format","maxLength":255,"pattern":"^(/(?!/)([\\w- %\\.(?!\\.)])+)+$"}}},"CollectionPatchRequest":{"type":"object","description":"Properties for the collection to patch","properties":{"operations":{"type":"array","items":{"$ref":"#/components/schemas/CollectionOperation","maxItems":100},"maxItems":100}}},"GpuByPciUpdateRequest":{"type":"object","description":"GPU by PCI update properties","properties":{"labelName":{"type":"string","description":"Label name for the GPU"},"displayName":{"type":"string","description":"Display name for the GPU"},"cudaMajorVersion":{"type":"string","description":"CUDA major version"},"cudaMinorVersion":{"type":"string","description":"CUDA minor version"},"memorySizeGb":{"type":"integer","format":"int32","description":"Memory size in GB (smallint range)","maximum":32767,"minimum":0},"formFactor":{"type":"string","description":"GPU form factor"},"gpuCounts":{"type":"array","items":{"type":"integer","format":"int32","maximum":255,"minimum":0},"uniqueItems":true}}},"CloudServiceProviderUpdateRequest":{"type":"object","description":"Request to update existing Cloud Service Provider","properties":{"displayName":{"type":"string","description":"Display name of the Cloud Service Provider"},"description":{"type":"string","description":"Description of the Cloud Service Provider"},"isEnabled":{"type":"boolean","description":"Determines if this Cloud Service Provider is enabled"},"logo":{"type":"string","description":"URL for the logo image"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"labels":{"type":"array","items":{"type":"string"}}}},"DeploymentParametersMetaUpdateRequest":{"type":"object","description":"Properties for the cloud service provider deployment parameters meta to create","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParametersMeta","description":"Cloud Service Provider Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParametersMeta","description":"Cloud Service Provider Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParametersMeta","description":"Cloud Service Provider Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParametersMeta","description":"Cloud Service Provider Deployment Storage Parameters object"}}},"HealthComponent":{"type":"object","properties":{"description":{"type":"string"},"status":{"type":"string"}}},"MultipartUploadAbortRequest":{"type":"object","description":"Request body for aborting a multipart upload for artifacts","properties":{"name":{"type":"string","description":"Name of the artifact"},"version":{"type":"string","description":"Artifact version"},"artifactType":{"type":"string","description":"Type of artifact"},"filePath":{"type":"string","description":"The file path for the artifact upload"},"uploadID":{"type":"string","description":"The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema"}},"required":["artifactType","filePath","name","uploadID","version"]}},"securitySchemes":{"authn":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"authn.nvidia.com/token","scopes":{}}}},"ssa":{"type":"oauth2","description":"A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725","flows":{"clientCredentials":{"tokenUrl":"https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token","scopes":{"kas":"{scope}","getPublicFlags":"{scope}","publishArtifact":"{scope}","undoPublishArtifact":"{scope}","helmProxy":"{scope}","undoPublishCollection":"{scope}","publishCollection":"{scope}","recreateArtifactVersionZip":"{scope}","cloneArtifact":"{scope}"}}}}}}} \ No newline at end of file diff --git a/provider-dev/scripts/clean_specs.mjs b/provider-dev/scripts/clean_specs.mjs new file mode 100644 index 0000000..e09e7c8 --- /dev/null +++ b/provider-dev/scripts/clean_specs.mjs @@ -0,0 +1,138 @@ +#!/usr/bin/env node + +// Normalize and validate every downloaded spec, writing cleaned copies to +// provider-dev/downloaded/cleaned/ and a full fix report to +// provider-dev/config/clean_report.json. +// +// All repairs are deterministic rules keyed by source file - never hand +// edits. Validation is @apidevtools/swagger-parser; if any spec still fails +// validation after the rules run, the script reports every error and exits +// without writing anything. +// +// Usage: node provider-dev/scripts/clean_specs.mjs + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import SwaggerParser from '@apidevtools/swagger-parser'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const downloadDir = path.join(repoRoot, 'provider-dev', 'downloaded'); +const cleanedDir = path.join(downloadDir, 'cleaned'); +const manifestPath = path.join(downloadDir, 'download_manifest.json'); +const reportPath = path.join(repoRoot, 'provider-dev', 'config', 'clean_report.json'); + +if (!fs.existsSync(manifestPath)) { + console.error(`Error: ${manifestPath} not found - run fetch-specs first`); + process.exit(1); +} +const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8')); + +// --------------------------------------------------------------------------- +// Repair rules. Each rule: { name, applies(file, spec), fix(spec) -> note }. +// A rule that applies must return a human-readable note of what it changed. +// --------------------------------------------------------------------------- + +const RULES = [ + { + name: 'stamp-missing-version-field', + applies: (file, spec) => !spec.info || !spec.info.version, + fix: (spec) => { + spec.info = spec.info || {}; + spec.info.version = '0.0.0'; + return 'info.version was absent (the explorer definition lacks a standard version field); stamped 0.0.0'; + } + }, + { + name: 'repair-relative-server', + applies: (file, spec) => { + const urls = (spec.servers || []).map((s) => s.url); + return urls.length === 0 || urls.every((u) => !/^https?:\/\//.test(u)); + }, + fix: (spec, file) => { + const host = SERVER_BY_SOURCE[file]; + if (!host) throw new Error(`no server repair mapping for ${file} - add one to SERVER_BY_SOURCE`); + const before = JSON.stringify(spec.servers || []); + spec.servers = [{ url: host }]; + return `servers ${before} is relative/absent; set to ${host} (the host the definition is served from)`; + } + } +]; + +// server assignment for definitions that declare no absolute server; the +// value is the public gateway the definition is served from +const SERVER_BY_SOURCE = { + 'ngc_kas.json': 'https://api.ngc.nvidia.com' +}; + +// --------------------------------------------------------------------------- +// Clean + validate every manifest file (in memory first; write only if all +// specs validate) +// --------------------------------------------------------------------------- + +const report = { generated: new Date().toISOString().slice(0, 10), sources: {} }; +const cleaned = new Map(); // file -> spec object +let hasErrors = false; + +for (const file of Object.keys(manifest.files || {}).sort()) { + const abs = path.join(downloadDir, file); + if (!fs.existsSync(abs)) { + console.error(`Error: manifest lists ${file} but it is not present`); + hasErrors = true; + continue; + } + const spec = JSON.parse(fs.readFileSync(abs, 'utf8')); + const fixes = []; + const notes = []; + + if (spec.info?.version && /SNAPSHOT/i.test(spec.info.version)) { + notes.push(`info.version is a placeholder (${spec.info.version}); left as-is`); + } + + for (const rule of RULES) { + if (rule.applies(file, spec)) { + fixes.push({ rule: rule.name, note: rule.fix(spec, file) }); + } + } + + // validate a deep copy - swagger-parser dereferences in place + const validationErrors = []; + try { + await SwaggerParser.validate(structuredClone(spec)); + } catch (e) { + validationErrors.push(e.message); + } + + report.sources[file] = { + openapi: spec.openapi || spec.swagger, + title: spec.info?.title ?? null, + version: spec.info?.version ?? null, + paths: Object.keys(spec.paths || {}).length, + fixes, + notes, + validation: validationErrors.length === 0 ? 'clean' : validationErrors + }; + + if (validationErrors.length > 0) { + console.error(`${file}: FAILS validation after repairs:`); + for (const err of validationErrors) console.error(` ${err.split('\n').slice(0, 8).join('\n ')}`); + hasErrors = true; + } else { + console.log(`${file}: valid (${fixes.length} fix(es), ${notes.length} note(s))`); + cleaned.set(file, spec); + } +} + +if (hasErrors) { + console.error('Clean FAILED - nothing written. Add deterministic repair rules for the errors above.'); + process.exit(1); +} + +fs.mkdirSync(cleanedDir, { recursive: true }); +fs.mkdirSync(path.dirname(reportPath), { recursive: true }); +for (const [file, spec] of cleaned) { + fs.writeFileSync(path.join(cleanedDir, file), JSON.stringify(spec, null, 2) + '\n'); +} +fs.writeFileSync(reportPath, JSON.stringify(report, null, 2) + '\n'); +console.log(`Cleaned ${cleaned.size} spec(s) -> ${cleanedDir}`); +console.log(`Fix report -> ${reportPath}`); diff --git a/provider-dev/scripts/harvest_ngc_spec.mjs b/provider-dev/scripts/harvest_ngc_spec.mjs new file mode 100644 index 0000000..313759b --- /dev/null +++ b/provider-dev/scripts/harvest_ngc_spec.mjs @@ -0,0 +1,146 @@ +#!/usr/bin/env node + +// Harvest the NGC API definitions behind the API explorer at +// https://docs.ngc.nvidia.com/api/. +// +// The explorer is a swagger-ui bundle over a hardcoded list of per-service +// OpenAPI definition URLs. This script: +// 1. fetches the explorer HTML and locates the main JS bundle +// 2. extracts the {url, name} definition list from the bundle +// 3. fetches every in-scope definition and writes it to +// provider-dev/downloaded/ngc_.json +// 4. records every entry (fetched / unreachable / out-of-scope) with +// evidence in download_manifest.json +// +// Fails without writing if the explorer page, the bundle, the definition +// list, or any REQUIRED in-scope definition cannot be retrieved. In-scope +// definitions marked optional: true are services whose hosts are not +// publicly routable (recorded as unreachable evidence for the +// harvest-vs-fallback decision rather than failing the build). +// +// Usage: node provider-dev/scripts/harvest_ngc_spec.mjs + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const EXPLORER_URL = 'https://docs.ngc.nvidia.com/api/'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const downloadDir = path.join(repoRoot, 'provider-dev', 'downloaded'); +const manifestPath = path.join(downloadDir, 'download_manifest.json'); + +// Scope decision per explorer entry (keyed by the display name in the +// bundle). Out-of-scope reasons follow the sibling scope notes in CLAUDE.md. +const SCOPE = { + 'Private Artifacts (Models) API': { key: 'models', inScope: true, note: 'registry artifact metadata (models, resources, containers, helm charts)' }, + 'KASv1 API (Deprecated)': { key: 'kas', inScope: true, note: 'the NGC API Documentation definition (orgs, teams, users) - explorer labels it KASv1 (Deprecated); deprecation is handled per path in mapping' }, + 'Org Mgmt Service API': { key: 'oms', inScope: true, optional: true, note: 'organization management' }, + 'User IAM Sevice API': { key: 'uis', inScope: true, optional: true, note: 'user identity and access management (name spelled sic in the explorer)' }, + 'Search API': { key: 'search', inScope: true, optional: true, note: 'catalog/registry search' }, + 'Metadata API': { key: 'meta', inScope: true, optional: true, note: 'artifact metadata' }, + 'Publishing API': { key: 'publishing', inScope: true, optional: true, note: 'artifact publishing' }, + 'Fleet Command API': { key: 'ecm', inScope: false, note: 'Fleet Command is its own product surface, out of scope' }, + 'Batch API': { key: 'batch', inScope: false, note: 'Base Command batch jobs, out of scope' }, + 'Subscription Service API': { key: 'subscription', inScope: false, note: 'subscription/billing surface - candidate usage service, host not publicly routable; revisit if reachable' }, + 'Notification Service API': { key: 'notification', inScope: false, note: 'notification delivery, out of scope' } +}; + +async function fetchText(url, timeoutMs = 60000) { + const res = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) }); + if (!res.ok) throw new Error(`HTTP ${res.status} from ${url}`); + return res.text(); +} + +// 1. explorer HTML -> bundle path +const html = await fetchText(EXPLORER_URL); +const bundleMatch = html.match(/src="(\.\/static\/js\/main\.[0-9a-f]+\.js)"/); +if (!bundleMatch) { + console.error('Error: could not locate the main JS bundle in the explorer HTML - nothing written'); + process.exit(1); +} +const bundleUrl = new URL(bundleMatch[1], EXPLORER_URL).href; +console.log(`Explorer bundle: ${bundleUrl}`); + +// 2. bundle -> definition list +const bundle = await fetchText(bundleUrl); +const entries = [...bundle.matchAll(/\{url:"(https:\/\/[^"]+)",name:"([^"]+)"\}/g)] + .map((m) => ({ url: m[1], name: m[2] })); +// the bundle also declares definitions it then filters out of the explorer +// display (QuickStart/PYM and Secrets Manager at the time of pinning); only +// entries present in the SCOPE map (the displayed set) are considered +if (entries.length === 0) { + console.error('Error: no {url,name} definition entries found in the explorer bundle - nothing written'); + process.exit(1); +} +console.log(`Found ${entries.length} definition entries in the bundle`); + +// 3. fetch in-scope definitions +const results = {}; +const outputs = new Map(); // file name -> body +let failures = 0; + +for (const { url, name } of entries) { + const scope = SCOPE[name]; + if (!scope) { + results[name] = { url, status: 'ignored', note: 'declared in the bundle but not displayed by the explorer' }; + console.log(`ignored ${name}`); + continue; + } + if (!scope.inScope) { + results[name] = { url, status: 'out-of-scope', note: scope.note }; + console.log(`out-of-scope ${name} (${scope.note})`); + continue; + } + try { + const text = await fetchText(url); + const spec = JSON.parse(text); + if (!(spec.openapi || spec.swagger) || !spec.paths) throw new Error('payload is not an OpenAPI document'); + const file = `ngc_${scope.key}.json`; + outputs.set(file, { text, url, name, spec }); + results[name] = { url, status: 'fetched', file, note: scope.note }; + console.log(`fetched ${name} -> ${file} (openapi=${spec.openapi || spec.swagger}, paths=${Object.keys(spec.paths).length})`); + } catch (e) { + results[name] = { url, status: 'unreachable', error: e.message, note: scope.note }; + if (scope.optional) { + console.log(`unreachable ${name} (optional): ${e.message}`); + } else { + console.error(`FAILED ${name} (required): ${e.message}`); + failures++; + } + } +} + +if (failures > 0) { + console.error(`Error: ${failures} required definition(s) could not be harvested - nothing written`); + process.exit(1); +} + +// 4. write outputs + manifest +fs.mkdirSync(downloadDir, { recursive: true }); +const manifest = fs.existsSync(manifestPath) + ? JSON.parse(fs.readFileSync(manifestPath, 'utf8')) + : { files: {} }; +manifest.files = manifest.files || {}; + +for (const [file, { text, url, name, spec }] of outputs) { + fs.writeFileSync(path.join(downloadDir, file), text); + manifest.files[file] = { + url, + info: { + explorer: EXPLORER_URL, + explorerName: name, + openapi: spec.openapi || spec.swagger, + title: spec.info?.title ?? null, + specVersion: spec.info?.version ?? null + } + }; +} +manifest.ngcHarvest = { + explorer: EXPLORER_URL, + bundle: bundleUrl, + entries: results +}; +fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n'); + +console.log(`Harvest complete: ${outputs.size} definition(s) written to ${downloadDir}`); From 8a558a607c1e9d64f1503af1435afd6425db3e58 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:32:36 +1000 Subject: [PATCH 04/17] docs: record auth and public-read findings (task 4) - NGC_API_KEY absent from the environment: live bearer verification, authenticated spec-endpoint probes and the NVCF enablement check are recorded blocked-on-key (vsphere blocked-on-lab pattern); everything offline proceeds - public-read hypothesis confirmed on the wire: catalog search (/v2/search/catalog/resources/{type}?q={json}) and guest artifact metadata (/v2/models/{org}/{name}) serve 200 unauthenticated; org-scoped registry, orgs/users and all NVCF routes are 401 - gateway v1 -> v2 path rewrite proven: harvested models-spec /v1 paths serve at api.ngc.nvidia.com/v2 - two key types recorded: personal keys direct-bearer (documented path), legacy keys via the authn.nvidia.com token exchange Co-Authored-By: Claude Fable 5 --- NOTES.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 NOTES.md diff --git a/NOTES.md b/NOTES.md new file mode 100644 index 0000000..f8520a5 --- /dev/null +++ b/NOTES.md @@ -0,0 +1,41 @@ +# Engineering Notes + +Phase 1 scope: spec acquisition (NVCF pin + NGC harvest), auth verification, endpoint inventory across both sources, mapping groundwork on three pilot services. Wire evidence is live against `api.ngc.nvidia.com` and `api.nvcf.nvidia.com` (2026-07-14, unauthenticated probes only - see Blocked). Spec pins in `provider-dev/config/spec_pin.json`: NVCF 2.245.1 (sha256 b79060bf...), ngc_kas v3.249.6 (dcaf78b0...), ngc_models 0.0.1-SNAPSHOT placeholder (7541d8f6...). + +Sibling findings reused, not re-derived: dockerhub (public-read classification, `auth_declared` vs `observed_public_read` inventory columns, zero-setup docs lead), proxmox (EXEC returns request id + status SELECT, mock-first CI with secret-gated live smoke), vsphere (blocked-on-lab gating - harness exercised to its error paths when the live target is absent, offline phases proceed), keycloak (PUT is not REPLACE without field-drop evidence; numbered `## Open` list format). + +## Resolved + +1. **NVCF spec source - ANSWERED, live.** The OpenAPI Spec link on https://docs.nvidia.com/nvcf/api resolves to https://api.nvcf.nvidia.com/v3/openapi (served by the NVCF API itself; a companion Postman collection is referenced from the same documentation set). openapi 3.1.0, version 2.245.1, 35 paths / 54 operations. swagger-parser 12.1.0 validates it clean with no repairs. + +2. **NGC harvest - ANSWERED, usable after cleaning.** The explorer at docs.ngc.nvidia.com/api/ is a swagger-ui over 11 displayed per-service definitions; the {url, name} list is extracted deterministically from its JS bundle. Publicly retrievable and in scope: `ngc_kas.json` ("NGC API Documentation" v3.249.6 - orgs, teams, users, invitations, 77 paths; the explorer labels it "KASv1 API (Deprecated)" but it is the only public orgs/users definition) and `ngc_models.json` ("Models API" - registry artifact metadata, 231 paths). Five in-scope definitions (Org Mgmt, User IAM, Search, Metadata, Publishing) resolve in DNS but refuse public connections - recorded in `download_manifest.json`. The "lacking a standard version field" flag materialized as: models carries a `0.0.1-SNAPSHOT` placeholder (noted, left as-is), kas declares a relative server `/` (repaired to `https://api.ngc.nvidia.com` by rule). The ngcsdk archetype-2 fallback is NOT invoked; decision and evidence in `spec_pin.json`. + +3. **NVCF two-host split - ANSWERED from documentation.** The published spec declares a single server (`https://api.nvcf.nvidia.com`), but the NVCF documentation states the primary domain for function management is `api.ngc.nvidia.com` and the NVCF domain for function invocation and queue details is `api.nvcf.nvidia.com`. Both hosts return 401 (route exists) for `/v2/nvcf/functions` unauthenticated. Host is carried per operation group; per-operation assignment in `endpoint_inventory.csv`. + +4. **Public-read hypothesis - CONFIRMED, wire-proven (the dockerhub precedent holds).** Unauthenticated (2026-07-14): + - `GET /v2/search/catalog/resources/{type}?q={"query":"pytorch","pageSize":2}` -> 200 with full rows (`resultTotal: 22`). The `q` parameter is a JSON query object; a bare string is a 400. + - `GET /v2/models/{org}/{name}` and `.../versions` -> 200 for public artifacts (`canGuestDownload: true` in the payload). Envelope `{"model": {...}, "requestStatus": {...}}`. + - Org-scoped registry reads (`/v2/org/{org}/models/{name}`, and the models-host `/v1/org/...` originals) -> 401. `/v2/orgs`, `/v2/users/me`, `/v2/nvcf/*` -> 401. + The zero-setup entry point for the docs is catalog search + guest artifact metadata. + +5. **Gateway v1 -> v2 path rewrite - ANSWERED, wire-proven.** The harvested models spec declares `/v1/...` paths on `models.ngc.nvidia.com`; the public gateway serves the same operations at `api.ngc.nvidia.com/v2/...` (search responses echo `"instance": "/v1/search/..."` for `/v2/search/...` requests; `/v2/models/{org}/{name}` serves 200 where the spec path is `/v1/models/{org-name}/{name}`; the org-scoped twins 401 rather than 404 on both hosts/prefixes). Decision: the provider targets `api.ngc.nvidia.com` with the `/v1` -> `/v2` prefix rewrite applied at clean/pre-normalize time, so all NGC core operations ride one public host. + +6. **Auth error envelopes - observed.** `api.ngc.nvidia.com` returns `{"requestStatus": {"statusCode": "UNAUTHORIZED", ...}}` with 401; `api.nvcf.nvidia.com` returns an empty 401 body. Useful for integration-test assertions. + +## Blocked on key (the vsphere blocked-on-lab pattern) + +7. **Live bearer verification - BLOCKED, no `NGC_API_KEY` in the environment** (process, user, and machine level checked). NGC Personal API Key generation is a console action (org > Setup > Generate Personal API Key) with service scopes: Private Registry, and Cloud Functions at the organization level - NVIDIA's docs warn team-level roles break NVCF keys. Key scopes are static. The legacy-key type exists (see item 8) but personal keys (`nvapi-...`) are the documented path. Owed once a key is present: a live `GET /v2/orgs` and `GET /v2/users/me` with `Authorization: Bearer $NGC_API_KEY`, the authenticated spec-endpoint probes (item 9), and the NVCF enablement check (item 10). + +8. **Two key types, two auth flows - recorded, wire verification owed.** The explorer bundle's request interceptor exchanges a legacy NGC API key for a short-lived JWT via `https://authn.nvidia.com/token?scope=group/ngc&service=ngc` with `Authorization: Basic base64($oauthtoken:)`. Personal API keys are documented to work directly as `Authorization: Bearer`. The provider auth config assumes the direct-bearer personal-key path; if any NGC core endpoint rejects direct bearer, the token exchange becomes a documented prerequisite (not a provider concern - StackQL carries the env var as-is). + +9. **Authenticated spec endpoints - BLOCKED on key.** `api.ngc.nvidia.com/v3/openapi`, `/v3/search/api-docs`, `/v3/meta/api-docs` return 401 unauthenticated (the unreachable Search/Metadata definitions may be served authenticated through the gateway). Re-probe with the key; if the Search definition is retrievable it becomes the catalog-search spec source (see Open item 2). + +10. **NVCF enablement of the test org - BLOCKED on key/org.** Recorded as unknown. The tiered smoke design (drafted): tier 1 catalog/public reads - no credentials, every CI run; tier 2 org/registry reads - free NGC account key; tier 3 NVCF - only where the org has Cloud Functions enabled, skip-with-notice otherwise (vsphere pattern); any deployed function uses the smallest instance spec, `stackql-smoke-` naming, deleted within the run. + +## Open + +1. **Pagination idioms per resource** - to be recorded from the specs in the inventory (task 5) and confirmed live where access allows. `page`/`pageSize` observed on catalog search (`resultPageTotal` in the response); no assumption carried to other resources. +2. **Catalog search served but definition unreachable** - the public search surface (`/v2/search/catalog/...`) is wire-proven but the Search API definition is not publicly retrievable; blocked-on-key probe (item 9) or the operation stays out of v1 with a reason code if no definition materializes. +3. **Update semantics per resource** - PATCH vs PUT, partial vs full; label per the keycloak warning (no REPLACE without field-drop evidence). Owed in the inventory and phase 2 probes. +4. **Envelope/objectKey per resource** - `{model: ..., requestStatus: ...}` observed on model get; catalog search nests `results[].resources[]`. Systematic recording in the inventory from response schemas. +5. **openapi 3.1.0 handling** - nvcf and models sources are 3.1.0; the provider-utils split/normalize/generate chain is proven on 3.0.x (k8s). Any 3.1-specific breakage surfaces in the pilot (task 7) and is handled in pre_normalize as a deterministic downgrade of the affected constructs. From b600e20edbaa39453f94bfded4d960e761a6accd Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:41:38 +1000 Subject: [PATCH 05/17] feat: build the endpoint inventory across both sources build_inventory.mjs classifies all 489 operations (54 nvcf, 435 ngc-core) with deterministic rules and fails without writing on any unclassified operation or duplicate method. Results: - 223 mapped: 102 select, 40 insert, 29 update, 33 delete, 16 exec, 3 replace across nvcf_functions (22), nvcf_deployments (18), nvcf_invocation (10), nvcf_queues (3), orgs (26), registry (94), catalog (50) - 266 skipped with reason codes: 141 deprecated team-scoped twins (schedule 2026-09), 36 deprecated-inline, 34 internal-admin, 23 service-infra, 22 data-plane file transfer, 7 duplicate endpoint families, 2 superseded v2 twins, 1 inbound webhook - per-operation host carry (api.ngc.nvidia.com management, api.nvcf.nvidia.com invocation/queues/assets/tokens), auth_declared and observed_public_read columns (dockerhub precedent), pagination params, response envelopes, invocation form (nvcf pexec = polling, scoped in) Co-Authored-By: Claude Fable 5 --- provider-dev/config/endpoint_inventory.csv | 490 +++++++++++++++++ provider-dev/scripts/build_inventory.mjs | 600 +++++++++++++++++++++ 2 files changed, 1090 insertions(+) create mode 100644 provider-dev/config/endpoint_inventory.csv create mode 100644 provider-dev/scripts/build_inventory.mjs diff --git a/provider-dev/config/endpoint_inventory.csv b/provider-dev/config/endpoint_inventory.csv new file mode 100644 index 0000000..55f2694 --- /dev/null +++ b/provider-dev/config/endpoint_inventory.csv @@ -0,0 +1,490 @@ +source,file,host,verb,path,operation_id,tags,org_scoped,team_scoped,deprecated,auth_declared,observed_public_read,pagination_params,has_request_body,response_shape,object_key_candidate,invocation_form,service,resource,method,sql_verb,skip_reason,notes +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/secrets/telemetries/{telemetryId},updateTelemetrySecret,User Secret Management,n,n,n,none-declared,,,y,none,,,nvcf_deployments,telemetry_secrets,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/secrets/functions/{functionId}/versions/{versionId},updateFunctionSecrets,User Secret Management,n,n,n,none-declared,,,y,none,,,nvcf_functions,function_secrets,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},updateRateLimit,User Ratelimit Management,n,n,y,none-declared,,,y,none,,,nvcf_functions,function_ratelimits,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},deleteRateLimit,User Ratelimit Management,n,n,n,none-declared,,,n,none,,,nvcf_functions,function_ratelimits,delete,delete,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId},updateFunctionMetadata,Function Management,n,n,y,none-declared,,,y,object{function},,,nvcf_functions,function_metadata,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},getFunction,Function Management,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,function_versions,get,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},updateFunction,Function Management,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,function_versions,update,update,,PUT semantics unverified (keycloak rule): update until field-drop evidence +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},deleteFunction,Function Management,n,n,n,none-declared,,,n,none,,,nvcf_functions,function_versions,delete,delete,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},getFunctionDeployment,Function Deployment,n,n,n,none-declared,,,n,object{deployment},,,nvcf_deployments,deployments,get,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},createFunctionDeployment,Function Deployment,n,n,n,none-declared,,,y,object{deployment},,,nvcf_deployments,deployments,create,insert,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},updateFunctionDeployment,Function Deployment,n,n,y,none-declared,,,y,object{deployment},,,nvcf_deployments,deployments,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},deleteFunctionDeployment,Function Deployment,n,n,n,none-declared,,,n,object{function},,,nvcf_deployments,deployments,delete,delete,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions,issueMultiFunctionsInvocationToken,Function Invocation Assertion Token,n,n,n,none-declared,,,y,object{access_token;expires_in},,,nvcf_invocation,tokens,create_for_functions,exec,,"ephemeral credential mint - action, nothing queryable persisted" +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId},issueInvocationToken,Function Invocation Assertion Token,n,n,n,none-declared,,,y,object{access_token;expires_in},,,nvcf_invocation,tokens,create_for_version,exec,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions/{functionId},issueInvocationToken_1,Function Invocation Assertion Token,n,n,n,none-declared,,,y,object{access_token;expires_in},,,nvcf_invocation,tokens,create_for_function,exec,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/telemetries,getTelemetriesByAccount,Telemetry Management,n,n,n,none-declared,,,n,object{telemetries},$.telemetries,,nvcf_deployments,telemetries,list,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/telemetries,createTelemetry,Telemetry Management,n,n,n,none-declared,,,y,object{telemetry},,,nvcf_deployments,telemetries,create,insert,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/registry-credentials,listRegistryCredentialDetails,Registry Credential Management,n,n,n,none-declared,,,n,object{registryCredentials},$.registryCredentials,,nvcf_deployments,registry_credentials,list,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/registry-credentials,addRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,y,object{registryCredential},,,nvcf_deployments,registry_credentials,create,insert,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/pexec/functions/{functionId},invokeFunction,Function Invocation,n,n,y,none-declared,,,y,object{short;char;int;long;float;double;...},,polling,nvcf_invocation,invocations,invoke,exec,,"polling invocation, scoped in" +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/pexec/functions/{functionId}/versions/{versionId},invokeFunction_1,Function Invocation,n,n,y,none-declared,,,y,object{short;char;int;long;float;double;...},,polling,nvcf_invocation,invocations,invoke_version,exec,,"polling invocation, scoped in" +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions,getFunctions,Function Management,n,n,n,none-declared,n,,n,object{functions},$.functions,,nvcf_functions,functions,list,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/functions,createFunction,Function Management,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,functions,create,insert,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/{functionId}/versions,getFunctions_1,Function Management,n,n,n,none-declared,,,n,object{functions},$.functions,,nvcf_functions,function_versions,list,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/functions/{functionId}/versions,createFunction_1,Function Management,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,function_versions,create,insert,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions/{functionId},getAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,n,object{functions},$.functions,,nvcf_functions,authorizations,list,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/authorizations/functions/{functionId},createAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,set,replace,,POST replaces the full authorized-party list - grants-as-data set operation +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/authorizations/functions/{functionId},deleteAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,authorizations,delete_all,exec,,delete-all kept off the DELETE verb: same path-param signature as the granular remove +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},getAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,authorizations,list_version,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},createAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,set_version,replace,,POST replaces the full authorized-party list - grants-as-data set operation +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},deleteAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,authorizations,delete_all_version,exec,,delete-all kept off the DELETE verb: same path-param signature as the granular remove +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/assets,getAssets,Asset Management,n,n,y,none-declared,,,n,object{assets},$.assets,,nvcf_invocation,assets,list,select,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/assets,createAsset,Asset Management,n,n,y,none-declared,,,y,object{assetId;uploadUrl;contentType;description},,,nvcf_invocation,assets,create,insert,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/registry-credentials/{registryCredentialId},getRegistryCredentialDetails,Registry Credential Management,n,n,n,none-declared,,,n,object{registryCredential},,,nvcf_deployments,registry_credentials,get,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/registry-credentials/{registryCredentialId},updateRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,y,object{registryCredential},,,nvcf_deployments,registry_credentials,update,update,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/registry-credentials/{registryCredentialId},deleteRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,n,none,,,nvcf_deployments,registry_credentials,delete,delete,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId},updateGpuSpecification,Function Deployment,n,n,n,none-declared,,,y,object{gpuSpecification},,,nvcf_deployments,deployment_gpu_specs,update,update,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove,removeAuthorizedPartyForSpecificVersion,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,remove_version,delete,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add,addAuthorizedPartyForSpecificVersion,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,add_version,insert,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/remove,removeAuthorizedPartyForAllVersions,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,remove,delete,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/add,addAuthorizedPartyForAllVersions,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,add,insert,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/telemetries/{telemetryId},getTelemetry,Telemetry Management,n,n,n,none-declared,,,n,object{telemetry},,,nvcf_deployments,telemetries,get,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/telemetries/{telemetryId},deleteTelemetry,Telemetry Management,n,n,n,none-declared,,,n,none,,,nvcf_deployments,telemetries,delete,delete,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/recognized-registries,getRecognizedRegistries,Registry Credential Management,n,n,n,none-declared,,,n,object{recognizedRegistries},,,nvcf_deployments,recognized_registries,list,select,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/{requestId}/position,getPositionInQueue,Queue Details,n,n,n,none-declared,,,n,object{functionVersionId;functionId;positionInQueue},,,nvcf_queues,queue_positions,get,select,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{functionId}/versions/{versionId},getQueuesDetails,Queue Details,n,n,n,none-declared,,,n,object{functionId;queues},$.queues,,nvcf_queues,queues,list_version,select,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{functionId},getQueuesDetails_1,Queue Details,n,n,n,none-declared,,,n,object{functionId;queues},$.queues,,nvcf_queues,queues,list,select,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/pexec/status/{requestId},getFunctionInvocationResult,Function Invocation,n,n,y,none-declared,,,n,object{short;char;int;long;float;double;...},,polling,nvcf_invocation,invocation_status,get,select,,"polling form: EXEC returns 202 + requestId, status polled here (proxmox precedent)" +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/ids,getFunctionIds,Function Management,n,n,n,none-declared,,,n,object{functionIds},$.functionIds,,nvcf_functions,functions,list_ids,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/deployments/{deploymentId},getFunctionDeployment_1,Function Deployment,n,n,n,none-declared,,,n,object{deployment},,,nvcf_deployments,deployments,get_by_id,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/clusterGroups,getClusterGroups,Cluster Groups and GPUs,n,n,y,none-declared,n,,n,object{clusterGroups},$.clusterGroups,,nvcf_deployments,cluster_groups,list,select,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/assets/{assetId},getAsset,Asset Management,n,n,y,none-declared,,,n,object{asset},,,nvcf_invocation,assets,get,select,, +nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,delete,/v2/nvcf/assets/{assetId},deleteAsset,Asset Management,n,n,y,none-declared,,,n,none,,,nvcf_invocation,assets,delete,delete,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/health,getHealth,health-controller,n,n,n,none-declared,,,n,object{description;status},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs/{org-name}/users/nca-invitations,inviteUserToNcaInOrg,Users Management,y,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_invitations,create_nca,insert,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs/{org-name}/teams/{team-name}/users/nca-invitations,inviteUserToNcaInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs/proto-org,createOrganizationFromProtoOrg,Orgs,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,orgs,proto_orgs,create,insert,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs,createOrganizationFromScratch,Orgs,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,orgs,orgs,create,insert,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/admin/orgs,createProtoOrganization,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/admin/orgs/ncaIds,getMapping,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,y,object{orgNcaMapping},$.orgNcaMapping,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/users/me/api-key,generateUserApiKey,Users Management,n,n,n,api-key+bearer-token,,,n,object{cloudNfsKey;cloudNfsKeyPwd;requestStatus;key;cloudNfsUserName},,,orgs,current_user,create_api_key,exec,,credential mint - action +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users,listUsersInOrg,Users Management,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;users},$.users,,orgs,users,list,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/users,createUserInOrg,Users Management,y,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,users,create,insert,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/teams,listTeams,Teams,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;teams},$.teams,,orgs,teams,list,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/teams,createTeam,Teams,y,n,n,api-key+bearer-token,,,y,object{requestStatus;team},,,orgs,teams,create,insert,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users/{id},getUserInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/team/{team-name}/users/{id},addUserToTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/team/{team-name}/users/{id},removeUserFromTeam_1,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users,listUsersInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;users},$.users,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/team/{team-name}/users,createUserInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/users/{user-id}/org-owner-backfill,backfillOrgOwnerByUser,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/users/{id}/migrate-deprecated-roles,migrateUserDeprecatedRoles,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/users/{id}/crm-sync,syncCrmUser,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/orgs,createOrganization,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/users/{id},addUserToOrg,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/admin/org/{org-name}/users/{id},removeUserFromOrg_2,Super Admin User Controller,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/users,createUserInOrg_1,Super Admin User Controller,y,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/team/{team-name}/users/{id},addUserToTeam_1,Super Admin User Controller,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/team/{team-name}/users,createUserInTeam_1,Super Admin User Controller,y,y,y (schedule 2026-09),api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/org-owner-backfill,backfillOrgOwnerByOrg,Super Admin User Controller,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/backfill-orgs-to-kratos,backfillOrgsToKratos,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v3/orgs/{org-name}/users/{user-email-or-id}/add-role,addRoleOrInviteUserToOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_roles,add,insert,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/add-role,addRoleOrInviteUserToTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/admin/org/{org-name},getOrg,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{organizations;requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v3/admin/org/{org-name},updateOrg,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/users/me,whoAmI,Users Management,n,n,n,api-key+bearer-token,n,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,current_user,get,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/users/me,editUserProfile,Users Management,n,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,current_user,update,update,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/orgs/{org-name},getOrganization,Orgs,y,n,n,api-key+bearer-token,,,n,object{organizations;requestStatus},,,orgs,orgs,get,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/orgs/{org-name},updateOrganization,Orgs,y,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,orgs,orgs,update,update,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/users/{id}/update-role,updateUserRole,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/users/{id}/add-role,addUserRole,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/teams/{team-name},getTeam,Teams,y,n,n,api-key+bearer-token,,,n,object{requestStatus;team},,,orgs,teams,get,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/teams/{team-name},editTeam,Teams,y,n,n,api-key+bearer-token,,,y,object{requestStatus;team},,,orgs,teams,update,update,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/teams/{team-name},deleteTeam,Teams,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,orgs,teams,delete,delete,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/team/{team-name}/users/{id}/update-role,updateUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/team/{team-name}/users/{id}/add-role,addUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/users/invite,emailInviteToUser,Super Admin User Controller,n,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name},getOrg_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{organizations;requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name},updateOrg_1,Super Admin Org Controller,y,n,y,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/users/{id}/update-role,updateUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/users/{id}/add-role,addUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/teams/{team-name},getTeam_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{requestStatus;team},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/teams/{team-name},editTeam_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,y,object{requestStatus;team},,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/team/{team-name}/users/{id}/add-role,addUserRole_3,Super Admin User Controller,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/entitlements,listOrganizationsWithEntitlement,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{entitlements;requestStatus},$.entitlements,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/entitlements,listOrganizationsWithEntitlement_1,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,n,object{entitlements;requestStatus},$.entitlements,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/version,getLatestPackageVersion,Services,n,n,n,api-key+bearer-token,,,n,object{requestStatus;versions},$.versions,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/orgs/{org-name}/users/{user-email-or-id},listUserRolesInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,users,get,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id},listUserRolesInOrgTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/orgs/proto-org/validate,protoOrgInvitationValidate,Orgs,n,n,n,api-key+bearer-token,,,n,object{orgInvitation;requestStatus},,,orgs,proto_orgs,validate,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/admin/org,listOrganizations,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/orgs,listOrganizations_1,Orgs,n,n,n,api-key+bearer-token,n,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,orgs,orgs,list,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/{id}/invite,emailInviteToUser_1,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/{id},getUserInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,superseded-by-v3-twin (/v3/orgs/{org-name}/users/{user-email-or-id}), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/users/{id},removeUserFromOrg_1,Users Management,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,superseded-by-v3-twin (/v3/orgs/{org-name}/users/{id}), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_invitations,resend_email,exec,,"non-idempotent GET (sends email) - action, not a read" +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/invitations,listInvitationsForUserInOrg,Users Management,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;invitations},$.invitations,,orgs,user_invitations,list,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users/invitations,listInvitationsForUserInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;invitations},$.invitations,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/starfleetIds/{starfleet-id},getUserInTeamByStarfleetId,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/starfleetIds/{starfleet-id},getUserInOrg_1,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,users,get_by_starfleet_id,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/users/{id},getUserDetails,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/users/me,whoAmI_1,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org,listOrganizations_2,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/orgs/offboarded,listOffboardedOrgs,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/teams,listTeams_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;teams},$.teams,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/validate,listValidatedOrganizations,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/roles,getRoles,Services,n,n,n,api-key+bearer-token,,,n,object{requestStatus;roles},$.roles,,orgs,roles,list,select,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/public-keys,getPublicKey,Services,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/health/all,statusDetails,Services,n,n,n,api-key+bearer-token,,,n,object{health;requestStatus},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/health,status,Services,n,n,n,api-key+bearer-token,,,n,object{health;requestStatus},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/users/{user-email-or-id}/remove-role,removeRoleOrInvitationInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_roles,remove,delete,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/users/{id},removeUserFromOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,orgs,users,delete,delete,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/remove-role,removeRoleOrInvitationInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/teams/{team-name}/users/{id},removeUserFromTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/users/{id}/remove-role,removeUserRole,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/users/invitations/{id},deleteUserInvitationInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,orgs,user_invitations,delete,delete,, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/team/{team-name}/users/{id}/remove-role,removeUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/team/{team-name}/users/invitations/{id},deleteUserInvitationInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/admin/org/{org-name}/users/{id}/remove-role,removeUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/admin/org/{org-name}/team/{team-name}/users/{id}/remove-role,removeUserRole_3,Super Admin User Controller,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources,swaggerResources_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources,swaggerResources,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources,swaggerResources_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources,swaggerResources_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources,swaggerResources_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources/configuration/ui,uiConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources/configuration/ui,uiConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources/configuration/ui,uiConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources/configuration/ui,uiConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources/configuration/ui,uiConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources/configuration/security,securityConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources/configuration/security,securityConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources/configuration/security,securityConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources/configuration/security,securityConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources/configuration/security,securityConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync,Artifact File,y,n,n,ssa,,,y,object{statusUrl;workflowId;requestStatus},,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,object{statusUrl;workflowId;requestStatus},,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org}/files/multipart,fileUpload,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/files/multipart,completeFileUpload,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org}/files/multipart,abortFileUpload,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org}/team/{team}/files/multipart,fileUpload_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/files/multipart,completeFileUpload_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org}/team/{team}/files/multipart,abortFileUpload_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/files/clone/status,cloneArtifactVersionFilesStatus,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/files/clone/status,cloneArtifactVersionFilesStatus_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/files/clone,cloneArtifactVersionFiles,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/files/clone,cloneArtifactVersionFiles_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/{artifactType}/playground/{artifactName},getModelAIPlayground,AIPlayground,y,n,y,ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/{artifactType}/playground/{artifactName},updateModelAIPlayground,AIPlayground,y,n,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/{artifactType}/playground/{artifactName},deleteModelAIPlayground,AIPlayground,y,n,y,ssa,,,n,object{requestStatus},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName},getModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName},updateModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName},deleteModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,n,object{requestStatus},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,getModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,registry,artifact_specs,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,updateModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,registry,artifact_specs,update,update,,PUT semantics unverified +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,deleteModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,n,object{requestStatus},,,registry,artifact_specs,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec,getModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec,updateModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec,deleteModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/terms-of-service,updateTermsOfService,Publish,y,n,n,ssa,,,y,none,,,registry,artifacts,set_terms_of_service,exec,,single-field action endpoint +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service,updateTermsOfService_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share,publishArtifact,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,add,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share,undoPublishArtifact,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,remove,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,publishArtifactFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,artifact_shares,add_product,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,undoPublishProduct,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,remove_product,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignature,ArtifactSigning,y,n,n,none-declared,,,n,none,,,registry,artifact_signatures,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,signArtifactVersion,ArtifactSigning,y,n,n,ssa,,,n,none,,,registry,artifact_signatures,set,exec,,write of a computed signature - action +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignature_1,ArtifactSigning,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,signArtifactVersion_1,ArtifactSigning,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/release-type,updateReleaseLabel,Publish,y,n,n,ssa,,,y,none,,,registry,artifacts,set_release_type,exec,,single-field action endpoint +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/release-type,updateReleaseLabel_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name},getArtifactInOrg,Artifacts,y,n,n,ssa,,,n,none,,,registry,artifacts,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name},replaceArtifactInOrg,Artifacts,y,n,n,ssa,,,y,none,,,registry,artifacts,replace,replace,,"PUT with a PATCH twin - proposed replace, semantics unverified (keycloak rule)" +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/{artifact-type}/{artifact-name},updateArtifactInOrg,Artifacts,y,n,n,ssa,,,y,none,,,registry,artifacts,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name},deleteArtifactInOrg,Artifacts,y,n,n,ssa,,,n,none,,,registry,artifacts,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share,publishArtifact_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share,undoPublishArtifact_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product,publishArtifactFromRequest_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product,undoPublishProduct_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},getArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},replaceArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},updateArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},deleteArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name},updateModelAppAssociation,Apps,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name},deleteModelAppAssociation,Apps,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team},shareModelInTeamWithTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team},revokeShareModelInTeamWithTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org,shareModelInTeamWithOrg,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org,revokeShareModelInTeamWithOrg,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team},shareCollectionInTeamWithTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team},revokeShareCollectionInTeamWithTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org,shareCollectionInTeamWithOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org,revokeShareCollectionInTeamWithOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share,publishCollection,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share,undoPublishCollection,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInTeamFromAnotherOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInTeamFromAnotherOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInTeamFromAnotherOrgAndTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/models/{model-name}/shares/team/{target-team},shareModelInOrgWithTeam,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,add_team,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/models/{model-name}/shares/team/{target-team},revokeShareModelInOrgWithTeam,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,remove_team,delete,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/models/{model-name}/shares/org,shareModelInOrgWithOrg,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,add_org,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/models/{model-name}/shares/org,revokeShareModelInOrgWithOrg,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,remove_org,delete,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,add,insert,,grants-as-data membership +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,remove,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team},shareCollectionInOrgWithTeam,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,add_team,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team},revokeShareCollectionInOrgWithTeam,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,remove_team,delete,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/shares/org,shareCollectionInOrgWithOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,add_org,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/shares/org,revokeShareCollectionInOrgWithOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,remove_org,delete,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/share,publishCollection_1,Publish,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/share,undoPublishCollection_1,Publish,y,n,n,ssa,,,n,none,,,registry,collection_shares,remove,delete,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/share/product,publishCollectionFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,collection_shares,add_product,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product,publishCollectionFromRequest_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,add_cross_org,insert,,grants-as-data membership +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,remove_cross_org,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInOrgFromAnotherOrgAndTeam,Collections,y,n,n,ssa,,,n,none,,,,,,,deprecated-team-scoped (references a team-scoped artifact; NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam,Collections,y,n,n,ssa,,,n,none,,,,,,,deprecated-team-scoped (references a team-scoped artifact; NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/{artifactType}/playground,createModelAIPlayground,AIPlayground,y,n,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground,createModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/{artifactType}/spec,createModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,registry,artifact_specs,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/team/{teamName}/{artifactType}/spec,createModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan,initiateMalwareScan,MalwareScan,y,n,n,ssa,,,n,object{requestStatus},,,registry,artifacts,malware_scan,exec,,action +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/team/{teamName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan,initiateMalwareScan_1,MalwareScan,y,y,y (schedule 2026-09),ssa,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createArtifactVerionFileDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createArtifactDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,registry,artifact_deployments,create,insert,,launches a CSP deployment +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,getArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,n,none,,,registry,artifact_deployment_params,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,createArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,registry,artifact_deployment_params,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,updateArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,registry,artifact_deployment_params,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,deleteArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,n,none,,,registry,artifact_deployment_params,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact,Collections,y,n,n,ssa,,,n,none,,,registry,artifacts,sync_release_type_labels,exec,,action +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact_1,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance,getOrgArtifactLicenseAcceptance,Publish,y,n,n,ssa,,,n,none,,,registry,license_acceptances,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance,acceptArtifactLicense,Publish,y,n,n,ssa,,,y,none,,,registry,license_acceptances,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance,getOrgArtifactLicenseAcceptance_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance,acceptArtifactLicense_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/files,checkArtifactFilesExistByChecksum,ArtifactChecksum,y,n,n,ssa,,page-size+page-number,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/files,checkArtifactFilesExistByChecksum_1,ArtifactChecksum,y,y,y (schedule 2026-09),ssa,,page-size+page-number,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type},listArtifactsInOrg,Artifacts,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifacts,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type},createArtifactInOrg,Artifacts,y,n,n,ssa,,,y,none,,,registry,artifacts,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createArtifactVersionFileDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createArtifactDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,getArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,createArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,updateArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,deleteArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/parameters,createArtifactDeploymentParametersInTeam_1,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type},listArtifactsInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type},createArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions,listRecipeVersionsInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions,createRecipeVersionInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions,listRecipeVersionsInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions,createRecipeVersionInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes,listRecipesInTeam,Resources,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/recipes,createRecipeInTeam,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources,listRecipesInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/resources,createRecipeInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models,listModelsInTeam,Models,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/models,createModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions,listModelVersionsInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions,createModelVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/collections,listCollectionsInTeam,Collections,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/collections,createCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name}/versions,listRecipeVersionsInOrg,Resource Versions,y,n,n,ssa,,page-size+page-number,n,none,,,registry,recipe_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/recipes/{recipe-name}/versions,createRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,y,none,,,registry,recipe_versions,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name}/versions,listRecipeVersionsInOrg_1,Resource Versions,y,n,n,ssa,,page-size+page-number,n,none,,,registry,resource_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/resources/{recipe-name}/versions,createRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,y,none,,,registry,resource_versions,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes,listRecipesInOrg,Resources,y,n,n,ssa,,page-size+page-number,n,none,,,registry,recipes,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/recipes,createRecipeInOrg,Resources,y,n,n,ssa,,,y,none,,,registry,recipes,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources,listRecipesInOrg_1,Resources,y,n,n,ssa,,page-size+page-number,n,none,,,registry,resources,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/resources,createRecipeInOrg_1,Resources,y,n,n,ssa,,,y,none,,,registry,resources,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models,listModelsInOrg,Models,y,n,n,ssa,,page-size+page-number,n,none,,,registry,models,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/models,createModelInOrg,Models,y,n,n,ssa,,,y,none,,,registry,models,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name}/versions,listModelVersionsInOrg,Model Version,y,n,n,ssa,,page-size+page-number,n,none,,,registry,model_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/models/{model-name}/versions,createModelVersionInOrg,Model Version,y,n,n,ssa,,,y,none,,,registry,model_versions,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/files/commit,commitArtifactFiles,ArtifactChecksum,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/files/commit,commitArtifactFiles_1,ArtifactChecksum,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/collections,listCollectionsInOrg,Collections,y,n,n,ssa,,page-size+page-number,n,none,,,registry,collections,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/collections,createCollectionInOrg,Collections,y,n,n,ssa,,,y,none,,,registry,collections,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/malware-scan-notification,notifyScanResult,MalwareScan,n,n,n,ssa,,,y,object{status},,,,,,,inbound-webhook-not-client-api, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus/pci-device-id/{pci-device-id},getGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/gpus/pci-device-id/{pci-device-id},createGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,create,insert,,"publisher-privileged write, mapped as documented" +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/gpus/pci-device-id/{pci-device-id},updateGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,update,update,,publisher-privileged write +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/gpus/pci-device-id/{pci-device-id},deleteGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,delete,delete,,publisher-privileged write +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},getGpuByPciDeviceIdVendorIdSubsystemDeviceId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,get_by_vendor_subsystem,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},createGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,create_by_vendor_subsystem,insert,,"publisher-privileged write, mapped as documented" +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},updateGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,update_by_vendor_subsystem,update,,publisher-privileged write +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},deleteGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,delete_by_vendor_subsystem,delete,,publisher-privileged write +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps,listCloudServiceProviders,Cloud service providers,n,n,n,none-declared,n,page-size+page-number,n,none,,,catalog,csps,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps,createCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,y,none,,,catalog,csps,create,insert,,publisher-privileged write +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{csp-name}/deployments/params,getCloudServiceProviderDeploymentParametersDetails,Cloud service provider deployment parameters,n,n,n,none-declared,,,n,none,,,catalog,csp_deployment_params,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{csp-name}/deployments/params,createCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/csps/{csp-name}/deployments/params,updateCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/csps/{csp-name}/deployments/params,deleteCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,n,none,,,catalog,csp_deployment_params,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{csp-name}/deployments/params/meta,getCloudServiceProviderDeploymentParametersMetaDetails,Deployment parameters meta,n,n,n,none-declared,,,n,none,,,catalog,csp_deployment_params_meta,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{csp-name}/deployments/params/meta,createCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params_meta,create,insert,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/csps/{csp-name}/deployments/params/meta,updateCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params_meta,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/csps/{csp-name}/deployments/params/meta,deleteCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,n,none,,,catalog,csp_deployment_params_meta,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createPublicArtifactVersionFileDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createPublicArtifactDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,,,,,duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/.../deployments), +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createPublicArtifactVersionFileDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createPublicArtifactDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs,updateTagLevelPublishConfigs,Publish,y,n,n,ssa,,,y,none,,,registry,artifact_version_configs,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs,updateTagLevelPublishConfigs_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id},getRecipeVersionInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id},updateRecipeVersionInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id},getRecipeVersionInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id},updateRecipeVersionInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name},getRecipeInTeam,Resources,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name},updateRecipeInTeam,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name},getRecipeInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name},updateRecipeInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name},getModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/models/{model-name},updateModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id},getModelVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id},updateModelVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash,stashArtifactVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id},getHelmChartVersionInTeam,Helm Charts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id},updateHelmChartVersionInTeam,Helm Charts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/collections/{collection-name},getCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/collections/{collection-name},updateCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name},deleteCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts,patchCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id},getRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,n,none,,,registry,recipe_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id},updateRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,y,none,,,registry,recipe_versions,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id},getRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,n,none,,,registry,resource_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id},updateRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,y,none,,,registry,resource_versions,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name},getRecipeInOrg,Resources,y,n,n,ssa,,,n,none,,,registry,recipes,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/recipes/{recipe-name},updateRecipeInOrg,Resources,y,n,n,ssa,,,y,none,,,registry,recipes,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name},getRecipeInOrg_1,Resources,y,n,n,ssa,,,n,none,,,registry,resources,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/resources/{recipe-name},updateRecipeInOrg_1,Resources,y,n,n,ssa,,,y,none,,,registry,resources,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name},getModelInOrg,Models,y,n,n,ssa,,,n,none,,,registry,models,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/models/{model-name},updateModelInOrg,Models,y,n,n,ssa,,,y,none,,,registry,models,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name}/versions/{version-id},getModelVersionInOrg,Model Version,y,n,n,ssa,,,n,none,,,registry,model_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/models/{model-name}/versions/{version-id},updateModelVersionInOrg,Model Version,y,n,n,ssa,,,y,none,,,registry,model_versions,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash,stashArtifactVersionInOrg,Model Version,y,n,n,ssa,,,n,none,,,registry,model_versions,stash,exec,,action on a version +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id},getHelmChartVersionInOrg,Helm Charts,y,n,n,ssa,,,n,none,,,registry,helm_chart_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id},updateHelmChartVersionInOrg,Helm Charts,y,n,n,ssa,,,y,none,,,registry,helm_chart_versions,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/collections/{collection-name},getCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collections,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/collections/{collection-name},updateCollectionInOrg,Collections,y,n,n,ssa,,,y,none,,,registry,collections,update,update,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name},deleteCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collections,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/collections/{collection-name}/artifacts,patchCollectionInOrg,Collections,y,n,n,ssa,,,y,none,,,registry,collection_artifacts,update_bulk,update,,bulk membership update +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{csp-name},getCloudServiceProviderDetails,Cloud service providers,n,n,n,none-declared,,,n,none,,,catalog,csps,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/csps/{csp-name},updateCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,y,none,,,catalog,csps,update,update,,publisher-privileged write +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/csps/{csp-name},deleteCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,n,none,,,catalog,csps,delete,delete,,publisher-privileged write +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{type}/org/{org}/{name}/{version}/files,downloadAllArtifactFilesAsGuest,Artifact File,y,n,n,none-declared,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (typed/guest file listing twins), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{type}/org/{org}/team/{team}/{name}/{version}/files,downloadAllArtifactFilesAsGuest_1,Artifact File,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{artifactName}/playground,getPublicModelAIPlayground,AIPlayground,y,n,y,none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/playground,getPublicModelAIPlayground_1,AIPlayground,y,y,y,none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{artifactName}/spec,getPublicModelArtifactsSpec,AIPlayground,y,n,n,none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,catalog,artifact_specs,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/spec,getPublicModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/org/{org-name}/{artifact-name}/collections,listArtifactCollectionsInOrgAsGuest,Collections,y,n,n,none-declared,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/{artifact-name}/collections), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/collections,listArtifactCollectionsInTeamAsGuest,Collections,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignatureAsGuest,ArtifactSigning,y,n,n,none-declared,,,n,none,,,catalog,artifact_signatures,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignatureAsGuest_1,ArtifactSigning,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip/download,directDownloadAllFilesInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**/zip/download,downloadArtifactFileInTeamAsGuestAsZip,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/latest-version/zip,downloadAllFilesInTeamAsGuest_1,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip/download,directDownloadAllFilesInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**/zip/download,downloadArtifactFileInOrgAsGuestAsZip,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/latest-version/zip,downloadAllFilesOfLatestVersionInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInTeamAsGuest,Artifact Version Files,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInOrgAsGuest,Artifact Version Files,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,artifact_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type},listPublicArtifacts,Artifacts,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,artifacts,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name},getChartInTeamAsGuest,Artifacts,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name},getArtifactInOrgAsGuest,Artifacts,y,n,n,none-declared,,,n,none,,,catalog,artifacts,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInTeamAsGuest,Resource Version Files endpoints,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInTeamAsGuest_1,Resource Version Files endpoints,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id},getRecipeVersionInTeamAsGuest,Resource Versions,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id},getRecipeVersionInTeamAsGuest_1,Resource Versions,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions,listRecipeVersionsInTeamAsGuest,Resource Versions,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name}/versions,listRecipeVersionsInTeamAsGuest_1,Resource Versions,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name},getRecipeInTeamAsGuest,Resources,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name},getRecipeInTeamAsGuest_1,Resources,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInOrgAsGuest,Resource Version Files endpoints,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,recipe_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInOrgAsGuest_1,Resource Version Files endpoints,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,resource_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name}/versions/{version-id},getRecipeVersionInOrgAsGuest,Resource Versions,y,n,n,none-declared,,,n,none,,,catalog,recipe_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name}/versions/{version-id},getRecipeVersionInOrgAsGuest_1,Resource Versions,y,n,n,none-declared,,,n,none,,,catalog,resource_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name}/versions,listRecipeVersionsInOrgAsGuest,Resource Versions,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,recipe_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name}/versions,listRecipeVersionsInOrgAsGuest_1,Resource Versions,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,resource_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name},getRecipeInOrgAsGuest,Resources,y,n,n,none-declared,,,n,none,,,catalog,recipes,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name},getRecipeInOrgAsGuest_1,Resources,y,n,n,none-declared,,,n,none,,,catalog,resources,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes,listPublicRecipes,Resources,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,recipes,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources,listPublicRecipes_1,Resources,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,resources,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org}/{type}/{name}/{version}/files,downloadAllArtifactFiles,Artifact File,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifact_version_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org}/team/{team}/{type}/{name}/{version}/files,downloadAllArtifactFiles_1,Artifact File,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params,listArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,n,none,,,registry,artifact_deployment_params,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections,listArtifactCollectionsInOrg,Collections,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifact_collections,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/catalog/flags,getPublicFlagsInOrg,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_catalog_flags,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInOrg,Artifact Version Files,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/*/zip/download,downloadArtifactFileInOrgAsZip,Artifact Version Files,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInOrg,Artifact Version Files,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,deleteArtifactFileInOrg,Artifact Version Files,y,n,n,ssa,,,n,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInOrg,Artifact Version Files,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifact_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/params,listArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections,listArtifactCollectionsInTeam,Collections,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/catalog/flags,getPublicFlagsInTeam,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInTeam,Artifact Version Files,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInTeam,Artifact Version Files,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,deleteArtifactFileInTeam,Artifact Version Files,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/zip/download,downloadArtifactFileInTeamAsZip,Artifact Version Files,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInTeam,Artifact Version Files,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}/files,listRecipeFilesInTeam,Resource Version Files endpoints,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}/files,listRecipeFilesInTeam_1,Resource Version Files endpoints,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/files,listModeFilesInTeam,Model Version Files,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions,listHelmChartVersionsInTeam,Helm Charts,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInTeam,Collections,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/repositories/{container-name}/associated-models,listModelVersionsAssociatedByContainer,Model Version,y,n,n,ssa,,page-size+page-number,n,none,,,registry,repository_associated_models,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/associated-models,listModelVersionsAssociatedByContainer_1,Model Version,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models,listModelVersionsAssociatedByContainer_2,Model Version,y,n,n,ssa,,page-size+page-number,n,none,,,registry,repository_associated_models,list_by_tag,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/tags/{container-tag}/associated-models,listModelVersionsAssociatedByContainer_3,Model Version,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files,listRecipeFilesInOrg,Resource Version Files endpoints,y,n,n,ssa,,page-size+page-number,n,none,,,registry,recipe_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files,listRecipeFilesInOrg_1,Resource Version Files endpoints,y,n,n,ssa,,page-size+page-number,n,none,,,registry,resource_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files,listModeFilesInOrg,Model Version Files,y,n,n,ssa,,page-size+page-number,n,none,,,registry,model_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/helm-charts/{artifact-name}/versions,listHelmChartVersionsInOrg,Helm Charts,y,n,n,ssa,,page-size+page-number,n,none,,,registry,helm_chart_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/collections/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInOrg,Collections,y,n,n,ssa,,page-size+page-number,n,none,,,registry,collection_artifacts,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models,listPublicModels,Models,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,models,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name},getModelInTeamAsGuest,Models,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name}/versions,listModelVersionsInTeamAsGuest,Model Version,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id},getModelVersionInTeamAsGuest,Model Version,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}/files,listModeFilesInTeamAsGuest_2,Model Version Files,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name},getModelInOrgAsGuest,Models,y,n,n,none-declared,y,,n,none,,,catalog,models,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name}/versions,listModelVersionsInOrgAsGuest,Model Version,y,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,model_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name}/versions/{version-id},getModelVersionInOrgAsGuest,Model Version,y,n,n,none-declared,,,n,none,,,catalog,model_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name}/versions/{version-id}/files,listModeFilesInOrgAsGuest_2,Model Version Files,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,model_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions,listHelmChartVersionsInTeamAsGuest,Helm Charts,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions/{version-id},getHelmChartVersionInTeamAsGuest,Helm Charts,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{artifact-name}/versions,listHelmChartVersionsInOrgAsGuest,Helm Charts,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,helm_chart_versions,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id},getHelmChartVersionInOrgAsGuest,Helm Charts,y,n,n,none-declared,,,n,none,,,catalog,helm_chart_versions,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus,getGpus,GpuByPci,n,n,n,ssa,y,,n,none,,,catalog,gpus,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id},getGpuByPciDeviceIdVendorId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,get_by_vendor,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInTeamAsGuest,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInTeamAsGuest,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInOrgAsGuest,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInOrgAsGuest,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{csp-name},getCloudServiceProviderDetails_1,Cloud service providers,n,n,n,none-declared,,,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,catalog,artifact_deployment_params,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,catalog,artifact_deployment_params,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps,listCloudServiceProviders_1,Cloud service providers,n,n,n,none-declared,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections,listPublicCollections,Collections,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,collections,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{team-name}/{collection-name},getCollectionInTeamAsGuest,Collections,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{team-name}/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInTeamAsGuest,Collections,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{collection-name},getCollectionInOrgAsGuest,Collections,y,n,n,none-declared,,,n,none,,,catalog,collections,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInOrgAsGuest,Collections,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,collection_artifacts,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org}/workflows/{workflowId},getWorkflowStatus,Workflows,y,n,n,ssa,,,n,none,,,registry,workflows,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org}/team/{team}/workflows/{workflowId},getWorkflowStatusForTeam,Workflows,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys,listKeysInTeam,Encryption Keys,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id},listArtifactsForKeyInTeam,Encryption Keys,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id},deleteKeyFromTeam,Encryption Keys,y,y,y (schedule 2026-09),ssa,,,n,object{statusUrl;workflowId;requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/encryption-keys,listKeysInOrg,Encryption Keys,y,n,n,ssa,,,n,none,,,registry,encryption_keys,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id},listArtifactsForKeyInOrg,Encryption Keys,y,n,n,ssa,,,n,none,,,registry,encryption_keys,get,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id},deleteKeyFromOrg,Encryption Keys,y,n,n,ssa,,,n,object{statusUrl;workflowId;requestStatus},,,registry,encryption_keys,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/health,status,Health,n,n,n,none-declared,,,n,none,,,,,,,service-infra, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/health/all,statusDetails,Health,n,n,n,none-declared,,,n,none,,,,,,,service-infra, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/health/**,getHealth,Health,n,n,n,none-declared,,,n,object{description;status},,,,,,,service-infra, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/{artifactType}/{artifactName}/purge,purgeDeletedArtifact,Artifacts,y,n,n,ssa,,,n,none,,,registry,artifacts,purge,exec,,kept off DELETE: same path-param signature as artifacts.delete +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/purge,purgeDeletedArtifact_1,Artifacts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id},deleteArtifactVersionInOrg,Artifact Versions,y,n,n,ssa,,,n,none,,,registry,artifact_versions,delete,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id},deleteArtifactVersionInTeam,Artifact Versions,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key,disassociateKeyFromModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,object{statusUrl;workflowId;requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/models/{model-name}/encryption-key,disassociateKeyFromModelInOrg,Models,y,n,n,ssa,,,n,object{statusUrl;workflowId;requestStatus},,,registry,model_encryption_keys,delete,delete,, diff --git a/provider-dev/scripts/build_inventory.mjs b/provider-dev/scripts/build_inventory.mjs new file mode 100644 index 0000000..d707f5e --- /dev/null +++ b/provider-dev/scripts/build_inventory.mjs @@ -0,0 +1,600 @@ +#!/usr/bin/env node + +// Build the endpoint inventory across both spec sources into +// provider-dev/config/endpoint_inventory.csv. Every generator-relevant +// operation is classified by deterministic rules: host, org/team scoping, +// declared auth, wire-observed public reads, pagination idiom, response +// shape, invocation form, proposed service/resource/method/SQL verb, and a +// skip reason where applicable. The CSV is the single source of truth for +// the split rules (service_rules.mjs) and the mapping pass +// (map_operations.mjs). Fails without writing on any unclassified +// operation. +// +// Usage: node provider-dev/scripts/build_inventory.mjs + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const cleanedDir = path.join(repoRoot, 'provider-dev', 'downloaded', 'cleaned'); +const outPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); + +const HTTP_VERBS = ['get', 'post', 'put', 'patch', 'delete']; + +const SOURCES = { + 'nvcf_openapi.json': 'nvcf', + 'ngc_kas.json': 'ngc-core', + 'ngc_models.json': 'ngc-core' +}; + +// NVCF host assignment per tag: the NVCF docs state management is served +// from api.ngc.nvidia.com and invocation/queue details from +// api.nvcf.nvidia.com; /v2/nvcf/assets is empirically nvcf-host-only +// (404 on the ngc gateway, 2026-07-14), and assertion tokens are part of +// the invocation flow. +const NVCF_HOST_TAGS = new Set([ + 'Function Invocation', + 'Queue Details', + 'Asset Management', + 'Function Invocation Assertion Token' +]); + +// Wire-proven unauthenticated reads (2026-07-14, see NOTES.md item 4). +// Keyed by `${file}::${path}::${verb}`; everything else is unprobed (blank) +// or observed auth-required ('n' entries below). +const OBSERVED_PUBLIC_READS = new Map([ + ['ngc_models.json::/v1/models::get', 'y'], + ['ngc_models.json::/v1/models/{org-name}/{model-name}::get', 'y'], + ['ngc_models.json::/v1/models/{org-name}/{model-name}/versions::get', 'y'], + ['ngc_models.json::/v1/recipes::get', 'y'], + ['ngc_models.json::/v1/resources::get', 'y'], + ['ngc_models.json::/v1/collections::get', 'y'], + ['ngc_models.json::/v1/gpus::get', 'y'], + ['ngc_models.json::/v1/{artifact-type}::get', 'y'], + ['ngc_models.json::/v1/csps::get', 'n'], + ['ngc_kas.json::/v2/orgs::get', 'n'], + ['ngc_kas.json::/v2/users/me::get', 'n'], + ['nvcf_openapi.json::/v2/nvcf/functions::get', 'n'], + ['nvcf_openapi.json::/v2/nvcf/clusterGroups::get', 'n'] +]); + +const TEAM_PARAM = /\{team-?name\}|\{teamName\}|\{team\}/i; + +function pathParams(p) { + return (p.match(/\{[^}]+\}/g) || []).map((s) => s.slice(1, -1)); +} + +// team-scoped twin: a team parameter used as a scope (resource segments +// continue after it). A path that terminates at the team itself (the teams +// resource, or a share-to-team grant target) is not a twin. +function isTeamScopedTwin(p) { + const segs = p.split('/'); + for (let i = 0; i < segs.length; i++) { + if (TEAM_PARAM.test(segs[i]) && !/\{target-team\}|\{artifact-team-name\}/.test(segs[i])) { + if (i < segs.length - 1) return true; + } + // guest catalog team shape: /v1/models/{org-name}/{team-name}/{name}... + } + return false; +} + +function isGuestTeamShape(p) { + return /\{org-?name\}\/\{team-?name\}\//i.test(p) || /\{orgName\}\/\{teamName\}\//.test(p); +} + +// --------------------------------------------------------------------------- +// response shape helpers +// --------------------------------------------------------------------------- + +function deref(spec, node) { + if (node && node.$ref) { + const parts = node.$ref.replace(/^#\//, '').split('/'); + let cur = spec; + for (const part of parts) cur = cur?.[part]; + return cur || {}; + } + return node || {}; +} + +function responseShape(spec, op) { + const resp = op.responses?.['200'] || op.responses?.['201'] || op.responses?.['202']; + if (!resp) return { shape: 'none', objectKey: '' }; + const content = deref(spec, resp).content; + const media = content?.['application/json'] || content?.['*/*'] || Object.values(content || {})[0]; + if (!media?.schema) return { shape: 'none', objectKey: '' }; + const schema = deref(spec, media.schema); + if (schema.type === 'array' || (Array.isArray(schema.type) && schema.type.includes('array'))) { + return { shape: 'array', objectKey: '' }; + } + const props = schema.properties ? Object.keys(schema.properties) : []; + const arrayProps = props.filter((k) => { + const ps = deref(spec, schema.properties[k]); + return ps.type === 'array' || (Array.isArray(ps.type) && ps.type.includes('array')); + }).filter((k) => k !== 'requestStatus'); + return { + shape: props.length ? `object{${props.slice(0, 6).join(';')}${props.length > 6 ? ';...' : ''}}` : 'object', + objectKey: arrayProps.length === 1 ? `$.${arrayProps[0]}` : (arrayProps.length > 1 ? `$.${arrayProps[0]}?multi:${arrayProps.join('|')}` : '') + }; +} + +function paginationParams(spec, op, pathItem) { + const params = [...(pathItem.parameters || []), ...(op.parameters || [])].map((p) => deref(spec, p)); + return params + .filter((p) => p.in === 'query' && /^(page|page-?size|pageSize|page-?number|cursor|offset|limit|next|token)$/i.test(p.name)) + .map((p) => p.name).join('+'); +} + +function authDeclared(spec, op) { + const sec = op.security !== undefined ? op.security : spec.security; + if (!sec || sec.length === 0) return 'none-declared'; + const names = sec.flatMap((s) => Object.keys(s)); + return names.join('+') || 'none-declared'; +} + +// --------------------------------------------------------------------------- +// classification rules per source +// --------------------------------------------------------------------------- + +function classifyNvcf(p, verb, op) { + const tag = (op.tags || [])[0] || ''; + if (p === '/health') return { skip: 'service-infra' }; + + const T = { + 'Function Management': () => { + if (p === '/v2/nvcf/functions' && verb === 'get') return r('nvcf_functions', 'functions', 'list', 'select'); + if (p === '/v2/nvcf/functions' && verb === 'post') return r('nvcf_functions', 'functions', 'create', 'insert'); + if (p === '/v2/nvcf/functions/ids') return r('nvcf_functions', 'functions', 'list_ids', 'select'); + if (p === '/v2/nvcf/functions/{functionId}/versions' && verb === 'get') return r('nvcf_functions', 'function_versions', 'list', 'select'); + if (p === '/v2/nvcf/functions/{functionId}/versions' && verb === 'post') return r('nvcf_functions', 'function_versions', 'create', 'insert'); + if (p === '/v2/nvcf/functions/{functionId}/versions/{functionVersionId}') { + if (verb === 'get') return r('nvcf_functions', 'function_versions', 'get', 'select'); + if (verb === 'put') return r('nvcf_functions', 'function_versions', 'update', 'update', 'PUT semantics unverified (keycloak rule): update until field-drop evidence'); + if (verb === 'delete') return r('nvcf_functions', 'function_versions', 'delete', 'delete'); + } + if (p.startsWith('/v2/nvcf/metadata/')) return r('nvcf_functions', 'function_metadata', 'update', 'update', 'PUT semantics unverified'); + }, + 'Function Sharing': () => { + const versioned = p.includes('/versions/'); + const res = 'authorizations'; + const m = versioned ? '_version' : ''; + if (verb === 'get') return r('nvcf_functions', res, `list${m}`, 'select'); + if (verb === 'post') return r('nvcf_functions', res, `set${m}`, 'replace', 'POST replaces the full authorized-party list - grants-as-data set operation'); + if (p.endsWith('/add')) return r('nvcf_functions', res, `add${m}`, 'insert'); + if (p.endsWith('/remove')) return r('nvcf_functions', res, `remove${m}`, 'delete'); + if (verb === 'delete') return r('nvcf_functions', res, `delete_all${m}`, 'exec', 'delete-all kept off the DELETE verb: same path-param signature as the granular remove'); + }, + 'Function Deployment': () => { + if (p === '/v2/nvcf/deployments/{deploymentId}') return r('nvcf_deployments', 'deployments', 'get_by_id', 'select'); + if (p.includes('/gpu-specifications/')) return r('nvcf_deployments', 'deployment_gpu_specs', 'update', 'update'); + if (verb === 'get') return r('nvcf_deployments', 'deployments', 'get', 'select'); + if (verb === 'post') return r('nvcf_deployments', 'deployments', 'create', 'insert'); + if (verb === 'put') return r('nvcf_deployments', 'deployments', 'update', 'update', 'PUT semantics unverified'); + if (verb === 'delete') return r('nvcf_deployments', 'deployments', 'delete', 'delete'); + }, + 'Cluster Groups and GPUs': () => r('nvcf_deployments', 'cluster_groups', 'list', 'select'), + 'Registry Credential Management': () => { + if (p === '/v2/nvcf/recognized-registries') return r('nvcf_deployments', 'recognized_registries', 'list', 'select'); + if (verb === 'get' && p.endsWith('registry-credentials')) return r('nvcf_deployments', 'registry_credentials', 'list', 'select'); + if (verb === 'get') return r('nvcf_deployments', 'registry_credentials', 'get', 'select'); + if (verb === 'post') return r('nvcf_deployments', 'registry_credentials', 'create', 'insert'); + if (verb === 'patch') return r('nvcf_deployments', 'registry_credentials', 'update', 'update'); + if (verb === 'delete') return r('nvcf_deployments', 'registry_credentials', 'delete', 'delete'); + }, + 'Telemetry Management': () => { + if (verb === 'get' && p.endsWith('telemetries')) return r('nvcf_deployments', 'telemetries', 'list', 'select'); + if (verb === 'get') return r('nvcf_deployments', 'telemetries', 'get', 'select'); + if (verb === 'post') return r('nvcf_deployments', 'telemetries', 'create', 'insert'); + if (verb === 'delete') return r('nvcf_deployments', 'telemetries', 'delete', 'delete'); + }, + 'User Secret Management': () => { + if (p.includes('/secrets/functions/')) return r('nvcf_functions', 'function_secrets', 'update', 'update', 'PUT semantics unverified'); + if (p.includes('/secrets/telemetries/')) return r('nvcf_deployments', 'telemetry_secrets', 'update', 'update', 'PUT semantics unverified'); + }, + 'User Ratelimit Management': () => { + if (verb === 'put') return r('nvcf_functions', 'function_ratelimits', 'update', 'update', 'PUT semantics unverified'); + if (verb === 'delete') return r('nvcf_functions', 'function_ratelimits', 'delete', 'delete'); + }, + 'Queue Details': () => { + if (p.includes('/position')) return r('nvcf_queues', 'queue_positions', 'get', 'select'); + if (p.includes('/versions/')) return r('nvcf_queues', 'queues', 'list_version', 'select'); + return r('nvcf_queues', 'queues', 'list', 'select'); + }, + 'Function Invocation': () => { + if (p.startsWith('/v2/nvcf/pexec/status/')) return r('nvcf_invocation', 'invocation_status', 'get', 'select', 'polling form: EXEC returns 202 + requestId, status polled here (proxmox precedent)'); + if (p.includes('/versions/')) return r('nvcf_invocation', 'invocations', 'invoke_version', 'exec', 'polling invocation, scoped in'); + return r('nvcf_invocation', 'invocations', 'invoke', 'exec', 'polling invocation, scoped in'); + }, + 'Function Invocation Assertion Token': () => { + if (p === '/v2/nvcf/tokens/functions') return r('nvcf_invocation', 'tokens', 'create_for_functions', 'exec', 'ephemeral credential mint - action, nothing queryable persisted'); + if (p.includes('/versions/')) return r('nvcf_invocation', 'tokens', 'create_for_version', 'exec'); + return r('nvcf_invocation', 'tokens', 'create_for_function', 'exec'); + }, + 'Asset Management': () => { + if (verb === 'get' && p === '/v2/nvcf/assets') return r('nvcf_invocation', 'assets', 'list', 'select'); + if (verb === 'get') return r('nvcf_invocation', 'assets', 'get', 'select'); + if (verb === 'post') return r('nvcf_invocation', 'assets', 'create', 'insert'); + if (verb === 'delete') return r('nvcf_invocation', 'assets', 'delete', 'delete'); + } + }; + + const fn = T[tag]; + const res = fn ? fn() : null; + if (!res) return { error: `unclassified nvcf operation: ${verb} ${p} [${tag}]` }; + res.host = NVCF_HOST_TAGS.has(tag) ? 'api.nvcf.nvidia.com' : 'api.ngc.nvidia.com'; + res.invocationForm = tag === 'Function Invocation' ? 'polling' : ''; + return res; +} + +function classifyKas(p, verb, op) { + if (/^\/(health|version|swagger-resources|public-keys)/.test(p)) return { skip: 'service-infra' }; + if (/^\/v[23]\/admin\//.test(p) || p === '/v2/admin' ) return { skip: 'internal-admin' }; + if (op.deprecated) return { skip: 'deprecated-inline' }; + if (isTeamScopedTwin(p)) return { skip: 'deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09)' }; + + if (p === '/roles') return r('orgs', 'roles', 'list', 'select'); + if (p === '/v2/orgs' && verb === 'get') return r('orgs', 'orgs', 'list', 'select'); + if (p === '/v2/orgs/{org-name}' && verb === 'get') return r('orgs', 'orgs', 'get', 'select'); + if (p === '/v2/orgs/{org-name}' && verb === 'patch') return r('orgs', 'orgs', 'update', 'update'); + if (p === '/v3/orgs' && verb === 'post') return r('orgs', 'orgs', 'create', 'insert'); + if (p === '/v3/orgs/proto-org') return r('orgs', 'proto_orgs', 'create', 'insert'); + if (p === '/v3/orgs/proto-org/validate') return r('orgs', 'proto_orgs', 'validate', 'select'); + + if (p === '/v2/org/{org-name}/teams' && verb === 'get') return r('orgs', 'teams', 'list', 'select'); + if (p === '/v2/org/{org-name}/teams' && verb === 'post') return r('orgs', 'teams', 'create', 'insert'); + if (p === '/v2/org/{org-name}/teams/{team-name}') { + if (verb === 'get') return r('orgs', 'teams', 'get', 'select'); + if (verb === 'patch') return r('orgs', 'teams', 'update', 'update'); + if (verb === 'delete') return r('orgs', 'teams', 'delete', 'delete'); + } + + if (p === '/v2/org/{org-name}/users' && verb === 'get') return r('orgs', 'users', 'list', 'select'); + if (p === '/v2/org/{org-name}/users' && verb === 'post') return r('orgs', 'users', 'create', 'insert'); + if (p === '/v2/org/{org-name}/users/{id}' && verb === 'get') return { skip: 'superseded-by-v3-twin (/v3/orgs/{org-name}/users/{user-email-or-id})' }; + if (p === '/v2/org/{org-name}/users/{id}' && verb === 'delete') return { skip: 'superseded-by-v3-twin (/v3/orgs/{org-name}/users/{id})' }; + if (p === '/v3/orgs/{org-name}/users/{user-email-or-id}' && verb === 'get') return r('orgs', 'users', 'get', 'select'); + if (p === '/v3/orgs/{org-name}/users/{id}' && verb === 'delete') return r('orgs', 'users', 'delete', 'delete'); + if (p === '/v2/org/{org-name}/starfleetIds/{starfleet-id}') return r('orgs', 'users', 'get_by_starfleet_id', 'select'); + if (p.endsWith('/add-role')) return r('orgs', 'user_roles', 'add', 'insert'); + if (p.endsWith('/remove-role')) return r('orgs', 'user_roles', 'remove', 'delete'); + if (p === '/v2/org/{org-name}/users/invitations') return r('orgs', 'user_invitations', 'list', 'select'); + if (p === '/v2/org/{org-name}/users/invitations/{id}' && verb === 'delete') return r('orgs', 'user_invitations', 'delete', 'delete'); + if (p.endsWith('/resend-invitation-email')) return r('orgs', 'user_invitations', 'resend_email', 'exec', 'non-idempotent GET (sends email) - action, not a read'); + if (p.endsWith('/users/nca-invitations')) return r('orgs', 'user_invitations', 'create_nca', 'insert'); + + if (p === '/v2/users/me' && verb === 'get') return r('orgs', 'current_user', 'get', 'select'); + if (p === '/v2/users/me' && verb === 'patch') return r('orgs', 'current_user', 'update', 'update'); + if (p === '/v2/users/me/api-key') return r('orgs', 'current_user', 'create_api_key', 'exec', 'credential mint - action'); + + return { error: `unclassified kas operation: ${verb} ${p}` }; +} + +function classifyModels(p, verb, op) { + if (/^\/health/.test(p)) return { skip: 'service-infra' }; + if (op.deprecated) return { skip: 'deprecated-inline' }; + if (p === '/v1/malware-scan-notification') return { skip: 'inbound-webhook-not-client-api' }; + if (/\/files\/(multipart|clone|commit)|\/files\/\*\*|\/async-clone|\/zip(\/|$)|\{artifact-name\}\/files$|\{artifactName\}\/files$/.test(p) && + !/versions\/\{version-id\}\/files$|\{version\}\/files$/.test(p)) { + return { skip: 'data-plane-file-transfer' }; + } + if (isTeamScopedTwin(p) || isGuestTeamShape(p)) return { skip: 'deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09)' }; + if (p.startsWith('/v1/deploy/')) return { skip: 'duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family)' }; + + // /v1/csps/{artifact-type}/org/... and /v1/{artifact-type}/org/... are + // alternate path families for operations also present under + // /v1/org/{org-name}/... - the org-scoped family is the one mapped + if (p.startsWith('/v1/csps/{artifact-type}/org/')) return { skip: 'duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/.../deployments)' }; + if (/^\/v1\/\{artifact-type\}\/org\//.test(p)) return { skip: 'duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/{artifact-name}/collections)' }; + + const org = p.includes('/org/{org') || /\/org\/\{orgName\}/.test(p); + const svc = org ? 'registry' : 'catalog'; + + // catalog (guest) families ------------------------------------------------ + if (!org) { + if (p === '/v1/{artifact-type}') return r('catalog', 'artifacts', 'list', 'select'); + if (p === '/v1/{artifact-type}/{org-name}/{artifact-name}') return r('catalog', 'artifacts', 'get', 'select'); + if (/^\/v1\/\{artifact-type\}\/\{org-name\}\/\{artifact-name\}\/versions\/\{version-id\}\/files$/.test(p)) return r('catalog', 'artifact_files', 'list', 'select'); + if (p.endsWith('/signature')) return r('catalog', 'artifact_signatures', 'get', 'select'); + if (/^\/v1\/\{artifactType\}\/\{orgName\}\/\{artifactName\}\/spec$/.test(p)) return r('catalog', 'artifact_specs', 'get', 'select'); + if (/^\/v1\/\{artifact-type\}\/org\/\{org-name\}\/\{artifact-name\}\/collections$/.test(p)) return r('catalog', 'artifact_collections', 'list', 'select'); + if (p === '/v1/models') return r('catalog', 'models', 'list', 'select'); + if (p === '/v1/models/{org-name}/{model-name}') return r('catalog', 'models', 'get', 'select'); + if (p === '/v1/models/{org-name}/{model-name}/versions') return r('catalog', 'model_versions', 'list', 'select'); + if (p === '/v1/models/{org-name}/{model-name}/versions/{version-id}') return r('catalog', 'model_versions', 'get', 'select'); + if (p === '/v1/models/{org-name}/{model-name}/versions/{version-id}/files') return r('catalog', 'model_files', 'list', 'select'); + if (p === '/v1/recipes') return r('catalog', 'recipes', 'list', 'select'); + if (p === '/v1/recipes/{org-name}/{recipe-name}') return r('catalog', 'recipes', 'get', 'select'); + if (p === '/v1/recipes/{org-name}/{recipe-name}/versions') return r('catalog', 'recipe_versions', 'list', 'select'); + if (p === '/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}') return r('catalog', 'recipe_versions', 'get', 'select'); + if (p === '/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files') return r('catalog', 'recipe_files', 'list', 'select'); + if (p === '/v1/resources') return r('catalog', 'resources', 'list', 'select'); + if (p === '/v1/resources/{org-name}/{recipe-name}') return r('catalog', 'resources', 'get', 'select'); + if (p === '/v1/resources/{org-name}/{recipe-name}/versions') return r('catalog', 'resource_versions', 'list', 'select'); + if (p === '/v1/resources/{org-name}/{recipe-name}/versions/{version-id}') return r('catalog', 'resource_versions', 'get', 'select'); + if (p === '/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files') return r('catalog', 'resource_files', 'list', 'select'); + if (p === '/v1/helm-charts/{org-name}/{artifact-name}/versions') return r('catalog', 'helm_chart_versions', 'list', 'select'); + if (p === '/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id}') return r('catalog', 'helm_chart_versions', 'get', 'select'); + if (p === '/v1/collections') return r('catalog', 'collections', 'list', 'select'); + if (p === '/v1/collections/{org-name}/{collection-name}') return r('catalog', 'collections', 'get', 'select'); + if (/^\/v1\/collections\/\{org-name\}\/\{collection-name\}\/artifacts\/\{artifact-type\}$/.test(p)) return r('catalog', 'collection_artifacts', 'list', 'select'); + if (p === '/v1/gpus') return r('catalog', 'gpus', 'list', 'select'); + if (p.startsWith('/v1/gpus/pci-device-id')) { + const m = p.includes('pci-subsystem-device-id') ? '_by_vendor_subsystem' + : (p.includes('pci-vendor-id') ? '_by_vendor' : ''); + if (verb === 'get') return r('catalog', 'gpus', `get${m}`, 'select'); + if (verb === 'post') return r('catalog', 'gpus', `create${m}`, 'insert', 'publisher-privileged write, mapped as documented'); + if (verb === 'patch') return r('catalog', 'gpus', `update${m}`, 'update', 'publisher-privileged write'); + if (verb === 'delete') return r('catalog', 'gpus', `delete${m}`, 'delete', 'publisher-privileged write'); + } + if (p === '/v1/csps' && verb === 'get') return r('catalog', 'csps', 'list', 'select'); + if (p === '/v1/csps' && verb === 'post') return r('catalog', 'csps', 'create', 'insert', 'publisher-privileged write'); + if (p === '/v1/csps/{csp-name}') { + if (verb === 'get') return r('catalog', 'csps', 'get', 'select'); + if (verb === 'patch') return r('catalog', 'csps', 'update', 'update', 'publisher-privileged write'); + if (verb === 'delete') return r('catalog', 'csps', 'delete', 'delete', 'publisher-privileged write'); + } + if (p.startsWith('/v1/csps/{csp-name}/deployments/params')) { + const meta = p.endsWith('/meta') ? '_meta' : ''; + if (verb === 'get') return r('catalog', `csp_deployment_params${meta}`, 'get', 'select'); + if (verb === 'post') return r('catalog', `csp_deployment_params${meta}`, 'create', 'insert'); + if (verb === 'patch') return r('catalog', `csp_deployment_params${meta}`, 'update', 'update'); + if (verb === 'delete') return r('catalog', `csp_deployment_params${meta}`, 'delete', 'delete'); + } + if (p.startsWith('/v1/csps/{artifact-type}/') && p.endsWith('/params')) { + const byCsp = p.includes('{csp-name}'); + return r('catalog', 'artifact_deployment_params', byCsp ? 'get' : 'list', 'select'); + } + if (p.startsWith('/v1/csps/{artifact-type}/org/')) { + return r('catalog', 'artifact_deployments', p.includes('/files/') ? 'create_for_file' : 'create', 'insert', 'launches a CSP deployment for an artifact version'); + } + return { error: `unclassified catalog operation: ${verb} ${p}` }; + } + + // registry (org-scoped) families ------------------------------------------- + const generic = /\{artifact-?type\}/i.test(p); + if (p === '/v1/artifact-registry/org/{org-name}/encryption-keys') return r('registry', 'encryption_keys', 'list', 'select'); + if (p === '/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id}') { + if (verb === 'get') return r('registry', 'encryption_keys', 'get', 'select'); + if (verb === 'delete') return r('registry', 'encryption_keys', 'delete', 'delete'); + } + if (p === '/v1/artifact-registry/org/{org}/workflows/{workflowId}') return r('registry', 'workflows', 'get', 'select'); + + if (p === '/v1/org/{org-name}/collections' && verb === 'get') return r('registry', 'collections', 'list', 'select'); + if (p === '/v1/org/{org-name}/collections' && verb === 'post') return r('registry', 'collections', 'create', 'insert'); + if (p === '/v1/org/{org-name}/collections/{collection-name}') { + if (verb === 'get') return r('registry', 'collections', 'get', 'select'); + if (verb === 'patch') return r('registry', 'collections', 'update', 'update'); + if (verb === 'delete') return r('registry', 'collections', 'delete', 'delete'); + } + if (p.startsWith('/v1/org/{org-name}/collections/{collection-name}')) { + if (p.includes('/share') ) { + const target = p.includes('/product') ? '_product' : (p.includes('/shares/org') ? '_org' : (p.includes('/shares/team/') ? '_team' : '')); + if (verb === 'put') return r('registry', 'collection_shares', `add${target}`, 'insert', 'grants-as-data'); + if (verb === 'delete') return r('registry', 'collection_shares', `remove${target}`, 'delete', 'grants-as-data'); + } + if (/\/artifacts\/\{artifact-type\}$/.test(p)) return r('registry', 'collection_artifacts', 'list', 'select'); + if (/\/artifacts$/.test(p) && verb === 'patch') return r('registry', 'collection_artifacts', 'update_bulk', 'update', 'bulk membership update'); + if (p.includes('/artifacts/org/')) { + if (p.includes('/team/{artifact-team-name}/')) return { skip: 'deprecated-team-scoped (references a team-scoped artifact; NGC API deprecation schedule: team-scoped paths end 2026-09)' }; + if (verb === 'put') return r('registry', 'collection_artifacts', 'add_cross_org', 'insert', 'grants-as-data membership'); + if (verb === 'delete') return r('registry', 'collection_artifacts', 'remove_cross_org', 'delete'); + } + if (/\{artifact-type\}\/\{artifact-name\}$/.test(p)) { + if (verb === 'put') return r('registry', 'collection_artifacts', 'add', 'insert', 'grants-as-data membership'); + if (verb === 'delete') return r('registry', 'collection_artifacts', 'remove', 'delete'); + } + } + + if (p === '/v1/org/{org-name}/models' && verb === 'get') return r('registry', 'models', 'list', 'select'); + if (p === '/v1/org/{org-name}/models' && verb === 'post') return r('registry', 'models', 'create', 'insert'); + if (p === '/v1/org/{org-name}/models/{model-name}') { + if (verb === 'get') return r('registry', 'models', 'get', 'select'); + if (verb === 'patch') return r('registry', 'models', 'update', 'update'); + } + if (p === '/v1/org/{org-name}/models/{model-name}/encryption-key') return r('registry', 'model_encryption_keys', 'delete', 'delete'); + if (p.includes('/models/{model-name}/shares/')) { + const target = p.endsWith('/shares/org') ? '_org' : '_team'; + if (verb === 'put') return r('registry', 'model_shares', `add${target}`, 'insert', 'grants-as-data'); + if (verb === 'delete') return r('registry', 'model_shares', `remove${target}`, 'delete', 'grants-as-data'); + } + if (p === '/v1/org/{org-name}/models/{model-name}/versions' && verb === 'get') return r('registry', 'model_versions', 'list', 'select'); + if (p === '/v1/org/{org-name}/models/{model-name}/versions' && verb === 'post') return r('registry', 'model_versions', 'create', 'insert'); + if (p === '/v1/org/{org-name}/models/{model-name}/versions/{version-id}') { + if (verb === 'get') return r('registry', 'model_versions', 'get', 'select'); + if (verb === 'patch') return r('registry', 'model_versions', 'update', 'update'); + } + if (p === '/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files') return r('registry', 'model_files', 'list', 'select'); + if (p === '/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash') return r('registry', 'model_versions', 'stash', 'exec', 'action on a version'); + + for (const [seg, resBase] of [['recipes', 'recipe'], ['resources', 'resource']]) { + const base = `/v1/org/{org-name}/${seg}`; + if (p === base && verb === 'get') return r('registry', `${resBase}s`, 'list', 'select'); + if (p === base && verb === 'post') return r('registry', `${resBase}s`, 'create', 'insert'); + if (p === `${base}/{recipe-name}`) { + if (verb === 'get') return r('registry', `${resBase}s`, 'get', 'select'); + if (verb === 'patch') return r('registry', `${resBase}s`, 'update', 'update'); + } + if (p === `${base}/{recipe-name}/versions` && verb === 'get') return r('registry', `${resBase}_versions`, 'list', 'select'); + if (p === `${base}/{recipe-name}/versions` && verb === 'post') return r('registry', `${resBase}_versions`, 'create', 'insert'); + if (p === `${base}/{recipe-name}/versions/{version-id}`) { + if (verb === 'get') return r('registry', `${resBase}_versions`, 'get', 'select'); + if (verb === 'patch') return r('registry', `${resBase}_versions`, 'update', 'update'); + } + if (p === `${base}/{recipe-name}/versions/{version-id}/files`) return r('registry', `${resBase}_files`, 'list', 'select'); + } + + if (p === '/v1/org/{org-name}/helm-charts/{artifact-name}/versions') return r('registry', 'helm_chart_versions', 'list', 'select'); + if (p === '/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id}') { + if (verb === 'get') return r('registry', 'helm_chart_versions', 'get', 'select'); + if (verb === 'patch') return r('registry', 'helm_chart_versions', 'update', 'update'); + } + + if (p.includes('/repositories/{container-name}/tags/')) return r('registry', 'repository_associated_models', 'list_by_tag', 'select'); + if (p.includes('/repositories/{container-name}/associated-models')) return r('registry', 'repository_associated_models', 'list', 'select'); + + if (generic) { + if (p === '/v1/org/{org-name}/{artifact-type}' && verb === 'get') return r('registry', 'artifacts', 'list', 'select'); + if (p === '/v1/org/{org-name}/{artifact-type}' && verb === 'post') return r('registry', 'artifacts', 'create', 'insert'); + if (p === '/v1/org/{org-name}/{artifact-type}/{artifact-name}') { + if (verb === 'get') return r('registry', 'artifacts', 'get', 'select'); + if (verb === 'patch') return r('registry', 'artifacts', 'update', 'update'); + if (verb === 'put') return r('registry', 'artifacts', 'replace', 'replace', 'PUT with a PATCH twin - proposed replace, semantics unverified (keycloak rule)'); + if (verb === 'delete') return r('registry', 'artifacts', 'delete', 'delete'); + } + if (p.endsWith('/catalog/flags')) return r('registry', 'artifact_catalog_flags', 'get', 'select'); + if (p.endsWith('/{artifact-name}/collections')) return r('registry', 'artifact_collections', 'list', 'select'); + if (p.endsWith('/sync-release-type-labels')) return r('registry', 'artifacts', 'sync_release_type_labels', 'exec', 'action'); + if (p.endsWith('/deployments/params') && verb === 'get') return r('registry', 'artifact_deployment_params', 'list', 'select'); + if (p.includes('/deployments/{csp-name}/params')) { + if (verb === 'get') return r('registry', 'artifact_deployment_params', 'get', 'select'); + if (verb === 'post') return r('registry', 'artifact_deployment_params', 'create', 'insert'); + if (verb === 'patch') return r('registry', 'artifact_deployment_params', 'update', 'update'); + if (verb === 'delete') return r('registry', 'artifact_deployment_params', 'delete', 'delete'); + } + if (p.endsWith('/license/acceptance')) { + if (verb === 'get') return r('registry', 'license_acceptances', 'get', 'select'); + if (verb === 'post') return r('registry', 'license_acceptances', 'create', 'insert'); + } + if (p.endsWith('/release-type')) return r('registry', 'artifacts', 'set_release_type', 'exec', 'single-field action endpoint'); + if (p.endsWith('/terms-of-service')) return r('registry', 'artifacts', 'set_terms_of_service', 'exec', 'single-field action endpoint'); + if (p.endsWith('/share/product')) { + if (verb === 'put') return r('registry', 'artifact_shares', 'add_product', 'insert', 'grants-as-data'); + if (verb === 'delete') return r('registry', 'artifact_shares', 'remove_product', 'delete'); + } + if (p.endsWith('/share')) { + if (verb === 'put') return r('registry', 'artifact_shares', 'add', 'insert', 'grants-as-data'); + if (verb === 'delete') return r('registry', 'artifact_shares', 'remove', 'delete'); + } + if (/\/versions\/\{version-id\}$/.test(p) && verb === 'delete') return r('registry', 'artifact_versions', 'delete', 'delete'); + if (p.endsWith('/versions/{version-id}/configs')) return r('registry', 'artifact_version_configs', 'update', 'update'); + if (p.includes('/versions/{version-id}/deployments/')) return r('registry', 'artifact_deployments', 'create', 'insert', 'launches a CSP deployment'); + if (/\/versions\/\{version-id\}\/files$/.test(p)) return r('registry', 'artifact_files', 'list', 'select'); + if (p.endsWith('/versions/{version-id}/signature') && verb === 'get') return r('registry', 'artifact_signatures', 'get', 'select'); + if (p.endsWith('/versions/{version-id}/signature') && verb === 'put') return r('registry', 'artifact_signatures', 'set', 'exec', 'write of a computed signature - action'); + if (p.endsWith('/malware-scan')) return r('registry', 'artifacts', 'malware_scan', 'exec', 'action'); + if (p.endsWith('/purge')) return r('registry', 'artifacts', 'purge', 'exec', 'kept off DELETE: same path-param signature as artifacts.delete'); + if (/\{artifactType\}\/\{artifactName\}\/spec$/.test(p)) { + if (verb === 'get') return r('registry', 'artifact_specs', 'get', 'select'); + if (verb === 'put') return r('registry', 'artifact_specs', 'update', 'update', 'PUT semantics unverified'); + if (verb === 'delete') return r('registry', 'artifact_specs', 'delete', 'delete'); + } + if (/\{artifactType\}\/spec$/.test(p) && verb === 'post') return r('registry', 'artifact_specs', 'create', 'insert'); + } + + // generic {type} file listings (duplicate of typed file listings) + if (/^\/v1\/org\/\{org\}\/\{type\}\/\{name\}\/\{version\}\/files$/.test(p)) return r('registry', 'artifact_version_files', 'list', 'select'); + if (/^\/v1\/\{type\}\/org\/\{org\}\/\{name\}\/\{version\}\/files$/.test(p)) return { skip: 'duplicate-endpoint-family (typed/guest file listing twins)' }; + + return { error: `unclassified registry operation: ${verb} ${p}` }; +} + +function r(service, resource, method, sqlVerb, note = '') { + return { service, resource, method, sqlVerb, note }; +} + +// --------------------------------------------------------------------------- +// main +// --------------------------------------------------------------------------- + +const rows = []; +const errors = []; +const stats = { bySource: {}, byService: {}, byVerb: {}, skips: {}, deprecatedTwins: 0, publicReads: 0 }; + +for (const [file, source] of Object.entries(SOURCES)) { + const abs = path.join(cleanedDir, file); + if (!fs.existsSync(abs)) { + console.error(`Error: ${abs} not found - run fetch-specs + clean-specs first`); + process.exit(1); + } + const spec = JSON.parse(fs.readFileSync(abs, 'utf8')); + + for (const [pathKey, pathItem] of Object.entries(spec.paths || {})) { + for (const verb of HTTP_VERBS) { + const op = pathItem[verb]; + if (!op) continue; + + let c; + if (file === 'nvcf_openapi.json') c = classifyNvcf(pathKey, verb, op); + else if (file === 'ngc_kas.json') c = classifyKas(pathKey, verb, op); + else c = classifyModels(pathKey, verb, op); + + if (c.error) { errors.push(c.error); continue; } + + const host = c.host || 'api.ngc.nvidia.com'; + const { shape, objectKey } = responseShape(spec, op); + const orgScoped = /\{org-?name\}|\{orgName\}|\{org\}/.test(pathKey) ? 'y' : 'n'; + const teamScoped = (isTeamScopedTwin(pathKey) || isGuestTeamShape(pathKey)) ? 'y' : 'n'; + const observed = OBSERVED_PUBLIC_READS.get(`${file}::${pathKey}::${verb}`) || ''; + + const row = { + source, file, host, verb, path: pathKey, + operation_id: op.operationId || '', + tags: (op.tags || []).join('|'), + org_scoped: orgScoped, + team_scoped: teamScoped, + deprecated: op.deprecated ? 'y' : (teamScoped === 'y' ? 'y (schedule 2026-09)' : 'n'), + auth_declared: authDeclared(spec, op), + observed_public_read: observed, + pagination_params: paginationParams(spec, op, pathItem), + has_request_body: op.requestBody ? 'y' : 'n', + response_shape: shape, + object_key_candidate: objectKey, + invocation_form: c.invocationForm || '', + service: c.skip ? '' : c.service, + resource: c.skip ? '' : c.resource, + method: c.skip ? '' : c.method, + sql_verb: c.skip ? '' : c.sqlVerb, + skip_reason: c.skip || '', + notes: c.note || '' + }; + rows.push(row); + + stats.bySource[source] = (stats.bySource[source] || 0) + 1; + if (c.skip) { + const key = c.skip.split(' ')[0]; + stats.skips[key] = (stats.skips[key] || 0) + 1; + if (c.skip.startsWith('deprecated-team-scoped')) stats.deprecatedTwins++; + } else { + stats.byService[c.service] = (stats.byService[c.service] || 0) + 1; + stats.byVerb[c.sqlVerb] = (stats.byVerb[c.sqlVerb] || 0) + 1; + } + if (observed === 'y') stats.publicReads++; + } + } +} + +if (errors.length > 0) { + console.error(`Inventory FAILED with ${errors.length} unclassified operation(s) - nothing written:`); + for (const e of errors) console.error(` ${e}`); + process.exit(1); +} + +// method uniqueness per (service, resource) +const seen = new Map(); +for (const row of rows) { + if (!row.service) continue; + const key = `${row.service}.${row.resource}.${row.method}`; + if (seen.has(key)) { + errors.push(`duplicate method ${key}: ${seen.get(key)} and ${row.verb} ${row.path}`); + } + seen.set(key, `${row.verb} ${row.path}`); +} +if (errors.length > 0) { + console.error(`Inventory FAILED with ${errors.length} consistency error(s) - nothing written:`); + for (const e of errors) console.error(` ${e}`); + process.exit(1); +} + +const header = Object.keys(rows[0]); +const csvField = (v) => (/[",\n\r]/.test(v) ? `"${String(v).replace(/"/g, '""')}"` : String(v)); +const csv = [header.join(','), ...rows.map((row) => header.map((h) => csvField(row[h] ?? '')).join(','))].join('\n') + '\n'; +fs.writeFileSync(outPath, csv); + +console.log(`Wrote ${rows.length} operations to ${outPath}`); +console.log('By source:', JSON.stringify(stats.bySource)); +console.log('Mapped by service:', JSON.stringify(stats.byService, null, 2)); +console.log('Mapped by SQL verb:', JSON.stringify(stats.byVerb)); +console.log('Skips by reason:', JSON.stringify(stats.skips, null, 2)); +console.log(`Deprecated team-scoped twins: ${stats.deprecatedTwins}`); +console.log(`Wire-proven public reads: ${stats.publicReads}`); +console.log(`Total mapped: ${rows.filter((x) => x.service).length}, skipped: ${rows.filter((x) => x.skip_reason).length}`); From 1f3599180c3b3f083b64ee2a50e5f294c92c3bc9 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:45:05 +1000 Subject: [PATCH 06/17] feat: decide the service split from the inventory (task 6) - seven services recorded in service_names.json: orgs, registry, catalog, nvcf_functions, nvcf_deployments, nvcf_queues, nvcf_invocation - catalog confirmed distinct from registry (guest path families, public auth posture); nvcf_invocation added vs the candidate list (pexec, assets, assertion tokens - the api.nvcf.nvidia.com surface); no usage service - no billing/measurement surface in the harvest - service_rules.mjs drives split assignment from the inventory CSV (single source of truth; throws on any operation the inventory does not know) - inventory rule refinements ahead of the signature checks: product shares as own resources, function_ids resource, legacy share twin and duplicate file-listing family skipped with reasons - CLAUDE.md candidate list replaced with the decided split Co-Authored-By: Claude Fable 5 --- CLAUDE.md | 4 +- provider-dev/config/endpoint_inventory.csv | 12 ++-- provider-dev/config/service_names.json | 9 +++ provider-dev/scripts/build_inventory.mjs | 23 +++++-- provider-dev/scripts/service_rules.mjs | 79 ++++++++++++++++++++++ 5 files changed, 112 insertions(+), 15 deletions(-) create mode 100644 provider-dev/config/service_names.json create mode 100644 provider-dev/scripts/service_rules.mjs diff --git a/CLAUDE.md b/CLAUDE.md index c3e6a0e..eff21e1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -66,9 +66,9 @@ Every step is deterministic and re-runnable. Manual mapping decisions are applie ### 1. Split into service specs -`npm run split` with `--provider-name nvidia`. Candidate service split (final decision from the endpoint inventory, recorded in `provider-dev/config/service_names.json`): +`npm run split` with `--provider-name nvidia`. Final service split (decided from the endpoint inventory 2026-07-14, recorded in `provider-dev/config/service_names.json`; assignment rules in `provider-dev/scripts/service_rules.mjs` are driven by the inventory CSV): -`orgs` (organizations, users, memberships), `registry` (container images, models, resources, helm charts - metadata), `catalog` (public catalog reads, if distinct from registry), `nvcf_functions` (functions, versions, authorizations), `nvcf_deployments` (deployments, cluster groups, GPUs), `nvcf_queues` (queue details, position), `usage` (any billing/measurement surface found in the harvest, if present) +`orgs` (organizations, teams, users, role grants, invitations, current user), `registry` (org-scoped artifact metadata: models, resources, recipes, helm chart versions, collections, shares, encryption keys), `catalog` (guest artifact metadata reads plus GPU and CSP catalogs - confirmed distinct from registry: different path families and auth posture), `nvcf_functions` (functions, versions, metadata, authorizations, secrets, rate limits), `nvcf_deployments` (deployments, GPU specs, cluster groups, registry credentials, telemetries), `nvcf_queues` (queue details, position), `nvcf_invocation` (added vs the candidate list: pexec polling invocation, assets, assertion tokens - all served from `api.nvcf.nvidia.com`). No `usage` service: no billing/measurement surface exists in the harvest (the Subscription Service definition is not publicly retrievable; recorded in `download_manifest.json`). ### 2. Generate mappings diff --git a/provider-dev/config/endpoint_inventory.csv b/provider-dev/config/endpoint_inventory.csv index 55f2694..42e846b 100644 --- a/provider-dev/config/endpoint_inventory.csv +++ b/provider-dev/config/endpoint_inventory.csv @@ -47,7 +47,7 @@ nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/{requestId}/posit nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{functionId}/versions/{versionId},getQueuesDetails,Queue Details,n,n,n,none-declared,,,n,object{functionId;queues},$.queues,,nvcf_queues,queues,list_version,select,, nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{functionId},getQueuesDetails_1,Queue Details,n,n,n,none-declared,,,n,object{functionId;queues},$.queues,,nvcf_queues,queues,list,select,, nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/pexec/status/{requestId},getFunctionInvocationResult,Function Invocation,n,n,y,none-declared,,,n,object{short;char;int;long;float;double;...},,polling,nvcf_invocation,invocation_status,get,select,,"polling form: EXEC returns 202 + requestId, status polled here (proxmox precedent)" -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/ids,getFunctionIds,Function Management,n,n,n,none-declared,,,n,object{functionIds},$.functionIds,,nvcf_functions,functions,list_ids,select,, +nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/ids,getFunctionIds,Function Management,n,n,n,none-declared,,,n,object{functionIds},$.functionIds,,nvcf_functions,function_ids,list,select,,own resource: same empty path-param signature as functions.list nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/deployments/{deploymentId},getFunctionDeployment_1,Function Deployment,n,n,n,none-declared,,,n,object{deployment},,,nvcf_deployments,deployments,get_by_id,select,, nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/clusterGroups,getClusterGroups,Cluster Groups and GPUs,n,n,y,none-declared,n,,n,object{clusterGroups},$.clusterGroups,,nvcf_deployments,cluster_groups,list,select,, nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/assets/{assetId},getAsset,Asset Management,n,n,y,none-declared,,,n,object{asset},,,nvcf_invocation,assets,get,select,, @@ -183,8 +183,8 @@ ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-typ ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service,updateTermsOfService_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share,publishArtifact,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,add,insert,,grants-as-data ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share,undoPublishArtifact,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,remove,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,publishArtifactFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,artifact_shares,add_product,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,undoPublishProduct,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,remove_product,delete,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,publishArtifactFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,artifact_product_shares,add,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,undoPublishProduct,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_product_shares,remove,delete,, ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignature,ArtifactSigning,y,n,n,none-declared,,,n,none,,,registry,artifact_signatures,get,select,, ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,signArtifactVersion,ArtifactSigning,y,n,n,ssa,,,n,none,,,registry,artifact_signatures,set,exec,,write of a computed signature - action ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignature_1,ArtifactSigning,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), @@ -232,8 +232,8 @@ ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collection ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/shares/org,shareCollectionInOrgWithOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,add_org,insert,,grants-as-data ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/shares/org,revokeShareCollectionInOrgWithOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,remove_org,delete,,grants-as-data ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/share,publishCollection_1,Publish,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/share,undoPublishCollection_1,Publish,y,n,n,ssa,,,n,none,,,registry,collection_shares,remove,delete,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/share/product,publishCollectionFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,collection_shares,add_product,insert,,grants-as-data +ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/share,undoPublishCollection_1,Publish,y,n,n,ssa,,,n,none,,,,,,,legacy-twin (PUT counterpart deprecated inline; superseded by /shares/org), +ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/share/product,publishCollectionFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,collection_product_shares,add,insert,,grants-as-data ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product,publishCollectionFromRequest_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,add_cross_org,insert,,grants-as-data membership ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,remove_cross_org,delete,, @@ -409,7 +409,7 @@ ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-n ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name},getRecipeInOrgAsGuest_1,Resources,y,n,n,none-declared,,,n,none,,,catalog,resources,get,select,, ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes,listPublicRecipes,Resources,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,recipes,list,select,, ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources,listPublicRecipes_1,Resources,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,resources,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org}/{type}/{name}/{version}/files,downloadAllArtifactFiles,Artifact File,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifact_version_files,list,select,, +ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org}/{type}/{name}/{version}/files,downloadAllArtifactFiles,Artifact File,y,n,n,ssa,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (same listing as /versions/{version-id}/files), ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org}/team/{team}/{type}/{name}/{version}/files,downloadAllArtifactFiles_1,Artifact File,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params,listArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,n,none,,,registry,artifact_deployment_params,list,select,, ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections,listArtifactCollectionsInOrg,Collections,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifact_collections,list,select,, diff --git a/provider-dev/config/service_names.json b/provider-dev/config/service_names.json new file mode 100644 index 0000000..c3ebe02 --- /dev/null +++ b/provider-dev/config/service_names.json @@ -0,0 +1,9 @@ +{ + "orgs": "NGC organizations, teams, users, role grants, invitations and the current user (source: ngc_kas)", + "registry": "NGC private registry - org-scoped artifact metadata: models, resources, recipes, helm chart versions, collections, shares, encryption keys (source: ngc_models, org-scoped families)", + "catalog": "NGC public catalog - guest artifact metadata reads plus the GPU and CSP catalogs; the zero-setup surface (source: ngc_models, guest families)", + "nvcf_functions": "NVCF functions, versions, metadata, authorizations (function sharing grants), secrets and rate limits (source: nvcf)", + "nvcf_deployments": "NVCF deployments, GPU specifications, cluster groups and GPUs, registry credentials, telemetries (source: nvcf)", + "nvcf_queues": "NVCF queue details and queue position (source: nvcf)", + "nvcf_invocation": "NVCF HTTP-polling invocation (pexec + status), assets and invocation assertion tokens (source: nvcf)" +} diff --git a/provider-dev/scripts/build_inventory.mjs b/provider-dev/scripts/build_inventory.mjs index d707f5e..e457639 100644 --- a/provider-dev/scripts/build_inventory.mjs +++ b/provider-dev/scripts/build_inventory.mjs @@ -144,7 +144,7 @@ function classifyNvcf(p, verb, op) { 'Function Management': () => { if (p === '/v2/nvcf/functions' && verb === 'get') return r('nvcf_functions', 'functions', 'list', 'select'); if (p === '/v2/nvcf/functions' && verb === 'post') return r('nvcf_functions', 'functions', 'create', 'insert'); - if (p === '/v2/nvcf/functions/ids') return r('nvcf_functions', 'functions', 'list_ids', 'select'); + if (p === '/v2/nvcf/functions/ids') return r('nvcf_functions', 'function_ids', 'list', 'select', 'own resource: same empty path-param signature as functions.list'); if (p === '/v2/nvcf/functions/{functionId}/versions' && verb === 'get') return r('nvcf_functions', 'function_versions', 'list', 'select'); if (p === '/v2/nvcf/functions/{functionId}/versions' && verb === 'post') return r('nvcf_functions', 'function_versions', 'create', 'insert'); if (p === '/v2/nvcf/functions/{functionId}/versions/{functionVersionId}') { @@ -367,8 +367,16 @@ function classifyModels(p, verb, op) { if (verb === 'delete') return r('registry', 'collections', 'delete', 'delete'); } if (p.startsWith('/v1/org/{org-name}/collections/{collection-name}')) { - if (p.includes('/share') ) { - const target = p.includes('/product') ? '_product' : (p.includes('/shares/org') ? '_org' : (p.includes('/shares/team/') ? '_team' : '')); + if (p.includes('/share')) { + // /share is the legacy org-wide share (its PUT is deprecated inline); + // product shares get their own resource - same path-param signature + // as the org-wide share otherwise + if (p.endsWith('/share') && verb === 'delete') return { skip: 'legacy-twin (PUT counterpart deprecated inline; superseded by /shares/org)' }; + if (p.endsWith('/share/product')) { + if (verb === 'put') return r('registry', 'collection_product_shares', 'add', 'insert', 'grants-as-data'); + if (verb === 'delete') return r('registry', 'collection_product_shares', 'remove', 'delete', 'grants-as-data'); + } + const target = p.includes('/shares/org') ? '_org' : '_team'; if (verb === 'put') return r('registry', 'collection_shares', `add${target}`, 'insert', 'grants-as-data'); if (verb === 'delete') return r('registry', 'collection_shares', `remove${target}`, 'delete', 'grants-as-data'); } @@ -458,8 +466,9 @@ function classifyModels(p, verb, op) { if (p.endsWith('/release-type')) return r('registry', 'artifacts', 'set_release_type', 'exec', 'single-field action endpoint'); if (p.endsWith('/terms-of-service')) return r('registry', 'artifacts', 'set_terms_of_service', 'exec', 'single-field action endpoint'); if (p.endsWith('/share/product')) { - if (verb === 'put') return r('registry', 'artifact_shares', 'add_product', 'insert', 'grants-as-data'); - if (verb === 'delete') return r('registry', 'artifact_shares', 'remove_product', 'delete'); + // own resource: same path-param signature as artifact_shares + if (verb === 'put') return r('registry', 'artifact_product_shares', 'add', 'insert', 'grants-as-data'); + if (verb === 'delete') return r('registry', 'artifact_product_shares', 'remove', 'delete'); } if (p.endsWith('/share')) { if (verb === 'put') return r('registry', 'artifact_shares', 'add', 'insert', 'grants-as-data'); @@ -481,8 +490,8 @@ function classifyModels(p, verb, op) { if (/\{artifactType\}\/spec$/.test(p) && verb === 'post') return r('registry', 'artifact_specs', 'create', 'insert'); } - // generic {type} file listings (duplicate of typed file listings) - if (/^\/v1\/org\/\{org\}\/\{type\}\/\{name\}\/\{version\}\/files$/.test(p)) return r('registry', 'artifact_version_files', 'list', 'select'); + // generic {type} file listings (duplicates of the /versions/{version-id}/files listings) + if (/^\/v1\/org\/\{org\}\/\{type\}\/\{name\}\/\{version\}\/files$/.test(p)) return { skip: 'duplicate-endpoint-family (same listing as /versions/{version-id}/files)' }; if (/^\/v1\/\{type\}\/org\/\{org\}\/\{name\}\/\{version\}\/files$/.test(p)) return { skip: 'duplicate-endpoint-family (typed/guest file listing twins)' }; return { error: `unclassified registry operation: ${verb} ${p}` }; diff --git a/provider-dev/scripts/service_rules.mjs b/provider-dev/scripts/service_rules.mjs new file mode 100644 index 0000000..1f5338a --- /dev/null +++ b/provider-dev/scripts/service_rules.mjs @@ -0,0 +1,79 @@ +// Service assignment rules for bin/split.mjs, driven by the generated +// endpoint inventory (provider-dev/config/endpoint_inventory.csv - the +// single source of truth produced by build_inventory.mjs; regenerate the +// inventory to change assignments, never edit the CSV). +// +// serviceFor(sourceName, pathKey, operationId, tags, ctx) returns the +// service name for an operation, or null to skip it (skip-reason-coded +// operations in the inventory). Throws on any operation the inventory does +// not know - split must never silently pass an unclassified operation. + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const csvPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); + +function parseCsv(text) { + const rows = []; + let row = [], field = '', inQuotes = false; + for (let i = 0; i < text.length; i++) { + const c = text[i]; + if (inQuotes) { + if (c === '"') { + if (text[i + 1] === '"') { field += '"'; i++; } else { inQuotes = false; } + } else { field += c; } + } else if (c === '"') { + inQuotes = true; + } else if (c === ',') { + row.push(field); field = ''; + } else if (c === '\n' || c === '\r') { + if (c === '\r' && text[i + 1] === '\n') i++; + row.push(field); field = ''; + if (row.length > 1 || row[0] !== '') rows.push(row); + row = []; + } else { field += c; } + } + if (field !== '' || row.length > 0) { row.push(field); rows.push(row); } + return rows; +} + +const rows = parseCsv(fs.readFileSync(csvPath, 'utf8')); +const header = rows[0]; +const col = Object.fromEntries(header.map((h, i) => [h, i])); + +// (file, operationId) -> service|null; fall back to path-level consensus for +// operations without an operationId +const byOpId = new Map(); +const byPath = new Map(); +for (const row of rows.slice(1)) { + const file = row[col.file]; + const service = row[col.service] || null; + const opId = row[col.operation_id]; + if (opId) { + const key = `${file}::${opId}`; + if (byOpId.has(key) && byOpId.get(key) !== service) { + throw new Error(`inventory has conflicting services for duplicate operationId ${key}`); + } + byOpId.set(key, service); + } + const pKey = `${file}::${row[col.path]}`; + if (!byPath.has(pKey)) byPath.set(pKey, new Set()); + if (service) byPath.get(pKey).add(service); +} + +export function serviceFor(sourceName, pathKey, operationId, tags, ctx) { + const file = `${sourceName}.json`; + if (operationId && byOpId.has(`${file}::${operationId}`)) { + return byOpId.get(`${file}::${operationId}`); + } + const services = byPath.get(`${file}::${pathKey}`); + if (services === undefined) { + throw new Error(`operation not in the endpoint inventory: ${file} ${pathKey} (${operationId || 'no operationId'}) - regenerate the inventory`); + } + if (services.size > 1) { + throw new Error(`path ${pathKey} maps to multiple services (${[...services].join(', ')}) and the operation has no operationId to disambiguate`); + } + return services.size === 1 ? [...services][0] : null; +} From 94e3bc1a3b630eb398bba1fecfe21fa111f3da20 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:49:31 +1000 Subject: [PATCH 07/17] feat: run pilot services through split -> mappings -> map_operations - split produced 7 service specs from the 3 cleaned sources via the inventory-driven service_rules.mjs (HEAD/OPTIONS recorded as non-generator-verb skips after split surfaced kas headPing) - generate-mappings (provider-utils analyze) wrote all_services.csv: 222 rows, exactly the 221 inventory-mapped operations - map_operations.mjs fills resource/method/verb/objectKey from the inventory and validates: full coverage both directions, unique methods per resource, unique path-param signatures per SQL verb - all green - result: 221 operations, 81 resources (select 101, insert 40, update 29, delete 32, replace 3, exec 16) - pilot proofs: nvcf_functions grants-as-data (authorizations list SELECT / add INSERT / remove DELETE / set REPLACE / delete_all EXEC), nvcf_deployments estate (cluster_groups.list $.clusterGroups, deployments CRUD), registry proves the harvested source end to end (32 resources) - host-service alignment is 1:1, so the NVCF two-host carry reduces to service-level server assignment (pre_normalize, phase 2) Co-Authored-By: Claude Fable 5 --- provider-dev/config/all_services.csv | 222 + provider-dev/config/endpoint_inventory.csv | 7 + provider-dev/scripts/build_inventory.mjs | 5 +- provider-dev/scripts/map_operations.mjs | 189 + provider-dev/source/catalog.yaml | 4150 +++++++++ provider-dev/source/nvcf_deployments.yaml | 2059 +++++ provider-dev/source/nvcf_functions.yaml | 1727 ++++ provider-dev/source/nvcf_invocation.yaml | 1159 +++ provider-dev/source/nvcf_queues.yaml | 195 + provider-dev/source/orgs.yaml | 4282 +++++++++ provider-dev/source/registry.yaml | 9441 ++++++++++++++++++++ 11 files changed, 23435 insertions(+), 1 deletion(-) create mode 100644 provider-dev/config/all_services.csv create mode 100644 provider-dev/scripts/map_operations.mjs create mode 100644 provider-dev/source/catalog.yaml create mode 100644 provider-dev/source/nvcf_deployments.yaml create mode 100644 provider-dev/source/nvcf_functions.yaml create mode 100644 provider-dev/source/nvcf_invocation.yaml create mode 100644 provider-dev/source/nvcf_queues.yaml create mode 100644 provider-dev/source/orgs.yaml create mode 100644 provider-dev/source/registry.yaml diff --git a/provider-dev/config/all_services.csv b/provider-dev/config/all_services.csv new file mode 100644 index 0000000..ac12430 --- /dev/null +++ b/provider-dev/config/all_services.csv @@ -0,0 +1,222 @@ +filename,path,operationId,formatted_op_id,verb,response_object,tags,formatted_tags,stackql_resource_name,stackql_method_name,stackql_verb,stackql_object_key,op_description +catalog.yaml,/v1/csps,listCloudServiceProviders,list_cloud_service_providers,get,,Cloud service providers,cloud service providers,csps,list,select,,List cloud service providers +catalog.yaml,/v1/csps,createCloudServiceProvider,create_cloud_service_provider,post,,Cloud service providers,cloud service providers,csps,create,insert,,Create cloud service provider +catalog.yaml,/v1/{artifactType}/{orgName}/{artifactName}/spec,getPublicModelArtifactsSpec,get_public_model_artifacts_spec,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get,select,,Get AI Playground for public artifactType +catalog.yaml,/v1/recipes,listPublicRecipes,list_public_recipes,get,,Resources,resources,recipes,list,select,,List public recipes +catalog.yaml,/v1/resources,listPublicRecipes_1,list_public_recipes_1,get,,Resources,resources,resources,list,select,,List public recipes +catalog.yaml,/v1/models,listPublicModels,list_public_models,get,,Models,models,models,list,select,,List public models +catalog.yaml,/v1/gpus,getGpus,get_gpus,get,,GpuByPci,gpu_by_pci,gpus,list,select,,Get all GPUs +catalog.yaml,/v1/collections,listPublicCollections,list_public_collections,get,,Collections,collections,collections,list,select,,List public collections +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},getGpuByPciDeviceId,get_gpu_by_pci_device_id,get,,GpuByPci,gpu_by_pci,gpus,get,select,,Get GPU by PCI Device ID +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},createGpuByPciDeviceId,create_gpu_by_pci_device_id,post,,GpuByPci,gpu_by_pci,gpus,create,insert,,Create GPU by PCI Device ID only +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},deleteGpuByPciDeviceId,delete_gpu_by_pci_device_id,delete,,GpuByPci,gpu_by_pci,gpus,delete,delete,,Delete GPU by PCI Device ID only +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},updateGpuByPciDeviceId,update_gpu_by_pci_device_id,patch,,GpuByPci,gpu_by_pci,gpus,update,update,,Partially update GPU by PCI Device ID only +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},getGpuByPciDeviceIdVendorIdSubsystemDeviceId,get_gpu_by_pci_device_id_vendor_id_subsystem_device_id,get,,GpuByPci,gpu_by_pci,gpus,get_by_vendor_subsystem,select,,"Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},createGpuByPciFullKey,create_gpu_by_pci_full_key,post,,GpuByPci,gpu_by_pci,gpus,create_by_vendor_subsystem,insert,,"Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},deleteGpuByPciFullKey,delete_gpu_by_pci_full_key,delete,,GpuByPci,gpu_by_pci,gpus,delete_by_vendor_subsystem,delete,,"Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},updateGpuByPciFullKey,update_gpu_by_pci_full_key,patch,,GpuByPci,gpu_by_pci,gpus,update_by_vendor_subsystem,update,,"Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v1/csps/{csp_name}/deployments/params,getCloudServiceProviderDeploymentParametersDetails,get_cloud_service_provider_deployment_parameters_details,get,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,get,select,,Get cloud service provider deployment parameters details +catalog.yaml,/v1/csps/{csp_name}/deployments/params,createCloudServiceProviderDeploymentParameters,create_cloud_service_provider_deployment_parameters,post,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,create,insert,,Create cloud service provider deployment parameters +catalog.yaml,/v1/csps/{csp_name}/deployments/params,deleteCloudServiceProviderDeploymentParameters,delete_cloud_service_provider_deployment_parameters,delete,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,delete,delete,,Delete cloud service provider deployment parameters +catalog.yaml,/v1/csps/{csp_name}/deployments/params,updateCloudServiceProviderDeploymentParameters,update_cloud_service_provider_deployment_parameters,patch,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,update,update,,Update cloud service provider deployment parameters +catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,getCloudServiceProviderDeploymentParametersMetaDetails,get_cloud_service_provider_deployment_parameters_meta_details,get,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,get,select,,Get cloud service provider deployment parameters meta details +catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,createCloudServiceProviderDeploymentParametersMeta,create_cloud_service_provider_deployment_parameters_meta,post,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,create,insert,,Create cloud service provider deployment parameters meta +catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,deleteCloudServiceProviderDeploymentParametersMeta,delete_cloud_service_provider_deployment_parameters_meta,delete,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,delete,delete,,Delete cloud service provider deployment parameters meta +catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,updateCloudServiceProviderDeploymentParametersMeta,update_cloud_service_provider_deployment_parameters_meta,patch,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,update,update,,Update cloud service provider deployment parameters meta +catalog.yaml,/v1/csps/{csp_name},getCloudServiceProviderDetails,get_cloud_service_provider_details,get,,Cloud service providers,cloud service providers,csps,get,select,,Get cloud service provider details +catalog.yaml,/v1/csps/{csp_name},deleteCloudServiceProvider,delete_cloud_service_provider,delete,,Cloud service providers,cloud service providers,csps,delete,delete,,Delete cloud service provider +catalog.yaml,/v1/csps/{csp_name},updateCloudServiceProvider,update_cloud_service_provider,patch,,Cloud service providers,cloud service providers,csps,update,update,,Update cloud service provider +catalog.yaml,/v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignatureAsGuest,get_artifact_version_signature_as_guest,get,,ArtifactSigning,artifact_signing,artifact_signatures,get,select,,Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest. +catalog.yaml,/v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrgAsGuest,list_artifact_files_in_org_as_guest,get,,Artifact Version Files,artifact version files,artifact_files,list,select,,List artifact files in org as guest +catalog.yaml,/v1/{artifact_type},listPublicArtifacts,list_public_artifacts,get,,Artifacts,artifacts,artifacts,list,select,,List public artifacts +catalog.yaml,/v1/{artifact_type}/{org_name}/{artifact_name},getArtifactInOrgAsGuest,get_artifact_in_org_as_guest,get,,Artifacts,artifacts,artifacts,get,select,,Get artifact in org as guest +catalog.yaml,/v1/recipes/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest,list_mode_files_in_org_as_guest,get,,Resource Version Files endpoints,resource version files endpoints,recipe_files,list,select,,List recipe files in org as guest +catalog.yaml,/v1/resources/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_1,list_mode_files_in_org_as_guest_1,get,,Resource Version Files endpoints,resource version files endpoints,resource_files,list,select,,List recipe files in org as guest +catalog.yaml,/v1/recipes/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest,get_recipe_version_in_org_as_guest,get,,Resource Versions,resource versions,recipe_versions,get,select,,Get recipe version in org as guest +catalog.yaml,/v1/resources/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest_1,get_recipe_version_in_org_as_guest_1,get,,Resource Versions,resource versions,resource_versions,get,select,,Get recipe version in org as guest +catalog.yaml,/v1/recipes/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest,list_recipe_versions_in_org_as_guest,get,,Resource Versions,resource versions,recipe_versions,list,select,,List recipe versions in org as guest +catalog.yaml,/v1/resources/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest_1,list_recipe_versions_in_org_as_guest_1,get,,Resource Versions,resource versions,resource_versions,list,select,,List recipe versions in org as guest +catalog.yaml,/v1/recipes/{org_name}/{recipe_name},getRecipeInOrgAsGuest,get_recipe_in_org_as_guest,get,,Resources,resources,recipes,get,select,,Get recipe in org as guest +catalog.yaml,/v1/resources/{org_name}/{recipe_name},getRecipeInOrgAsGuest_1,get_recipe_in_org_as_guest_1,get,,Resources,resources,resources,get,select,,Get recipe in org as guest +catalog.yaml,/v1/models/{org_name}/{model_name},getModelInOrgAsGuest,get_model_in_org_as_guest,get,,Models,models,models,get,select,,Get model in org as guest +catalog.yaml,/v1/models/{org_name}/{model_name}/versions,listModelVersionsInOrgAsGuest,list_model_versions_in_org_as_guest,get,,Model Version,model version,model_versions,list,select,,List model versions in org as guest +catalog.yaml,/v1/models/{org_name}/{model_name}/versions/{version_id},getModelVersionInOrgAsGuest,get_model_version_in_org_as_guest,get,,Model Version,model version,model_versions,get,select,,Get model version in org as guest +catalog.yaml,/v1/models/{org_name}/{model_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_2,list_mode_files_in_org_as_guest_2,get,,Model Version Files,model version files,model_files,list,select,,List model files in org as guest +catalog.yaml,/v1/helm-charts/{org_name}/{artifact_name}/versions,listHelmChartVersionsInOrgAsGuest,list_helm_chart_versions_in_org_as_guest,get,,Helm Charts,helm charts,helm_chart_versions,list,select,,List chart versions in org as guest +catalog.yaml,/v1/helm-charts/{org_name}/{artifact_name}/versions/{version_id},getHelmChartVersionInOrgAsGuest,get_helm_chart_version_in_org_as_guest,get,,Helm Charts,helm charts,helm_chart_versions,get,select,,Get chart version in org as guest +catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id},getGpuByPciDeviceIdVendorId,get_gpu_by_pci_device_id_vendor_id,get,,GpuByPci,gpu_by_pci,gpus,get_by_vendor,select,,Get GPUs by PCI Device ID and Vendor ID +catalog.yaml,/v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInOrg,get_public_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get,select,,Get public artifact deployment parameters details in org +catalog.yaml,/v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInOrg,list_public_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list,select,,List public artifact deployment parameters in org +catalog.yaml,/v1/collections/{org_name}/{collection_name},getCollectionInOrgAsGuest,get_collection_in_org_as_guest,get,,Collections,collections,collections,get,select,,Get collection in org as guest +catalog.yaml,/v1/collections/{org_name}/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrgAsGuest,list_collection_artifacts_in_org_as_guest,get,,Collections,collections,collection_artifacts,list,select,,List collection artifacts in org as guest +nvcf_deployments.yaml,/v2/nvcf/secrets/telemetries/{telemetryId},updateTelemetrySecret,update_telemetry_secret,put,,User Secret Management,user secret management,telemetry_secrets,update,update,,Update secret for a specific Telemetry Id +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},getFunctionDeployment,get_function_deployment,get,DeploymentResponse,Function Deployment,function deployment,deployments,get,select,,Get Function Deployment Details +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},updateFunctionDeployment,update_function_deployment,put,DeploymentResponse,Function Deployment,function deployment,deployments,update,update,,Update Function Deployment +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},createFunctionDeployment,create_function_deployment,post,DeploymentResponse,Function Deployment,function deployment,deployments,create,insert,,Deploy Function +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},deleteFunctionDeployment,delete_function_deployment,delete,FunctionResponse,Function Deployment,function deployment,deployments,delete,delete,,Delete Function Deployment +nvcf_deployments.yaml,/v2/nvcf/telemetries,getTelemetriesByAccount,get_telemetries_by_account,get,ListTelemetryResponse,Telemetry Management,telemetry management,telemetries,list,select,$.telemetries,List Telemetries +nvcf_deployments.yaml,/v2/nvcf/telemetries,createTelemetry,create_telemetry,post,TelemetryResponse,Telemetry Management,telemetry management,telemetries,create,insert,,Create Telemetry +nvcf_deployments.yaml,/v2/nvcf/registry-credentials,listRegistryCredentialDetails,list_registry_credential_details,get,ListRegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,list,select,$.registryCredentials,List Registry Credentials +nvcf_deployments.yaml,/v2/nvcf/registry-credentials,addRegistryCredential,add_registry_credential,post,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,create,insert,,Add new registry credential to the account +nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registryCredentialId},getRegistryCredentialDetails,get_registry_credential_details,get,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,get,select,,Get Registry Credential Details +nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registryCredentialId},deleteRegistryCredential,delete_registry_credential,delete,,Registry Credential Management,registry credential management,registry_credentials,delete,delete,,Delete Registry Credential +nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registryCredentialId},updateRegistryCredential,update_registry_credential,patch,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,update,update,,Update registry credential +nvcf_deployments.yaml,/v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId},updateGpuSpecification,update_gpu_specification,patch,UpdateGpuSpecificationResponse,Function Deployment,function deployment,deployment_gpu_specs,update,update,,Update the specified GPU specification under the specified deployment +nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetryId},getTelemetry,get_telemetry,get,TelemetryResponse,Telemetry Management,telemetry management,telemetries,get,select,,Get Telemetry Details +nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetryId},deleteTelemetry,delete_telemetry,delete,,Telemetry Management,telemetry management,telemetries,delete,delete,,Delete Telemetry +nvcf_deployments.yaml,/v2/nvcf/recognized-registries,getRecognizedRegistries,get_recognized_registries,get,RecognizedRegistriesResponse,Registry Credential Management,registry credential management,recognized_registries,list,select,,List Recognized Registries +nvcf_deployments.yaml,/v2/nvcf/deployments/{deploymentId},getFunctionDeployment_1,get_function_deployment_1,get,DeploymentResponse,Function Deployment,function deployment,deployments,get_by_id,select,,Get Function Deployment Details +nvcf_deployments.yaml,/v2/nvcf/clusterGroups,getClusterGroups,get_cluster_groups,get,ClusterGroupsResponse,Cluster Groups and GPUs,cluster groups and gpus,cluster_groups,list,select,$.clusterGroups,List Cluster Groups +nvcf_functions.yaml,/v2/nvcf/secrets/functions/{functionId}/versions/{versionId},updateFunctionSecrets,update_function_secrets,put,,User Secret Management,user secret management,function_secrets,update,update,,Update user secrets for a function version +nvcf_functions.yaml,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},updateRateLimit,update_rate_limit,put,,User Ratelimit Management,user ratelimit management,function_ratelimits,update,update,,Update user ratelimit for a function version +nvcf_functions.yaml,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},deleteRateLimit,delete_rate_limit,delete,,User Ratelimit Management,user ratelimit management,function_ratelimits,delete,delete,,Delete user ratelimit for a function version +nvcf_functions.yaml,/v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId},updateFunctionMetadata,update_function_metadata,put,FunctionResponse,Function Management,function management,function_metadata,update,update,,Update Function Metadata +nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},getFunction,get_function,get,FunctionResponse,Function Management,function management,function_versions,get,select,,Get Function Version Details +nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},updateFunction,update_function,put,FunctionResponse,Function Management,function management,function_versions,update,update,,Updates mutable fields of the specified function version. +nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},deleteFunction,delete_function,delete,,Function Management,function management,function_versions,delete,delete,,Delete Function +nvcf_functions.yaml,/v2/nvcf/functions,getFunctions,get_functions,get,ListFunctionsResponse,Function Management,function management,functions,list,select,$.functions,List Functions +nvcf_functions.yaml,/v2/nvcf/functions,createFunction,create_function,post,CreateFunctionResponse,Function Management,function management,functions,create,insert,,Create Function +nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions,getFunctions_1,get_functions_1,get,ListFunctionsResponse,Function Management,function management,function_versions,list,select,$.functions,List Function Versions +nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions,createFunction_1,create_function_1,post,CreateFunctionResponse,Function Management,function management,function_versions,create,insert,,Create Function Version +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId},getAuthorizedPartiesForAllVersions,get_authorized_parties_for_all_versions,get,ListAuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list,select,$.functions,List Account Authorizations For Function +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId},createAuthorizedPartiesForAllVersions,create_authorized_parties_for_all_versions,post,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,set,replace,,Authorize Accounts To Invoke Function +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId},deleteAuthorizedPartiesForAllVersions,delete_authorized_parties_for_all_versions,delete,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,delete_all,exec,,Delete All Authorizations At Function Level +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},getAuthorizedPartiesForSpecificVersion,get_authorized_parties_for_specific_version,get,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list_version,select,,Get Account Authorizations For Function Version +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},createAuthorizedPartiesForSpecificVersion,create_authorized_parties_for_specific_version,post,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,set_version,replace,,Authorize Accounts To Invoke/List Function Version +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},deleteAuthorizedPartiesForSpecificVersion,delete_authorized_parties_for_specific_version,delete,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,delete_all_version,exec,,Delete All Authorizations At Version Level +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove,removeAuthorizedPartyForSpecificVersion,remove_authorized_party_for_specific_version,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,remove_version,delete,,"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function Version" +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add,addAuthorizedPartyForSpecificVersion,add_authorized_party_for_specific_version,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,add_version,insert,,"Authorize Another Account To Invoke, List, and Check Queue Details of Function Version" +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/remove,removeAuthorizedPartyForAllVersions,remove_authorized_party_for_all_versions,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,remove,delete,,"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function" +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/add,addAuthorizedPartyForAllVersions,add_authorized_party_for_all_versions,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,add,insert,,"Authorize Another Account To Invoke, List, and Check Queue Details of Function" +nvcf_functions.yaml,/v2/nvcf/functions/ids,getFunctionIds,get_function_ids,get,ListFunctionIdsResponse,Function Management,function management,function_ids,list,select,$.functionIds,List Function Ids +nvcf_invocation.yaml,/v2/nvcf/tokens/functions,issueMultiFunctionsInvocationToken,issue_multi_functions_invocation_token,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_functions,exec,,Issue Function Invocation Token +nvcf_invocation.yaml,/v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId},issueInvocationToken,issue_invocation_token,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_version,exec,,Issue Function Invocation Token +nvcf_invocation.yaml,/v2/nvcf/tokens/functions/{functionId},issueInvocationToken_1,issue_invocation_token_1,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_function,exec,,Issue Function Invocation Token +nvcf_invocation.yaml,/v2/nvcf/pexec/functions/{functionId},invokeFunction,invoke_function,post,,Function Invocation,function invocation,invocations,invoke,exec,,Call Function +nvcf_invocation.yaml,/v2/nvcf/pexec/functions/{functionId}/versions/{versionId},invokeFunction_1,invoke_function_1,post,,Function Invocation,function invocation,invocations,invoke_version,exec,,Call Function +nvcf_invocation.yaml,/v2/nvcf/assets,getAssets,get_assets,get,ListAssetsResponse,Asset Management,asset management,assets,list,select,$.assets,List Assets +nvcf_invocation.yaml,/v2/nvcf/assets,createAsset,create_asset,post,CreateAssetResponse,Asset Management,asset management,assets,create,insert,,Create Asset +nvcf_invocation.yaml,/v2/nvcf/pexec/status/{requestId},getFunctionInvocationResult,get_function_invocation_result,get,,Function Invocation,function invocation,invocation_status,get,select,,Poll For Result Using Function Invocation Request +nvcf_invocation.yaml,/v2/nvcf/assets/{assetId},getAsset,get_asset,get,AssetResponse,Asset Management,asset management,assets,get,select,,Show Asset Details +nvcf_invocation.yaml,/v2/nvcf/assets/{assetId},deleteAsset,delete_asset,delete,,Asset Management,asset management,assets,delete,delete,,Delete Asset +nvcf_queues.yaml,/v2/nvcf/queues/{requestId}/position,getPositionInQueue,get_position_in_queue,get,GetPositionInQueueResponse,Queue Details,queue details,queue_positions,get,select,,Queue Position +nvcf_queues.yaml,/v2/nvcf/queues/functions/{functionId}/versions/{versionId},getQueuesDetails,get_queues_details,get,GetQueuesResponse,Queue Details,queue details,queues,list_version,select,$.queues,Queue Details +nvcf_queues.yaml,/v2/nvcf/queues/functions/{functionId},getQueuesDetails_1,get_queues_details_1,get,GetQueuesResponse,Queue Details,queue details,queues,list,select,$.queues,Queue Details +orgs.yaml,/v3/orgs/proto-org,createOrganizationFromProtoOrg,create_organization_from_proto_org,post,OrgResponse,Orgs,orgs,proto_orgs,create,insert,,Create Organization from ProtoOrg +orgs.yaml,/v3/orgs,createOrganizationFromScratch,create_organization_from_scratch,post,OrgResponse,Orgs,orgs,orgs,create,insert,,Create Organization from Scratch +orgs.yaml,/v2/users/me/api-key,generateUserApiKey,generate_user_api_key,post,UserKeyResponse,Users Management,users management,current_user,create_api_key,exec,,Generate API Key +orgs.yaml,/v2/users/me,whoAmI,who_am_i,get,UserResponse,Users Management,users management,current_user,get,select,$.userRoles,Who am I? +orgs.yaml,/v2/users/me,editUserProfile,edit_user_profile,patch,UserResponse,Users Management,users management,current_user,update,update,$.userRoles,Edit current user profile +orgs.yaml,/v3/orgs/proto-org/validate,protoOrgInvitationValidate,proto_org_invitation_validate,get,OrgInvitationResponse,Orgs,orgs,proto_orgs,validate,select,,Validate org creation invite +orgs.yaml,/v2/orgs,listOrganizations_1,list_organizations_1,get,OrgListResponse,Orgs,orgs,orgs,list,select,$.organizations,List Organizations +orgs.yaml,/roles,getRoles,get_roles,get,UserRoleDefinitionsResponse,Services,services,roles,list,select,$.roles,NGC Roles +orgs.yaml,/v3/orgs/{org_name}/users/nca-invitations,inviteUserToNcaInOrg,invite_user_to_nca_in_org,post,UserResponse,Users Management,users management,user_invitations,create_nca,insert,$.userRoles,Invite User to NCA (org version) +orgs.yaml,/v2/org/{org_name}/users,listUsersInOrg,list_users_in_org,get,UserListResponse,Users Management,users management,users,list,select,$.users,List users In org +orgs.yaml,/v2/org/{org_name}/users,createUserInOrg,create_user_in_org,post,UserResponse,Users Management,users management,users,create,insert,$.userRoles,Creates a User in org +orgs.yaml,/v2/org/{org_name}/teams,listTeams,list_teams,get,TeamListResponse,Teams,teams,teams,list,select,$.teams,List Teams +orgs.yaml,/v2/org/{org_name}/teams,createTeam,create_team,post,TeamCreateResponse,Teams,teams,teams,create,insert,,Create Team +orgs.yaml,/v3/orgs/{org_name}/users/{user_email-or-id}/add-role,addRoleOrInviteUserToOrg,add_role_or_invite_user_to_org,patch,UserResponse,Users Management,users management,user_roles,add,insert,$.userRoles,Invite user or add role in org +orgs.yaml,/v2/orgs/{org_name},getOrganization,get_organization,get,OrgResponse,Orgs,orgs,orgs,get,select,,Get Organization +orgs.yaml,/v2/orgs/{org_name},updateOrganization,update_organization,patch,OrgResponse,Orgs,orgs,orgs,update,update,,Update Organization +orgs.yaml,/v2/org/{org_name}/teams/{team_name},getTeam,get_team,get,TeamResponse,Teams,teams,teams,get,select,,Get Team +orgs.yaml,/v2/org/{org_name}/teams/{team_name},deleteTeam,delete_team,delete,Response,Teams,teams,teams,delete,delete,,Delete Team +orgs.yaml,/v2/org/{org_name}/teams/{team_name},editTeam,edit_team,patch,TeamResponse,Teams,teams,teams,update,update,,Edit Team +orgs.yaml,/v3/orgs/{org_name}/users/{user_email-or-id},listUserRolesInOrg,list_user_roles_in_org,get,UserResponse,Users Management,users management,users,get,select,$.userRoles,Get user in an org by email or id. +orgs.yaml,/v2/org/{org_name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInOrg,resend_user_invitation_email_in_org,get,UserResponse,Users Management,users management,user_invitations,resend_email,exec,$.userRoles,Resend email of a specific invitation in an org. +orgs.yaml,/v2/org/{org_name}/users/invitations,listInvitationsForUserInOrg,list_invitations_for_user_in_org,get,UserInvitationListResponse,Users Management,users management,user_invitations,list,select,$.invitations,List user invitations in an org. +orgs.yaml,/v2/org/{org_name}/starfleetIds/{starfleet_id},getUserInOrg_1,get_user_in_org_1,get,UserResponse,Users Management,users management,users,get_by_starfleet_id,select,$.userRoles,Get User in org +orgs.yaml,/v3/orgs/{org_name}/users/{user_email-or-id}/remove-role,removeRoleOrInvitationInOrg,remove_role_or_invitation_in_org,delete,UserResponse,Users Management,users management,user_roles,remove,delete,$.userRoles,Remove role or invitation in org +orgs.yaml,/v3/orgs/{org_name}/users/{id},removeUserFromOrg,remove_user_from_org,delete,Response,Users Management,users management,users,delete,delete,,Remove User from org +orgs.yaml,/v2/org/{org_name}/users/invitations/{id},deleteUserInvitationInOrg,delete_user_invitation_in_org,delete,Response,Users Management,users management,user_invitations,delete,delete,,Delete a specific invitation in an org. +registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,getModelArtifactsSpec,get_model_artifacts_spec,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get,select,,Get AI Playground for artifactType +registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,updateModelArtifactsSpec,update_model_artifacts_spec,put,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,update,update,,Update AI Playground for artifactType +registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,deleteModelArtifactsSpec,delete_model_artifacts_spec,delete,Response,AIPlayground,aiplayground,artifact_specs,delete,delete,,Delete AI Playground for artifactType +registry.yaml,/v1/org/{orgName}/{artifactType}/spec,createModelArtifactsSpec,create_model_artifacts_spec,post,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,create,insert,,Create AI Playground for artifactType +registry.yaml,/v1/artifact-registry/org/{org}/workflows/{workflowId},getWorkflowStatus,get_workflow_status,get,,Workflows,workflows,workflows,get,select,,Get workflow status +registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/purge,purgeDeletedArtifact,purge_deleted_artifact,delete,,Artifacts,artifacts,artifacts,purge,exec,,Purge Search DB +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/terms-of-service,updateTermsOfService,update_terms_of_service,put,,Publish,publish,artifacts,set_terms_of_service,exec,,Update artifact terms of service +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share,publishArtifact,publish_artifact,put,,Publish,publish,artifact_shares,add,insert,,Publish artifact to public +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share,undoPublishArtifact,undo_publish_artifact,delete,,Publish,publish,artifact_shares,remove,delete,,Undo publishing of artifact to public +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share/product,publishArtifactFromRequest,publish_artifact_from_request,put,,Publish,publish,artifact_product_shares,add,insert,,Publish artifact to product +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share/product,undoPublishProduct,undo_publish_product,delete,,Publish,publish,artifact_product_shares,remove,delete,,Undo publishing of product artifacts +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignature,get_artifact_version_signature,get,,ArtifactSigning,artifact_signing,artifact_signatures,get,select,,Request to retrieve a pre-signed Download URL for the signature of an artifact version +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,signArtifactVersion,sign_artifact_version,put,,ArtifactSigning,artifact_signing,artifact_signatures,set,exec,,Request to sign artifact version +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/release-type,updateReleaseLabel,update_release_label,put,,Publish,publish,artifacts,set_release_type,exec,,Update artifact version release type +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},getArtifactInOrg,get_artifact_in_org,get,,Artifacts,artifacts,artifacts,get,select,,Get artifact in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},replaceArtifactInOrg,replace_artifact_in_org,put,,Artifacts,artifacts,artifacts,replace,replace,,Replace artifact in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},deleteArtifactInOrg,delete_artifact_in_org,delete,,Artifacts,artifacts,artifacts,delete,delete,,Delete artifact in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},updateArtifactInOrg,update_artifact_in_org,patch,,Artifacts,artifacts,artifacts,update,update,,Update artifact in org +registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/team/{target_team},shareModelInOrgWithTeam,share_model_in_org_with_team,put,,Models,models,model_shares,add_team,insert,,Share org model with the specified team +registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInOrgWithTeam,revoke_share_model_in_org_with_team,delete,,Models,models,model_shares,remove_team,delete,,Revoke shared org model with the specified team +registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/org,shareModelInOrgWithOrg,share_model_in_org_with_org,put,,Models,models,model_shares,add_org,insert,,Share org model with the org +registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,revoke_share_model_in_org_with_org,delete,,Models,models,model_shares,remove_org,delete,,Revoke shared org model with the org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrg,add_artifact_to_collection_in_org,put,,Collections,collections,collection_artifacts,add,insert,,Add artifact to collection in org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrg,remove_artifact_from_collection_in_org,delete,,Collections,collections,collection_artifacts,remove,delete,,Remove artifact from collection in org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/team/{target_team},shareCollectionInOrgWithTeam,share_collection_in_org_with_team,put,,Collections,collections,collection_shares,add_team,insert,,Share org collection with the specified team +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/team/{target_team},revokeShareCollectionInOrgWithTeam,revoke_share_collection_in_org_with_team,delete,,Collections,collections,collection_shares,remove_team,delete,,Revoke shared org collection with the specified team +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/org,shareCollectionInOrgWithOrg,share_collection_in_org_with_org,put,,Collections,collections,collection_shares,add_org,insert,,Share org collection with the org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/org,revokeShareCollectionInOrgWithOrg,revoke_share_collection_in_org_with_org,delete,,Collections,collections,collection_shares,remove_org,delete,,Revoke shared org collection with the org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/share/product,publishCollectionFromRequest,publish_collection_from_request,put,,Publish,publish,collection_product_shares,add,insert,,Publish collection to product +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org-name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrgFromAnotherOrg,add_artifact_to_collection_in_org_from_another_org,put,,Collections,collections,collection_artifacts,add_cross_org,insert,,Add artifact to collection in org from another org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org-name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrgFromAnotherOrg,remove_artifact_from_collection_in_org_from_another_org,delete,,Collections,collections,collection_artifacts,remove_cross_org,delete,,Remove artifact from collection in org from another org +registry.yaml,/v1/org/{orgName}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,initiateMalwareScan,initiate_malware_scan,post,Response,MalwareScan,malware_scan,artifacts,malware_scan,exec,,Initiates malwares can for the artifact +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createArtifactDeploymentUrlInOrg,create_artifact_deployment_url_in_org,post,,Artifact deployment parameters,artifact deployment parameters,artifact_deployments,create,insert,,Create artifact version deployment url in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,getArtifactDeploymentParametersInOrg,get_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get,select,,Get artifact deployment parameters details in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,createArtifactDeploymentParametersInOrg,create_artifact_deployment_parameters_in_org,post,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,create,insert,,Create artifact deployment parameters in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,deleteArtifactDeploymentParametersInOrg,delete_artifact_deployment_parameters_in_org,delete,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,delete,delete,,Delete artifact deployment parameters in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,updateArtifactDeploymentParametersInOrg,update_artifact_deployment_parameters_in_org,patch,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,update,update,,Update artifact deployment parameters in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact,sync_collection_release_type_labels_for_artifact,post,,Collections,collections,artifacts,sync_release_type_labels,exec,,Sync collection release type labels for artifact +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance,getOrgArtifactLicenseAcceptance,get_org_artifact_license_acceptance,get,,Publish,publish,license_acceptances,get,select,,Check if user needs to accept license +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance,acceptArtifactLicense,accept_artifact_license,post,,Publish,publish,license_acceptances,create,insert,,Accept artifact license +registry.yaml,/v1/org/{org_name}/{artifact_type},listArtifactsInOrg,list_artifacts_in_org,get,,Artifacts,artifacts,artifacts,list,select,,List artifacts in org +registry.yaml,/v1/org/{org_name}/{artifact_type},createArtifactInOrg,create_artifact_in_org,post,,Artifacts,artifacts,artifacts,create,insert,,Create artifact in org +registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions,listRecipeVersionsInOrg,list_recipe_versions_in_org,get,,Resource Versions,resource versions,recipe_versions,list,select,,List recipe versions in org +registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions,createRecipeVersionInOrg,create_recipe_version_in_org,post,,Resource Versions,resource versions,recipe_versions,create,insert,,Create recipe version in org +registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions,listRecipeVersionsInOrg_1,list_recipe_versions_in_org_1,get,,Resource Versions,resource versions,resource_versions,list,select,,List recipe versions in org +registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions,createRecipeVersionInOrg_1,create_recipe_version_in_org_1,post,,Resource Versions,resource versions,resource_versions,create,insert,,Create recipe version in org +registry.yaml,/v1/org/{org_name}/recipes,listRecipesInOrg,list_recipes_in_org,get,,Resources,resources,recipes,list,select,,List recipes in org +registry.yaml,/v1/org/{org_name}/recipes,createRecipeInOrg,create_recipe_in_org,post,,Resources,resources,recipes,create,insert,,Create recipe in org +registry.yaml,/v1/org/{org_name}/resources,listRecipesInOrg_1,list_recipes_in_org_1,get,,Resources,resources,resources,list,select,,List recipes in org +registry.yaml,/v1/org/{org_name}/resources,createRecipeInOrg_1,create_recipe_in_org_1,post,,Resources,resources,resources,create,insert,,Create recipe in org +registry.yaml,/v1/org/{org_name}/models,listModelsInOrg,list_models_in_org,get,,Models,models,models,list,select,,List models in org +registry.yaml,/v1/org/{org_name}/models,createModelInOrg,create_model_in_org,post,,Models,models,models,create,insert,,Create model in org +registry.yaml,/v1/org/{org_name}/models/{model_name}/versions,listModelVersionsInOrg,list_model_versions_in_org,get,,Model Version,model version,model_versions,list,select,,List model versions in org +registry.yaml,/v1/org/{org_name}/models/{model_name}/versions,createModelVersionInOrg,create_model_version_in_org,post,,Model Version,model version,model_versions,create,insert,,Create model version in org +registry.yaml,/v1/org/{org_name}/collections,listCollectionsInOrg,list_collections_in_org,get,,Collections,collections,collections,list,select,,List collections in org +registry.yaml,/v1/org/{org_name}/collections,createCollectionInOrg,create_collection_in_org,post,,Collections,collections,collections,create,insert,,Create collection in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs,updateTagLevelPublishConfigs,update_tag_level_publish_configs,patch,,Publish,publish,artifact_version_configs,update,update,,Publish artifact version with configs like policy badge +registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id},getRecipeVersionInOrg,get_recipe_version_in_org,get,,Resource Versions,resource versions,recipe_versions,get,select,,Get recipe version in org +registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg,update_recipe_version_in_org,patch,,Resource Versions,resource versions,recipe_versions,update,update,,Update recipe version in org +registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInOrg_1,get_recipe_version_in_org_1,get,,Resource Versions,resource versions,resource_versions,get,select,,Get recipe version in org +registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg_1,update_recipe_version_in_org_1,patch,,Resource Versions,resource versions,resource_versions,update,update,,Update recipe version in org +registry.yaml,/v1/org/{org_name}/recipes/{recipe_name},getRecipeInOrg,get_recipe_in_org,get,,Resources,resources,recipes,get,select,,Get recipe in org +registry.yaml,/v1/org/{org_name}/recipes/{recipe_name},updateRecipeInOrg,update_recipe_in_org,patch,,Resources,resources,recipes,update,update,,Update recipe in org +registry.yaml,/v1/org/{org_name}/resources/{recipe_name},getRecipeInOrg_1,get_recipe_in_org_1,get,,Resources,resources,resources,get,select,,Get recipe in org +registry.yaml,/v1/org/{org_name}/resources/{recipe_name},updateRecipeInOrg_1,update_recipe_in_org_1,patch,,Resources,resources,resources,update,update,,Update recipe in org +registry.yaml,/v1/org/{org_name}/models/{model_name},getModelInOrg,get_model_in_org,get,,Models,models,models,get,select,,Get model details in org +registry.yaml,/v1/org/{org_name}/models/{model_name},updateModelInOrg,update_model_in_org,patch,,Models,models,models,update,update,,Update model in org +registry.yaml,/v1/org/{org_name}/models/{model_name}/versions/{version_id},getModelVersionInOrg,get_model_version_in_org,get,,Model Version,model version,model_versions,get,select,,Get model version in org +registry.yaml,/v1/org/{org_name}/models/{model_name}/versions/{version_id},updateModelVersionInOrg,update_model_version_in_org,patch,,Model Version,model version,model_versions,update,update,,Update model version in org +registry.yaml,/v1/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInOrg,stash_artifact_version_in_org,patch,,Model Version,model version,model_versions,stash,exec,,Stash artifact version in org +registry.yaml,/v1/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id},getHelmChartVersionInOrg,get_helm_chart_version_in_org,get,,Helm Charts,helm charts,helm_chart_versions,get,select,,Get chart version in org +registry.yaml,/v1/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id},updateHelmChartVersionInOrg,update_helm_chart_version_in_org,patch,,Helm Charts,helm charts,helm_chart_versions,update,update,,Update chart version in org +registry.yaml,/v1/org/{org_name}/collections/{collection_name},getCollectionInOrg,get_collection_in_org,get,,Collections,collections,collections,get,select,,Get collection in org +registry.yaml,/v1/org/{org_name}/collections/{collection_name},deleteCollectionInOrg,delete_collection_in_org,delete,,Collections,collections,collections,delete,delete,,Delete collection in org +registry.yaml,/v1/org/{org_name}/collections/{collection_name},updateCollectionInOrg,update_collection_in_org,patch,,Collections,collections,collections,update,update,,Update collection in org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts,patchCollectionInOrg,patch_collection_in_org,patch,,Collections,collections,collection_artifacts,update_bulk,update,,Patch collection in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/params,listArtifactDeploymentParametersInOrg,list_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list,select,,List artifact deployment parameters in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/collections,listArtifactCollectionsInOrg,list_artifact_collections_in_org,get,,Collections,collections,artifact_collections,list,select,,List artifact collections in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/catalog/flags,getPublicFlagsInOrg,get_public_flags_in_org,get,,Publish,publish,artifact_catalog_flags,get,select,,Get Catalog flags +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrg,list_artifact_files_in_org,get,,Artifact Version Files,artifact version files,artifact_files,list,select,,List artifact files in org +registry.yaml,/v1/org/{org_name}/repositories/{container_name}/associated-models,listModelVersionsAssociatedByContainer,list_model_versions_associated_by_container,get,,Model Version,model version,repository_associated_models,list,select,,List associated model versions by container +registry.yaml,/v1/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models,listModelVersionsAssociatedByContainer_2,list_model_versions_associated_by_container_2,get,,Model Version,model version,repository_associated_models,list_by_tag,select,,List associated model versions by container +registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg,list_recipe_files_in_org,get,,Resource Version Files endpoints,resource version files endpoints,recipe_files,list,select,,List recipe files in org +registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg_1,list_recipe_files_in_org_1,get,,Resource Version Files endpoints,resource version files endpoints,resource_files,list,select,,List recipe files in org +registry.yaml,/v1/org/{org_name}/models/{model_name}/versions/{version_id}/files,listModeFilesInOrg,list_mode_files_in_org,get,,Model Version Files,model version files,model_files,list,select,,List model files in org +registry.yaml,/v1/org/{org_name}/helm-charts/{artifact_name}/versions,listHelmChartVersionsInOrg,list_helm_chart_versions_in_org,get,,Helm Charts,helm charts,helm_chart_versions,list,select,,List chart versions in org +registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrg,list_collection_artifacts_in_org,get,,Collections,collections,collection_artifacts,list,select,,List collection artifacts in org +registry.yaml,/v1/artifact-registry/org/{org_name}/encryption-keys,listKeysInOrg,list_keys_in_org,get,,Encryption Keys,encryption keys,encryption_keys,list,select,,List encryption keys in org +registry.yaml,/v1/artifact-registry/org/{org_name}/encryption-keys/{key_id},listArtifactsForKeyInOrg,list_artifacts_for_key_in_org,get,,Encryption Keys,encryption keys,encryption_keys,get,select,,List artifacts for encryption key in org +registry.yaml,/v1/artifact-registry/org/{org_name}/encryption-keys/{key_id},deleteKeyFromOrg,delete_key_from_org,delete,WorkflowStatusUrlResponse,Encryption Keys,encryption keys,encryption_keys,delete,delete,,Revoke encryption key in org +registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id},deleteArtifactVersionInOrg,delete_artifact_version_in_org,delete,,Artifact Versions,artifact versions,artifact_versions,delete,delete,,Delete a artifact version in org +registry.yaml,/v1/org/{org_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,disassociate_key_from_model_in_org,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete,delete,,Disassociate encryption key from model in org diff --git a/provider-dev/config/endpoint_inventory.csv b/provider-dev/config/endpoint_inventory.csv index 42e846b..51c1a5b 100644 --- a/provider-dev/config/endpoint_inventory.csv +++ b/provider-dev/config/endpoint_inventory.csv @@ -103,6 +103,7 @@ ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/users/{i ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/teams/{team-name},getTeam_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{requestStatus;team},,,,,,,internal-admin, ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/teams/{team-name},editTeam_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,y,object{requestStatus;team},,,,,,,internal-admin, ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/team/{team-name}/users/{id}/add-role,addUserRole_3,Super Admin User Controller,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/v2/ping,headPing,Users Management,n,n,n,api-key+bearer-token,,,n,none,,,,,,,non-generator-http-verb, ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/entitlements,listOrganizationsWithEntitlement,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{entitlements;requestStatus},$.entitlements,,,,,,internal-admin, ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/entitlements,listOrganizationsWithEntitlement_1,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,n,object{entitlements;requestStatus},$.entitlements,,,,,,internal-admin, ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/version,getLatestPackageVersion,Services,n,n,n,api-key+bearer-token,,,n,object{requestStatus;versions},$.versions,,,,,,service-infra, @@ -145,16 +146,22 @@ ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources,swaggerResource ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources,swaggerResources_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources,swaggerResources_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources,swaggerResources_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/swagger-resources,swaggerResources_1,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,options,/swagger-resources,swaggerResources_3,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,non-generator-http-verb, ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources/configuration/ui,uiConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources/configuration/ui,uiConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources/configuration/ui,uiConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources/configuration/ui,uiConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources/configuration/ui,uiConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/swagger-resources/configuration/ui,uiConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,options,/swagger-resources/configuration/ui,uiConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,non-generator-http-verb, ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources/configuration/security,securityConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources/configuration/security,securityConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources/configuration/security,securityConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources/configuration/security,securityConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources/configuration/security,securityConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/swagger-resources/configuration/security,securityConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,api.ngc.nvidia.com,options,/swagger-resources/configuration/security,securityConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,non-generator-http-verb, ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync,Artifact File,y,n,n,ssa,,,y,object{statusUrl;workflowId;requestStatus},,,,,,,data-plane-file-transfer, ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,object{statusUrl;workflowId;requestStatus},,,,,,,data-plane-file-transfer, ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org}/files/multipart,fileUpload,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, diff --git a/provider-dev/scripts/build_inventory.mjs b/provider-dev/scripts/build_inventory.mjs index e457639..e4b4d93 100644 --- a/provider-dev/scripts/build_inventory.mjs +++ b/provider-dev/scripts/build_inventory.mjs @@ -21,6 +21,7 @@ const cleanedDir = path.join(repoRoot, 'provider-dev', 'downloaded', 'cleaned'); const outPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); const HTTP_VERBS = ['get', 'post', 'put', 'patch', 'delete']; +const NON_GENERATOR_VERBS = ['head', 'options', 'trace']; const SOURCES = { 'nvcf_openapi.json': 'nvcf', @@ -518,11 +519,13 @@ for (const [file, source] of Object.entries(SOURCES)) { const spec = JSON.parse(fs.readFileSync(abs, 'utf8')); for (const [pathKey, pathItem] of Object.entries(spec.paths || {})) { - for (const verb of HTTP_VERBS) { + for (const verb of [...HTTP_VERBS, ...NON_GENERATOR_VERBS]) { const op = pathItem[verb]; if (!op) continue; let c; + if (NON_GENERATOR_VERBS.includes(verb)) c = { skip: 'non-generator-http-verb' }; + else if (file === 'nvcf_openapi.json') c = classifyNvcf(pathKey, verb, op); else if (file === 'ngc_kas.json') c = classifyKas(pathKey, verb, op); else c = classifyModels(pathKey, verb, op); diff --git a/provider-dev/scripts/map_operations.mjs b/provider-dev/scripts/map_operations.mjs new file mode 100644 index 0000000..93216af --- /dev/null +++ b/provider-dev/scripts/map_operations.mjs @@ -0,0 +1,189 @@ +#!/usr/bin/env node + +// Populates stackql_resource_name, stackql_method_name, stackql_verb and +// stackql_object_key in provider-dev/config/all_services.csv from the +// endpoint inventory (provider-dev/config/endpoint_inventory.csv - the +// single source of truth produced by build_inventory.mjs). Deterministic +// and re-runnable; regenerate the inventory to change mappings, never edit +// either CSV by hand. +// +// Validates before writing: +// - every all_services.csv row resolves to a mapped inventory operation +// - every mapped inventory operation appears in all_services.csv +// - method names are unique per (service, resource) +// - overloaded SQL verbs have unique required path-param signatures per +// (service, resource, verb), exec excluded +// Fails without writing on any violation. +// +// Usage: node provider-dev/scripts/map_operations.mjs [--out PATH] + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const inventoryPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); +const csvPath = path.join(repoRoot, 'provider-dev', 'config', 'all_services.csv'); + +// --------------------------------------------------------------------------- +// CSV helpers (RFC 4180, preserves column order) +// --------------------------------------------------------------------------- + +function parseCsv(text) { + const rows = []; + let row = [], field = '', inQuotes = false; + for (let i = 0; i < text.length; i++) { + const c = text[i]; + if (inQuotes) { + if (c === '"') { + if (text[i + 1] === '"') { field += '"'; i++; } else { inQuotes = false; } + } else { field += c; } + } else if (c === '"') { + inQuotes = true; + } else if (c === ',') { + row.push(field); field = ''; + } else if (c === '\n' || c === '\r') { + if (c === '\r' && text[i + 1] === '\n') i++; + row.push(field); field = ''; + if (row.length > 1 || row[0] !== '') rows.push(row); + row = []; + } else { field += c; } + } + if (field !== '' || row.length > 0) { row.push(field); rows.push(row); } + return rows; +} + +const csvField = (v) => (/[",\n\r]/.test(v) ? `"${String(v).replace(/"/g, '""')}"` : String(v)); + +// split rewrites path-param names to snake_case ({org-name} -> {org_name}); +// canonicalize both sides for the join +const canonPath = (p) => p.replace(/\{[^}]+\}/g, (m) => m.replace(/-/g, '_')); +const pathParams = (p) => (p.match(/\{[^}]+\}/g) || []).map((s) => s.slice(1, -1)).sort().join(','); + +// --------------------------------------------------------------------------- +// Load the inventory: mapped rows keyed by operationId and by (path, verb) +// --------------------------------------------------------------------------- + +const inv = parseCsv(fs.readFileSync(inventoryPath, 'utf8')); +const invCol = Object.fromEntries(inv[0].map((h, i) => [h, i])); + +const byOpId = new Map(); +const dupOpIds = new Set(); +const byPathVerb = new Map(); +const mappedInventory = []; + +for (const row of inv.slice(1)) { + if (!row[invCol.service]) continue; // skipped operation + const entry = { + service: row[invCol.service], + resource: row[invCol.resource], + method: row[invCol.method], + sqlVerb: row[invCol.sql_verb], + objectKey: row[invCol.object_key_candidate], + path: row[invCol.path], + verb: row[invCol.verb] + }; + mappedInventory.push(entry); + const opId = row[invCol.operation_id]; + if (opId) { + if (byOpId.has(opId)) dupOpIds.add(opId); + byOpId.set(opId, entry); + } + byPathVerb.set(`${canonPath(entry.path)}::${entry.verb}`, entry); +} +for (const opId of dupOpIds) byOpId.delete(opId); // ambiguous - fall back to path+verb + +// --------------------------------------------------------------------------- +// Fill all_services.csv +// --------------------------------------------------------------------------- + +const rows = parseCsv(fs.readFileSync(csvPath, 'utf8')); +const header = rows[0]; +const col = Object.fromEntries(header.map((h, i) => [h, i])); +for (const required of ['filename', 'path', 'verb', 'operationId', 'stackql_resource_name', 'stackql_method_name', 'stackql_verb', 'stackql_object_key']) { + if (!(required in col)) { + console.error(`Missing expected CSV column: ${required}`); + process.exit(1); + } +} + +const errors = []; +const matched = new Set(); + +for (const row of rows.slice(1)) { + const opId = row[col.operationId]; + const entry = (opId && byOpId.get(opId)) || byPathVerb.get(`${canonPath(row[col.path])}::${row[col.verb]}`); + if (!entry) { + errors.push(`no inventory mapping for ${row[col.filename]} ${row[col.verb]} ${row[col.path]} (${opId || 'no operationId'})`); + continue; + } + const service = row[col.filename].replace(/\.yaml$/, ''); + if (service !== entry.service) { + errors.push(`service mismatch for ${row[col.verb]} ${row[col.path]}: split put it in ${service}, inventory says ${entry.service}`); + continue; + } + matched.add(`${canonPath(entry.path)}::${entry.verb}`); + row[col.stackql_resource_name] = entry.resource; + row[col.stackql_method_name] = entry.method; + row[col.stackql_verb] = entry.sqlVerb; + // multi-array-prop candidates stay empty pending a wire check + row[col.stackql_object_key] = /^\$\.[A-Za-z_]+$/.test(entry.objectKey) ? entry.objectKey : ''; +} + +for (const entry of mappedInventory) { + if (!matched.has(`${canonPath(entry.path)}::${entry.verb}`)) { + errors.push(`in inventory but not in all_services.csv: ${entry.verb} ${entry.path} (${entry.service}.${entry.resource}.${entry.method})`); + } +} + +// --------------------------------------------------------------------------- +// Consistency checks +// --------------------------------------------------------------------------- + +const methodSeen = new Map(); +const sigSeen = new Map(); +for (const row of rows.slice(1)) { + const resource = row[col.stackql_resource_name]; + if (!resource) continue; + const service = row[col.filename].replace(/\.yaml$/, ''); + const methodKey = `${service}.${resource}.${row[col.stackql_method_name]}`; + if (methodSeen.has(methodKey)) { + errors.push(`duplicate method ${methodKey} (${methodSeen.get(methodKey)} and ${row[col.path]}:${row[col.verb]})`); + } + methodSeen.set(methodKey, `${row[col.path]}:${row[col.verb]}`); + + const sqlVerb = row[col.stackql_verb]; + if (sqlVerb === 'exec') continue; + const sigKey = `${service}.${resource}.${sqlVerb}::${pathParams(canonPath(row[col.path]))}`; + if (sigSeen.has(sigKey)) { + errors.push(`signature clash on ${sigKey} (${sigSeen.get(sigKey)} and ${row[col.stackql_method_name]})`); + } + sigSeen.set(sigKey, row[col.stackql_method_name]); +} + +if (errors.length > 0) { + console.error(`FAILED with ${errors.length} error(s) - nothing written:`); + for (const e of errors) console.error(` ${e}`); + process.exit(1); +} + +const outArgIdx = process.argv.indexOf('--out'); +const outPath = outArgIdx !== -1 ? path.resolve(process.argv[outArgIdx + 1]) : csvPath; +fs.writeFileSync(outPath, rows.map((r) => r.map(csvField).join(',')).join('\n') + '\n'); + +// summary +const stats = { verbs: {}, resourcesByService: new Map() }; +for (const row of rows.slice(1)) { + const resource = row[col.stackql_resource_name]; + if (!resource) continue; + const service = row[col.filename].replace(/\.yaml$/, ''); + stats.verbs[row[col.stackql_verb]] = (stats.verbs[row[col.stackql_verb]] || 0) + 1; + if (!stats.resourcesByService.has(service)) stats.resourcesByService.set(service, new Set()); + stats.resourcesByService.get(service).add(resource); +} +console.log(`Mapped ${rows.length - 1} operations: ${JSON.stringify(stats.verbs)}`); +console.log('Resources per service:'); +for (const [service, resources] of [...stats.resourcesByService.entries()].sort()) { + console.log(` ${service}: ${resources.size}`); +} +console.log(`Total resources: ${[...stats.resourcesByService.values()].reduce((n, s) => n + s.size, 0)}`); diff --git a/provider-dev/source/catalog.yaml b/provider-dev/source/catalog.yaml new file mode 100644 index 0000000..a9a2a7a --- /dev/null +++ b/provider-dev/source/catalog.yaml @@ -0,0 +1,4150 @@ +openapi: 3.1.0 +info: + title: catalog API + description: nvidia catalog API + version: 0.0.1-SNAPSHOT +paths: + /v1/csps: + get: + tags: + - Cloud service providers + summary: List cloud service providers + description: List cloud service providers + operationId: listCloudServiceProviders + parameters: + - name: page-size + in: query + description: Page size + required: false + schema: + type: integer + maximum: 5000 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: integer + maximum: 10000 + minimum: 0 + - name: include-disabled + in: query + description: Include disabled + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + post: + tags: + - Cloud service providers + summary: Create cloud service provider + description: Create cloud service provider + operationId: createCloudServiceProvider + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProviderCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/{artifactType}/{orgName}/{artifactName}/spec: + get: + tags: + - AIPlayground + summary: Get AI Playground for public artifactType + description: Get AI Playground for public artifactType + operationId: getPublicModelArtifactsSpec + parameters: + - name: orgName + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifactType + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifactName + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + x-ssa-scopes: [] + /v1/recipes: + get: + tags: + - Resources + summary: List public recipes + description: List public recipes + operationId: listPublicRecipes + parameters: + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/resources: + get: + tags: + - Resources + summary: List public recipes + description: List public recipes + operationId: listPublicRecipes_1 + parameters: + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/models: + get: + tags: + - Models + summary: List public models + description: This operation lists public models. + operationId: listPublicModels + parameters: + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/gpus: + get: + tags: + - GpuByPci + summary: Get all GPUs + description: Get all GPU by PCI records + operationId: getGpus + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - readGpuByPci + x-ssa-scopes: + - kas + - readGpuByPci + /v1/collections: + get: + tags: + - Collections + summary: List public collections + description: List public collections + operationId: listPublicCollections + parameters: + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/gpus/pci-device-id/{pci_device-id}: + get: + tags: + - GpuByPci + summary: Get GPU by PCI Device ID + description: Get all GPU records matching the given PCI Device ID + operationId: getGpuByPciDeviceId + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - readGpuByPci + x-ssa-scopes: + - kas + - readGpuByPci + post: + tags: + - GpuByPci + summary: Create GPU by PCI Device ID only + description: >- + Create a new GPU record using only PCI Device ID (pciVendorId and + pciSubsystemDeviceId default to 'unknown') + operationId: createGpuByPciDeviceId + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createGpuByPci + x-ssa-scopes: + - kas + - createGpuByPci + delete: + tags: + - GpuByPci + summary: Delete GPU by PCI Device ID only + description: >- + Delete a GPU record using only PCI Device ID (pciVendorId and + pciSubsystemDeviceId default to 'unknown') + operationId: deleteGpuByPciDeviceId + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - deleteGpuByPci + x-ssa-scopes: + - deleteGpuByPci + - kas + patch: + tags: + - GpuByPci + summary: Partially update GPU by PCI Device ID only + description: >- + Partially update a GPU record using only PCI Device ID (pciVendorId and + pciSubsystemDeviceId default to 'unknown'). Only provided fields will be + updated. + operationId: updateGpuByPciDeviceId + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateGpuByPci + x-ssa-scopes: + - kas + - updateGpuByPci + /v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id}: + get: + tags: + - GpuByPci + summary: Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID + description: Get a single GPU record matching the full PCI composite key + operationId: getGpuByPciDeviceIdVendorIdSubsystemDeviceId + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_vendor_id + in: path + description: PCI Vendor ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_subsystem_device_id + in: path + description: PCI Subsystem Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - readGpuByPci + x-ssa-scopes: + - kas + - readGpuByPci + post: + tags: + - GpuByPci + summary: Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID + description: Create a new GPU record using the full PCI composite key + operationId: createGpuByPciFullKey + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_vendor_id + in: path + description: PCI Vendor ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_subsystem_device_id + in: path + description: PCI Subsystem Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createGpuByPci + x-ssa-scopes: + - kas + - createGpuByPci + delete: + tags: + - GpuByPci + summary: Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID + description: Delete a GPU record matching the full PCI composite key + operationId: deleteGpuByPciFullKey + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_vendor_id + in: path + description: PCI Vendor ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_subsystem_device_id + in: path + description: PCI Subsystem Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - deleteGpuByPci + x-ssa-scopes: + - deleteGpuByPci + - kas + patch: + tags: + - GpuByPci + summary: >- + Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device + ID + description: >- + Partially update a GPU record matching the full PCI composite key. Only + provided fields will be updated. + operationId: updateGpuByPciFullKey + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_vendor_id + in: path + description: PCI Vendor ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_subsystem_device_id + in: path + description: PCI Subsystem Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateGpuByPci + x-ssa-scopes: + - kas + - updateGpuByPci + /v1/csps/{csp_name}/deployments/params: + get: + tags: + - Cloud service provider deployment parameters + summary: Get cloud service provider deployment parameters details + description: Get cloud service provider deployment parameters details + operationId: getCloudServiceProviderDeploymentParametersDetails + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + post: + tags: + - Cloud service provider deployment parameters + summary: Create cloud service provider deployment parameters + description: Create cloud service provider deployment parameters + operationId: createCloudServiceProviderDeploymentParameters + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Cloud service provider deployment parameters + summary: Delete cloud service provider deployment parameters + description: Delete cloud service provider deployment parameters + operationId: deleteCloudServiceProviderDeploymentParameters + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + patch: + tags: + - Cloud service provider deployment parameters + summary: Update cloud service provider deployment parameters + description: Update cloud service provider deployment parameters + operationId: updateCloudServiceProviderDeploymentParameters + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/csps/{csp_name}/deployments/params/meta: + get: + tags: + - Deployment parameters meta + summary: Get cloud service provider deployment parameters meta details + description: Get cloud service provider deployment parameters meta details + operationId: getCloudServiceProviderDeploymentParametersMetaDetails + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + post: + tags: + - Deployment parameters meta + summary: Create cloud service provider deployment parameters meta + description: Create cloud service provider deployment parameters meta + operationId: createCloudServiceProviderDeploymentParametersMeta + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMetaCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Deployment parameters meta + summary: Delete cloud service provider deployment parameters meta + description: Delete cloud service provider deployment parameters meta + operationId: deleteCloudServiceProviderDeploymentParametersMeta + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + patch: + tags: + - Deployment parameters meta + summary: Update cloud service provider deployment parameters meta + description: Update cloud service provider deployment parameters meta + operationId: updateCloudServiceProviderDeploymentParametersMeta + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMetaUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/csps/{csp_name}: + get: + tags: + - Cloud service providers + summary: Get cloud service provider details + description: Get cloud service provider details + operationId: getCloudServiceProviderDetails + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + delete: + tags: + - Cloud service providers + summary: Delete cloud service provider + description: Delete cloud service provider + operationId: deleteCloudServiceProvider + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + patch: + tags: + - Cloud service providers + summary: Update cloud service provider + description: Update cloud service provider + operationId: updateCloudServiceProvider + parameters: + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProviderUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/signature: + get: + tags: + - ArtifactSigning + description: >- + Request to retrieve a pre-signed Download URL for the signature of an + artifact version as a guest. + operationId: getArtifactVersionSignatureAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: redirect + in: query + description: Get redirect URL + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files: + get: + tags: + - Artifact Version Files + summary: List artifact files in org as guest + description: List files of the artifact version in org as guest + operationId: listArtifactFilesInOrgAsGuest + parameters: + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/{artifact_type}: + get: + tags: + - Artifacts + summary: List public artifacts + description: List public artifacts + operationId: listPublicArtifacts + parameters: + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/{artifact_type}/{org_name}/{artifact_name}: + get: + tags: + - Artifacts + summary: Get artifact in org as guest + description: Get artifact details in org as guest + operationId: getArtifactInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/recipes/{org_name}/{recipe_name}/versions/{version_id}/files: + get: + tags: + - Resource Version Files endpoints + summary: List recipe files in org as guest + description: List files of the recipe version in org as guest + operationId: listModeFilesInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/resources/{org_name}/{recipe_name}/versions/{version_id}/files: + get: + tags: + - Resource Version Files endpoints + summary: List recipe files in org as guest + description: List files of the recipe version in org as guest + operationId: listModeFilesInOrgAsGuest_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/recipes/{org_name}/{recipe_name}/versions/{version_id}: + get: + tags: + - Resource Versions + summary: Get recipe version in org as guest + description: Get recipe version in org as guest + operationId: getRecipeVersionInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/resources/{org_name}/{recipe_name}/versions/{version_id}: + get: + tags: + - Resource Versions + summary: Get recipe version in org as guest + description: Get recipe version in org as guest + operationId: getRecipeVersionInOrgAsGuest_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/recipes/{org_name}/{recipe_name}/versions: + get: + tags: + - Resource Versions + summary: List recipe versions in org as guest + description: List recipe versions in org as guest + operationId: listRecipeVersionsInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/resources/{org_name}/{recipe_name}/versions: + get: + tags: + - Resource Versions + summary: List recipe versions in org as guest + description: List recipe versions in org as guest + operationId: listRecipeVersionsInOrgAsGuest_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/recipes/{org_name}/{recipe_name}: + get: + tags: + - Resources + summary: Get recipe in org as guest + description: Get recipe details in org as guest + operationId: getRecipeInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/resources/{org_name}/{recipe_name}: + get: + tags: + - Resources + summary: Get recipe in org as guest + description: Get recipe details in org as guest + operationId: getRecipeInOrgAsGuest_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/models/{org_name}/{model_name}: + get: + tags: + - Models + summary: Get model in org as guest + description: This operation gets info of a model in the org as guest. + operationId: getModelInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/models/{org_name}/{model_name}/versions: + get: + tags: + - Model Version + summary: List model versions in org as guest + description: List model versions in org as guest + operationId: listModelVersionsInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/models/{org_name}/{model_name}/versions/{version_id}: + get: + tags: + - Model Version + summary: Get model version in org as guest + description: Get model version in org as guest + operationId: getModelVersionInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 512 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/models/{org_name}/{model_name}/versions/{version_id}/files: + get: + tags: + - Model Version Files + summary: List model files in org as guest + description: List files of the model version in org as guest + operationId: listModeFilesInOrgAsGuest_2 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/helm-charts/{org_name}/{artifact_name}/versions: + get: + tags: + - Helm Charts + summary: List chart versions in org as guest + description: List chart versions in org as guest + operationId: listHelmChartVersionsInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/helm-charts/{org_name}/{artifact_name}/versions/{version_id}: + get: + tags: + - Helm Charts + summary: Get chart version in org as guest + description: Get chart version in org as guest + operationId: getHelmChartVersionInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}: + get: + tags: + - GpuByPci + summary: Get GPUs by PCI Device ID and Vendor ID + description: >- + Get all GPUs by PCI records matching the given PCI Device ID and Vendor + ID + operationId: getGpuByPciDeviceIdVendorId + parameters: + - name: pci_device_id + in: path + description: PCI Device ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + - name: pci_vendor_id + in: path + description: PCI Vendor ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 32 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - readGpuByPci + x-ssa-scopes: + - kas + - readGpuByPci + /v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params: + get: + tags: + - Artifact deployment parameters + summary: Get public artifact deployment parameters details in org + description: Get public artifact deployment parameters details in org + operationId: getPublicArtifactDeploymentParametersInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: inherit-csp-parameters + in: query + description: Inherit CSP parameters + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params: + get: + tags: + - Artifact deployment parameters + summary: List public artifact deployment parameters in org + description: List public artifact deployment parameters in org + operationId: listPublicArtifactDeploymentParametersInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: inherit-csp-parameters + in: query + description: Inherit CSP parameters + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/collections/{org_name}/{collection_name}: + get: + tags: + - Collections + summary: Get collection in org as guest + description: Get collection details in org as guest + operationId: getCollectionInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + /v1/collections/{org_name}/{collection_name}/artifacts/{artifact_type}: + get: + tags: + - Collections + summary: List collection artifacts in org as guest + description: >- + List collection artifacts the user can access in the specified org as + guest + operationId: listCollectionArtifactsInOrgAsGuest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: order-by + in: query + description: Order by + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] +components: + schemas: + Response: + type: object + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + GpuByPciCreateRequest: + type: object + description: GPU by PCI properties + properties: + pciDeviceId: + type: string + description: PCI Device ID + pciVendorId: + type: string + description: PCI Vendor ID + pciSubsystemDeviceId: + type: string + description: PCI Subsystem Device ID + labelName: + type: string + description: Label name for the GPU + displayName: + type: string + description: Display name for the GPU + cudaMajorVersion: + type: string + description: CUDA major version + cudaMinorVersion: + type: string + description: CUDA minor version + memorySizeGb: + type: integer + format: int32 + description: Memory size in GB (smallint range) + maximum: 32767 + minimum: 0 + formFactor: + type: string + description: GPU form factor + gpuCounts: + type: array + items: + type: integer + format: int32 + maximum: 255 + minimum: 0 + uniqueItems: true + required: + - displayName + - pciDeviceId + GpuByPciUpdateRequest: + type: object + description: GPU by PCI update properties + properties: + labelName: + type: string + description: Label name for the GPU + displayName: + type: string + description: Display name for the GPU + cudaMajorVersion: + type: string + description: CUDA major version + cudaMinorVersion: + type: string + description: CUDA minor version + memorySizeGb: + type: integer + format: int32 + description: Memory size in GB (smallint range) + maximum: 32767 + minimum: 0 + formFactor: + type: string + description: GPU form factor + gpuCounts: + type: array + items: + type: integer + format: int32 + maximum: 255 + minimum: 0 + uniqueItems: true + CloudServiceProviderCreateRequest: + type: object + description: Request to create a new Cloud Service Provider + properties: + name: + type: string + description: Unique name of the Cloud Service Provider + displayName: + type: string + description: Display name of the Cloud Service Provider + description: + type: string + description: Description of the Cloud Service Provider + isEnabled: + type: boolean + description: Determines if this Cloud Service Provider is enabled + logo: + type: string + description: URL for the logo image + attributes: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + labels: + type: array + items: + type: string + required: + - name + DeploymentParametersCreateRequest: + type: object + description: Request to create a new deployment parameters + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + DeploymentParametersUpdateRequest: + type: object + description: Request to update existing deployment parameters + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + DeploymentParametersMetaCreateRequest: + type: object + description: >- + Properties for the cloud service provider deployment parameters meta to + create + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + required: + - gpu + - storage + DeploymentParametersMetaUpdateRequest: + type: object + description: >- + Properties for the cloud service provider deployment parameters meta to + create + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + CloudServiceProviderUpdateRequest: + type: object + description: Request to update existing Cloud Service Provider + properties: + displayName: + type: string + description: Display name of the Cloud Service Provider + description: + type: string + description: Description of the Cloud Service Provider + isEnabled: + type: boolean + description: Determines if this Cloud Service Provider is enabled + logo: + type: string + description: URL for the logo image + attributes: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + labels: + type: array + items: + type: string + AIPlaygroundResponse: + type: object + description: Request to fetch an AI Playground config + properties: + artifactName: + type: string + description: Unique name of the model + artifactType: + type: string + description: ArtifactTypeEnum of the artifact + namespace: + type: string + description: org/team of the model + nvcfFunctionId: + type: string + description: NVCF function id for the model playground + attributes: + type: string + description: Metadata json string + openAPISpec: + type: string + description: OpenAPI specification for this model + createdDate: + type: string + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + updatedDate: + type: string + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + RequestStatus: + type: object + description: Request status information + properties: + statusCode: + type: string + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + statusDescription: + type: string + description: Status description + requestId: + type: string + description: Request ID + serverId: + type: string + description: Server ID + ArtifactAttribute: + type: object + description: Attribute on the artifact + properties: + key: + type: string + maxLength: 255 + pattern: '[a-zA-Z0-9]+' + value: + type: string + maxLength: 255 + DeploymentCpuParameters: + type: object + description: Deployment CPU Parameters object + properties: + count: + type: integer + format: int64 + description: Total count of CPUs + DeploymentGpuParameters: + type: object + description: Deployment GPU Parameters object + properties: + count: + type: integer + format: int64 + description: Total count of GPUs + type: + type: string + description: GPU Type + DeploymentMemoryParameters: + type: object + description: Deployment Memory Parameters object + properties: + capacityInGB: + type: integer + format: int64 + description: Capacity in GB + DeploymentStorageParameters: + type: object + description: Deployment Storage Parameters object + properties: + capacityInGB: + type: integer + format: int64 + description: Capacity in GB + DeploymentArtifactParameters: + type: object + description: Deployment Artifact Parameters object + properties: + artifactType: + type: string + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + name: + type: string + description: Unique name of the artifact + displayName: + type: string + description: Display name of the artifact + orgName: + type: string + description: Name of the org that the artifact belongs to + teamName: + type: string + description: Name of the team that the artifact belongs to + versionId: + type: string + description: ID of the version or tag + filePath: + type: string + description: Path to a file in an artifact version + required: + - name + - orgName + DeploymentCpuParametersMeta: + type: object + description: Cloud Service Provider Deployment CPU Parameters object + properties: + count: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - count + DeploymentGpuParametersMeta: + type: object + description: Cloud Service Provider Deployment GPU Parameters object + properties: + count: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + type: + $ref: '#/components/schemas/EnumerableResource' + description: Enumerable Resource object + required: + - type + DeploymentMemoryParametersMeta: + type: object + description: Cloud Service Provider Deployment Memory Parameters object + properties: + capacityInGB: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - capacityInGB + DeploymentStorageParametersMeta: + type: object + description: Cloud Service Provider Deployment Storage Parameters object + properties: + capacityInGB: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - capacityInGB + CountableResource: + type: object + description: Countable Resource object + properties: + minValue: + type: integer + format: int64 + description: Minimum value + maxValue: + type: integer + format: int64 + description: Maximum value + defaultValue: + type: integer + format: int64 + description: >- + Deprecated: Default value. Please use actual CloudServiceProvider + values instead + EnumerableResource: + type: object + description: Enumerable Resource object + properties: + items: + type: array + items: + $ref: '#/components/schemas/EnumerableResourceItem' + defaultItemName: + type: string + description: >- + Deprecated: Default item name. Please use actual + CloudServiceProvider values instead + EnumerableResourceItem: + type: object + description: Enumerable Resource Item object + properties: + name: + type: string + description: Name + displayName: + type: string + description: Display name + logo: + type: string + description: Logo URL +servers: + - url: https://models.ngc.nvidia.com + description: Generated server url - production + x-internal: true diff --git a/provider-dev/source/nvcf_deployments.yaml b/provider-dev/source/nvcf_deployments.yaml new file mode 100644 index 0000000..9ee2f00 --- /dev/null +++ b/provider-dev/source/nvcf_deployments.yaml @@ -0,0 +1,2059 @@ +openapi: 3.1.0 +info: + title: nvcf_deployments API + description: nvidia nvcf_deployments API + version: 2.245.1 +paths: + /v2/nvcf/secrets/telemetries/{telemetryId}: + put: + tags: + - User Secret Management + summary: Update secret for a specific Telemetry Id + description: >- + Updates secret for the specific telemetry Id within NVIDIA Cloud + Account. This endpoint requires a bearer token with 'update_secrets' + scope in the HTTP Authorization header. + operationId: updateTelemetrySecret + parameters: + - name: telemetryId + in: path + description: NVIDIA Cloud Account Id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTelemetrySecretRequest' + required: true + responses: + '204': + description: No Content + /v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}: + get: + tags: + - Function Deployment + summary: Get Function Deployment Details + description: >- + Allows Account Admins to retrieve the deployment details of the + specified function version. Access to this endpoint mandates a bearer + token with 'deploy_function' scope in the HTTP Authorization header. + operationId: getFunctionDeployment + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + put: + tags: + - Function Deployment + summary: Update Function Deployment + description: ' Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: updateFunctionDeployment + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFunctionDeploymentRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + deprecated: true + post: + tags: + - Function Deployment + summary: Deploy Function + description: >- + Initiates deployment for the specified function version. Upon invocation + of this endpoint, the function's status transitions to 'DEPLOYING'. If + the specified function version is public, then Account Admin cannot + perform this operation. Access to this endpoint mandates a bearer token + with 'deploy_function' scope in the HTTP Authorization header. + operationId: createFunctionDeployment + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionDeploymentRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + delete: + tags: + - Function Deployment + summary: Delete Function Deployment + description: >- + Deletes the deployment associated with the specified function. Upon + deletion, any active instances will be terminated, and the function's + status will transition to 'INACTIVE'. To undeploy a function version + gracefully, specify 'graceful=true' query parameter, allowing current + tasks to complete before terminating the instances. If the specified + function version is public, then Account Admin cannot perform this + operation. Access to this endpoint mandates a bearer token with + 'deploy_function' scope in the HTTP Authorization header. + operationId: deleteFunctionDeployment + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: graceful + in: query + description: Query param to deactivate function for graceful shutdown + required: false + schema: + type: boolean + default: false + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionResponse' + /v2/nvcf/telemetries: + get: + tags: + - Telemetry Management + summary: List Telemetries + description: >- + Retrieves telemetry configurations for a specific NVIDIA Cloud Account. + requires a bearer token with 'manage_telemetries' scope in the HTTP + Authorization header. + operationId: getTelemetriesByAccount + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListTelemetryResponse' + post: + tags: + - Telemetry Management + summary: Create Telemetry + description: >- + Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a + bearer token with 'manage_telemetries' scope in the HTTP Authorization + header. + operationId: createTelemetry + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TelemetryRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TelemetryResponse' + /v2/nvcf/registry-credentials: + get: + tags: + - Registry Credential Management + summary: List Registry Credentials + description: >- + Lists all the registry credentials associated with the authenticated + NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization + header with 'manage_registries' scope. + operationId: listRegistryCredentialDetails + parameters: + - name: artifactType + in: query + description: > + Filters registry credentials using the specified 'artifactType' + query param. + required: false + schema: + type: array + default: + - CONTAINER + - HELM + - MODEL + - RESOURCE + items: + type: string + format: UTF-8 + enum: + - CONTAINER + - HELM + - MODEL + - RESOURCE + maxLength: 262144 + minLength: 0 + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + - name: provisionedBy + in: query + description: > + Filters registry credentials using the specified 'provisionedBy' + query param. + required: false + schema: + type: array + default: + - SYSTEM + - USER + items: + type: string + format: UTF-8 + enum: + - SYSTEM + - USER + maxLength: 262144 + minLength: 0 + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListRegistryCredentialDetailsResponse' + post: + tags: + - Registry Credential Management + summary: Add new registry credential to the account + description: >- + Adds a new registry credential to the account. Requires a bearer token + in the HTTP Authorization header with 'manage_registries' scope. + operationId: addRegistryCredential + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddRegistryCredentialRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/RegistryCredentialDetailsResponse' + /v2/nvcf/registry-credentials/{registryCredentialId}: + get: + tags: + - Registry Credential Management + summary: Get Registry Credential Details + description: >- + Retrieves detailed information of the specified registry credential + associated with the authenticated NVIDIA Cloud Account. Requires a + bearer token in the HTTP Authorization header with 'manage_registries' + scope. + operationId: getRegistryCredentialDetails + parameters: + - name: registryCredentialId + in: path + description: Registry Credential id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/RegistryCredentialDetailsResponse' + delete: + tags: + - Registry Credential Management + summary: Delete Registry Credential + description: >- + Deletes the specified registry credential associated with the + authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP + Authorization header with 'manage_registries' scope. + operationId: deleteRegistryCredential + parameters: + - name: registryCredentialId + in: path + description: Registry Credential id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '204': + description: No Content + patch: + tags: + - Registry Credential Management + summary: Update registry credential + description: >- + Updates the secret and/or the artifact types associated with the + specified registry credential. Artifact types specified in the request + body are added to the set of artifact types that already exist for the + specified registry credential. Requires a bearer token in the HTTP + Authorization header with 'manage_registries' scope. + operationId: updateRegistryCredential + parameters: + - name: registryCredentialId + in: path + description: Registry Credential id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRegistryCredentialRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/RegistryCredentialDetailsResponse' + /v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId}: + patch: + tags: + - Function Deployment + summary: Update the specified GPU specification under the specified deployment + description: ' Updates the GPU specification of the specified function version''s deployment. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: updateGpuSpecification + parameters: + - name: deploymentId + in: path + description: Deployment id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: gpuSpecId + in: path + description: GPU Specification id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGpuSpecificationRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGpuSpecificationResponse' + /v2/nvcf/telemetries/{telemetryId}: + get: + tags: + - Telemetry Management + summary: Get Telemetry Details + description: >- + Retrieves the details of a specific telemetry configuration by its ID. + requires a bearer token with 'manage_telemetries' scope in the HTTP + Authorization header. + operationId: getTelemetry + parameters: + - name: telemetryId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TelemetryResponse' + delete: + tags: + - Telemetry Management + summary: Delete Telemetry + description: >- + Deletes a specific telemetry configuration for a NVIDIA Cloud Account. + requires a bearer token with 'manage_telemetries' scope in the HTTP + Authorization header. If there any functions that are dependent on the + Telemetry that is being deleted, then response with 400 status code + will be returned. + operationId: deleteTelemetry + parameters: + - name: telemetryId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '204': + description: No Content + '400': + description: Cannot be deleted till Functions depend on it + /v2/nvcf/recognized-registries: + get: + tags: + - Registry Credential Management + summary: List Recognized Registries + description: >- + Lists all the registries that are recognized by NVCF. Only when a + registry is recognized by NVCF that the users can add its credential to + their account and then use it to create functions. Requires a bearer + token in the HTTP Authorization header with 'manage_registries' scope. + operationId: getRecognizedRegistries + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/RecognizedRegistriesResponse' + /v2/nvcf/deployments/{deploymentId}: + get: + tags: + - Function Deployment + summary: Get Function Deployment Details + description: >- + Allows Account Admins to retrieve the deployment details of the + specified deployment id. Access to this endpoint mandates a bearer + token with 'deploy_function' scope in the HTTP Authorization header. + operationId: getFunctionDeployment_1 + parameters: + - name: deploymentId + in: path + description: Deployment id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + /v2/nvcf/clusterGroups: + get: + tags: + - Cluster Groups and GPUs + summary: List Cluster Groups + description: >- + Lists Cluster Groups for the current account. The response includes + cluster groups defined specifically in the current account and publicly + available cluster groups such as GFN, OCI, etc. Requires a bearer token + with 'list_cluster_groups' scope in HTTP Authorization header. + operationId: getClusterGroups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterGroupsResponse' + deprecated: true +components: + schemas: + UpdateTelemetrySecretRequest: + type: object + description: Request payload to update secret + properties: + secret: + $ref: '#/components/schemas/SecretDto' + description: Telemetry secret + required: + - secret + DeploymentResponse: + type: object + description: Function Deployment Response + properties: + deployment: + $ref: '#/components/schemas/FunctionDeploymentDto' + description: Deployment details + required: + - deployment + UpdateFunctionDeploymentRequest: + type: object + description: Request to update function deployment spec + properties: + deploymentSpecifications: + type: array + description: >- + Deployment specs with GPU, instance-type, etc. details for update + request + items: + $ref: '#/components/schemas/UpdateGpuSpecificationDto' + maxItems: 2147483647 + minItems: 1 + required: + - deploymentSpecifications + FunctionDeploymentRequest: + type: object + description: Request to deploy a function + properties: + deploymentSpecifications: + type: array + description: GPU specs with GPU, instance-type, clusters etc. details + items: + $ref: '#/components/schemas/GpuSpecificationDto' + maxItems: 2147483647 + minItems: 1 + required: + - deploymentSpecifications + FunctionResponse: + type: object + description: Response body with function details + properties: + function: + $ref: '#/components/schemas/FunctionDto' + description: Function details + required: + - function + ListTelemetryResponse: + type: object + description: Response containing a list of telemetry configurations. + properties: + telemetries: + type: array + description: List of telemetry configurations. + items: + $ref: '#/components/schemas/TelemetryDto' + maxItems: 2147483647 + minItems: 0 + TelemetryRequest: + type: object + description: Data Transfer Object (DTO) representing a telemetry request + properties: + endpoint: + type: string + format: UTF-8 + description: Telemetry endpoint URL + maxLength: 262144 + minLength: 1 + protocol: + type: string + format: UTF-8 + description: Protocol used for communication + enum: + - HTTP + - GRPC + maxLength: 262144 + minLength: 0 + provider: + type: string + format: UTF-8 + description: Telemetry provider + enum: + - PROMETHEUS + - GRAFANA_CLOUD + - SPLUNK + - DATADOG + - SERVICENOW + - KRATOS + - KRATOS_THANOS + - TIMESTREAM + - VICTORIAMETRICS + - AZURE_MONITOR + - OTEL_COLLECTOR + maxLength: 262144 + minLength: 0 + types: + type: array + description: Set of telemetry data types + items: + type: string + enum: + - LOGS + - METRICS + - TRACES + maxItems: 2147483647 + minItems: 1 + uniqueItems: true + secret: + $ref: '#/components/schemas/SecretDto' + description: Single secret associated with the telemetry configuration + required: + - endpoint + - protocol + - provider + - secret + - types + TelemetryResponse: + type: object + description: Data Transfer Object (DTO) representing a telemetry response + properties: + telemetry: + $ref: '#/components/schemas/TelemetryDto' + description: Telemetry details + ListRegistryCredentialDetailsResponse: + type: object + description: Response body containing list of registry credentials + properties: + registryCredentials: + type: array + description: List of registry credentials + items: + $ref: '#/components/schemas/RegistryCredentialDetailsDto' + maxItems: 2147483647 + minItems: 0 + required: + - registryCredentials + AddRegistryCredentialRequest: + type: object + description: Request body to add a registry credential to an account + properties: + registryHostname: + type: string + format: UTF-8 + description: Registry hostname + maxLength: 255 + minLength: 1 + pattern: >- + (?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?- + Registry credential - secret value must be base64 encoded string in + username:password format + artifactTypes: + type: array + description: Artifact types that can be retrieved using this credential + items: + type: string + enum: + - CONTAINER + - HELM + - MODEL + - RESOURCE + maxItems: 2147483647 + minItems: 1 + uniqueItems: true + tags: + type: array + description: Optional set of tags + items: + type: string + pattern: '[a-zA-Z0-9\-_:=]+' + maxItems: 64 + minItems: 0 + uniqueItems: true + description: + type: string + format: UTF-8 + description: Optional registry credential description + maxLength: 262144 + minLength: 0 + required: + - artifactTypes + - registryHostname + - secret + RegistryCredentialDetailsResponse: + type: object + description: Response body for Registry Credential operations + properties: + registryCredential: + $ref: '#/components/schemas/RegistryCredentialDetailsDto' + description: Registry credential details + required: + - registryCredential + UpdateRegistryCredentialRequest: + type: object + description: Request body to update registry credential + properties: + secret: + $ref: '#/components/schemas/SecretDto' + description: >- + Registry credential - secret value must be base64 encoded string in + username:password format + artifactTypeEnums: + type: array + description: Optional artifact types to be added to the existing ones + items: + type: string + enum: + - CONTAINER + - HELM + - MODEL + - RESOURCE + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + UpdateGpuSpecificationRequest: + type: object + description: Request to update single function deployment GPU Specification + properties: + maxInstances: + type: integer + format: int32 + description: Maximum number of instances for the deployment + maximum: 2147483647 + minimum: -2147483648 + minInstances: + type: integer + format: int32 + description: Minimum number of instances for the deployment + maximum: 2147483647 + minimum: -2147483648 + autoscalingConfiguration: + $ref: '#/components/schemas/AutoscalingConfigurationDto' + description: Customizable Autoscaling configuration + autoscalingConfigurationPolicy: + type: string + format: UTF-8 + description: >- + Autoscaling configuration policy. CUSTOM_CONFIGURATION (default): + use the provided autoscalingConfig. PLATFORM_CONFIGURATION: remove + custom config and use platform defaults. + enum: + - CUSTOM_CONFIGURATION + - PLATFORM_CONFIGURATION + maxLength: 262144 + minLength: 0 + UpdateGpuSpecificationResponse: + type: object + description: Update GPU Specification Response + properties: + gpuSpecification: + $ref: '#/components/schemas/GpuSpecificationDto' + description: GPU Specification details + required: + - gpuSpecification + RecognizedRegistriesResponse: + type: object + description: Response body for recognized registries endpoint + properties: + recognizedRegistries: + type: object + additionalProperties: + type: array + items: + type: object + additionalProperties: + type: string + description: Recognized registries + ClusterGroupsResponse: + type: object + properties: + clusterGroups: + type: array + items: + $ref: '#/components/schemas/ClusterGroup' + maxItems: 2147483647 + minItems: 0 + SecretDto: + type: object + description: Data Transfer Object(DTO) representing secret name/value pair + properties: + name: + type: string + format: UTF-8 + description: Secret name + maxLength: 48 + minLength: 1 + pattern: ^[a-z0-9A-Z][a-z0-9A-Z\_\.\-]*$ + value: + $ref: '#/components/schemas/JsonNode' + description: Secret value must be 1 - 32768 chars long + required: + - name + FunctionDeploymentDto: + type: object + description: Function deployment response + properties: + functionId: + type: string + format: uuid + description: Function id + maxLength: 36 + minLength: 36 + functionVersionId: + type: string + format: uuid + description: Function version id + maxLength: 36 + minLength: 36 + deploymentId: + type: string + format: uuid + description: Last deployment id + maxLength: 36 + minLength: 36 + functionName: + type: string + format: UTF-8 + description: Function name + maxLength: 262144 + minLength: 1 + ncaId: + type: string + format: UTF-8 + description: NVIDIA Cloud Account Id + maxLength: 262144 + minLength: 1 + functionStatus: + type: string + format: UTF-8 + description: Function status + enum: + - ACTIVE + - DEPLOYING + - ERROR + - INACTIVE + - DELETED + - DEGRADED + - DEGRADING + maxLength: 262144 + minLength: 0 + healthInfo: + type: array + description: > + Health info for a deployment specification is included only if there + are any + issues/errors. + items: + $ref: '#/components/schemas/DeploymentHealthDto' + maxItems: 2147483647 + minItems: 0 + deploymentSpecifications: + type: array + description: Function deployment details + items: + $ref: '#/components/schemas/GpuSpecificationDto' + maxItems: 2147483647 + minItems: 0 + createdAt: + type: string + format: date-time + description: Function deployment creation timestamp + maxLength: 30 + minLength: 8 + lastUpdatedAt: + type: string + format: date-time + description: Function deployment modification timestamp + maxLength: 30 + minLength: 8 + required: + - createdAt + - deploymentId + - deploymentSpecifications + - functionId + - functionName + - functionStatus + - functionVersionId + - lastUpdatedAt + - ncaId + UpdateGpuSpecificationDto: + type: object + description: >- + Data Transfer Object (DTO) representing GPU specification for Deployment + Update case. + properties: + gpuSpecificationId: + type: string + format: uuid + description: GPU specification id + maxLength: 36 + minLength: 36 + gpu: + type: string + format: UTF-8 + description: >- + GPU name from the cluster. Deprecated: this is read-only field, + should not be specified in update request. + maxLength: 262144 + minLength: 0 + backend: + type: string + format: UTF-8 + description: > + Backend/CSP where the GPU powered instance has been launched. The + original value + + would not be updated and it should be the same as original. The + field is required + + only for validation. + maxLength: 262144 + minLength: 0 + clusters: + type: array + description: > + Specific clusters within instance or worker node powered by the + selected + + instance-type to deploy function. The original value would not be + updated and it + + should be the same as original. The field is required only for + validation. + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + maxInstances: + type: integer + format: int32 + description: Maximum number of instances for the deployment + maximum: 2147483647 + minimum: -2147483648 + minInstances: + type: integer + format: int32 + description: Minimum number of instances for the deployment + maximum: 2147483647 + minimum: -2147483648 + instanceType: + type: string + format: UTF-8 + description: >- + Instance type, based on GPU, assigned to a Worker. Deprecated: this + is read-only field, should not be specified in update request. + maxLength: 262144 + minLength: 0 + maxRequestConcurrency: + type: integer + format: int32 + description: Max request concurrency between 1 (default) and 16384. + maximum: 16384 + minimum: 1 + required: + - maxInstances + - minInstances + GpuSpecificationDto: + type: object + description: Data Transfer Object(DTO) representing GPU specification. + properties: + gpuSpecificationId: + type: string + format: uuid + description: GPU specification id + maxLength: 36 + minLength: 36 + gpu: + type: string + format: UTF-8 + description: GPU name from the cluster + maxLength: 262144 + minLength: 1 + backend: + type: string + format: UTF-8 + description: >- + Use clusters instead of this property. Legacy property typically + used when deploying a function to GFN. + maxLength: 262144 + minLength: 0 + maxInstances: + type: integer + format: int32 + description: Maximum number of instances for the deployment + maximum: 2147483647 + minimum: -2147483648 + minInstances: + type: integer + format: int32 + description: Minimum number of instances for the deployment + maximum: 2147483647 + minimum: -2147483648 + instanceType: + type: string + format: UTF-8 + description: Instance type, based on GPU, assigned to a Worker + maxLength: 262144 + minLength: 1 + availabilityZones: + type: array + description: List of availability-zones(or clusters) in the cluster group + items: + type: string + maxItems: 2147483647 + minItems: 0 + maxRequestConcurrency: + type: integer + format: int32 + description: Max request concurrency between 1 (default) and 16384. + maximum: 16384 + minimum: 1 + configuration: + type: object + description: > + Typically used when the function is based on Helm Charts to + substitute + placeholders in values yaml. + clusters: + type: array + description: > + Specific clusters powered by the selected instance-type to deploy + function. + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + regions: + type: array + description: > + List of regions allowed to deploy. The instance or worker node will + be in one of + + the specified geographical regions. + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + attributes: + type: array + description: > + Specific cluster attributes/capabilities to deploy functions. For + example, + + HIPPA Compliant, Confidential Compute Compliant, etc. + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + cpuArch: + type: string + format: UTF-8 + description: CPU Architecture details + maxLength: 262144 + minLength: 0 + os: + type: string + format: UTF-8 + description: Operating System details + maxLength: 262144 + minLength: 0 + driverVersion: + type: string + format: UTF-8 + description: GPU driver version + maxLength: 262144 + minLength: 0 + storage: + type: string + format: UTF-8 + description: Amount of available storage, e.g. 80G + maxLength: 262144 + minLength: 0 + systemMemory: + type: string + format: UTF-8 + description: Amount of RAM + maxLength: 262144 + minLength: 0 + gpuMemory: + type: string + format: UTF-8 + description: Amount of GPU memory + maxLength: 262144 + minLength: 0 + autoscalingConfiguration: + $ref: '#/components/schemas/AutoscalingConfigurationDto' + description: Customizable autoscaling configuration + helmValidationPolicy: + $ref: '#/components/schemas/HelmValidationPolicyDto' + description: Helm validation policy + required: + - gpu + - instanceType + - maxInstances + - minInstances + FunctionDto: + type: object + description: Data Transfer Object (DTO) representing a function + properties: + id: + type: string + format: uuid + description: Unique function id + maxLength: 36 + minLength: 36 + ncaId: + type: string + format: UTF-8 + description: NVIDIA Cloud Account Id + maxLength: 262144 + minLength: 0 + versionId: + type: string + format: uuid + description: Unique function version id + maxLength: 36 + minLength: 36 + name: + type: string + format: UTF-8 + description: Function name + maxLength: 262144 + minLength: 0 + status: + type: string + format: UTF-8 + description: Function status + enum: + - ACTIVE + - DEPLOYING + - ERROR + - INACTIVE + - DELETED + - DEGRADED + - DEGRADING + maxLength: 262144 + minLength: 0 + inferenceUrl: + type: string + format: uri + description: Entrypoint for invoking the container to process requests + ownedByDifferentAccount: + type: boolean + description: > + Indicates whether the function is owned by another account. If the + account + that is being used to lookup functions happens to be authorized to invoke/list + this function which is owned by a different account, then this field is set + to true and ncaId will contain the id of the account that owns the function. + Otherwise, this field is not set as it defaults to false. + inferencePort: + type: integer + format: int32 + description: >- + Optional port number where the inference listener is running - + defaults to 8000 for Triton + maximum: 2147483647 + minimum: -2147483648 + containerArgs: + type: string + format: UTF-8 + description: Args used to launch the container + maxLength: 262144 + minLength: 0 + containerEnvironment: + type: array + description: Environment settings used to launch the container + items: + $ref: '#/components/schemas/ContainerEnvironmentEntryDto' + maxItems: 2147483647 + minItems: 0 + models: + type: array + description: Optional list of models + items: + $ref: '#/components/schemas/FunctionModelDto' + maxItems: 2147483647 + minItems: 0 + containerImage: + type: string + format: uri + description: Optional custom container + apiBodyFormat: + type: string + format: UTF-8 + description: Invocation request body format + enum: + - PREDICT_V2 + - CUSTOM + maxLength: 262144 + minLength: 0 + helmChart: + type: string + format: uri + description: Optional Helm Chart + helmChartServiceName: + type: string + format: UTF-8 + description: > + Helm Chart Service Name specified only when helmChart property is + specified + maxLength: 262144 + minLength: 0 + healthUri: + type: string + format: uri + deprecated: true + description: >- + Health endpoint for the container or helmChart. Deprecated, use + health.uri instead. + createdAt: + type: string + format: date-time + description: Function creation timestamp + maxLength: 30 + minLength: 8 + activeInstances: + type: array + description: List of active instances for this function. + items: + $ref: '#/components/schemas/InstanceDto' + maxItems: 2147483647 + minItems: 0 + resources: + type: array + description: Optional set of resources. + items: + $ref: '#/components/schemas/ArtifactDto' + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + tags: + type: array + description: >- + Optional set of tags. Maximum allowed number of tags per function is + 64. Maximum length of each tag is 128 chars. + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + description: + type: string + format: UTF-8 + description: Function/version description + maxLength: 262144 + minLength: 0 + health: + $ref: '#/components/schemas/HealthDto' + description: Function health configuration + functionType: + type: string + format: UTF-8 + description: Used to indicate a STREAMING function. Defaults to DEFAULT. + enum: + - DEFAULT + - STREAMING + - LLM + maxLength: 262144 + minLength: 0 + secrets: + type: array + description: Optional secret names + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: Optional rate limit policy + telemetries: + $ref: '#/components/schemas/TelemetriesDto' + description: Optional telemetry configuration for the function + required: + - createdAt + - functionType + - healthUri + - id + - name + - ncaId + - status + - versionId + TelemetryDto: + type: object + description: Data Transfer Object (DTO) for Telemetry configurations + properties: + telemetryId: + type: string + format: uuid + description: Unique telemetry ID + maxLength: 36 + minLength: 36 + name: + type: string + format: UTF-8 + description: Telemetry name + maxLength: 262144 + minLength: 1 + endpoint: + type: string + format: UTF-8 + description: URL for the telemetry endpoint + maxLength: 262144 + minLength: 1 + protocol: + type: string + format: UTF-8 + description: Protocol used for communication + enum: + - HTTP + - GRPC + maxLength: 262144 + minLength: 0 + provider: + type: string + format: UTF-8 + description: Telemetry provider + enum: + - PROMETHEUS + - GRAFANA_CLOUD + - SPLUNK + - DATADOG + - SERVICENOW + - KRATOS + - KRATOS_THANOS + - TIMESTREAM + - VICTORIAMETRICS + - AZURE_MONITOR + - OTEL_COLLECTOR + maxLength: 262144 + minLength: 0 + types: + type: array + description: Set of telemetry data types + items: + type: string + enum: + - LOGS + - METRICS + - TRACES + maxItems: 2147483647 + minItems: 1 + uniqueItems: true + createdAt: + type: string + format: date-time + description: Telemetry creation timestamp + maxLength: 30 + minLength: 8 + required: + - createdAt + - endpoint + - name + - protocol + - provider + - telemetryId + - types + RegistryCredentialDetailsDto: + type: object + description: DTO representing a registry credential + properties: + registryCredentialId: + type: string + format: uuid + description: Registry Credential Id + maxLength: 36 + minLength: 36 + ncaId: + type: string + format: UTF-8 + description: NVIDIA Cloud Account Id owning the Registry Credential + maxLength: 262144 + minLength: 1 + registryCredentialName: + type: string + format: UTF-8 + description: Registry Credential name + maxLength: 262144 + minLength: 1 + registryName: + type: string + format: UTF-8 + description: Recognized registry name + maxLength: 262144 + minLength: 1 + registryHostname: + type: string + format: UTF-8 + description: Registry hostname + maxLength: 262144 + minLength: 1 + artifactTypes: + type: array + description: Registry type + items: + type: string + enum: + - CONTAINER + - HELM + - MODEL + - RESOURCE + maxItems: 2147483647 + minItems: 1 + uniqueItems: true + tags: + type: array + description: Optional set of tags + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + description: + type: string + format: UTF-8 + description: Registry credential description + maxLength: 262144 + minLength: 0 + provisionedBy: + type: string + format: UTF-8 + description: Registry credential provisioned by system or user + enum: + - SYSTEM + - USER + maxLength: 262144 + minLength: 0 + lastUpdatedAt: + type: string + format: date-time + description: Timestamp for last registry credential update + maxLength: 30 + minLength: 8 + createdAt: + type: string + format: date-time + description: Timestamp for registry credential creation + maxLength: 30 + minLength: 8 + required: + - artifactTypes + - createdAt + - lastUpdatedAt + - ncaId + - provisionedBy + - registryCredentialId + - registryCredentialName + - registryHostname + - registryName + AutoscalingConfigurationDto: + type: object + description: Data Transfer Object(DTO) representing autoscaling configuration + properties: + scaleUpDetails: + $ref: '#/components/schemas/ScalingDetails' + description: Configuration for scaling up + scaleDownDetails: + $ref: '#/components/schemas/ScalingDetails' + description: Configuration for scaling down + ClusterGroup: + type: object + properties: + id: + type: string + format: uuid + maxLength: 36 + minLength: 36 + name: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + ncaId: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + authorizedNcaIds: + type: array + items: + type: string + maxItems: 2147483647 + minItems: 0 + gpus: + type: array + items: + $ref: '#/components/schemas/Gpu' + maxItems: 2147483647 + minItems: 0 + clusters: + type: array + items: + $ref: '#/components/schemas/Cluster' + maxItems: 2147483647 + minItems: 0 + JsonNode: {} + DeploymentHealthDto: + type: object + description: Data Transfer Object(DTO) representing deployment error + properties: + icmsRequestId: + type: string + format: uuid + description: ICMS Request ID + maxLength: 36 + minLength: 36 + gpu: + type: string + format: UTF-8 + description: GPU Type as per SDD + maxLength: 262144 + minLength: 1 + backend: + type: string + format: UTF-8 + description: Backend/CSP where the GPU powered instance will be launched + maxLength: 262144 + minLength: 1 + instanceType: + type: string + format: UTF-8 + description: Instance type + maxLength: 262144 + minLength: 0 + error: + type: string + format: UTF-8 + description: Deployment error + maxLength: 262144 + minLength: 1 + required: + - backend + - error + - gpu + - icmsRequestId + HelmValidationPolicyDto: + type: object + description: Data Transfer Object(DTO) representing Helm validation policy + properties: + name: + type: string + format: UTF-8 + description: Helm validation policy name. + enum: + - Default + - Unrestricted + maxLength: 262144 + minLength: 0 + extraKubernetesTypes: + type: array + description: > + An API Group in Kubernetes is a collection of related functionality. + + When present, must contain at least one entry; each entry must be a + valid + + KubernetesType (group, version, kind). + items: + $ref: '#/components/schemas/KubernetesType' + maxItems: 2147483647 + minItems: 1 + required: + - name + ContainerEnvironmentEntryDto: + type: object + description: Data Transfer Object(DTO) representing a container environment entry + properties: + key: + type: string + format: UTF-8 + description: Container environment key + maxLength: 262144 + minLength: 0 + value: + type: string + format: UTF-8 + description: Container environment value + maxLength: 262144 + minLength: 0 + required: + - key + - value + FunctionModelDto: + type: object + description: >- + Model associated with a function, including optional LLM routing + metadata + properties: + name: + type: string + format: UTF-8 + description: Model name + maxLength: 262144 + minLength: 0 + version: + type: string + format: UTF-8 + description: Model version. Optional for LLM-type functions. + maxLength: 262144 + minLength: 0 + uri: + type: string + format: uri + description: Model URI. Optional for LLM-type functions. + llmConfig: + $ref: '#/components/schemas/LlmConfigDto' + description: >- + LLM-specific configuration for this model. Only relevant for + LLM-type functions. + required: + - name + InstanceDto: + type: object + description: Data Transfer Object(DTO) representing an instance + properties: + instanceId: + type: string + format: UTF-8 + description: Unique id of the instance + maxLength: 262144 + minLength: 0 + functionId: + type: string + format: uuid + description: Function executing on the instance + maxLength: 36 + minLength: 36 + functionVersionId: + type: string + format: uuid + description: Function version executing on the instance + maxLength: 36 + minLength: 36 + instanceType: + type: string + format: UTF-8 + description: GPU instance-type powering the instance + maxLength: 262144 + minLength: 0 + instanceStatus: + type: string + format: UTF-8 + description: Instance status + enum: + - ACTIVE + - STARTING + - RUNNING + - ERRORED + - PREEMPTED + - DELETED + - TERMINATED + maxLength: 262144 + minLength: 0 + icmsRequestId: + type: string + format: uuid + description: ICMS request-id used to launch this instance + maxLength: 36 + minLength: 36 + ncaId: + type: string + format: UTF-8 + description: >- + NVIDIA Cloud Account Id that owns the function running on the + instance + maxLength: 262144 + minLength: 0 + gpu: + type: string + format: UTF-8 + description: GPU name powering the instance + maxLength: 262144 + minLength: 0 + backend: + type: string + format: UTF-8 + description: Backend where the instance is running + maxLength: 262144 + minLength: 0 + location: + type: string + format: UTF-8 + description: Location such as zone name or region where the instance is running + maxLength: 262144 + minLength: 0 + instanceCreatedAt: + type: string + format: date-time + description: Instance creation timestamp + maxLength: 30 + minLength: 8 + instanceUpdatedAt: + type: string + format: date-time + description: Instance's last updated timestamp + maxLength: 30 + minLength: 8 + ArtifactDto: + type: object + description: Data Transfer Object(DTO) representing an artifact + properties: + name: + type: string + format: UTF-8 + description: Artifact name + maxLength: 262144 + minLength: 0 + version: + type: string + format: UTF-8 + description: Artifact version + maxLength: 262144 + minLength: 0 + uri: + type: string + format: uri + description: Artifact URI + required: + - name + - uri + - version + HealthDto: + type: object + description: Data Transfer Object(DTO) representing a function ne + properties: + protocol: + type: string + format: UTF-8 + description: HTTP/gPRC protocol type for health endpoint + enum: + - HTTP + - gRPC + maxLength: 262144 + minLength: 0 + uri: + type: string + format: uri + description: Health endpoint for the container or the helmChart + port: + type: integer + format: int32 + description: Port number where the health listener is running + maximum: 2147483647 + minimum: -2147483648 + timeout: + type: string + format: duration + description: ISO 8601 duration string in PnDTnHnMn.nS format + example: PT10S + expectedStatusCode: + type: integer + format: int32 + description: Expected return status code considered as successful. + maximum: 2147483647 + minimum: -2147483648 + required: + - expectedStatusCode + - port + - protocol + - timeout + - uri + RateLimitDto: + type: object + description: Data Transfer Object(DTO) representing Rate limit config + properties: + rateLimit: + type: string + format: UTF-8 + description: Rate + maxLength: 262144 + minLength: 0 + pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ + exemptedNcaIds: + type: array + description: NCA ID Exemptions + items: + type: string + maxItems: 32 + minItems: 0 + uniqueItems: true + perNcaIdRate: + type: object + additionalProperties: + type: string + description: Per NCA ID Rate + syncCheck: + type: boolean + description: Sync check. Defaults to false + perUserRate: + type: string + format: UTF-8 + description: >- + Per-user rate, intended for traffic authenticated with an invocation + delegation token (InvocationToken). When set, this single rate is + enforced individually against every unique caller identity, in + addition to the NCA-tier limit. + maxLength: 262144 + minLength: 0 + pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ + TelemetriesDto: + type: object + description: Telemetry configuration for logs, metrics, and traces. + properties: + logsTelemetryId: + type: string + format: uuid + description: UUID representing the logs telemetry. + maxLength: 36 + minLength: 36 + metricsTelemetryId: + type: string + format: uuid + description: UUID representing the metrics telemetry. + maxLength: 36 + minLength: 36 + tracesTelemetryId: + type: string + format: uuid + description: UUID representing the traces telemetry. + maxLength: 36 + minLength: 36 + ScalingDetails: + type: object + properties: + metric: + type: string + format: UTF-8 + description: Scaling metric + maxLength: 262144 + minLength: 0 + factor: + type: number + format: float + description: >- + Scaling factor must be greater-than 1.0 for scale up and less-than + 1.0 for scale down. This factor is used to multiply the + currentinstance count when specified threshold is met. + threshold: + type: integer + format: int32 + description: >- + Scaling threshold (0-100) as a percentage of utilizationupon which + the number of current instances are multiplied with thespecified + factor. + maximum: 2147483647 + minimum: -2147483648 + stickiness: + $ref: '#/components/schemas/StickinessWindow' + description: Stickiness window configuration + required: + - factor + - threshold + Gpu: + type: object + properties: + name: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + instanceTypes: + type: array + items: + $ref: '#/components/schemas/InstanceType' + maxItems: 2147483647 + minItems: 0 + Cluster: + type: object + properties: + k8sVersion: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + id: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + name: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + KubernetesType: + type: object + properties: + group: + type: string + format: UTF-8 + description: Name of API Group + maxLength: 262144 + minLength: 1 + version: + type: string + format: UTF-8 + description: Version of API Group + maxLength: 262144 + minLength: 1 + kind: + type: string + format: UTF-8 + description: API Group resource or Kind + maxLength: 262144 + minLength: 1 + required: + - group + - kind + - version + LlmConfigDto: + type: object + description: LLM-specific configuration for a model + properties: + uris: + type: array + description: >- + OpenAI-compatible URIs supported by this model (e.g. + /v1/chat/completions). Required for LLM models. + items: + type: string + maxItems: 2147483647 + minItems: 1 + tokenRateLimit: + type: string + format: UTF-8 + description: Token-level rate limit for this model. + maxLength: 262144 + minLength: 0 + tokenizer: + type: string + format: UTF-8 + description: Tokenizer identifier for this model. + maxLength: 262144 + minLength: 0 + routingMethod: + type: string + format: UTF-8 + description: Routing method for this model. + maxLength: 262144 + minLength: 0 + required: + - uris + StickinessWindow: + type: object + properties: + size: + type: string + format: duration + description: >- + Window size must be less than or equal to PT1H and will berounded to + the nearest minute + example: PT30M + threshold: + type: string + format: duration + description: Window threshold must be less than size + example: PT5M + required: + - size + - threshold + InstanceType: + type: object + properties: + name: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + description: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + default: + type: boolean +servers: + - url: https://api.nvcf.nvidia.com + description: Generated server url diff --git a/provider-dev/source/nvcf_functions.yaml b/provider-dev/source/nvcf_functions.yaml new file mode 100644 index 0000000..ebae305 --- /dev/null +++ b/provider-dev/source/nvcf_functions.yaml @@ -0,0 +1,1727 @@ +openapi: 3.1.0 +info: + title: nvcf_functions API + description: nvidia nvcf_functions API + version: 2.245.1 +paths: + /v2/nvcf/secrets/functions/{functionId}/versions/{versionId}: + put: + tags: + - User Secret Management + summary: Update user secrets for a function version + description: >- + Updates secrets for the specified function version. This endpoint + requires a bearer token with 'update_secrets' scope in the HTTP + Authorization header. + operationId: updateFunctionSecrets + parameters: + - name: functionId + in: path + description: Function Id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: versionId + in: path + description: Function Version Id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFunctionSecretsRequest' + required: true + responses: + '204': + description: No Content + /v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId}: + put: + tags: + - User Ratelimit Management + summary: Update user ratelimit for a function version + description: >- + Deprecated: use PUT + /v2/nvcf/functions/{functionId}/versions/{versionId} to update + ratelimit and other mutable function fields. This legacy endpoint only + updates ratelimit for the specified function version and requires a + bearer token with 'update_function' scope in the HTTP Authorization + header. + operationId: updateRateLimit + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: versionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFunctionRequest' + required: true + responses: + '204': + description: No Content + deprecated: true + delete: + tags: + - User Ratelimit Management + summary: Delete user ratelimit for a function version + description: >- + Delete ratelimit for the specified function version. This endpoint + requires a bearer token with 'update_function' scope in the HTTP + Authorization header. + operationId: deleteRateLimit + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: versionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '204': + description: No Content + /v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId}: + put: + tags: + - Function Management + summary: Update Function Metadata + description: >- + Deprecated: use PUT + /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update + tags, rate limit, model-specific LLM config, and other mutable function + fields. This legacy endpoint updates the same mutable function version + fields for the authenticated NVIDIA Cloud Account and requires a bearer + token with 'update_function' scope in the HTTP Authorization header. + operationId: updateFunctionMetadata + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFunctionRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionResponse' + deprecated: true + /v2/nvcf/functions/{functionId}/versions/{functionVersionId}: + get: + tags: + - Function Management + summary: Get Function Version Details + description: >- + Retrieves detailed information of the specified function version in the + authenticated NVIDIA Cloud Account. Requires a bearer token with + 'list_functions' or 'list_functions_details' scopes in the HTTP + Authorization header. + operationId: getFunction + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: 'Version id ' + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: includeSecrets + in: query + description: > + Query param 'includeSecrets' indicates whether to include secret + names + for the function in the response. + required: false + schema: + type: boolean + default: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionResponse' + put: + tags: + - Function Management + summary: Updates mutable fields of the specified function version. + description: >- + Updates mutable fields of the specified function version within the + authenticated NVIDIA Cloud Account. The current request payload supports + tags updates, rate limit updates, and model-specific LLM config updates. + Requires a bearer token with 'update_function' scope in the HTTP + Authorization header. + operationId: updateFunction + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFunctionRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionResponse' + delete: + tags: + - Function Management + summary: Delete Function + description: >- + Deletes the specified function version in the authenticated NVIDIA + Cloud Account. Requires a bearer token with 'delete_function' scope in + the HTTP Authorization header. If the function version is public, then + Account Admin cannot delete the function. + operationId: deleteFunction + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '204': + description: No Content + /v2/nvcf/functions: + get: + tags: + - Function Management + summary: List Functions + description: >- + Lists all the functions associated with the authenticated NVIDIA Cloud + Account. Requires a bearer token with 'list_functions' or + 'list_functions_details' scope in the HTTP Authorization header. + operationId: getFunctions + parameters: + - name: visibility + in: query + description: > + Query param 'visibility' indicates the kind of functions to be + included + in the response. + required: false + schema: + type: array + default: + - authorized + - private + - public + items: + type: string + format: UTF-8 + enum: + - authorized + - private + - public + maxLength: 262144 + minLength: 0 + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListFunctionsResponse' + post: + tags: + - Function Management + summary: Create Function + description: >- + Creates a new function within the authenticated NVIDIA Cloud Account. + Requires a bearer token with 'register_function' scope in the HTTP + Authorization header. + operationId: createFunction + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFunctionRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFunctionResponse' + /v2/nvcf/functions/{functionId}/versions: + get: + tags: + - Function Management + summary: List Function Versions + description: >- + Lists details of all the versions of the specified function in the + authenticated NVIDIA Cloud Account. Requires a bearer token with + 'list_functions' or 'list_functions_details' scopes in the HTTP + Authorization header. + operationId: getFunctions_1 + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListFunctionsResponse' + post: + tags: + - Function Management + summary: Create Function Version + description: >- + Creates a version of the specified function within the authenticated + NVIDIA Cloud Account. If the function is public, then Account Admin + cannot create a version. Requires a bearer token with + 'register_function' scope in the HTTP Authorization header. + operationId: createFunction_1 + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFunctionRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFunctionResponse' + /v2/nvcf/authorizations/functions/{functionId}: + get: + tags: + - Function Sharing + summary: List Account Authorizations For Function + description: >- + Lists NVIDIA Cloud Account IDs that are authorized to invoke any version + of the specified function. The response includes an array showing + authorized accounts for each version. Individual versions of a function + can have their own authorized accounts. So, each object in the array + can have different authorized accounts listed. Access to this + functionality mandates the inclusion of a bearer token with the + 'authorize_clients' scope in the HTTP Authorization header + operationId: getAuthorizedPartiesForAllVersions + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListAuthorizedPartiesResponse' + post: + tags: + - Function Sharing + summary: Authorize Accounts To Invoke Function + description: >- + Authorizes additional NVIDIA Cloud Accounts to invoke any version of + the specified function. By default, a function belongs to the NVIDIA + Cloud Account that created it, and the credentials used for function + invocation must reference the same NVIDIA Cloud Account. Upon + invocation of this endpoint, any existing authorized accounts will be + overwritten by the newly specified authorized accounts. Access to this + functionality mandates the inclusion of a bearer token with the + 'authorize_clients' scope in the HTTP Authorization header + operationId: createAuthorizedPartiesForAllVersions + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + delete: + tags: + - Function Sharing + summary: Delete All Authorizations At Function Level + description: >- + Deletes authorizations at the function level. This impacts all versions + of the function. If a function versions has its own set of + authorizations, those are not deleted. If the specified function is + public, then Account Admin cannot perform this operation. Note that the + response does not include any authz accounts at version level. Access + to this functionality mandates the inclusion of a bearer token with the + 'authorize_clients' scope in the HTTP Authorization header + operationId: deleteAuthorizedPartiesForAllVersions + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + /v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}: + get: + tags: + - Function Sharing + summary: Get Account Authorizations For Function Version + description: >- + Gets NVIDIA Cloud Account IDs that are authorized to invoke specified + function version. Response includes authorized accounts that were added + specifically at the version level and the authorized accounts that were + inherited from function level. Access to this functionality mandates + the inclusion of a bearer token with the 'authorize_clients' scope in + the HTTP Authorization header + operationId: getAuthorizedPartiesForSpecificVersion + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + post: + tags: + - Function Sharing + summary: Authorize Accounts To Invoke/List Function Version + description: >- + Authorizes additional NVIDIA Cloud Accounts to invoke a specific + function version. By default, a function belongs to the NVIDIA Cloud + Account that created it, and the credentials used for function + invocation must reference the same NVIDIA Cloud Account. Upon + invocation of this endpoint, any existing authorized accounts will be + overwritten by the newly specified authorized accounts. Note that the + response does NOT include inherited authorized accounts that were added + at the function level. Access to this functionality mandates the + inclusion of a bearer token with the 'authorize_clients' scope in the + HTTP Authorization header + operationId: createAuthorizedPartiesForSpecificVersion + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + delete: + tags: + - Function Sharing + summary: Delete All Authorizations At Version Level + description: >- + Deletes all the authorized accounts that are directly associated with + the specified function version. Authorized parties that are inherited + by the function version are not deleted. If the specified function + version is public, then Account Admin cannot perform this operation. + Note that the response does not include inherited authorized accounts + that were added at the function level. Access to this functionality + mandates the inclusion of a bearer token with the 'authorize_clients' + scope in the HTTP Authorization header + operationId: deleteAuthorizedPartiesForSpecificVersion + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + /v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove: + patch: + tags: + - Function Sharing + summary: >- + Unauthorize Account From Invoking, Listing, and Checking Queue Details + of Function Version + description: >- + Removes the specified NVIDIA Cloud Account from the set of authorized + accounts that are directly associated with specified function version. + If the specified function version does not have any of its own(not + inherited) authorized accounts, it results in a response with status + 404. Also, if the specified authorized account is not in the set of + existing authorized parties that are directly associated with the + specified function version, it results in a response with status code + 404. If the specified function version is public, then Account Admin + cannot perform this operation. Note that the response does not include + inherited authorized accounts that were added at the function level. + Access to this functionality mandates the inclusion of a bearer token + with the 'authorize_clients' scope in the HTTP Authorization header + operationId: removeAuthorizedPartyForSpecificVersion + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + /v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add: + patch: + tags: + - Function Sharing + summary: >- + Authorize Another Account To Invoke, List, and Check Queue Details of + Function Version + description: >- + Adds the specified NVIDIA Cloud Account to the set of authorized + accounts that can invoke the specified function version. If the + specified function version does not have any existing inheritable + authorized accounts, it results in a response with status 404. If the + specified account is already in the set of existing authorized accounts + that are directly associated with the function version, it results in a + response wit status code 409. If a function is public, then Account + Admin cannot perform this operation. Note that the response does not + include inherited authorized accounts that were added at the function + level. Access to this functionality mandates the inclusion of a bearer + token with the 'authorize_clients' scope in the HTTP Authorization + header + operationId: addAuthorizedPartyForSpecificVersion + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + description: Function version + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + /v2/nvcf/authorizations/functions/{functionId}/remove: + patch: + tags: + - Function Sharing + summary: >- + Unauthorize Account From Invoking, Listing, and Checking Queue Details + of Function + description: >- + Removes the specified NVIDIA Cloud Account from the set of authorized + accounts that can invoke all the versions of the specified function. If + the specified function does not have any existing inheritable + authorized parties, it results in a response with status 404. Also, if + the specified account is not in the existing set of inheritable + authorized accounts, it results in a response with status 404. If the + specified function is public, then Account Admin cannot perform this + operation. Note that response only includes the remaining authorized + accounts at the function level. Access to this functionality mandates + the inclusion of a bearer token with the 'authorize_clients' scope in + the HTTP Authorization header + operationId: removeAuthorizedPartyForAllVersions + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + /v2/nvcf/authorizations/functions/{functionId}/add: + patch: + tags: + - Function Sharing + summary: >- + Authorize Another Account To Invoke, List, and Check Queue Details of + Function + description: >- + Adds the specified NVIDIA Cloud Account to the set of authorized + accounts that are can invoke all the versions of the specified + function. If the specified function does not have any existing + inheritable authorized accounts, it results in a response with status + 404. If the specified account is already in the set of existing + inheritable authorized accounts, it results in a response with status + code 409. If a function is public, then Account Admin cannot perform + this operation. Note that response only includes authz accounts at the + function level. Access to this functionality mandates the inclusion of a + bearer token with the 'authorize_clients' scope in the HTTP + Authorization header + operationId: addAuthorizedPartyForAllVersions + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + /v2/nvcf/functions/ids: + get: + tags: + - Function Management + summary: List Function Ids + description: >- + Lists ids of all the functions in the authenticated NVIDIA Cloud + Account. Requires a bearer token with 'list_functions' or + 'list_functions_details' scopes in the HTTP Authorization header. + operationId: getFunctionIds + parameters: + - name: visibility + in: query + description: > + Query param 'visibility' indicates the kind of functions to be + included + in the response. + required: false + schema: + type: array + default: + - authorized + - private + - public + items: + type: string + format: UTF-8 + enum: + - authorized + - private + - public + maxLength: 262144 + minLength: 0 + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListFunctionIdsResponse' +components: + schemas: + UpdateFunctionSecretsRequest: + type: object + description: Request payload to update secrets + properties: + secrets: + type: array + description: Secrets + items: + $ref: '#/components/schemas/SecretDto' + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + required: + - secrets + UpdateFunctionRequest: + type: object + description: Request payload to update mutable function configuration fields. + properties: + tags: + type: array + description: >- + Optional set of function tags. When omitted, the existing value is + preserved. + items: + type: string + pattern: '[a-zA-Z0-9\-_:=]+' + maxItems: 64 + minItems: 0 + uniqueItems: true + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: >- + Optional full replacement for the function rate limit configuration. + When omitted, the existing value is preserved. Use the delete + rate-limit endpoint to clear it. + modelUpdates: + type: array + description: Optional list of model-specific updates. + items: + $ref: '#/components/schemas/ModelUpdateDto' + maxItems: 2147483647 + minItems: 0 + FunctionResponse: + type: object + description: Response body with function details + properties: + function: + $ref: '#/components/schemas/FunctionDto' + description: Function details + required: + - function + ListFunctionsResponse: + type: object + description: Response body containing list of functions + properties: + functions: + type: array + description: List of functions + items: + $ref: '#/components/schemas/FunctionDto' + maxItems: 2147483647 + minItems: 0 + required: + - functions + CreateFunctionRequest: + type: object + description: Request payload to create function. + properties: + name: + type: string + format: UTF-8 + description: >- + Function name must start with lowercase/uppercase/digit and can only + contain lowercase, uppercase, digit, hyphen, and underscore + characters + maxLength: 128 + minLength: 1 + pattern: ^[a-z0-9A-Z][a-z0-9A-Z\-_]*$ + inferenceUrl: + type: string + format: uri + description: Entrypoint for invoking the container to process a request + healthUri: + type: string + format: uri + deprecated: true + description: Health endpoint for the container or the helmChart + inferencePort: + type: integer + format: int32 + description: > + Optional port number where the inference listener is running. + Defaults to 8000 + for Triton. + maximum: 2147483647 + minimum: -2147483648 + health: + $ref: '#/components/schemas/HealthDto' + description: Function health + containerArgs: + type: string + format: UTF-8 + description: Args to be passed when launching the container + maxLength: 262144 + minLength: 0 + containerEnvironment: + type: array + description: Environment settings for launching the container + items: + $ref: '#/components/schemas/ContainerEnvironmentEntryDto' + maxItems: 2147483647 + minItems: 0 + models: + type: array + description: Optional list of models + items: + $ref: '#/components/schemas/FunctionModelDto' + maxItems: 2147483647 + minItems: 0 + containerImage: + type: string + format: uri + description: Optional custom container image + helmChart: + type: string + format: uri + description: Optional Helm Chart + helmChartServiceName: + type: string + format: UTF-8 + description: > + Helm Chart Service Name is required when helmChart property is + specified + maxLength: 262144 + minLength: 0 + resources: + type: array + description: Optional set of resources + items: + $ref: '#/components/schemas/ArtifactDto' + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + apiBodyFormat: + type: string + format: UTF-8 + description: Invocation request body format + enum: + - PREDICT_V2 + - CUSTOM + maxLength: 262144 + minLength: 0 + tags: + type: array + description: Optional set of tags - could be empty. Provided by user + items: + type: string + pattern: '[a-zA-Z0-9\-_:=]+' + maxItems: 64 + minItems: 0 + uniqueItems: true + description: + type: string + format: UTF-8 + description: Optional function/version description + maxLength: 262144 + minLength: 0 + secrets: + type: array + description: Optional secrets + items: + $ref: '#/components/schemas/SecretDto' + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + functionType: + type: string + format: UTF-8 + description: >- + Optional function type, used to indicate a STREAMING function. + Defaults to DEFAULT. + enum: + - DEFAULT + - STREAMING + - LLM + maxLength: 262144 + minLength: 0 + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: Optional rate limit config + telemetries: + $ref: '#/components/schemas/TelemetriesDto' + description: Optional telemetry configuration for logs, metrics, and traces. + required: + - inferenceUrl + - name + CreateFunctionResponse: + type: object + description: Response body for create function request. + properties: + function: + $ref: '#/components/schemas/FunctionDto' + description: Details of the newly created function + required: + - function + ListAuthorizedPartiesResponse: + type: object + description: Parties authorized to invoke function + properties: + functions: + type: array + description: Functions with authorized parties and other details + items: + $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' + maxItems: 2147483647 + minItems: 0 + required: + - functions + AuthorizedPartiesRequest: + type: object + description: >- + Request to associated authorized parties for a specific version or + allversions of a function + properties: + authorizedParties: + type: array + description: Parties authorized to invoke function + items: + $ref: '#/components/schemas/AuthorizedPartyDto' + maxItems: 2147483647 + minItems: 1 + required: + - authorizedParties + AuthorizedPartiesResponse: + type: object + description: Parties authorized to invoke function + properties: + function: + $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' + description: Function with authorized parties and other details + required: + - function + PatchAuthorizedPartyRequest: + type: object + description: | + Request payload to associate/disassociate authorized party with function + properties: + authorizedParty: + $ref: '#/components/schemas/AuthorizedPartyDto' + description: Authorized party + required: + - authorizedParty + ListFunctionIdsResponse: + type: object + description: Response body containing list of function ids in an account + properties: + functionIds: + type: array + description: List of function ids + items: + type: string + format: uuid + maxItems: 2147483647 + minItems: 0 + required: + - functionIds + SecretDto: + type: object + description: Data Transfer Object(DTO) representing secret name/value pair + properties: + name: + type: string + format: UTF-8 + description: Secret name + maxLength: 48 + minLength: 1 + pattern: ^[a-z0-9A-Z][a-z0-9A-Z\_\.\-]*$ + value: + $ref: '#/components/schemas/JsonNode' + description: Secret value must be 1 - 32768 chars long + required: + - name + RateLimitDto: + type: object + description: Data Transfer Object(DTO) representing Rate limit config + properties: + rateLimit: + type: string + format: UTF-8 + description: Rate + maxLength: 262144 + minLength: 0 + pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ + exemptedNcaIds: + type: array + description: NCA ID Exemptions + items: + type: string + maxItems: 32 + minItems: 0 + uniqueItems: true + perNcaIdRate: + type: object + additionalProperties: + type: string + description: Per NCA ID Rate + syncCheck: + type: boolean + description: Sync check. Defaults to false + perUserRate: + type: string + format: UTF-8 + description: >- + Per-user rate, intended for traffic authenticated with an invocation + delegation token (InvocationToken). When set, this single rate is + enforced individually against every unique caller identity, in + addition to the NCA-tier limit. + maxLength: 262144 + minLength: 0 + pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ + ModelUpdateDto: + type: object + description: Model-specific update request. + properties: + modelName: + type: string + format: UTF-8 + description: Name of the model to update. + maxLength: 262144 + minLength: 1 + llmConfig: + $ref: '#/components/schemas/LlmConfigUpdateDto' + description: Optional updates to this model's LLM config fields. + required: + - modelName + FunctionDto: + type: object + description: Data Transfer Object (DTO) representing a function + properties: + id: + type: string + format: uuid + description: Unique function id + maxLength: 36 + minLength: 36 + ncaId: + type: string + format: UTF-8 + description: NVIDIA Cloud Account Id + maxLength: 262144 + minLength: 0 + versionId: + type: string + format: uuid + description: Unique function version id + maxLength: 36 + minLength: 36 + name: + type: string + format: UTF-8 + description: Function name + maxLength: 262144 + minLength: 0 + status: + type: string + format: UTF-8 + description: Function status + enum: + - ACTIVE + - DEPLOYING + - ERROR + - INACTIVE + - DELETED + - DEGRADED + - DEGRADING + maxLength: 262144 + minLength: 0 + inferenceUrl: + type: string + format: uri + description: Entrypoint for invoking the container to process requests + ownedByDifferentAccount: + type: boolean + description: > + Indicates whether the function is owned by another account. If the + account + that is being used to lookup functions happens to be authorized to invoke/list + this function which is owned by a different account, then this field is set + to true and ncaId will contain the id of the account that owns the function. + Otherwise, this field is not set as it defaults to false. + inferencePort: + type: integer + format: int32 + description: >- + Optional port number where the inference listener is running - + defaults to 8000 for Triton + maximum: 2147483647 + minimum: -2147483648 + containerArgs: + type: string + format: UTF-8 + description: Args used to launch the container + maxLength: 262144 + minLength: 0 + containerEnvironment: + type: array + description: Environment settings used to launch the container + items: + $ref: '#/components/schemas/ContainerEnvironmentEntryDto' + maxItems: 2147483647 + minItems: 0 + models: + type: array + description: Optional list of models + items: + $ref: '#/components/schemas/FunctionModelDto' + maxItems: 2147483647 + minItems: 0 + containerImage: + type: string + format: uri + description: Optional custom container + apiBodyFormat: + type: string + format: UTF-8 + description: Invocation request body format + enum: + - PREDICT_V2 + - CUSTOM + maxLength: 262144 + minLength: 0 + helmChart: + type: string + format: uri + description: Optional Helm Chart + helmChartServiceName: + type: string + format: UTF-8 + description: > + Helm Chart Service Name specified only when helmChart property is + specified + maxLength: 262144 + minLength: 0 + healthUri: + type: string + format: uri + deprecated: true + description: >- + Health endpoint for the container or helmChart. Deprecated, use + health.uri instead. + createdAt: + type: string + format: date-time + description: Function creation timestamp + maxLength: 30 + minLength: 8 + activeInstances: + type: array + description: List of active instances for this function. + items: + $ref: '#/components/schemas/InstanceDto' + maxItems: 2147483647 + minItems: 0 + resources: + type: array + description: Optional set of resources. + items: + $ref: '#/components/schemas/ArtifactDto' + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + tags: + type: array + description: >- + Optional set of tags. Maximum allowed number of tags per function is + 64. Maximum length of each tag is 128 chars. + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + description: + type: string + format: UTF-8 + description: Function/version description + maxLength: 262144 + minLength: 0 + health: + $ref: '#/components/schemas/HealthDto' + description: Function health configuration + functionType: + type: string + format: UTF-8 + description: Used to indicate a STREAMING function. Defaults to DEFAULT. + enum: + - DEFAULT + - STREAMING + - LLM + maxLength: 262144 + minLength: 0 + secrets: + type: array + description: Optional secret names + items: + type: string + maxItems: 2147483647 + minItems: 0 + uniqueItems: true + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: Optional rate limit policy + telemetries: + $ref: '#/components/schemas/TelemetriesDto' + description: Optional telemetry configuration for the function + required: + - createdAt + - functionType + - healthUri + - id + - name + - ncaId + - status + - versionId + HealthDto: + type: object + description: Data Transfer Object(DTO) representing a function ne + properties: + protocol: + type: string + format: UTF-8 + description: HTTP/gPRC protocol type for health endpoint + enum: + - HTTP + - gRPC + maxLength: 262144 + minLength: 0 + uri: + type: string + format: uri + description: Health endpoint for the container or the helmChart + port: + type: integer + format: int32 + description: Port number where the health listener is running + maximum: 2147483647 + minimum: -2147483648 + timeout: + type: string + format: duration + description: ISO 8601 duration string in PnDTnHnMn.nS format + example: PT10S + expectedStatusCode: + type: integer + format: int32 + description: Expected return status code considered as successful. + maximum: 2147483647 + minimum: -2147483648 + required: + - expectedStatusCode + - port + - protocol + - timeout + - uri + ContainerEnvironmentEntryDto: + type: object + description: Data Transfer Object(DTO) representing a container environment entry + properties: + key: + type: string + format: UTF-8 + description: Container environment key + maxLength: 262144 + minLength: 0 + value: + type: string + format: UTF-8 + description: Container environment value + maxLength: 262144 + minLength: 0 + required: + - key + - value + FunctionModelDto: + type: object + description: >- + Model associated with a function, including optional LLM routing + metadata + properties: + name: + type: string + format: UTF-8 + description: Model name + maxLength: 262144 + minLength: 0 + version: + type: string + format: UTF-8 + description: Model version. Optional for LLM-type functions. + maxLength: 262144 + minLength: 0 + uri: + type: string + format: uri + description: Model URI. Optional for LLM-type functions. + llmConfig: + $ref: '#/components/schemas/LlmConfigDto' + description: >- + LLM-specific configuration for this model. Only relevant for + LLM-type functions. + required: + - name + ArtifactDto: + type: object + description: Data Transfer Object(DTO) representing an artifact + properties: + name: + type: string + format: UTF-8 + description: Artifact name + maxLength: 262144 + minLength: 0 + version: + type: string + format: UTF-8 + description: Artifact version + maxLength: 262144 + minLength: 0 + uri: + type: string + format: uri + description: Artifact URI + required: + - name + - uri + - version + TelemetriesDto: + type: object + description: Telemetry configuration for logs, metrics, and traces. + properties: + logsTelemetryId: + type: string + format: uuid + description: UUID representing the logs telemetry. + maxLength: 36 + minLength: 36 + metricsTelemetryId: + type: string + format: uuid + description: UUID representing the metrics telemetry. + maxLength: 36 + minLength: 36 + tracesTelemetryId: + type: string + format: uuid + description: UUID representing the traces telemetry. + maxLength: 36 + minLength: 36 + AuthorizedPartiesByFunctionDto: + type: object + description: >- + Data Transfer Object(DTO) representing a function with authorized + accounts + properties: + id: + type: string + format: uuid + description: Function id + maxLength: 36 + minLength: 36 + ncaId: + type: string + format: UTF-8 + description: NVIDIA Cloud Account Id + maxLength: 262144 + minLength: 1 + versionId: + type: string + format: uuid + description: Function version id + maxLength: 36 + minLength: 36 + authorizedParties: + type: array + description: Authorized parties allowed to invoke the function + items: + $ref: '#/components/schemas/AuthorizedPartyDto' + maxItems: 2147483647 + minItems: 0 + required: + - id + - ncaId + AuthorizedPartyDto: + type: object + description: Data Transfer Object(DTO) representing an authorized party. + properties: + clientId: + type: string + format: UTF-8 + description: |- + Client Id -- 'sub' claim in the JWT. This field should not be + specified anymore. + maxLength: 262144 + minLength: 0 + ncaId: + type: string + format: UTF-8 + description: NVIDIA Cloud Account authorized to invoke the function + maxLength: 262144 + minLength: 1 + required: + - ncaId + JsonNode: {} + LlmConfigUpdateDto: + type: object + description: Partial update payload for LLM-specific model configuration fields. + properties: + tokenRateLimit: + type: string + format: UTF-8 + description: >- + Updated token-level rate limit for the model. When omitted, the + existing value is preserved. + maxLength: 262144 + minLength: 0 + routingMethod: + type: string + format: UTF-8 + description: >- + Updated routing method for the model. When omitted, the existing + value is preserved. + maxLength: 262144 + minLength: 0 + InstanceDto: + type: object + description: Data Transfer Object(DTO) representing an instance + properties: + instanceId: + type: string + format: UTF-8 + description: Unique id of the instance + maxLength: 262144 + minLength: 0 + functionId: + type: string + format: uuid + description: Function executing on the instance + maxLength: 36 + minLength: 36 + functionVersionId: + type: string + format: uuid + description: Function version executing on the instance + maxLength: 36 + minLength: 36 + instanceType: + type: string + format: UTF-8 + description: GPU instance-type powering the instance + maxLength: 262144 + minLength: 0 + instanceStatus: + type: string + format: UTF-8 + description: Instance status + enum: + - ACTIVE + - STARTING + - RUNNING + - ERRORED + - PREEMPTED + - DELETED + - TERMINATED + maxLength: 262144 + minLength: 0 + icmsRequestId: + type: string + format: uuid + description: ICMS request-id used to launch this instance + maxLength: 36 + minLength: 36 + ncaId: + type: string + format: UTF-8 + description: >- + NVIDIA Cloud Account Id that owns the function running on the + instance + maxLength: 262144 + minLength: 0 + gpu: + type: string + format: UTF-8 + description: GPU name powering the instance + maxLength: 262144 + minLength: 0 + backend: + type: string + format: UTF-8 + description: Backend where the instance is running + maxLength: 262144 + minLength: 0 + location: + type: string + format: UTF-8 + description: Location such as zone name or region where the instance is running + maxLength: 262144 + minLength: 0 + instanceCreatedAt: + type: string + format: date-time + description: Instance creation timestamp + maxLength: 30 + minLength: 8 + instanceUpdatedAt: + type: string + format: date-time + description: Instance's last updated timestamp + maxLength: 30 + minLength: 8 + LlmConfigDto: + type: object + description: LLM-specific configuration for a model + properties: + uris: + type: array + description: >- + OpenAI-compatible URIs supported by this model (e.g. + /v1/chat/completions). Required for LLM models. + items: + type: string + maxItems: 2147483647 + minItems: 1 + tokenRateLimit: + type: string + format: UTF-8 + description: Token-level rate limit for this model. + maxLength: 262144 + minLength: 0 + tokenizer: + type: string + format: UTF-8 + description: Tokenizer identifier for this model. + maxLength: 262144 + minLength: 0 + routingMethod: + type: string + format: UTF-8 + description: Routing method for this model. + maxLength: 262144 + minLength: 0 + required: + - uris +servers: + - url: https://api.nvcf.nvidia.com + description: Generated server url diff --git a/provider-dev/source/nvcf_invocation.yaml b/provider-dev/source/nvcf_invocation.yaml new file mode 100644 index 0000000..9c1b09a --- /dev/null +++ b/provider-dev/source/nvcf_invocation.yaml @@ -0,0 +1,1159 @@ +openapi: 3.1.0 +info: + title: nvcf_invocation API + description: nvidia nvcf_invocation API + version: 2.245.1 +paths: + /v2/nvcf/tokens/functions: + post: + tags: + - Function Invocation Assertion Token + summary: Issue Function Invocation Token + description: >- + Issues an assertion token from Notary Service for specified functionIds + and/or functionVersionIds + operationId: issueMultiFunctionsInvocationToken + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MultiFunctionsInvocationTokenRequest' + required: true + responses: + '200': + description: Invocation assertion token is issued + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + '403': + description: > + Either missing scope in the auth(JWT / ApiKey) token and/or missing + resource entry + in the ApiKey for the function. + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + '429': + description: >- + Client is doing too many requests per second and should slow down + request rate. + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + /v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId}: + post: + tags: + - Function Invocation Assertion Token + summary: Issue Function Invocation Token + description: >- + Issues an assertion token from Notary Service for a specific functionId + and/or functionVersionId + operationId: issueInvocationToken + parameters: + - name: functionId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: functionVersionId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InvocationTokenRequest' + required: true + responses: + '200': + description: Invocation assertion token is issued + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + '403': + description: > + Either missing scope in the auth(JWT / ApiKey) token and/or missing + resource entry + in the ApiKey for the function. + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + '429': + description: >- + Client is doing too many requests per second and should slow down + request rate. + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + /v2/nvcf/tokens/functions/{functionId}: + post: + tags: + - Function Invocation Assertion Token + summary: Issue Function Invocation Token + description: >- + Issues an assertion token from Notary Service for a specific functionId + and/or functionVersionId + operationId: issueInvocationToken_1 + parameters: + - name: functionId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InvocationTokenRequest' + required: true + responses: + '200': + description: Invocation assertion token is issued + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + '403': + description: > + Either missing scope in the auth(JWT / ApiKey) token and/or missing + resource entry + in the ApiKey for the function. + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + '429': + description: >- + Client is doing too many requests per second and should slow down + request rate. + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + /v2/nvcf/pexec/functions/{functionId}: + post: + tags: + - Function Invocation + summary: Call Function + description: >- + Deprecated and will be removed soon. Please use the new NVCF Invocation + API endpoint to invoke a function. Invokes the specified function that + was successfully deployed. If the version is not specified, any active + function versions will handle the request. If the version is specified + in the URI, then the request is exclusively processed by the designated + version of the function. By default, this endpoint will block for 5 + seconds. If the request is not fulfilled before the timeout, it's + status is considered in-progress or pending and the response includes + HTTP status code 202 with an invocation request ID, indicating that the + client should commence polling for the result using the invocation + request ID. Access to this endpoint mandates inclusion of a bearer + token with 'invoke_function' scope in the HTTP Authorization header. + Additionally, this endpoint has the capability to provide updates on + the progress of the request, contingent upon the workload's provision + of such information. In-progress responses are returned in order. If no + in-progress response is received during polling you will receive the + most recent in-progress response. Only the first 256 unread in-progress + messages are kept. + operationId: invokeFunction + parameters: + - name: NVCF-INPUT-ASSET-REFERENCES + in: header + required: false + schema: + type: array + items: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + maxItems: 2147483647 + minItems: 0 + - name: NVCF-POLL-SECONDS + in: header + required: false + schema: + type: integer + format: int32 + maximum: 300 + minimum: 0 + - name: functionId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + type: object + required: true + responses: + '200': + description: Invocation is fulfilled + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '202': + description: Result is pending. Client should poll using the requestId. + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '302': + description: > + Client should use the URL specified in the 'Location' response + header to fetch + large result. + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + Location: + description: URL to get the result + style: simple + schema: + type: string + '402': + description: >- + Cloud credits expired for public functions. Please contact NVIDIA + representatives. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '403': + description: > + Either missing scope in the auth(JWT / ApiKey) token and/or missing + resource entry + in the ApiKey for the function. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '429': + description: >- + Client is doing too many requests per second and should slow down + request rate. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + deprecated: true + /v2/nvcf/pexec/functions/{functionId}/versions/{versionId}: + post: + tags: + - Function Invocation + summary: Call Function + description: >- + Deprecated and will be removed soon. Please use the new NVCF Invocation + API endpoint to invoke a function. Invokes the specified function that + was successfully deployed. If the version is not specified, any active + function versions will handle the request. If the version is specified + in the URI, then the request is exclusively processed by the designated + version of the function. By default, this endpoint will block for 5 + seconds. If the request is not fulfilled before the timeout, it's + status is considered in-progress or pending and the response includes + HTTP status code 202 with an invocation request ID, indicating that the + client should commence polling for the result using the invocation + request ID. Access to this endpoint mandates inclusion of a bearer + token with 'invoke_function' scope in the HTTP Authorization header. + Additionally, this endpoint has the capability to provide updates on + the progress of the request, contingent upon the workload's provision + of such information. In-progress responses are returned in order. If no + in-progress response is received during polling you will receive the + most recent in-progress response. Only the first 256 unread in-progress + messages are kept. + operationId: invokeFunction_1 + parameters: + - name: NVCF-INPUT-ASSET-REFERENCES + in: header + required: false + schema: + type: array + items: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + maxItems: 2147483647 + minItems: 0 + - name: NVCF-POLL-SECONDS + in: header + required: false + schema: + type: integer + format: int32 + maximum: 300 + minimum: 0 + - name: functionId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: versionId + in: path + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + requestBody: + content: + application/json: + schema: + type: object + required: true + responses: + '200': + description: Invocation is fulfilled + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '202': + description: Result is pending. Client should poll using the requestId. + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '302': + description: > + Client should use the URL specified in the 'Location' response + header to fetch + large result. + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + Location: + description: URL to get the result + style: simple + schema: + type: string + '402': + description: >- + Cloud credits expired for public functions. Please contact NVIDIA + representatives. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '403': + description: > + Either missing scope in the auth(JWT / ApiKey) token and/or missing + resource entry + in the ApiKey for the function. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '429': + description: >- + Client is doing too many requests per second and should slow down + request rate. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + deprecated: true + /v2/nvcf/assets: + get: + tags: + - Asset Management + summary: List Assets + description: >- + List assets owned by the current NVIDIA Cloud Account. Requires a + bearer token with 'invoke_function' scope in the HTTP Authorization + header. + operationId: getAssets + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListAssetsResponse' + deprecated: true + post: + tags: + - Asset Management + summary: Create Asset + description: >- + Creates a unique id representing an asset and a pre-signed URL to upload + the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. + Requires a bearer token with 'invoke_function' scope in the HTTP + Authorization header. + operationId: createAsset + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAssetRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAssetResponse' + deprecated: true + /v2/nvcf/pexec/status/{requestId}: + get: + tags: + - Function Invocation + summary: Poll For Result Using Function Invocation Request + description: >- + Deprecated and will be removed soon. Please use the new NVCF Invocation + API endpoint to invoke a function and stream results without polling. + Retrieves the status of an in-progress or pending request using its + unique invocation request ID. If the result is available, it will be + included in the response, marking the request as fulfilled. Conversely, + if the result is not yet available, the request is deemed pending. + Access to this endpoint mandates inclusion of a bearer token with + 'invoke_function' scope in the HTTP Authorization header. In-progress + responses are returned in order. If no in-progress response is received + during polling you will receive the most recent in-progress response. + Only the first 256 unread in-progress messages are kept. + operationId: getFunctionInvocationResult + parameters: + - name: requestId + in: path + description: Invocation Request Id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: Invocation is fulfilled + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '202': + description: Result is pending. Client should poll using the requestId. + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '302': + description: > + Client should use the URL specified in the 'Location' response + header to fetch + large result. + headers: + NVCF-REQID: + description: Invocation Request Id + style: simple + schema: + type: string + NVCF-PERCENT-COMPLETE: + description: Percentage complete + style: simple + schema: + type: string + NVCF-STATUS: + description: Invocation status + style: simple + schema: + type: string + Location: + description: URL to get the result + style: simple + schema: + type: string + '402': + description: >- + Cloud credits expired for public functions. Please contact NVIDIA + representatives. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + '403': + description: > + Either missing scope in the auth(JWT / ApiKey) token and/or missing + resource entry + in the ApiKey for the function. + content: + '*/*': + schema: + type: object + properties: + short: + type: integer + format: int32 + char: + type: string + int: + type: integer + format: int32 + long: + type: integer + format: int64 + float: + type: number + format: float + double: + type: number + format: double + direct: + type: boolean + readOnly: + type: boolean + deprecated: true + /v2/nvcf/assets/{assetId}: + get: + tags: + - Asset Management + summary: Show Asset Details + description: >- + Returns details for the specified asset-id belonging to the current + NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' + scope in the HTTP Authorization header. + operationId: getAsset + parameters: + - name: assetId + in: path + description: Asset id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AssetResponse' + deprecated: true + delete: + tags: + - Asset Management + summary: Delete Asset + description: >- + Deletes asset belonging to the current NVIDIA Cloud Account. Requires a + bearer token with 'invoke_function' scope in the HTTP Authorization + header. + operationId: deleteAsset + parameters: + - name: assetId + in: path + description: Id of the asset to be deleted + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '204': + description: No Content + deprecated: true +components: + schemas: + MultiFunctionsInvocationTokenRequest: + type: object + description: Request body for issuing a function invocation token + properties: + functions: + type: array + description: Functions to invoke + items: + $ref: '#/components/schemas/BasicFunctionDto' + maxItems: 4 + minItems: 0 + clientId: + type: string + format: UTF-8 + description: >- + ClientId for client to pass in to track who will eventually use the + token + maxLength: 262144 + minLength: 1 + required: + - clientId + - functions + InvocationTokenResponse: + type: object + description: Function invocation token response + properties: + access_token: + type: string + format: UTF-8 + description: Token issued by Notary Service + maxLength: 262144 + minLength: 0 + expires_in: + type: integer + format: int32 + description: Token expiration time in seconds + maximum: 2147483647 + minimum: -2147483648 + InvocationTokenRequest: + type: object + description: Request body for issuing a function invocation token + properties: + clientId: + type: string + format: UTF-8 + description: >- + ClientId for client to pass in to track who will eventually use the + token + maxLength: 262144 + minLength: 1 + required: + - clientId + ListAssetsResponse: + type: object + description: Response body containing list of assets of the current nca id + properties: + assets: + type: array + description: List of assets uploaded for the nca id + items: + $ref: '#/components/schemas/AssetDto' + maxItems: 2147483647 + minItems: 0 + CreateAssetRequest: + type: object + description: >- + Request payload to create an asset-id and the corresponding pre-signed + URL to upload an asset of specified content-type to AWS S3 bucket. + properties: + contentType: + type: string + format: UTF-8 + description: Content type of the asset such image/png, image/jpeg, etc. + maxLength: 262144 + minLength: 0 + description: + type: string + format: UTF-8 + description: Asset description + maxLength: 262144 + minLength: 0 + required: + - contentType + - description + CreateAssetResponse: + type: object + description: >- + Response body containing asset-id and the corresponding pre-signed URL + to upload an asset of specified content-type to AWS S3 bucket. + properties: + assetId: + type: string + format: uuid + description: Unique id of the asset to be uploaded to AWS S3 bucket + maxLength: 36 + minLength: 36 + uploadUrl: + type: string + format: url + description: Pre-signed upload URL to upload asset + contentType: + type: string + format: UTF-8 + description: Content type of the asset such image/png, image/jpeg, etc. + maxLength: 262144 + minLength: 0 + description: + type: string + format: UTF-8 + description: Asset description to be used when uploading the asset + maxLength: 262144 + minLength: 0 + AssetResponse: + type: object + properties: + asset: + $ref: '#/components/schemas/AssetDto' + required: + - asset + BasicFunctionDto: + type: object + description: Basic Data Transfer Object (DTO) representing a function + properties: + functionId: + type: string + format: uuid + description: Unique function id + maxLength: 36 + minLength: 36 + functionVersionId: + type: string + format: uuid + description: Unique function version id + maxLength: 36 + minLength: 36 + required: + - functionId + AssetDto: + type: object + description: Data Transfer Object(DTO) representing an asset + properties: + assetId: + type: string + format: uuid + description: Asset id + maxLength: 36 + minLength: 36 + description: + type: string + format: UTF-8 + description: Description specified when creating the asset + maxLength: 262144 + minLength: 0 + contentType: + type: string + format: UTF-8 + description: Content-type specified when creating the asset + maxLength: 262144 + minLength: 0 + createdAt: + type: string + format: date-time + description: Timestamp specified when creating the asset + maxLength: 30 + minLength: 8 +servers: + - url: https://api.nvcf.nvidia.com + description: Generated server url diff --git a/provider-dev/source/nvcf_queues.yaml b/provider-dev/source/nvcf_queues.yaml new file mode 100644 index 0000000..3c50cd1 --- /dev/null +++ b/provider-dev/source/nvcf_queues.yaml @@ -0,0 +1,195 @@ +openapi: 3.1.0 +info: + title: nvcf_queues API + description: nvidia nvcf_queues API + version: 2.245.1 +paths: + /v2/nvcf/queues/{requestId}/position: + get: + tags: + - Queue Details + summary: Queue Position + description: >- + Using the specified function invocation request id, returns the + estimated position of the corresponding message up to 1000 in the + queue. Requires a bearer token or an api-key with 'queue_details' scope + in the HTTP Authorization header. + operationId: getPositionInQueue + parameters: + - name: requestId + in: path + description: Function invocation request id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetPositionInQueueResponse' + /v2/nvcf/queues/functions/{functionId}/versions/{versionId}: + get: + tags: + - Queue Details + summary: Queue Details + description: >- + Provides details of all the queues associated with the specified + function. If a function has multiple versions and they are all + deployed, then the response includes details of all the queues. If the + specified function is public, then Account Admin cannot perform this + operation. Requires a bearer token or an api-key with 'queue_details' + scope in the HTTP Authorization header. + operationId: getQueuesDetails + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + - name: versionId + in: path + description: Function version id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetQueuesResponse' + /v2/nvcf/queues/functions/{functionId}: + get: + tags: + - Queue Details + summary: Queue Details + description: >- + Provides details of all the queues associated with the specified + function. If a function has multiple versions and they are all + deployed, then the response includes details of all the queues. If the + specified function is public, then Account Admin cannot perform this + operation. Requires a bearer token or an api-key with 'queue_details' + scope in the HTTP Authorization header. + operationId: getQueuesDetails_1 + parameters: + - name: functionId + in: path + description: Function id + required: true + schema: + type: string + format: uuid + maxLength: 36 + minLength: 36 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetQueuesResponse' +components: + schemas: + GetPositionInQueueResponse: + type: object + description: Request position in queue for invocation request + properties: + functionVersionId: + type: string + format: uuid + description: Function version id + maxLength: 36 + minLength: 36 + functionId: + type: string + format: uuid + description: Function id + maxLength: 36 + minLength: 36 + positionInQueue: + type: integer + format: int32 + description: Position of request in queue + maximum: 2147483647 + minimum: -2147483648 + required: + - functionId + - functionVersionId + GetQueuesResponse: + type: object + description: Request queue details of all the functions with same id in an account + properties: + functionId: + type: string + format: uuid + description: Function id + maxLength: 36 + minLength: 36 + queues: + type: array + description: Details of all the queues associated with same named functions + items: + $ref: '#/components/schemas/QueueDto' + maxItems: 2147483647 + minItems: 0 + required: + - functionId + - queues + QueueDto: + type: object + description: >- + Data Transfer Object(DTO) representing a request queue for function + version + properties: + functionVersionId: + type: string + format: uuid + description: Function version id + maxLength: 36 + minLength: 36 + functionName: + type: string + format: UTF-8 + description: Function name + maxLength: 262144 + minLength: 0 + functionStatus: + type: string + format: UTF-8 + description: Function status + enum: + - ACTIVE + - DEPLOYING + - ERROR + - INACTIVE + - DELETED + - DEGRADED + - DEGRADING + maxLength: 262144 + minLength: 0 + queueDepth: + type: integer + format: int32 + description: Approximate number of messages in the request queue + maximum: 2147483647 + minimum: -2147483648 + required: + - functionName + - functionStatus + - functionVersionId +servers: + - url: https://api.nvcf.nvidia.com + description: Generated server url diff --git a/provider-dev/source/orgs.yaml b/provider-dev/source/orgs.yaml new file mode 100644 index 0000000..ae3091c --- /dev/null +++ b/provider-dev/source/orgs.yaml @@ -0,0 +1,4282 @@ +openapi: 3.0.1 +info: + title: orgs API + description: nvidia orgs API + version: v3.249.6 +paths: + /v3/orgs/proto-org: + post: + tags: + - Orgs + summary: Create Organization from ProtoOrg + description: >- + Create a new organization based on the org info retrieved from the + ProtoOrg. + operationId: createOrganizationFromProtoOrg + parameters: + - name: ncid + in: cookie + required: false + schema: + type: string + default: '' + - name: VisitorID + in: cookie + required: false + schema: + type: string + default: '' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgCreateRequestV3' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v3/orgs: + post: + tags: + - Orgs + summary: Create Organization from Scratch + description: Create a new organization based on the org info provided in the request. + operationId: createOrganizationFromScratch + parameters: + - name: ncid + in: cookie + required: false + schema: + type: string + default: '' + - name: VisitorID + in: cookie + required: false + schema: + type: string + default: '' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgCreateRequestV3' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/users/me/api-key: + post: + tags: + - Users Management + summary: Generate API Key + description: Generate API Key + operationId: generateUserApiKey + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserKeyResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/users/me: + get: + tags: + - Users Management + summary: Who am I? + description: What am I? + operationId: whoAmI + parameters: + - name: org-name + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - Users Management + summary: Edit current user profile + description: Edit current user profile + operationId: editUserProfile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserUpdateRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v3/orgs/proto-org/validate: + get: + tags: + - Orgs + summary: Validate org creation invite + description: Validate org creation from proto org + operationId: protoOrgInvitationValidate + parameters: + - name: invitation_token + in: query + description: JWT that contains org owner email and proto org identifier + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OrgInvitationResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/orgs: + get: + tags: + - Orgs + summary: List Organizations + description: List all organizations of the user + operationId: listOrganizations_1 + parameters: + - name: Filter using PEC ID + in: query + required: false + schema: + type: string + - name: Filter using org name + in: query + required: false + schema: + type: string + - name: Filter using org display name + in: query + required: false + schema: + type: string + - name: Filter using org owner name + in: query + required: false + schema: + type: string + - name: Filter using org owner email + in: query + required: false + schema: + type: string + - name: page-number + in: query + description: The page number of result + required: false + schema: + type: integer + format: int32 + - name: page-size + in: query + description: The page size of result + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OrgListResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /roles: + get: + tags: + - Services + summary: NGC Roles + description: List of roles in NGC and their scopes + operationId: getRoles + parameters: + - name: show-hidden + in: query + description: flag indicate if hidden roles should be included + required: false + schema: + type: boolean + default: false + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserRoleDefinitionsResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v3/orgs/{org_name}/users/nca-invitations: + post: + tags: + - Users Management + summary: Invite User to NCA (org version) + description: Invites and creates a User in org + operationId: inviteUserToNcaInOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserNcaInvitationRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/org/{org_name}/users: + get: + tags: + - Users Management + summary: List users In org + description: >- + Get list of users in organization. (User Admin in org privileges + required) + operationId: listUsersInOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: exclude-from-team + in: query + description: Name of team to exclude members from + required: false + schema: + type: string + - name: page-number + in: query + description: The page number of result + required: false + schema: + type: integer + format: int32 + - name: page-size + in: query + description: The page size of result + required: false + schema: + type: integer + format: int32 + - name: q + in: query + description: >- + User Search Parameters. Only 'filters' and 'orderBy' for 'name' and + 'email' are implemented + required: false + schema: + $ref: '#/components/schemas/SearchParams' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserListResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - Users Management + summary: Creates a User in org + description: Creates a User + operationId: createUserInOrg + parameters: + - name: ncid + in: cookie + required: false + schema: + type: string + default: '' + - name: VisitorID + in: cookie + required: false + schema: + type: string + default: '' + - name: org_name + in: path + required: true + schema: + type: string + - name: send-email + in: query + required: false + schema: + type: boolean + default: true + - name: idp-id + in: query + description: >- + If the IDP ID is provided then it is used instead of the one + configured for the organization + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserCreateRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/org/{org_name}/teams: + get: + tags: + - Teams + summary: List Teams + description: List all Teams + operationId: listTeams + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: page-number + in: query + description: The page number of result + required: false + schema: + type: integer + format: int32 + - name: page-size + in: query + description: The page size of result + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TeamListResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - Teams + summary: Create Team + description: Create team in org. (Org Admin Privileges Required) + operationId: createTeam + parameters: + - name: org_name + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamCreateRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TeamCreateResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v3/orgs/{org_name}/users/{user_email-or-id}/add-role: + patch: + tags: + - Users Management + summary: Invite user or add role in org + description: Invite if user does not exist, otherwise add role in org + operationId: addRoleOrInviteUserToOrg + parameters: + - name: ncid + in: cookie + required: false + schema: + type: string + default: '' + - name: VisitorID + in: cookie + required: false + schema: + type: string + default: '' + - name: org_name + in: path + required: true + schema: + type: string + - name: user_email_or_id + in: path + required: true + schema: + type: string + - name: roles + in: query + required: true + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/orgs/{org_name}: + get: + tags: + - Orgs + summary: Get Organization + description: Get organization information + operationId: getOrganization + parameters: + - name: org_name + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - Orgs + summary: Update Organization + description: Update organization information + operationId: updateOrganization + parameters: + - name: org_name + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgProfileUpdateRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/org/{org_name}/teams/{team_name}: + get: + tags: + - Teams + summary: Get Team + description: Get Team by name + operationId: getTeam + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: team_name + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - Teams + summary: Delete Team + description: Delete a Team + operationId: deleteTeam + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: team_name + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - Teams + summary: Edit Team + description: Edit a Team + operationId: editTeam + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: team_name + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamUpdateRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v3/orgs/{org_name}/users/{user_email-or-id}: + get: + tags: + - Users Management + summary: Get user in an org by email or id. + description: Get info and role/invitation in an org by email or id + operationId: listUserRolesInOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: user_email_or_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/org/{org_name}/users/invitations/{id}/resend-invitation-email: + get: + tags: + - Users Management + summary: Resend email of a specific invitation in an org. + description: >- + Resend email of a specific invitation in an org (Org User Admin + privileges required). + operationId: resendUserInvitationEmailInOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: invitation ID + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/org/{org_name}/users/invitations: + get: + tags: + - Users Management + summary: List user invitations in an org. + description: List invitations in an org. (Org User Admin privileges required) + operationId: listInvitationsForUserInOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: page-number + in: query + description: The page number of result + required: false + schema: + type: integer + format: int32 + - name: page-size + in: query + description: The page size of result + required: false + schema: + type: integer + format: int32 + - name: orderBy + in: query + required: false + schema: + type: string + enum: + - NAME_ASC + - NAME_DESC + - name: q + in: query + description: User Search Parameters + required: false + schema: + $ref: '#/components/schemas/SearchParams' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserInvitationListResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/org/{org_name}/starfleetIds/{starfleet_id}: + get: + tags: + - Users Management + summary: Get User in org + description: Get User details in org by starfleet Id + operationId: getUserInOrg_1 + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: starfleet_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v3/orgs/{org_name}/users/{user_email-or-id}/remove-role: + delete: + tags: + - Users Management + summary: Remove role or invitation in org + description: Remove role in org if user exists, otherwise remove invitation + operationId: removeRoleOrInvitationInOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: user_email_or_id + in: path + required: true + schema: + type: string + - name: roles + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v3/orgs/{org_name}/users/{id}: + delete: + tags: + - Users Management + summary: Remove User from org + description: Remove User from org. + operationId: removeUserFromOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: user id or b64encoded email + in: path + required: true + schema: + type: string + - name: anonymize + in: query + description: If anonymize is true, then org owner permission is required. + required: false + schema: + type: boolean + default: false + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + /v2/org/{org_name}/users/invitations/{id}: + delete: + tags: + - Users Management + summary: Delete a specific invitation in an org. + description: >- + Delete a specific invitation in an org. (Org User Admin privileges + required) + operationId: deleteUserInvitationInOrg + parameters: + - name: org_name + in: path + required: true + schema: + type: string + - name: invitation ID + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '302': + description: Found + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '402': + description: Payment Required + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Object Exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Unprocessable Entity + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: Too Many Requests + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '451': + description: Unavailable For Legal Reasons + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: Not Implemented + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '502': + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: Service Unavailable + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' +components: + schemas: + UserNcaInvitationRequest: + type: object + properties: + message: + type: string + description: Is a message to the new user + inviteAs: + type: string + description: Nca allow users to be invited as Admin and as Member + enum: + - ADMIN + - MEMBER + email: + maxLength: 128 + minLength: 7 + type: string + description: Is the user email + invitationExpirationIn: + type: integer + description: Is the numbers of days the invitation will expire + format: int32 + description: NCA User invitation request + UserResponse: + type: object + properties: + activationToken: + type: string + description: token needed to activate the user to enable login and other features + userRoles: + type: array + description: DEPRECATED - Please use roles inside user + items: + $ref: '#/components/schemas/UserRole' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + ncaRole: + type: string + description: NCA role + enum: + - UNKNOWN + - ADMINISTRATOR + - MEMBER + - OWNER + - PENDING + user: + $ref: '#/components/schemas/User' + description: ' about one user' + ErrorResponse: + type: object + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + OrgCreateRequestV3: + type: object + properties: + salesforceAccountIndustry: + type: string + description: Company or organization industry + pecName: + type: string + description: product end customer name for enterprise(Fleet Command) product + orgOwner: + $ref: '#/components/schemas/OrgOwnerV3' + displayName: + maxLength: 255 + minLength: 1 + type: string + description: Name of the organization that will be shown to users. + name: + maxLength: 64 + minLength: 2 + type: string + description: Organization name + sendEmail: + type: boolean + description: Send email to org owner or not. Default is true + country: + type: string + description: user country + description: + maxLength: 128 + type: string + description: optional description of the organization + initiator: + type: string + description: Identify the initiator of the org request + productEnablements: + type: array + items: + $ref: '#/components/schemas/ProductEnablement' + ncaNumber: + type: string + description: NVIDIA Cloud Account Number + pecSfdcId: + type: string + description: >- + product end customer salesforce.com Id (external customer Id) for + enterprise(Fleet Command) product + ncaId: + type: string + description: NVIDIA Cloud Account Identifier + isInternal: + type: boolean + description: Is NVIDIA internal org or not + protoOrgId: + type: string + description: Proto org identifier + type: + type: string + enum: + - UNKNOWN + - CLOUD + - ENTERPRISE + - INDIVIDUAL + productSubscriptions: + type: array + description: This should be deprecated, use productEnablements instead + items: + $ref: '#/components/schemas/ProductSubscription' + description: Request to create new Organization in v3 flow + OrgResponse: + type: object + properties: + organizations: + $ref: '#/components/schemas/Organization' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: info about an organizations + UserKeyResponse: + required: + - key + type: object + properties: + cloudNfsKey: + type: string + cloudNfsKeyPwd: + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + key: + maxLength: 255 + type: string + cloudNfsUserName: + type: string + description: response to a request to access key such as docker token + SearchParams: + type: object + properties: + orderBy: + type: array + items: + $ref: '#/components/schemas/SearchParamOrderBy' + queryFields: + type: array + items: + type: string + scoredSize: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + fields: + type: array + items: + type: string + page: + type: integer + format: int64 + filters: + type: array + items: + $ref: '#/components/schemas/SearchParamFilter' + query: + type: string + groupBy: + type: string + UserListResponse: + type: object + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + users: + type: array + description: information about the user + items: + $ref: '#/components/schemas/User' + description: Response for List User reponse + UserCreateRequest: + required: + - email + type: object + properties: + roleType: + type: string + description: DEPRECATED - use roleTypes which allows multiple roles + roleTypes: + type: array + description: feature roles to give to the user + items: + type: string + description: feature roles to give to the user + name: + maxLength: 64 + minLength: 1 + type: string + description: user name + eulaAccepted: + type: boolean + description: indicates if user has accepted EULA + emailOptIn: + type: boolean + description: indicates if user has opt in to nvidia emails + userMetadata: + $ref: '#/components/schemas/UserMetadata' + salesforceContactJobRole: + type: string + description: user job role + email: + maxLength: 128 + minLength: 6 + type: string + description: Email address of the user. This should be unique. + description: object used request user creation in an existing org + TeamListResponse: + type: object + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + teams: + type: array + items: + $ref: '#/components/schemas/Team' + description: listing of all teams + TeamCreateRequest: + required: + - name + type: object + properties: + name: + maxLength: 19 + minLength: 2 + type: string + description: team name + description: + maxLength: 255 + type: string + description: description of the team + description: Request to create new Team + TeamCreateResponse: + type: object + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + team: + $ref: '#/components/schemas/Team' + description: response to an team creation request, includes unique team id + UserUpdateRequest: + type: object + properties: + hasSignedBaseCommandManagerEULA: + type: boolean + description: >- + indicates if user has accepted Base Command Manager End User License + Agreement. + hasSignedContainerPublishingEULA: + type: boolean + description: indicates if user has accepted container publishing eula + name: + maxLength: 64 + minLength: 1 + type: string + description: user name + hasSignedLlmEULA: + type: boolean + description: indicates if user has accepted LLM End User License Agreement. + hasSignedPrivacyPolicy: + type: boolean + description: indicates if the user has signed the Privacy Policy + hasSignedNvidiaEULA: + type: boolean + description: indicates if user has accepted NVIDIA EULA + hasSignedCuOptEULA: + type: boolean + description: indicates if user has accepted CuOpt End User License Agreement. + hasSignedEarth2EULA: + type: boolean + description: indicates if user has accepted Earth-2 End User License Agreement. + hasSignedBaseCommandEULA: + type: boolean + description: indicates if user has accepted Base Command EULA + hasSignedOmniverseEULA: + type: boolean + description: indicates if user has accepted Omniverse End User License Agreement. + hasSignedNVAIEEULA: + type: boolean + description: >- + indicates if user has accepted Fleet Command End User License + Agreement. + hasSignedAODTEULA: + type: boolean + description: indicates if user has accepted AODT End User License Agreement. + hasEmailOptIn: + type: boolean + description: indicates if user has opt in to nvidia emails + hasSignedThirdPartyRegistryShareEULA: + type: boolean + description: >- + indicates if user has consented to share their registration info + with other parties + userMetadata: + $ref: '#/components/schemas/UserMetadata' + hasSignedEgxEULA: + type: boolean + description: indicates if user has accepted EGX EULA + hasSignedFleetCommandEULA: + type: boolean + description: >- + indicates if user has accepted Fleet Command End User License + Agreement. + hasSignedNVQCEULA: + type: boolean + description: >- + indicates if user has accepted Nvidia Quantum Cloud End User License + Agreement. + hasSignedEULA: + type: boolean + description: indicates if user has accepted NGC EULA + hasSignedBioNeMoEULA: + type: boolean + description: indicates if user has accepted BioNeMo End User License Agreement. + hasSignedAiFoundryPartnershipsEULA: + type: boolean + description: >- + indicates if user has accepted AI Foundry Partnerships End User + License Agreement. + description: object used to request user update + OrgProfileUpdateRequest: + type: object + properties: + displayName: + maxLength: 255 + minLength: 1 + type: string + description: Name of the organization that will be shown to users + description: + maxLength: 128 + type: string + description: optional description of the organization + description: Object used to update Org profile information + TeamResponse: + type: object + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + team: + $ref: '#/components/schemas/Team' + description: details about one team + Response: + type: object + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + TeamUpdateRequest: + type: object + properties: + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' + description: + maxLength: 255 + type: string + description: description of the team + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + description: object used to update information about existing team + OrgInvitationResponse: + type: object + properties: + orgInvitation: + $ref: '#/components/schemas/OrgInvitation' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Invitation Validation Response. + OrgListResponse: + type: object + properties: + organizations: + type: array + items: + $ref: '#/components/schemas/Organization' + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: List of organizations. + UserInvitationListResponse: + type: object + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + invitations: + type: array + description: List of invitations. + items: + $ref: '#/components/schemas/UserInvitation' + description: Response for a list of user invitations. + UserRoleDefinitionsResponse: + type: object + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + roles: + type: array + description: List of roles + items: + $ref: '#/components/schemas/UserRoleDefinition' + description: >- + Response containing all the roles defined in NGC and their allowed + actions + UserRole: + type: object + properties: + roleTypes: + type: array + description: DEPRECATED - List of role types that the user have + items: + type: string + description: DEPRECATED - List of role types that the user have + targetSystemUserIdentifier: + $ref: '#/components/schemas/TargetSystemUserIdentifier' + orgRoles: + type: array + description: List of org role types that the user have + items: + type: string + description: List of org role types that the user have + team: + $ref: '#/components/schemas/Team' + org: + $ref: '#/components/schemas/Organization' + teamRoles: + type: array + description: List of team role types that the user have + items: + type: string + description: List of team role types that the user have + description: List of roles that the user have + RequestStatus: + type: object + properties: + serverId: + type: string + statusCode: + type: string + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + - PAYLOAD_TOO_LARGE + - NOT_ACCEPTABLE + - UNAVAILABLE_FOR_LEGAL_REASONS + - BAD_GATEWAY + - PRECONDITION_FAILED + statusDescription: + type: string + requestId: + type: string + User: + type: object + properties: + hasSignedContainerPublishingEULA: + type: boolean + description: indicates if user has accepted container publishing eula + hasSignedLlmEULA: + type: boolean + description: indicates if user has accepted LLM End User License Agreement. + hasSignedBaseCommandEULA: + type: boolean + description: >- + indicates if user has accepted Base Command End User License + Agreement. + storageQuota: + type: array + description: Storage quota for this user. + items: + $ref: '#/components/schemas/UserStorageQuota' + lastLoginDate: + type: string + description: Last time the user logged in + hasSignedEgxEULA: + type: boolean + description: >- + [Deprecated] indicates if user has accepted EGX End User License + Agreement. + hasBetaAccess: + type: boolean + description: Determines if the user has beta access + id: + type: integer + description: unique Id of this user. + format: int64 + isDeleted: + type: boolean + description: Indicates if user was deleted from the system. + hasSignedAiFoundryPartnershipsEULA: + type: boolean + description: indicates if user has accepted AI Foundry Partnerships eula + jobPositionTitle: + type: string + description: Title of user's job position. + verified: + type: boolean + description: Is user's email or phone number is verified + hasSignedEarth2EULA: + type: boolean + description: indicates if user has accepted Earth-2 eula + hasSignedNvidiaEULA: + type: boolean + description: >- + Determines if the user has signed the NVIDIA End User License + Agreement. + updatedDate: + type: string + description: Updated date for this user + firstLoginDate: + type: string + description: Last time the user logged in + email: + maxLength: 128 + minLength: 7 + type: string + description: Email address of the user. This should be unique. + hasSignedBioNeMoEULA: + type: boolean + description: indicates if user has accepted BioNeMo End User License Agreement. + hasSignedBaseCommandManagerEULA: + type: boolean + description: >- + indicates if user has accepted Base Command Manager End User License + Agreement. + hasSignedPrivacyPolicy: + type: boolean + description: Determines if the user has signed the Privacy Policy. + hasSignedEULA: + type: boolean + description: >- + Determines if the user has signed the NGC End User License + Agreement. + isSAML: + type: boolean + description: Determines if the user is a SAML account or not. + hasSignedAODTEULA: + type: boolean + description: indicates if user has accepted AODT End User License Agreement. + createdDate: + type: string + description: Created date for this user + starfleetId: + type: string + description: unique starfleet id of this user. + hasSignedNVQCEULA: + type: boolean + description: >- + indicates if user has accepted Nvidia Quantum Cloud End User License + Agreement. + isActive: + type: boolean + description: Determines if the user is active or not. + name: + maxLength: 64 + minLength: 1 + type: string + description: user name + roles: + type: array + description: List of roles that the user have + items: + $ref: '#/components/schemas/UserRole' + userMetadata: + $ref: '#/components/schemas/UserMetadata' + hasSubscribedToEmail: + type: boolean + description: Determines if the user has opted in email subscription. + hasSignedCuOptEULA: + type: boolean + description: indicates if user has accepted CuOpt eula + clientId: + type: string + description: unique auth client id of this user. + hasSignedOmniverseEULA: + type: boolean + description: indicates if user has accepted Omniverse End User License Agreement. + idpType: + type: string + description: Type of IDP, Identity Provider. Used for login. + enum: + - NVIDIA + - ENTERPRISE + hasProfile: + type: boolean + description: indicate if user profile has been completed. + hasSignedFleetCommandEULA: + type: boolean + description: >- + indicates if user has accepted Fleet Command End User License + Agreement. + hasSignedNVAIEEULA: + type: boolean + description: >- + indicates if user has accepted Fleet Command End User License + Agreement. + hasSignedThirdPartyRegistryShareEULA: + type: boolean + description: >- + indicates if user has consented to share their registration info + with other parties + description: information about the user + OrgOwnerV3: + required: + - email + type: object + properties: + starfleetId: + type: string + description: Starfleet ID of the org owner. + fullName: + maxLength: 64 + minLength: 1 + type: string + description: Org owner name. + idpId: + type: string + description: Identity Provider ID of the org owner. + email: + maxLength: 128 + type: string + description: Email address of the org owner. + description: Org owner. + ProductEnablement: + required: + - productName + - type + type: object + properties: + type: + type: string + description: Product Enablement Types + enum: + - NGC_ADMIN_EVAL + - NGC_ADMIN_NFR + - NGC_ADMIN_COMMERCIAL + - EMS_EVAL + - EMS_NFR + - EMS_COMMERCIAL + - NGC_ADMIN_DEVELOPER + expirationDate: + type: string + description: >- + Date on which the subscription expires. The subscription is invalid + after this date. (yyyy-MM-dd) + poDetails: + type: array + items: + $ref: '#/components/schemas/PurchaseOrder' + productName: + type: string + description: Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc) + description: Product Enablement + ProductSubscription: + required: + - productName + type: object + properties: + startDate: + type: string + description: Date on which the subscription becomes active. (yyyy-MM-dd) + productName: + type: string + description: Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc). + emsEntitlementType: + type: string + description: >- + EMS Subscription type. (options: EMS_EVAL, EMS_NFR and + EMS_COMMERCIAL) + enum: + - EMS_EVAL + - EMS_NFR + - EMS_COMMERICAL + - EMS_COMMERCIAL + expirationDate: + type: string + description: >- + Date on which the subscription expires. The subscription is invalid + after this date. (yyyy-MM-dd) + type: + type: string + description: >- + Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, + NGC_ADMIN_COMMERCIAL) + enum: + - NGC_ADMIN_EVAL + - NGC_ADMIN_NFR + - NGC_ADMIN_COMMERCIAL + id: + type: string + description: Unique entitlement identifier + description: Product Subscription + Organization: + type: object + properties: + isSecureCredentialSharingServiceEnabled: + type: boolean + description: Secure Credential Sharing Service enable flag for an organization + isInternal: + type: boolean + description: Is NVIDIA internal org or not + idpId: + type: string + description: Identity Provider ID. + usersInfo: + $ref: '#/components/schemas/UsersInfo' + pecSfdcId: + type: string + description: >- + Product end customer salesforce.com Id (external customer Id). + pecSfdcId is for EMS (entitlement management service) to track + external paid customer. + id: + type: integer + description: Unique Id of this team. + format: int64 + isRegistrySSEEnabled: + type: boolean + description: >- + If a server side encryption is enabled for private registry (models, + resources) + alternateContact: + $ref: '#/components/schemas/AlternateContact' + canAddOn: + type: boolean + description: Identifies if the org can be reused. + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + billingAccountId: + type: string + description: Billing account ID. + type: + type: string + enum: + - UNKNOWN + - CLOUD + - ENTERPRISE + - INDIVIDUAL + isProto: + type: boolean + description: Indicates when the org is a proto org + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' + ncaAccountNumber: + type: string + description: NVIDIA Cloud Account Number. + description: + type: string + description: Optional description of the organization. + productEnablements: + type: array + items: + $ref: '#/components/schemas/ProductEnablement' + name: + type: string + description: Organization name. + orgOwner: + $ref: '#/components/schemas/OrgOwner' + displayName: + maxLength: 255 + minLength: 1 + type: string + description: Name of the organization that will be shown to users. + productSubscriptions: + type: array + items: + $ref: '#/components/schemas/ProductSubscription' + country: + type: string + description: ISO country code of the organization. + industry: + type: string + description: Industry of the organization. + isSeparateInfluxDbUsed: + type: boolean + description: >- + If a separate influx db used for an organization in BCP for job + telemetry + isDatasetServiceEnabled: + type: boolean + description: Dataset Service enable flag for an organization + isSecretsManagerServiceEnabled: + type: boolean + description: Secrets Manager Service enable flag for an organization + isQuickStartEnabled: + type: boolean + description: Quick Start enable flag for an organization + orgOwners: + type: array + description: Org owners + items: + $ref: '#/components/schemas/OrgOwner' + description: Information about the Organization + SearchParamOrderBy: + type: object + properties: + field: + type: string + value: + type: string + enum: + - ASC + - DESC + SearchParamFilter: + type: object + properties: + field: + type: string + value: + type: string + PaginationInfo: + type: object + properties: + totalPages: + type: integer + description: Total number of pages available + format: int64 + index: + type: integer + description: Page index of results + format: int32 + totalResults: + type: integer + description: Total number of results available + format: int64 + nextPage: + type: string + description: >- + Serialized pointer to the next results page. Should be used for + fetching next page. Can be empty + size: + type: integer + description: Number of results in page + format: int32 + description: object that describes the pagination information + UserMetadata: + type: object + properties: + companyUrl: + type: string + description: Company URL + firstName: + maxLength: 255 + type: string + description: User's first name + country: + type: string + description: Country of the user + company: + maxLength: 128 + type: string + description: Name of the company + role: + type: string + description: Role of the user in the company + interest: + type: array + description: List of development areas that user has interest + items: + type: string + description: List of development areas that user has interest + lastName: + maxLength: 255 + type: string + description: User's last name + industry: + type: string + description: Industry segment + description: Metadata information about the user. + Team: + type: object + properties: + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' + name: + type: string + description: team name + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + id: + type: integer + description: unique Id of this team. + format: int64 + isDeleted: + type: boolean + description: indicates if the team is deleted or not + description: + type: string + description: description of the team + description: Information about the team + RepoScanSettings: + type: object + properties: + repoScanAllowOverride: + type: boolean + description: Allow org admin to override the org level repo scan settings + repoScanShowResults: + type: boolean + description: Allow showing scan results to CLI or UI + repoScanEnabled: + type: boolean + description: Enable the repository scan or not. Only used in org level object + repoScanEnableNotifications: + type: boolean + description: Sends notification to end user after scanning is done + repoScanByDefault: + type: boolean + description: Allow repository scanning by default + repoScanEnableTeamOverride: + type: boolean + description: Allow override settings at team level. Only used in org level object + description: Repo scan setting definition + InfinityManagerSettings: + type: object + properties: + infinityManagerEnabled: + type: boolean + description: >- + Enable the infinity manager or not. Used both in org and team level + object + infinityManagerEnableTeamOverride: + type: boolean + description: Allow override settings at team level. Only used in org level object + description: Infinity manager setting definition + OrgInvitation: + type: object + properties: + protoOrgId: + type: string + description: Proto Org identifier. + email: + type: string + description: Email address of the user. + description: Org invitation to NGC + UserInvitation: + type: object + properties: + name: + maxLength: 64 + minLength: 1 + type: string + description: user name + roles: + type: array + description: List of roles that the user have. + items: + type: string + description: List of roles that the user have. + createdDate: + type: string + description: Date on which the invitation was created. (ISO-8601 format) + isProcessed: + type: boolean + description: >- + Flag indicating if the invitation has already been accepted by the + user. + team: + type: string + description: Team to which a user was invited. + id: + type: string + description: Unique invitation ID + org: + type: string + description: Org to which a user was invited. + type: + type: string + description: >- + Type of invitation. The invitation is either to an organization or + to a team within organization. + enum: + - ORGANIZATION + - TEAM + email: + maxLength: 128 + minLength: 7 + type: string + description: Email address of the user. + description: User invitation to an NGC org or team + UserRoleDefinition: + type: object + properties: + shortDisplayName: + type: string + description: Short Display Name of the role + product: + $ref: '#/components/schemas/RoleProduct' + displayName: + type: string + description: Display Name of the role + name: + type: string + description: Name of the role + allowedActions: + type: array + description: List of actions that this role allows + items: + $ref: '#/components/schemas/ServiceAccess' + description: List of roles + TargetSystemUserIdentifier: + type: object + properties: + uid: + type: integer + description: uid of the user on this team + format: int64 + orgName: + type: string + description: Org context for the job + userId: + type: integer + description: Unique ID of the user who submitted the job + format: int64 + teamName: + type: string + description: Team context for the job + gid: + type: integer + description: gid of the user on this team + format: int64 + starfleetId: + type: string + description: Starfleet ID of the user creating the job. + description: Information about the user who is attempting to run the job + UserStorageQuota: + type: object + properties: + available: + type: integer + description: Available space in bytes + format: int64 + datasetsUsage: + type: integer + description: Space used by datasets in bytes + format: int64 + aceName: + type: string + description: name of the ace + workspacesCount: + type: integer + description: Number of workspaces that are a part of user's used storage + format: int64 + orgName: + type: string + description: >- + The org name that this user quota tied to. This is needed for + analytics + resultsetCount: + type: integer + description: Number of resultsets that are a part of user's used storage + format: int64 + quota: + type: integer + description: Assigned quota in bytes + format: int64 + storageClusterDescription: + type: string + description: Description of this storage cluster + storageClusterUuid: + type: string + description: Identifier to this storage cluster + datasetCount: + type: integer + description: Number of datasets that are a part of user's used storage + format: int64 + aceId: + type: integer + description: id of the ace + format: int64 + resultsetsUsage: + type: integer + description: Space used by resultsets in bytes + format: int64 + workspacesUsage: + type: integer + description: Space used by workspaces in bytes + format: int64 + storageClusterName: + type: string + description: Name of storage cluster + description: >- + represents user storage quota for a given ace and available unused + storage + PurchaseOrder: + type: object + properties: + pkId: + type: string + description: PAK (Product Activation Key) identifier. + entitlementId: + type: string + description: Entitlement identifier. + description: Purchase Order. + UsersInfo: + type: object + properties: + totalUsers: + type: integer + description: Total number of users. + format: int64 + description: Users information. + AlternateContact: + type: object + properties: + fullName: + maxLength: 255 + type: string + description: Full name of the alternate contact. + email: + maxLength: 128 + minLength: 6 + type: string + description: Alternate contact's email. + description: Org Owner Alternate Contact + OrgOwner: + required: + - email + type: object + properties: + fullName: + maxLength: 64 + minLength: 1 + type: string + description: Org owner name. + email: + maxLength: 128 + type: string + description: Email address of the org owner. + lastLoginDate: + type: string + description: Last time the org owner logged in. + description: Org owner. + RoleProduct: + type: object + properties: + displayName: + type: string + description: >- + Display Name of the product from the product catalog to which this + role is associated with + name: + type: string + description: >- + Name of the product from the product catalog to which this role is + associated with + description: Product information of the role + ServiceAccess: + type: object + properties: + service: + type: string + description: Service that this role allows + accessLevels: + type: array + description: List of access levels that this role allows + items: + type: string + description: List of access levels that this role allows + description: List of actions that this role allows +servers: + - url: https://api.ngc.nvidia.com diff --git a/provider-dev/source/registry.yaml b/provider-dev/source/registry.yaml new file mode 100644 index 0000000..7002882 --- /dev/null +++ b/provider-dev/source/registry.yaml @@ -0,0 +1,9441 @@ +openapi: 3.1.0 +info: + title: registry API + description: nvidia registry API + version: 0.0.1-SNAPSHOT +paths: + /v1/org/{orgName}/{artifactType}/{artifactName}/spec: + get: + tags: + - AIPlayground + summary: Get AI Playground for artifactType + description: Get AI Playground for artifactType + operationId: getModelArtifactsSpec + parameters: + - name: orgName + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifactType + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifactName + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + security: + - ssa: + - kas + - getArtifact + x-ssa-scopes: + - getArtifact + - kas + put: + tags: + - AIPlayground + summary: Update AI Playground for artifactType + description: Update AI Playground for artifactType + operationId: updateModelArtifactsSpec + parameters: + - name: orgName + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifactType + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifactName + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundUpdateRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + security: + - ssa: + - kas + - writeArtifacts + x-ssa-scopes: + - writeArtifacts + - kas + delete: + tags: + - AIPlayground + summary: Delete AI Playground for artifactType + description: Delete AI Playground for artifactType + operationId: deleteModelArtifactsSpec + parameters: + - name: orgName + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifactType + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifactName + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - deleteArtifacts + x-ssa-scopes: + - deleteArtifacts + - kas + /v1/org/{orgName}/{artifactType}/spec: + post: + tags: + - AIPlayground + summary: Create AI Playground for artifactType + description: Create AI Playground for artifactType + operationId: createModelArtifactsSpec + parameters: + - name: orgName + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifactType + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundCreateRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + security: + - ssa: + - kas + - writeArtifacts + x-ssa-scopes: + - writeArtifacts + - kas + /v1/artifact-registry/org/{org}/workflows/{workflowId}: + get: + tags: + - Workflows + summary: Get workflow status + description: >- + Returns the current status (pending, running, completed, or failed) of + an artifact-registry Temporal workflow execution within the specified + organization. + operationId: getWorkflowStatus + parameters: + - name: org + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: workflowId + in: path + description: Workflow identifier + required: true + schema: + type: string + format: UTF-8 + maxLength: 512 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - cloneArtifact + x-ssa-scopes: + - kas + - cloneArtifact + /v1/org/{orgName}/{artifactType}/{artifactName}/purge: + delete: + tags: + - Artifacts + summary: Purge Search DB + description: Purge Search DB for deleted artifacts + operationId: purgeDeletedArtifact + parameters: + - name: orgName + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifactType + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifactName + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - purgeArtifact + x-ssa-scopes: + - kas + - purgeArtifact + /v1/org/{org_name}/{artifact_type}/{artifact_name}/terms-of-service: + put: + tags: + - Publish + summary: Update artifact terms of service + description: Update artifact terms of service + operationId: updateTermsOfService + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - publishArtifact + - kas + x-ssa-scopes: + - publishArtifact + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/share: + put: + tags: + - Publish + summary: Publish artifact to public + description: Publish artifact to public + operationId: publishArtifact + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: guest-can-download + in: query + description: Indicates if guest users can download this artifact + required: true + schema: + type: boolean + - name: public-can-list + in: query + description: Indicates if artifact is listed publicly + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - publishArtifact + x-ssa-scopes: + - publishArtifact + delete: + tags: + - Publish + summary: Undo publishing of artifact to public + description: Undo publishing of artifact to public + operationId: undoPublishArtifact + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - undoPublishArtifact + x-ssa-scopes: + - undoPublishArtifact + /v1/org/{org_name}/{artifact_type}/{artifact_name}/share/product: + put: + tags: + - Publish + summary: Publish artifact to product + description: Publish artifact to product + operationId: publishArtifactFromRequest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - publishArtifact + x-ssa-scopes: + - publishArtifact + delete: + tags: + - Publish + summary: Undo publishing of product artifacts + description: Undo publishing of product artifacts + operationId: undoPublishProduct + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - undoPublishArtifact + x-ssa-scopes: + - undoPublishArtifact + /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature: + get: + tags: + - ArtifactSigning + description: >- + Request to retrieve a pre-signed Download URL for the signature of an + artifact version + operationId: getArtifactVersionSignature + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: redirect + in: query + description: Get redirect URL + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-ssa-scopes: [] + put: + tags: + - ArtifactSigning + description: Request to sign artifact version + operationId: signArtifactVersion + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - signArtifactVersion + x-ssa-scopes: + - signArtifactVersion + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/release-type: + put: + tags: + - Publish + summary: Update artifact version release type + description: >- + Updates the release type (for example GA, EA, beta) of an artifact + version within the specified organization and optional team. + operationId: updateReleaseLabel + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateReleaseTypeRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - publishArtifact + x-ssa-scopes: + - publishArtifact + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}: + get: + tags: + - Artifacts + summary: Get artifact in org + description: Get artifact details in org + operationId: getArtifactInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getArtifact + x-ssa-scopes: + - getArtifact + - kas + put: + tags: + - Artifacts + summary: Replace artifact in org + description: Replace artifact details in org + operationId: replaceArtifactInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateArtifact + x-ssa-scopes: + - updateArtifact + - kas + delete: + tags: + - Artifacts + summary: Delete artifact in org + description: Delete artifact in org + operationId: deleteArtifactInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - deleteArtifact + x-ssa-scopes: + - deleteArtifact + - kas + patch: + tags: + - Artifacts + summary: Update artifact in org + description: Update artifact details in org + operationId: updateArtifactInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateArtifact + x-ssa-scopes: + - updateArtifact + - kas + /v1/org/{org_name}/models/{model_name}/shares/team/{target_team}: + put: + tags: + - Models + summary: Share org model with the specified team + description: This operation shares an org model with the team. + operationId: shareModelInOrgWithTeam + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: target_team + in: path + description: Target team name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Models + summary: Revoke shared org model with the specified team + description: This operation revokes a shared org model with the team. + operationId: revokeShareModelInOrgWithTeam + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: target_team + in: path + description: Target team name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/models/{model_name}/shares/org: + put: + tags: + - Models + summary: Share org model with the org + description: This operation shares an org model with the org. + operationId: shareModelInOrgWithOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Models + summary: Revoke shared org model with the org + description: This operation revokes a shared org model with the org. + operationId: revokeShareModelInOrgWithOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name}: + put: + tags: + - Collections + summary: Add artifact to collection in org + description: Add artifact to the specified collection in the specified org + operationId: addArtifactToCollectionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Collections + summary: Remove artifact from collection in org + description: Remove artifact from the specified collection in the specified org + operationId: removeArtifactFromCollectionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/collections/{collection_name}/shares/team/{target_team}: + put: + tags: + - Collections + summary: Share org collection with the specified team + description: Share org collection with the specified team + operationId: shareCollectionInOrgWithTeam + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: target_team + in: path + description: Target team name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Collections + summary: Revoke shared org collection with the specified team + description: Revoke shared org collection with the specified team + operationId: revokeShareCollectionInOrgWithTeam + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: target_team + in: path + description: Target team name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/collections/{collection_name}/shares/org: + put: + tags: + - Collections + summary: Share org collection with the org + description: Share org collection with the org + operationId: shareCollectionInOrgWithOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Collections + summary: Revoke shared org collection with the org + description: Revoke shared org collection with the org + operationId: revokeShareCollectionInOrgWithOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/collections/{collection_name}/share/product: + put: + tags: + - Publish + summary: Publish collection to product + description: Publish collection to product + operationId: publishCollectionFromRequest + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPublishRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - publishCollection + x-ssa-scopes: + - publishCollection + /v1/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org-name}/{artifact_type}/{artifact_name}: + put: + tags: + - Collections + summary: Add artifact to collection in org from another org + description: >- + Add artifact to the specified collection in the specified org from + another org + operationId: addArtifactToCollectionInOrgFromAnotherOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_org_name + in: path + description: Artifact organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - addArtifactToCollectionFromAnotherOrgOrTeam + x-ssa-scopes: + - addArtifactToCollectionFromAnotherOrgOrTeam + - kas + delete: + tags: + - Collections + summary: Remove artifact from collection in org from another org + description: >- + Remove artifact from the specified collection in the specified org from + another org + operationId: removeArtifactFromCollectionInOrgFromAnotherOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_org_name + in: path + description: Artifact organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{orgName}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan: + post: + tags: + - MalwareScan + summary: Initiates malwares can for the artifact + description: Initiates malwares can for the artifact + operationId: initiateMalwareScan + parameters: + - name: orgName + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 512 + minLength: 0 + - name: contact-email + in: query + description: Contact email + required: false + schema: + type: string + format: UTF-8 + maxLength: 320 + minLength: 0 + - name: nspect-id + in: query + description: Nspect identifier + required: false + schema: + type: string + format: UTF-8 + maxLength: 64 + minLength: 0 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}: + post: + tags: + - Artifact deployment parameters + summary: Create artifact version deployment url in org + description: Create artifact version deployment url in org + operationId: createArtifactDeploymentUrlInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlCreateRequest' + required: true + responses: + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params: + get: + tags: + - Artifact deployment parameters + summary: Get artifact deployment parameters details in org + description: Get artifact deployment parameters details in org + operationId: getArtifactDeploymentParametersInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: inherit-csp-parameters + in: query + description: Inherit CSP parameters + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + post: + tags: + - Artifact deployment parameters + summary: Create artifact deployment parameters in org + description: Create artifact deployment parameters in org + operationId: createArtifactDeploymentParametersInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: no-auto-labels + in: query + description: No auto labels + required: false + schema: + type: boolean + - name: merge-csp-parameters + in: query + description: Merge CSP parameters in response + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true + responses: + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Artifact deployment parameters + summary: Delete artifact deployment parameters in org + description: Delete artifact deployment parameters in org + operationId: deleteArtifactDeploymentParametersInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + patch: + tags: + - Artifact deployment parameters + summary: Update artifact deployment parameters in org + description: Update artifact deployment parameters in org + operationId: updateArtifactDeploymentParametersInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: csp_name + in: path + description: Cloud service provider name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: merge-csp-parameters + in: query + description: Merge CSP parameters in response + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersUpdateRequest' + required: true + responses: + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels: + post: + tags: + - Collections + summary: Sync collection release type labels for artifact + description: >- + Sync release type labels for all collections containing this artifact. + Internal API for service-to-service communication. + operationId: syncCollectionReleaseTypeLabelsForArtifact + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - syncReleaseTypeLabels + x-ssa-scopes: + - kas + - syncReleaseTypeLabels + /v1/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance: + get: + tags: + - Publish + summary: Check if user needs to accept license + description: Check if user needs to accept license. Checks against uam + operationId: getOrgArtifactLicenseAcceptance + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + post: + tags: + - Publish + summary: Accept artifact license + description: Record license acceptance for an org artifact. + operationId: acceptArtifactLicense + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptArtifactLicenseRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/{artifact_type}: + get: + tags: + - Artifacts + summary: List artifacts in org + description: List artifacts the user can access in the specified org + operationId: listArtifactsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listArtifacts + x-ssa-scopes: + - listArtifacts + - kas + post: + tags: + - Artifacts + summary: Create artifact in org + description: Create artifact in org + operationId: createArtifactInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createArtifact + x-ssa-scopes: + - createArtifact + - kas + /v1/org/{org_name}/recipes/{recipe_name}/versions: + get: + tags: + - Resource Versions + summary: List recipe versions in org + description: List recipe versions in org + operationId: listRecipeVersionsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listRecipeVersions + x-ssa-scopes: + - listRecipeVersions + - kas + post: + tags: + - Resource Versions + summary: Create recipe version in org + description: >- + Create recipe version in org. Please use the string versionId and not + the deprecated numeric id. Semantic Versioning is recommended + https://semver.org + operationId: createRecipeVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createRecipeVersion + x-ssa-scopes: + - createRecipeVersion + - kas + /v1/org/{org_name}/resources/{recipe_name}/versions: + get: + tags: + - Resource Versions + summary: List recipe versions in org + description: List recipe versions in org + operationId: listRecipeVersionsInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listRecipeVersions + x-ssa-scopes: + - listRecipeVersions + - kas + post: + tags: + - Resource Versions + summary: Create recipe version in org + description: >- + Create recipe version in org. Please use the string versionId and not + the deprecated numeric id. Semantic Versioning is recommended + https://semver.org + operationId: createRecipeVersionInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createRecipeVersion + x-ssa-scopes: + - createRecipeVersion + - kas + /v1/org/{org_name}/recipes: + get: + tags: + - Resources + summary: List recipes in org + description: List recipes the user can access in the specified org + operationId: listRecipesInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: app-name + in: query + description: Application name + required: false + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listRecipes + x-ssa-scopes: + - listRecipes + - kas + post: + tags: + - Resources + summary: Create recipe in org + description: Create recipe in org + operationId: createRecipeInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createRecipe + x-ssa-scopes: + - createRecipe + - kas + /v1/org/{org_name}/resources: + get: + tags: + - Resources + summary: List recipes in org + description: List recipes the user can access in the specified org + operationId: listRecipesInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: app-name + in: query + description: Application name + required: false + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listRecipes + x-ssa-scopes: + - listRecipes + - kas + post: + tags: + - Resources + summary: Create recipe in org + description: Create recipe in org + operationId: createRecipeInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createRecipe + x-ssa-scopes: + - createRecipe + - kas + /v1/org/{org_name}/models: + get: + tags: + - Models + summary: List models in org + description: This operation lists models the user can access in the org. + operationId: listModelsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: app-name + in: query + description: Application name + required: false + deprecated: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: '[Deprecated] Page reference, Use page-number instead' + required: false + deprecated: true + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listModels + x-ssa-scopes: + - kas + - listModels + post: + tags: + - Models + summary: Create model in org + description: This operation creates a model in the org. + operationId: createModelInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createModel + x-ssa-scopes: + - createModel + - kas + /v1/org/{org_name}/models/{model_name}/versions: + get: + tags: + - Model Version + summary: List model versions in org + description: List model versions in org + operationId: listModelVersionsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listModelVersions + x-ssa-scopes: + - listModelVersions + - kas + post: + tags: + - Model Version + summary: Create model version in org + description: >- + Create a new and empty model version in org. Please use the string + versionId and not the deprecated numeric id. Semantic Versioning is + recommended https://semver.org + operationId: createModelVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createModelVersion + x-ssa-scopes: + - kas + - createModelVersion + /v1/org/{org_name}/collections: + get: + tags: + - Collections + summary: List collections in org + description: List collections the user can access in the specified org + operationId: listCollectionsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: order-by + in: query + description: Order by + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + post: + tags: + - Collections + summary: Create collection in org + description: Create collection in org + operationId: createCollectionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionCreateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - createCollection + x-ssa-scopes: + - kas + - createCollection + /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs: + patch: + tags: + - Publish + summary: Publish artifact version with configs like policy badge + description: Update artifact version with configs like policy badge + operationId: updateTagLevelPublishConfigs + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateArtifactVersionConfigs' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - publishArtifact + x-ssa-scopes: + - publishArtifact + /v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id}: + get: + tags: + - Resource Versions + summary: Get recipe version in org + description: Get recipe version in org + operationId: getRecipeVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getRecipeVersion + - getRecipeVersionFilterByOrgEnablement + x-ssa-scopes: + - getRecipeVersion + - getRecipeVersionFilterByOrgEnablement + - kas + patch: + tags: + - Resource Versions + summary: Update recipe version in org + description: Update recipe version information in org e.g. upload status + operationId: updateRecipeVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: create-zip + in: query + description: Create zip of version content + required: false + schema: + type: boolean + - name: set-latest + in: query + description: Set version to latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateRecipeVersion + x-ssa-scopes: + - updateRecipeVersion + - kas + /v1/org/{org_name}/resources/{recipe_name}/versions/{version_id}: + get: + tags: + - Resource Versions + summary: Get recipe version in org + description: Get recipe version in org + operationId: getRecipeVersionInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getRecipeVersion + - getRecipeVersionFilterByOrgEnablement + x-ssa-scopes: + - getRecipeVersion + - getRecipeVersionFilterByOrgEnablement + - kas + patch: + tags: + - Resource Versions + summary: Update recipe version in org + description: Update recipe version information in org e.g. upload status + operationId: updateRecipeVersionInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: create-zip + in: query + description: Create zip of version content + required: false + schema: + type: boolean + - name: set-latest + in: query + description: Set version to latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateRecipeVersion + x-ssa-scopes: + - updateRecipeVersion + - kas + /v1/org/{org_name}/recipes/{recipe_name}: + get: + tags: + - Resources + summary: Get recipe in org + description: Get recipe in org + operationId: getRecipeInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getRecipe + x-ssa-scopes: + - getRecipe + - kas + patch: + tags: + - Resources + summary: Update recipe in org + description: Update recipe details in org + operationId: updateRecipeInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateRecipe + x-ssa-scopes: + - updateRecipe + - kas + /v1/org/{org_name}/resources/{recipe_name}: + get: + tags: + - Resources + summary: Get recipe in org + description: Get recipe in org + operationId: getRecipeInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getRecipe + x-ssa-scopes: + - getRecipe + - kas + patch: + tags: + - Resources + summary: Update recipe in org + description: Update recipe details in org + operationId: updateRecipeInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateRecipe + x-ssa-scopes: + - updateRecipe + - kas + /v1/org/{org_name}/models/{model_name}: + get: + tags: + - Models + summary: Get model details in org + description: This operation gets info of a model in the org. + operationId: getModelInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getModel + x-ssa-scopes: + - getModel + - kas + patch: + tags: + - Models + summary: Update model in org + description: This operation updates details of a model in the org. + operationId: updateModelInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateModel + x-ssa-scopes: + - updateModel + - kas + /v1/org/{org_name}/models/{model_name}/versions/{version_id}: + get: + tags: + - Model Version + summary: Get model version in org + description: Get model version in org + operationId: getModelVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 512 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getModelVersion + - getModelVersionFilterByOrgEnablement + x-ssa-scopes: + - getModelVersionFilterByOrgEnablement + - getModelVersion + - kas + patch: + tags: + - Model Version + summary: Update model version in org + description: Update model version information in org e.g. upload status + operationId: updateModelVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 512 + minLength: 0 + - name: create-zip + in: query + description: Create zip of version content + required: false + schema: + type: boolean + - name: set-latest + in: query + description: Set version to latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateModelVersion + x-ssa-scopes: + - updateModelVersion + - kas + /v1/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash: + patch: + tags: + - Model Version + summary: Stash artifact version in org + description: Stash artifact version information in org during upload paused state + operationId: stashArtifactVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 512 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateModelVersion + x-ssa-scopes: + - updateModelVersion + - kas + /v1/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id}: + get: + tags: + - Helm Charts + summary: Get chart version in org + description: Get chart version in org + operationId: getHelmChartVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getArtifactVersion + x-ssa-scopes: + - getArtifactVersion + - kas + patch: + tags: + - Helm Charts + summary: Update chart version in org + description: Update chart version information in org e.g. upload status + operationId: updateHelmChartVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateArtifactVersion + x-ssa-scopes: + - updateArtifactVersion + - kas + /v1/org/{org_name}/collections/{collection_name}: + get: + tags: + - Collections + summary: Get collection in org + description: Get collection details in org + operationId: getCollectionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - getCollection + x-ssa-scopes: + - getCollection + - kas + delete: + tags: + - Collections + summary: Delete collection in org + description: Delete collection in the specified org + operationId: deleteCollectionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + patch: + tags: + - Collections + summary: Update collection in org + description: Update collection details in org + operationId: updateCollectionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionUpdateRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - updateCollection + x-ssa-scopes: + - updateCollection + - kas + /v1/org/{org_name}/collections/{collection_name}/artifacts: + patch: + tags: + - Collections + summary: Patch collection in org + description: Patch collection in the specified org + operationId: patchCollectionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPatchRequest' + required: true + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - patchCollectionArtifacts + x-ssa-scopes: + - patchCollectionArtifacts + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/params: + get: + tags: + - Artifact deployment parameters + summary: List artifact deployment parameters in org + description: List artifact deployment parameters in org + operationId: listArtifactDeploymentParametersInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - repositories + - recipes + - models + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: inherit-csp-parameters + in: query + description: Inherit CSP parameters + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/collections: + get: + tags: + - Collections + summary: List artifact collections in org + description: List artifact collections the user can access in the specified org + operationId: listArtifactCollectionsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: order-by + in: query + description: Order by + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/catalog/flags: + get: + tags: + - Publish + summary: Get Catalog flags + description: Get the Catalog Public flags for artifact in org + operationId: getPublicFlagsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - getPublicFlags + x-ssa-scopes: + - getPublicFlags + /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files: + get: + tags: + - Artifact Version Files + summary: List artifact files in org + description: List files of the artifact version in org + operationId: listArtifactFilesInOrg + parameters: + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listArtifactVersionFiles + x-ssa-scopes: + - listArtifactVersionFiles + - kas + /v1/org/{org_name}/repositories/{container_name}/associated-models: + get: + tags: + - Model Version + summary: List associated model versions by container + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: container_name + in: path + description: Container name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listModelVersions + x-ssa-scopes: + - listModelVersions + - kas + /v1/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models: + get: + tags: + - Model Version + summary: List associated model versions by container + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer_2 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: container_name + in: path + description: Container name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: container_tag + in: path + description: Container tag + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listModelVersions + x-ssa-scopes: + - listModelVersions + - kas + /v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files: + get: + tags: + - Resource Version Files endpoints + summary: List recipe files in org + description: List recipe files in org + operationId: listRecipeFilesInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listRecipeVersionFiles + x-ssa-scopes: + - listRecipeVersionFiles + - kas + /v1/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files: + get: + tags: + - Resource Version Files endpoints + summary: List recipe files in org + description: List recipe files in org + operationId: listRecipeFilesInOrg_1 + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: recipe_name + in: path + description: Recipe name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listRecipeVersionFiles + x-ssa-scopes: + - listRecipeVersionFiles + - kas + /v1/org/{org_name}/models/{model_name}/versions/{version_id}/files: + get: + tags: + - Model Version Files + summary: List model files in org + description: List files of the model version in org + operationId: listModeFilesInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-reference + in: query + description: Page reference + required: false + schema: + type: string + format: UTF-8 + maxLength: 1024 + minLength: 0 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listModelVersionFiles + x-ssa-scopes: + - listModelVersionFiles + - kas + /v1/org/{org_name}/helm-charts/{artifact_name}/versions: + get: + tags: + - Helm Charts + summary: List chart versions in org + description: List chart versions in org + operationId: listHelmChartVersionsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: sort-order + in: query + description: Sort order + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: release-type + in: query + description: Release Type + required: false + schema: + type: string + format: UTF-8 + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listArtifactVersions + x-ssa-scopes: + - kas + - listArtifactVersions + /v1/org/{org_name}/collections/{collection_name}/artifacts/{artifact_type}: + get: + tags: + - Collections + summary: List collection artifacts in org + description: List collection artifacts the user can access in the specified org + operationId: listCollectionArtifactsInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: collection_name + in: path + description: Collection name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: page-size + in: query + description: Page size + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + - name: page-number + in: query + description: Page number - zero based index + required: false + schema: + type: string + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + - name: order-by + in: query + description: Order by + required: false + schema: + type: string + format: UTF-8 + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + maxLength: 262144 + minLength: 0 + - name: resolve-labels + in: query + description: Resolve labels + required: false + schema: + type: boolean + - name: remove-unresolved-labels + in: query + description: Remove unresolved labels + required: false + schema: + type: boolean + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - listCollectionArtifacts + x-ssa-scopes: + - kas + - listCollectionArtifacts + /v1/artifact-registry/org/{org_name}/encryption-keys: + get: + tags: + - Encryption Keys + summary: List encryption keys in org + description: List encryption keys in org + operationId: listKeysInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/artifact-registry/org/{org_name}/encryption-keys/{key_id}: + get: + tags: + - Encryption Keys + summary: List artifacts for encryption key in org + description: List artifacts for encryption key in org + operationId: listArtifactsForKeyInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: key_id + in: path + description: Key ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact-type + in: query + description: Artifact type + required: false + schema: + type: string + format: UTF-8 + default: MODEL + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + delete: + tags: + - Encryption Keys + summary: Revoke encryption key in org + description: Revoke encryption key and disassociate from all artifacts in org + operationId: deleteKeyFromOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: key_id + in: path + description: Key ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '202': + description: Accepted + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas + /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}: + delete: + tags: + - Artifact Versions + summary: Delete a artifact version in org + description: Delete a artifact version in org + operationId: deleteArtifactVersionInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: artifact_type + in: path + description: Artifact type + required: true + schema: + type: string + format: UTF-8 + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + maxLength: 262144 + minLength: 0 + - name: artifact_name + in: path + description: Artifact name + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + - name: version_id + in: path + description: Version ID + required: true + schema: + type: string + format: UTF-8 + maxLength: 262144 + minLength: 0 + responses: + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + - deleteArtifactVersion + x-ssa-scopes: + - deleteArtifactVersion + - kas + /v1/org/{org_name}/models/{model_name}/encryption-key: + delete: + tags: + - Models + summary: Disassociate encryption key from model in org + description: >- + Disassociate encryption key from model in org and mark it for offline + deletion + operationId: disassociateKeyFromModelInOrg + parameters: + - name: org_name + in: path + description: Organization name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + - name: model_name + in: path + description: Model name + required: true + schema: + type: string + format: UTF-8 + maxLength: 255 + minLength: 0 + responses: + '202': + description: Accepted + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '429': + description: Too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + '500': + description: Internal Error + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + security: + - ssa: + - kas + x-ssa-scopes: + - kas +components: + schemas: + AIPlaygroundResponse: + type: object + description: Request to fetch an AI Playground config + properties: + artifactName: + type: string + description: Unique name of the model + artifactType: + type: string + description: ArtifactTypeEnum of the artifact + namespace: + type: string + description: org/team of the model + nvcfFunctionId: + type: string + description: NVCF function id for the model playground + attributes: + type: string + description: Metadata json string + openAPISpec: + type: string + description: OpenAPI specification for this model + createdDate: + type: string + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + updatedDate: + type: string + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + AIPlaygroundUpdateRequest: + type: object + description: Request to update an AI Playground config + properties: + nvcfFunctionId: + type: string + description: NVCF function id for the model playground + attributes: + type: string + description: Metadata json string + openAPISpec: + type: string + description: OpenAPI specification for this model + Response: + type: object + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + ArtifactPublishRequest: + type: object + description: Request to publish an artifact + properties: + canGuestPull: + type: boolean + canPublicList: + type: boolean + isPublic: + type: boolean + productNames: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + accessType: + type: string + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + licenseTerms: + type: array + items: + $ref: '#/components/schemas/LicenseMetadata' + UpdateReleaseTypeRequest: + type: object + description: Request to update release type of an artifact version + properties: + version: + type: string + description: Artifact version + releaseType: + type: string + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + required: + - version + ArtifactUpdateRequest: + type: object + description: Properties for the artifact to update + properties: + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + description: + type: string + description: Description of the artifact + shortDescription: + type: string + description: Short description of the artifact + maxLength: 255 + displayName: + type: string + description: Display name + maxLength: 128 + minLength: 2 + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the artifact + maxLength: 255 + publisher: + type: string + description: organization that published the artifact + maxLength: 255 + attributes: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + bias: + type: string + description: Text describing bias in the model + explainability: + type: string + description: Text describing explainability for this model + privacy: + type: string + description: Text describing the privacy for this model + safetyAndSecurity: + type: string + description: Text for describing the safety and security in the model + licenseTerms: + type: array + items: + $ref: '#/components/schemas/LicenseMetadata' + CollectionPublishRequest: + type: object + description: Request to publish a collection + properties: + canGuestPull: + type: boolean + canPublicList: + type: boolean + isPublic: + type: boolean + productNames: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + accessType: + type: string + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + AIPlaygroundCreateRequest: + type: object + description: Request to create a new AI Playground config + properties: + artifactName: + type: string + description: Unique name of the model + nvcfFunctionId: + type: string + description: NVCF function id for the model playground + attributes: + type: string + description: Metadata json string + openAPISpec: + type: string + description: OpenAPI specification for this model + required: + - artifactName + - nvcfFunctionId + DeploymentUrlCreateRequest: + type: object + description: Request to create a new deployment url + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + DeploymentParametersCreateRequest: + type: object + description: Request to create a new deployment parameters + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + DeploymentParametersUpdateRequest: + type: object + description: Request to update existing deployment parameters + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + AcceptArtifactLicenseRequest: + type: object + description: Request body to accept an org-scoped artifact license. + properties: + licenseId: + type: string + description: >- + License identifier to accept (must match a licenseId from the + artifact's published licenseTerms). + example: NVIDIA Proprietary + maxLength: 256 + minLength: 1 + pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ + licenseVersion: + type: string + description: >- + License version to accept (must match licenseVersion for that + license on the artifact). + example: 1 + maxLength: 128 + minLength: 1 + pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ + required: + - licenseId + - licenseVersion + ArtifactCreateRequest: + type: object + description: Properties for the artifact to create + properties: + name: + type: string + description: Unique name of the artifact + maxLength: 250 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + description: + type: string + description: Description of the artifact + shortDescription: + type: string + description: Short description of the artifact + maxLength: 255 + displayName: + type: string + description: Display name + maxLength: 128 + minLength: 2 + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the artifact + maxLength: 255 + publisher: + type: string + description: organization that published the artifact + maxLength: 255 + attributes: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + bias: + type: string + description: Text describing bias in the model + explainability: + type: string + description: Text describing explainability for this model + privacy: + type: string + description: Text describing the privacy for this model + safetyAndSecurity: + type: string + description: Text for describing the safety and security in the model + licenseTerms: + type: array + items: + $ref: '#/components/schemas/LicenseMetadata' + required: + - name + - shortDescription + RecipeVersionCreateRequest: + type: object + description: Properties for the recipe version to be created + properties: + id: + type: integer + format: int64 + description: 'Deprecated: Please use version instead. Unique ID of the version' + maximum: 2147483647 + minimum: 1 + versionId: + type: string + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + pattern: '[^/]+' + description: + type: string + description: Description of the recipe version + accuracyReached: + type: number + format: float + description: Accuracy this recipe reached + maximum: 100 + minimum: 0 + numberOfEpochs: + type: integer + format: int64 + description: Number of epochs this recipe trained + minimum: 0 + gpuModel: + type: string + description: GPU model and memory + maxLength: 255 + batchSize: + type: integer + format: int64 + description: Batch size this recipe was trained with + minimum: 0 + memoryFootprint: + type: string + description: Recipe size/memory footprint for inference + maxLength: 255 + setup: + type: string + description: Text describing recipe setup + quickStartGuide: + type: string + description: Text with a guide to getting started + performance: + type: string + description: Text describing performance of the recipe results + releaseNotes: + type: string + description: Text describing this release + customMetrics: + type: array + items: + $ref: '#/components/schemas/CustomMetricGroup' + otherContents: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + RecipeCreateRequest: + type: object + description: Properties for the recipe to create + properties: + name: + type: string + description: Unique name of the recipe + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + trainingFramework: + type: string + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + modelFormat: + type: string + description: Format of the model this recipe produces + maxLength: 255 + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + description: + type: string + description: Description of the recipe + shortDescription: + type: string + description: Short description of the recipe + maxLength: 255 + setup: + type: string + description: Text describing recipe setup + quickStartGuide: + type: string + description: Text with a guide to getting started + performance: + type: string + description: Text describing performance of the recipe results + advanced: + type: string + description: Text for describing advanced information + displayName: + type: string + description: Display name + maxLength: 64 + minLength: 2 + precision: + type: string + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + application: + type: string + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the recipe + maxLength: 255 + publisher: + type: string + description: organization that published the recipe + maxLength: 255 + licenseTerms: + type: array + items: + $ref: '#/components/schemas/LicenseMetadata' + required: + - application + - modelFormat + - name + - precision + - publicDatasetUsed + - shortDescription + - trainingFramework + ModelCreateRequest: + type: object + description: Properties for the models to be created + properties: + name: + type: string + description: Unique name of the model + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + description: + type: string + description: Description of the model + ownerName: + type: string + description: Name of the user who owns this model + maxLength: 255 + framework: + type: string + description: Framework used to train this model + maxLength: 255 + modelFormat: + type: string + description: Format of the model + maxLength: 255 + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + shortDescription: + type: string + description: Short description of the model + maxLength: 255 + displayName: + type: string + description: Display name + maxLength: 64 + minLength: 2 + precision: + type: string + description: Precision this model was trained with + maxLength: 255 + application: + type: string + description: Application of the model + maxLength: 255 + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the repository + maxLength: 255 + publisher: + type: string + description: organization that published the repository + maxLength: 255 + hasPlayground: + type: boolean + description: indicate if the Model has AI Playground configured + isPlaygroundEnabled: + type: boolean + description: indicate if AI Playground is enabled in the catalog + bias: + type: string + description: Text describing bias in the model + explainability: + type: string + description: Text describing explainability for this model + privacy: + type: string + description: Text describing the privacy for this model + safetyAndSecurity: + type: string + description: Text for describing the safety and security in the model + licenseTerms: + type: array + items: + $ref: '#/components/schemas/LicenseMetadata' + encryptionKey: + $ref: '#/components/schemas/EncryptionKey' + description: Customer Managed Key shard configuration for the model + required: + - framework + - name + - precision + ModelVersionCreateRequest: + type: object + description: Properties for the model version to be created + properties: + id: + type: integer + format: int64 + description: 'Deprecated: Please use version instead. Unique ID of the version' + maximum: 2147483647 + minimum: 1 + versionId: + type: string + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + pattern: '[^/]+' + description: + type: string + description: Description of the model version + maxLength: 255 + ownerName: + type: string + description: Name of the user who owns this version + maxLength: 255 + accuracyReached: + type: number + format: float + description: Accuracy this model reached + maximum: 100 + minimum: 0 + numberOfEpochs: + type: integer + format: int64 + description: Number of epochs this model trained + minimum: 0 + gpuModel: + type: string + description: GPU model and memory + maxLength: 255 + batchSize: + type: integer + format: int64 + description: Batch size this model was trained with + minimum: 0 + memoryFootprint: + type: string + description: Model size/memory footprint for inference + maxLength: 255 + customMetrics: + type: array + items: + $ref: '#/components/schemas/CustomMetricGroup' + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + CollectionCreateRequest: + type: object + description: Properties for the collections to be created + properties: + name: + type: string + description: Unique name of the collection + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + description: + type: string + description: Description of the collection + shortDescription: + type: string + description: Short description of the collection + maxLength: 255 + displayName: + type: string + description: Display name + maxLength: 64 + minLength: 2 + ownerName: + type: string + description: Name of the user who owns this collection + maxLength: 255 + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the collection + publisher: + type: string + description: organization that published the collection + maxLength: 255 + category: + type: string + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + attributes: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + required: + - category + - name + - shortDescription + UpdateArtifactVersionConfigs: + type: object + description: Request to publish an artifact + properties: + policy: + type: array + items: + type: string + enum: + - GOV_READY + - FedRAMP + RecipeVersionUpdateRequest: + type: object + description: Version properties to update + properties: + status: + type: string + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + description: + type: string + description: Description of the recipe version + accuracyReached: + type: number + format: float + description: Accuracy this recipe reached + maximum: 100 + minimum: 0 + numberOfEpochs: + type: integer + format: int64 + description: Number of epochs this recipe trained + minimum: 0 + gpuModel: + type: string + description: GPU model and memory + maxLength: 255 + batchSize: + type: integer + format: int64 + description: Batch size this recipe was trained with + minimum: 0 + memoryFootprint: + type: string + description: Recipe size/memory footprint for inference + maxLength: 255 + setup: + type: string + description: Text describing recipe setup + quickStartGuide: + type: string + description: Text with a guide to getting started + performance: + type: string + description: Text describing performance of the recipe results + releaseNotes: + type: string + description: Text describing this release + customMetrics: + type: array + items: + $ref: '#/components/schemas/CustomMetricGroup' + otherContents: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + RecipeUpdateRequest: + type: object + description: Properties for the recipe to update + properties: + trainingFramework: + type: string + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + modelFormat: + type: string + description: Format of the model this recipe produces + maxLength: 255 + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + description: + type: string + description: Description of the recipe + shortDescription: + type: string + description: Short description of the recipe + maxLength: 255 + setup: + type: string + description: Text describing recipe setup + quickStartGuide: + type: string + description: Text with a guide to getting started + performance: + type: string + description: Text describing performance of the recipe results + advanced: + type: string + description: Text for describing advanced information + displayName: + type: string + description: Display name + maxLength: 64 + minLength: 2 + precision: + type: string + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + application: + type: string + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the recipe + maxLength: 255 + publisher: + type: string + description: organization that published the recipe + maxLength: 255 + relatedModels: + type: array + items: + $ref: '#/components/schemas/ModelSimplified' + licenseTerms: + type: array + items: + $ref: '#/components/schemas/LicenseMetadata' + ModelUpdateRequest: + type: object + description: Properties for the model to update + properties: + description: + type: string + description: Description of the model + ownerName: + type: string + description: Name of the user who owns this model + maxLength: 255 + framework: + type: string + description: Framework used to train this model + maxLength: 255 + modelFormat: + type: string + description: Format of the model + maxLength: 255 + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + shortDescription: + type: string + description: Short description of the model + maxLength: 255 + displayName: + type: string + description: Display name + maxLength: 64 + minLength: 2 + precision: + type: string + description: Precision this model was trained with + maxLength: 255 + hasPlayground: + type: boolean + description: indicate if the Model has AI Playground configured + isPlaygroundEnabled: + type: boolean + description: indicate if AI Playground is enabled in the catalog + application: + type: string + description: Application of the model + maxLength: 255 + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the repository + maxLength: 255 + publisher: + type: string + description: organization that published the repository + maxLength: 255 + bias: + type: string + description: Text describing bias in the model + explainability: + type: string + description: Text describing explainability for this model + privacy: + type: string + description: Text describing the privacy for this model + safetyAndSecurity: + type: string + description: Text for describing the safety and security in the model + licenseTerms: + type: array + items: + $ref: '#/components/schemas/LicenseMetadata' + ModelVersionUpdateRequest: + type: object + description: Version properties to update + properties: + status: + type: string + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + description: + type: string + description: Description of the model version + maxLength: 255 + ownerName: + type: string + description: Name of the user who owns this version + maxLength: 255 + accuracyReached: + type: number + format: float + description: Accuracy this model reached + maximum: 100 + minimum: 0 + numberOfEpochs: + type: integer + format: int64 + description: Number of epochs this model trained + minimum: 0 + gpuModel: + type: string + description: GPU model and memory + maxLength: 255 + batchSize: + type: integer + format: int64 + description: Batch size this model was trained with + minimum: 0 + memoryFootprint: + type: string + description: Model size/memory footprint for inference + maxLength: 255 + customMetrics: + type: array + items: + $ref: '#/components/schemas/CustomMetricGroup' + otherContents: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + ArtifactVersionUpdateRequest: + type: object + description: Version properties to update + properties: + status: + type: string + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + description: + type: string + description: Description of the artifact version + maxLength: 255 + attributes: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + CollectionUpdateRequest: + type: object + description: Properties for the collection to update + properties: + labels: + type: array + items: + type: string + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + labelsV2: + type: array + items: + type: string + description: + type: string + description: Description of the collection + shortDescription: + type: string + description: Short description of the collection + maxLength: 255 + displayName: + type: string + description: Display name + maxLength: 64 + minLength: 2 + logo: + type: string + description: URL for the logo image + maxLength: 255 + builtBy: + type: string + description: organization that built the collection + publisher: + type: string + description: organization that published the collection + maxLength: 255 + category: + type: string + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + ownerName: + type: string + description: Name of the user who owns this collection + maxLength: 255 + attributes: + type: array + items: + $ref: '#/components/schemas/ArtifactAttribute' + CollectionPatchRequest: + type: object + description: Properties for the collection to patch + properties: + operations: + type: array + items: + $ref: '#/components/schemas/CollectionOperation' + maxItems: 100 + maxItems: 100 + WorkflowStatusUrlResponse: + type: object + description: Response containing workflow status URL and ID + properties: + statusUrl: + type: string + description: URL to check the workflow status + workflowId: + type: string + description: ID of the workflow + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + RequestStatus: + type: object + description: Request status information + properties: + statusCode: + type: string + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + statusDescription: + type: string + description: Status description + requestId: + type: string + description: Request ID + serverId: + type: string + description: Server ID + LicenseMetadata: + type: object + description: License information for the artifact + properties: + licenseId: + type: string + description: License ID + example: NVIDIA proprietary + maxLength: 100 + pattern: ^[\s\S]*$ + licenseVersion: + type: string + description: License version ID + example: v1.0 + maxLength: 100 + pattern: ^[\s\S]*$ + needsAcceptance: + type: boolean + description: Indicator if user needs to accept this license + governingTerms: + type: string + description: Comprehensive terms and links related to the license + example: >- +

GOVERNING HOSTING TERMS: Use of the model is + governed by the NVIDIA Open Model Agreement.

+ maxLength: 1000 + pattern: ^[\s\S]*$ + configuredLicenseTerms: + $ref: '#/components/schemas/ConfiguredLicenseTerms' + description: License information for the artifact + ArtifactAttribute: + type: object + description: Attribute on the artifact + properties: + key: + type: string + maxLength: 255 + pattern: '[a-zA-Z0-9]+' + value: + type: string + maxLength: 255 + DeploymentCpuParameters: + type: object + description: Deployment CPU Parameters object + properties: + count: + type: integer + format: int64 + description: Total count of CPUs + DeploymentGpuParameters: + type: object + description: Deployment GPU Parameters object + properties: + count: + type: integer + format: int64 + description: Total count of GPUs + type: + type: string + description: GPU Type + DeploymentMemoryParameters: + type: object + description: Deployment Memory Parameters object + properties: + capacityInGB: + type: integer + format: int64 + description: Capacity in GB + DeploymentStorageParameters: + type: object + description: Deployment Storage Parameters object + properties: + capacityInGB: + type: integer + format: int64 + description: Capacity in GB + DeploymentArtifactParameters: + type: object + description: Deployment Artifact Parameters object + properties: + artifactType: + type: string + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + name: + type: string + description: Unique name of the artifact + displayName: + type: string + description: Display name of the artifact + orgName: + type: string + description: Name of the org that the artifact belongs to + teamName: + type: string + description: Name of the team that the artifact belongs to + versionId: + type: string + description: ID of the version or tag + filePath: + type: string + description: Path to a file in an artifact version + required: + - name + - orgName + CustomMetricGroup: + type: object + description: Defines the group of custom metrics. + properties: + name: + type: string + maxLength: 255 + attributes: + type: array + items: + $ref: '#/components/schemas/CustomMetric' + Dataset: + type: object + properties: + name: + type: string + description: Name of the dataset + maxLength: 255 + link: + type: string + description: Link to the dataset + maxLength: 255 + license: + type: string + description: License of the dataset + maxLength: 255 + EncryptionKey: + type: object + description: Customer Managed Key shard configuration for the model + properties: + useExistingKey: + type: boolean + description: >- + Whether to use an existing customer key shard or should a new one be + created + encryptionKeyId: + type: string + description: ID of the existing customer key shard to use + description: + type: string + description: Description for a new customer key shard + required: + - useExistingKey + NvcfContainerConfiguration: + type: object + description: NVCF container configuration parameters + properties: + inferenceUrl: + type: string + description: Inference url + inferencePort: + type: string + description: Inference port + healthUri: + type: string + description: Health URI + containerImage: + type: string + description: Container Image + containerArgs: + type: string + description: Container arguments + apiBodyFormat: + type: string + description: API body format + models: + type: array + items: + $ref: '#/components/schemas/NvcfContainerModel' + containerEnvironment: + type: array + items: + $ref: '#/components/schemas/MetaData' + NvcfDeploymentSpecification: + type: object + description: NVCF deployment specification + properties: + gpuType: + type: string + description: GPU type + gpuCount: + type: integer + format: int32 + description: GPU count + instanceType: + type: string + description: Instance type + maxConcurrency: + type: integer + format: int32 + description: Maximum concurrency + ModelSimplified: + type: object + description: Model object + properties: + name: + type: string + description: Unique name of the model + orgName: + type: string + description: Name of the org that the model belongs to + teamName: + type: string + description: Name of the team that the model belongs to + required: + - name + - orgName + CollectionOperation: + type: object + description: Collection operation object + properties: + operation: + type: string + description: Collection operation + maxLength: 255 + path: + type: string + description: Path to a collection item in a scoped format + maxLength: 255 + pattern: ^(/(?!/)([\w- %\.(?!\.)])+)+$ + ConfiguredLicenseTerms: + type: object + description: License information for the artifact + properties: + hosting: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact + download: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact + CustomMetric: + type: object + description: Custom metrics + properties: + key: + type: string + maxLength: 255 + value: + type: string + maxLength: 255 + NvcfContainerModel: + type: object + description: Models version object metadata + properties: + name: + type: string + description: Model name + version: + type: string + description: Model version + uri: + type: string + description: Model URI + MetaData: + type: object + properties: + key: + type: string + maxLength: 255 + value: + type: string + maxLength: 255 + ConfiguredLicenseTerm: + type: object + description: License information for the artifact + properties: + artifactType: + type: string + description: Artifact type + example: model + maxLength: 15 + pattern: ^[\s\S]*$ + tags: + type: array + items: + $ref: '#/components/schemas/LicenseTag' + generatedHtml: + type: string + description: Generated html + example:

GOVERNING HOSTING TERMS: ...

+ maxLength: 9999 + pattern: ^[\s\S]*$ + LicenseTag: + type: object + description: License tag information for individual term + properties: + key: + type: string + description: Key identifier for the tag + example: nv-open-model + maxLength: 100 + pattern: ^[\s\S]*$ + category: + type: string + description: Category of the tag + example: terms + maxLength: 100 + pattern: ^[\s\S]*$ + tag: + type: string + description: License tag name + example: Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ + url: + type: string + description: Link to the hosted license + example: https://www.nvidia.com/.../nvidia-open-model-agreement/ + maxLength: 1000 + pattern: ^[\s\S]*$ + label: + type: string + description: License Label + example: NVIDIA Open Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ +servers: + - url: https://models.ngc.nvidia.com + description: Generated server url - production + x-internal: true From c7f1570f21bc67a288bbe51871c30c25ff9f41d8 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 14 Jul 2026 12:51:20 +1000 Subject: [PATCH 08/17] docs: record inventory, split, pilot and pagination findings (task 8) - NOTES.md: service split and host alignment, pilot results, pagination sweep (offset paging -> parameter-driven, keycloak precedent), envelope table, refreshed open questions (search definition, PUT semantics, authorizations envelope, 3.1 through normalize, teams vs the schedule, v3 org creation), phase 2 obligations - README.md: service coverage table, inventory summary line, zero-setup public-read callout (dockerhub precedent), grants-as-data note Co-Authored-By: Claude Fable 5 --- NOTES.md | 37 +++++++++++++++++++++++++++---------- README.md | 20 +++++++++++++++++++- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/NOTES.md b/NOTES.md index f8520a5..7ea97c8 100644 --- a/NOTES.md +++ b/NOTES.md @@ -1,4 +1,4 @@ -# Engineering Notes +# Engineering Notes Phase 1 scope: spec acquisition (NVCF pin + NGC harvest), auth verification, endpoint inventory across both sources, mapping groundwork on three pilot services. Wire evidence is live against `api.ngc.nvidia.com` and `api.nvcf.nvidia.com` (2026-07-14, unauthenticated probes only - see Blocked). Spec pins in `provider-dev/config/spec_pin.json`: NVCF 2.245.1 (sha256 b79060bf...), ngc_kas v3.249.6 (dcaf78b0...), ngc_models 0.0.1-SNAPSHOT placeholder (7541d8f6...). @@ -22,20 +22,37 @@ Sibling findings reused, not re-derived: dockerhub (public-read classification, 6. **Auth error envelopes - observed.** `api.ngc.nvidia.com` returns `{"requestStatus": {"statusCode": "UNAUTHORIZED", ...}}` with 401; `api.nvcf.nvidia.com` returns an empty 401 body. Useful for integration-test assertions. +7. **Service split - DECIDED from the inventory.** Seven services (recorded in `service_names.json`): `orgs`, `registry`, `catalog`, `nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`. Catalog is distinct from registry (guest path families, public auth posture). `nvcf_invocation` was added vs the candidate list (pexec, assets, assertion tokens). No usage service: no billing/measurement surface in the harvest. Host-service alignment is 1:1 (`nvcf_invocation`/`nvcf_queues` -> `api.nvcf.nvidia.com`, all others -> `api.ngc.nvidia.com`), so the two-host carry is service-level server assignment - no per-operation servers needed. Owed in phase 2 `pre_normalize`: stamp the correct server per service spec (the split specs inherit their source's server today: nvcf management specs say `api.nvcf`, registry/catalog say `models.ngc`) and apply the `/v1` -> `/v2` gateway path rewrite for registry/catalog (Resolved item 5). + +8. **Pilot mapping - GREEN (task 7).** 221 operations, 81 resources across the 7 services (select 101, insert 40, update 29, delete 32, replace 3, exec 16); map_operations validations all pass (coverage both directions, unique methods, unique path-param signatures per SQL verb). Grants proof on `nvcf_functions.authorizations`: list `SELECT`, add `INSERT`, remove `DELETE`, set (full-list POST) `REPLACE`, delete-all kept as `EXEC` (same path-param signature as the granular remove). The harvested source is proven end to end via `registry` (32 resources incl. models/versions CRUD, shares grants, collection membership). Notable spec truths kept as-is: the typed models family has no DELETE (deletion rides `artifacts.delete` with `artifact-type=models`, purge is `EXEC`); `openapi: 3.1.0` sources passed split/analyze without issue. + +9. **Pagination - spec sweep done, wire confirmation owed.** 36 mapped list operations declare `page-number`+`page-size` offset paging (all in `orgs` and `registry`); catalog guest lists and every NVCF list declare no pagination parameters; the (out-of-spec) catalog search wire response carries `page`/`pageSize` in the query object with `resultPageTotal`/`resultTotal` in the envelope. Per the keycloak finding, offset paging is not expressible as any-sdk token pagination -> parameter-driven paging (page params exposed as optional WHERE parameters, documented per resource), no pagination config at generate time. Confirm server default page sizes live in phase 2. + +10. **Envelope/objectKey - recorded per resource in the inventory.** Wire-proven catalog list envelopes vary: `$.models`, `$.recipes` (also for `resources`), `$.collections`, `$.artifacts` (generic artifact-type list), bare array for `gpus`. NVCF lists: `$.functions` (functions and versions), `$.functionIds`, `$.clusterGroups`, `$.telemetries`, `$.registryCredentials`. Single-object gets ride the `{: {...}, requestStatus: {...}}` envelope. Multi-array-prop candidates are left blank in `all_services.csv` pending wire checks (flagged `?multi` in the inventory). + ## Blocked on key (the vsphere blocked-on-lab pattern) -7. **Live bearer verification - BLOCKED, no `NGC_API_KEY` in the environment** (process, user, and machine level checked). NGC Personal API Key generation is a console action (org > Setup > Generate Personal API Key) with service scopes: Private Registry, and Cloud Functions at the organization level - NVIDIA's docs warn team-level roles break NVCF keys. Key scopes are static. The legacy-key type exists (see item 8) but personal keys (`nvapi-...`) are the documented path. Owed once a key is present: a live `GET /v2/orgs` and `GET /v2/users/me` with `Authorization: Bearer $NGC_API_KEY`, the authenticated spec-endpoint probes (item 9), and the NVCF enablement check (item 10). +11. **Live bearer verification - BLOCKED, no `NGC_API_KEY` in the environment** (process, user, and machine level checked). NGC Personal API Key generation is a console action (org > Setup > Generate Personal API Key) with service scopes: Private Registry, and Cloud Functions at the organization level - NVIDIA's docs warn team-level roles break NVCF keys. Key scopes are static. The legacy-key type exists (see item 12) but personal keys (`nvapi-...`) are the documented path. Owed once a key is present: a live `GET /v2/orgs` and `GET /v2/users/me` with `Authorization: Bearer $NGC_API_KEY`, the authenticated spec-endpoint probes (item 13), and the NVCF enablement check (item 14). -8. **Two key types, two auth flows - recorded, wire verification owed.** The explorer bundle's request interceptor exchanges a legacy NGC API key for a short-lived JWT via `https://authn.nvidia.com/token?scope=group/ngc&service=ngc` with `Authorization: Basic base64($oauthtoken:)`. Personal API keys are documented to work directly as `Authorization: Bearer`. The provider auth config assumes the direct-bearer personal-key path; if any NGC core endpoint rejects direct bearer, the token exchange becomes a documented prerequisite (not a provider concern - StackQL carries the env var as-is). +12. **Two key types, two auth flows - recorded, wire verification owed.** The explorer bundle's request interceptor exchanges a legacy NGC API key for a short-lived JWT via `https://authn.nvidia.com/token?scope=group/ngc&service=ngc` with `Authorization: Basic base64($oauthtoken:)`. Personal API keys are documented to work directly as `Authorization: Bearer`. The provider auth config assumes the direct-bearer personal-key path; if any NGC core endpoint rejects direct bearer, the token exchange becomes a documented prerequisite (not a provider concern - StackQL carries the env var as-is). -9. **Authenticated spec endpoints - BLOCKED on key.** `api.ngc.nvidia.com/v3/openapi`, `/v3/search/api-docs`, `/v3/meta/api-docs` return 401 unauthenticated (the unreachable Search/Metadata definitions may be served authenticated through the gateway). Re-probe with the key; if the Search definition is retrievable it becomes the catalog-search spec source (see Open item 2). +13. **Authenticated spec endpoints - BLOCKED on key.** `api.ngc.nvidia.com/v3/openapi`, `/v3/search/api-docs`, `/v3/meta/api-docs` return 401 unauthenticated (the unreachable Search/Metadata definitions may be served authenticated through the gateway). Re-probe with the key; if the Search definition is retrievable it becomes the catalog-search spec source (see Open item 2). -10. **NVCF enablement of the test org - BLOCKED on key/org.** Recorded as unknown. The tiered smoke design (drafted): tier 1 catalog/public reads - no credentials, every CI run; tier 2 org/registry reads - free NGC account key; tier 3 NVCF - only where the org has Cloud Functions enabled, skip-with-notice otherwise (vsphere pattern); any deployed function uses the smallest instance spec, `stackql-smoke-` naming, deleted within the run. +14. **NVCF enablement of the test org - BLOCKED on key/org.** Recorded as unknown. The tiered smoke design (drafted): tier 1 catalog/public reads - no credentials, every CI run; tier 2 org/registry reads - free NGC account key; tier 3 NVCF - only where the org has Cloud Functions enabled, skip-with-notice otherwise (vsphere pattern); any deployed function uses the smallest instance spec, `stackql-smoke-` naming, deleted within the run. ## Open -1. **Pagination idioms per resource** - to be recorded from the specs in the inventory (task 5) and confirmed live where access allows. `page`/`pageSize` observed on catalog search (`resultPageTotal` in the response); no assumption carried to other resources. -2. **Catalog search served but definition unreachable** - the public search surface (`/v2/search/catalog/...`) is wire-proven but the Search API definition is not publicly retrievable; blocked-on-key probe (item 9) or the operation stays out of v1 with a reason code if no definition materializes. -3. **Update semantics per resource** - PATCH vs PUT, partial vs full; label per the keycloak warning (no REPLACE without field-drop evidence). Owed in the inventory and phase 2 probes. -4. **Envelope/objectKey per resource** - `{model: ..., requestStatus: ...}` observed on model get; catalog search nests `results[].resources[]`. Systematic recording in the inventory from response schemas. -5. **openapi 3.1.0 handling** - nvcf and models sources are 3.1.0; the provider-utils split/normalize/generate chain is proven on 3.0.x (k8s). Any 3.1-specific breakage surfaces in the pilot (task 7) and is handled in pre_normalize as a deterministic downgrade of the affected constructs. +1. **Catalog search served but definition unreachable** - the public search surface (`/v2/search/catalog/...`) is wire-proven but the Search API definition is not publicly retrievable; blocked-on-key probe (Blocked item 13) or the operation stays out of v1 with a reason code if no definition materializes. Phase 2. +2. **Update semantics per resource** - every PUT is mapped `UPDATE` and every op noted "PUT semantics unverified" in the inventory, except `registry.artifacts.replace` (PUT with a PATCH twin, proposed `REPLACE` - the dockerhub PUT-with-PATCH-twin rule) which still needs the single-field field-drop probe before it keeps `REPLACE`. Phase 2 live probes per the keycloak method. +3. **Authorizations list envelope** - the inventory derives `$.functions` as the objectKey for `nvcf_functions.authorizations.list`, which reads odd for a grants list; verify the wire shape (mock capture from the spec examples, live if NVCF enabled) before generation. +4. **openapi 3.1.0 through normalize/generate** - 3.1 sources passed split/analyze in the pilot; normalize and generate are unexercised (out of phase 1 scope). Any breakage is handled in `pre_normalize` as a deterministic downgrade of the affected constructs. Phase 2. +5. **Teams CRUD vs the deprecation schedule** - team-scoped twins (resources under `/team/{team}`) are skipped citing the 2026-09 schedule, but teams CRUD itself (`/v2/org/{org}/teams...`) and the newer v3 team-user endpoints (nca-invitations) are mapped/skipped by the same blanket rule; confirm against the published deprecation schedule page whether teams-as-a-resource survives. The drift job should watch that page. +6. **v3 vs v2 org-creation flows** - `orgs.create` maps `POST /v3/orgs` and `proto_orgs` maps the NCA proto-org flow; whether a classic (non-NCA) org create exists for customers is unconfirmed (the v2 create lives under the skipped super-admin controllers). + +## Phase 2 obligations recorded + +- `pre_normalize.mjs`: per-service server stamp (Resolved item 7) and the `/v1` -> `/v2` gateway path rewrite for registry/catalog (Resolved item 5). +- Integration tests: mock servers for both hosts serving captured wire shapes (catalog reads captured live already; NVCF shapes from spec examples, marked accordingly); assert list unwrapping per the envelope table (Resolved item 10), org-scoped routing, the function/version INSERT/UPDATE/DELETE lifecycle with a deployment round trip, the authorizations grants round trip (mock-first; live only if NVCF enabled), and the bearer header on every request. +- Smoke tiers per Blocked item 14; the credential-free catalog smoke runs on every CI build (dockerhub precedent). +- Live probes owed once a key exists: bearer verification, authenticated spec endpoints, NVCF enablement, page-size defaults, PUT field-drop semantics. +- CI drift job: `fetch-specs.sh --check` against the pins plus the deprecation schedule page. diff --git a/README.md b/README.md index 674366e..ccd0bbc 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,25 @@ npm run generate-mappings -- --provider-name nvidia --input-dir provider-dev/sou node provider-dev/scripts/map_operations.mjs ``` -`map_operations.mjs` populates the StackQL resource/method/verb columns in `provider-dev/config/all_services.csv`, driven by rules. It validates that every generator-relevant operation is mapped or explicitly skipped with a reason code, that method names are unique per resource, and that overloaded SQL verbs have unique required-parameter signatures - and fails without writing on any violation. +`map_operations.mjs` populates the StackQL resource/method/verb columns in `provider-dev/config/all_services.csv` from the endpoint inventory (`provider-dev/config/endpoint_inventory.csv`, produced by `build_inventory.mjs` - the single source of truth for classification). It validates that every generator-relevant operation is mapped or explicitly skipped with a reason code, that method names are unique per resource, and that overloaded SQL verbs have unique required-parameter signatures - and fails without writing on any violation. + +## Service Coverage + +489 upstream operations inventoried (54 NVCF, 435 NGC core); 221 mapped (101 select, 40 insert, 29 update, 32 delete, 3 replace, 16 exec), 268 skipped with reason codes (141 deprecated team-scoped twins per the NGC deprecation schedule, 36 deprecated-inline, 34 internal-admin, 23 service-infra, 22 data-plane file transfer, 12 other), 81 resources across 7 services: + +| Service | Resources | Contents | +|---|---|---| +| `orgs` | 8 | organizations, teams, users, role grants, invitations, current user | +| `registry` | 32 | org-scoped artifact metadata: models, resources, recipes, helm chart versions, collections, shares, encryption keys | +| `catalog` | 21 | guest artifact metadata reads plus the GPU and CSP catalogs | +| `nvcf_functions` | 7 | functions, versions, metadata, authorizations (sharing grants), secrets, rate limits | +| `nvcf_deployments` | 7 | deployments, GPU specs, cluster groups and GPUs, registry credentials, telemetries | +| `nvcf_queues` | 2 | queue details, queue position | +| `nvcf_invocation` | 4 | HTTP-polling invocation (pexec + status), assets, assertion tokens | + +**Public reads need no auth.** Catalog artifact metadata and the GPU catalog serve unauthenticated (wire-proven) - start there before any account setup. Function sharing maps as grants-as-data: authorize = `INSERT`, list = `SELECT`, revoke = `DELETE`. + +Engineering findings, open questions and phase 2 obligations are in [NOTES.md](NOTES.md). ## License From 274b574ae4c75d004c73e83fa9f0bd8e1fee3fcf Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Fri, 25 Sep 2026 21:04:35 +1000 Subject: [PATCH 09/17] feat: finish the nvidia provider - make pipeline, refreshed specs, org template, tests, docs, CI Phase 2 refresh on the supabase / k8s pattern: - Makefile as the operator surface (make all / upgrade / build / test / smoke* / docs / website); latest @stackql/provider-utils 0.7.10 and @stackql/pgwire-lite 1.0.2; the provider-utils CLI entry points as npm scripts; Docusaurus 3.10.2 microsite with showLastUpdateTime - upstream refresh accepted and pinned: NVCF 2.256.0, NGC API definition v3.249.17 (served by the public gateway), the models definition with vendor response schemas and the new NIM metadata endpoint; the explorer moved to a hosted platform so the harvester carries the pinned URL catalogue; downloads written as canonical JSON (the servers are not byte-stable); the ngcsdk 4.36.6 wheel parsed into response schemas as the recorded fallback for response-less operations - deterministic clean rules (v2 gateway prefix, snake_case path params, mismatched parameter names, cookie and prose parameters) - endpoint inventory as the single source of truth: org-scope rebase onto path-level server templates (org_name via x-stackQL-envVar NGC_ORG), per-service hosts, casing, pagination, objectKey rules; the deprecation schedule applied precisely (NVCF-family /teams/{team} skipped, Private Registry team scoping mapped as *_by_team methods) - service registry renamed private_registry (reserved word) - post-processing: server templates, nativeCasing camel/kebab, page_number pagination + LIMIT pushdown, opaque body wrapper, scalar-list and invocation-status transforms, media type fixes - tests: offline validation, mock NGC + NVCF integration suite (both hosts, bearer enforced, 44 assertions), meta-route walk (338 methods, 83 resources), tiered pystackql smoke suite with --live and the gated NVCF deploy lifecycle - docs: landing page with the GPU inventory / fleet state / sharing audit / registry estate queries, sanitize-docs with snake_case parameter rendering and resource recount; CI with drift gate, gated smoke and the weekly upstream + deprecation-page drift job - all_services.csv committed as the durable mapping record; README, CLAUDE.md and NOTES.md rewritten with the evidence Co-Authored-By: Claude Fable 5.1 --- .env.example | 34 + .gitattributes | 10 + .github/workflows/build-and-test.yml | 165 + .github/workflows/prod-web-deploy.yml | 58 + .github/workflows/test-web-deploy.yml | 31 + .gitignore | 18 + CLAUDE.md | 167 +- Makefile | 160 + NOTES.md | 71 +- README.md | 256 +- bin/fetch-specs.sh | 17 +- bin/generate-docs.mjs | 44 - bin/generate-docs.sh | 63 - bin/generate-mappings.mjs | 42 - bin/generate-mappings.sh | 83 - bin/generate-provider.mjs | 70 - bin/generate-provider.sh | 134 - bin/normalize.mjs | 56 - bin/normalize.sh | 9 - bin/split.mjs | 122 +- bin/split.sh | 9 - bin/start-server.sh | 91 +- package-lock.json | 76 +- package.json | 19 +- provider-dev/config/all_services.csv | 547 +- provider-dev/config/clean_report.json | 57 +- provider-dev/config/deprecation_schedule.json | 95 + provider-dev/config/endpoint_inventory.csv | 996 +- provider-dev/config/servers.json | 11 + provider-dev/config/service_names.json | 35 +- provider-dev/config/spec_pin.json | 34 +- .../docgen/provider-data/headerContent1.txt | 24 + .../docgen/provider-data/headerContent2.txt | 233 + provider-dev/downloaded/.gitkeep | 0 provider-dev/downloaded/cleaned/ngc_kas.json | 19621 +++--- .../downloaded/cleaned/ngc_models.json | 51990 ++++++++------- .../downloaded/cleaned/nvcf_openapi.json | 10841 ++-- .../downloaded/download_manifest.json | 70 +- provider-dev/downloaded/ngc_kas.json | 22940 ++++++- provider-dev/downloaded/ngc_models.json | 52585 +++++++++++++++- provider-dev/downloaded/ngc_sdk_schemas.json | 4852 ++ provider-dev/downloaded/nvcf_openapi.json | 6147 +- provider-dev/openapi/src/nvidia/.gitkeep | 0 .../src/nvidia/v00.00.00000/provider.yaml | 96 + .../v00.00.00000/services/catalog.yaml} | 11905 ++-- .../services/nvcf_deployments.yaml | 2302 + .../v00.00.00000/services/nvcf_functions.yaml | 1955 + .../services/nvcf_invocation.yaml | 1264 + .../v00.00.00000/services/nvcf_queues.yaml | 228 + .../nvidia/v00.00.00000/services/orgs.yaml | 6214 ++ .../services/private_registry.yaml | 20908 ++++++ provider-dev/scripts/build_inventory.mjs | 644 +- .../scripts/check_deprecation_page.mjs | 52 + provider-dev/scripts/clean_specs.mjs | 346 +- provider-dev/scripts/fetch_nvcf_spec.mjs | 4 +- .../scripts/harvest_ngc_sdk_schemas.mjs | 222 + provider-dev/scripts/harvest_ngc_spec.mjs | 163 +- provider-dev/scripts/lib/canonical.mjs | 19 + provider-dev/scripts/lib/inventory.mjs | 78 + provider-dev/scripts/map_operations.mjs | 144 +- provider-dev/scripts/pin_specs.mjs | 30 + provider-dev/scripts/post_process.mjs | 295 + provider-dev/scripts/pre_normalize.mjs | 109 + provider-dev/scripts/service_rules.mjs | 71 +- provider-dev/source/.gitkeep | 0 provider-dev/source/catalog.yaml | 7918 ++- provider-dev/source/nvcf_deployments.yaml | 2513 +- provider-dev/source/nvcf_functions.yaml | 1981 +- provider-dev/source/nvcf_invocation.yaml | 1342 +- provider-dev/source/nvcf_queues.yaml | 167 +- provider-dev/source/orgs.yaml | 4786 +- provider-dev/source/private_registry.yaml | 17588 ++++++ tests/integration/mock_nvidia_server.mjs | 369 + tests/integration/probe.mjs | 55 + tests/integration/registry.mjs | 58 + tests/integration/run_integration_tests.mjs | 239 + tests/offline_validation.mjs | 142 + tests/smoke_test.py | 354 + website/.gitignore | 23 + website/.gitkeep | 0 website/README.md | 41 + website/docs/index.md | 282 + .../artifact_deployment_params/index.md | 457 + .../services/catalog/artifact_files/index.md | 263 + .../services/catalog/artifact_specs/index.md | 284 + .../docs/services/catalog/artifacts/index.md | 794 + .../catalog/collection_artifacts/index.md | 583 + .../services/catalog/collections/index.md | 624 + .../catalog/csp_deployment_params/index.md | 363 + .../csp_deployment_params_meta/index.md | 314 + website/docs/services/catalog/csps/index.md | 457 + website/docs/services/catalog/gpus/index.md | 875 + .../catalog/helm_chart_versions/index.md | 659 + website/docs/services/catalog/index.md | 52 + .../services/catalog/model_files/index.md | 257 + .../services/catalog/model_versions/index.md | 875 + website/docs/services/catalog/models/index.md | 936 + .../services/catalog/nim_metadata/index.md | 157 + .../services/catalog/recipe_files/index.md | 257 + .../services/catalog/recipe_versions/index.md | 875 + .../docs/services/catalog/recipes/index.md | 840 + .../services/catalog/resource_files/index.md | 257 + .../catalog/resource_versions/index.md | 875 + .../docs/services/catalog/resources/index.md | 840 + .../nvcf_deployments/cluster_groups/index.md | 152 + .../deployment_gpu_specs/index.md | 115 + .../nvcf_deployments/deployments/index.md | 451 + .../docs/services/nvcf_deployments/index.md | 38 + .../recognized_registries/index.md | 122 + .../registry_credentials/index.md | 446 + .../nvcf_deployments/telemetries/index.md | 342 + .../telemetry_secrets/index.md | 105 + .../nvcf_functions/authorizations/index.md | 446 + .../nvcf_functions/function_ids/index.md | 128 + .../nvcf_functions/function_metadata/index.md | 115 + .../function_ratelimits/index.md | 142 + .../nvcf_functions/function_secrets/index.md | 111 + .../nvcf_functions/function_versions/index.md | 759 + .../nvcf_functions/functions/index.md | 481 + website/docs/services/nvcf_functions/index.md | 38 + .../services/nvcf_invocation/assets/index.md | 286 + .../docs/services/nvcf_invocation/index.md | 35 + .../invocation_status/index.md | 128 + .../nvcf_invocation/invocations/index.md | 150 + .../services/nvcf_invocation/tokens/index.md | 158 + website/docs/services/nvcf_queues/index.md | 33 + .../nvcf_queues/queue_positions/index.md | 140 + .../docs/services/nvcf_queues/queues/index.md | 210 + .../docs/services/orgs/current_user/index.md | 440 + website/docs/services/orgs/index.md | 42 + website/docs/services/orgs/orgs/index.md | 691 + .../docs/services/orgs/proto_orgs/index.md | 288 + website/docs/services/orgs/roles/index.md | 152 + .../services/orgs/team_invitations/index.md | 339 + .../services/orgs/team_member_roles/index.md | 178 + .../docs/services/orgs/team_members/index.md | 709 + website/docs/services/orgs/teams/index.md | 355 + .../services/orgs/user_invitations/index.md | 326 + .../docs/services/orgs/user_roles/index.md | 167 + website/docs/services/orgs/users/index.md | 1081 + .../artifact_catalog_flags/index.md | 205 + .../artifact_collections/index.md | 468 + .../artifact_deployment_params/index.md | 795 + .../artifact_deployments/index.md | 276 + .../private_registry/artifact_files/index.md | 250 + .../artifact_product_shares/index.md | 274 + .../private_registry/artifact_shares/index.md | 238 + .../artifact_signatures/index.md | 142 + .../private_registry/artifact_specs/index.md | 534 + .../artifact_version_configs/index.md | 148 + .../artifact_versions/index.md | 140 + .../private_registry/artifacts/index.md | 1703 + .../collection_artifacts/index.md | 1002 + .../collection_product_shares/index.md | 184 + .../private_registry/collections/index.md | 1079 + .../private_registry/encryption_keys/index.md | 372 + .../helm_chart_versions/index.md | 715 + .../docs/services/private_registry/index.md | 62 + .../license_acceptances/index.md | 180 + .../model_encryption_keys/index.md | 126 + .../private_registry/model_files/index.md | 250 + .../private_registry/model_shares/index.md | 298 + .../private_registry/model_versions/index.md | 1217 + .../services/private_registry/models/index.md | 1583 + .../private_registry/recipe_files/index.md | 250 + .../private_registry/recipe_versions/index.md | 1154 + .../private_registry/recipes/index.md | 1414 + .../repository_associated_models/index.md | 865 + .../private_registry/resource_files/index.md | 250 + .../resource_versions/index.md | 1154 + .../private_registry/resources/index.md | 1414 + .../private_registry/workflows/index.md | 258 + website/docusaurus.config.js | 44 + website/package.json | 73 + website/provider.js | 2 + website/scripts/sanitize-docs.mjs | 224 + website/sidebars.js | 15 + .../components/CopyableCode/CopyableCode.js | 29 + .../src/components/HomepageFeatures/index.js | 64 + .../HomepageFeatures/styles.module.css | 11 + .../src/components/SchemaTable/SchemaTable.js | 49 + .../SchemaTable/SchemaTable.module.css | 27 + .../StackqlDeployDropdown.js | 400 + .../StackqlDeployDropdown.module.css | 12 + website/src/css/global.css | 287 + website/src/theme/DocBreadcrumbs/index.js | 12 + website/src/theme/Footer/Copyright/index.tsx | 20 + website/src/theme/Footer/Layout/index.tsx | 34 + website/src/theme/Footer/LinkItem/index.tsx | 36 + .../theme/Footer/Links/MultiColumn/index.tsx | 51 + .../src/theme/Footer/Links/Simple/index.tsx | 42 + website/src/theme/Footer/Links/index.tsx | 21 + website/src/theme/Footer/Logo/index.tsx | 46 + .../src/theme/Footer/Logo/styles.module.css | 16 + website/src/theme/Footer/index.tsx | 262 + website/src/theme/Footer/styles.module.css | 16 + website/src/theme/Logo/index.d.ts | 9 + website/src/theme/Logo/index.js | 76 + .../.gitkeep => website/static/.nojekyll | 0 website/static/CNAME | 1 + website/static/apple-touch-icon.png | Bin 0 -> 7748 bytes website/static/favicon-16x16.png | Bin 0 -> 872 bytes website/static/favicon-32x32.png | Bin 0 -> 1533 bytes website/static/favicon.ico | Bin 0 -> 15086 bytes website/static/img/docusaurus-social-card.jpg | Bin 0 -> 55746 bytes website/static/img/docusaurus.png | Bin 0 -> 5142 bytes website/static/img/favicon-16x16.png | Bin 0 -> 872 bytes website/static/img/favicon-32x32.png | Bin 0 -> 1533 bytes website/static/img/favicon.ico | Bin 0 -> 15086 bytes website/static/img/logo.svg | 1 + website/static/img/stackql-cover.png | Bin 0 -> 29955 bytes website/static/img/stackql-featured-image.png | Bin 0 -> 29955 bytes ...stackql-nvidia-provider-featured-image.png | Bin 0 -> 29955 bytes .../img/stackql-registry-logo-mobile.svg | 3 + .../stackql-registry-logo-white-mobile.svg | 3 + .../img/stackql-registry-logo-white.svg | 1 + website/static/img/stackql-registry-logo.svg | 1 + .../static/img/undraw_docusaurus_mountain.svg | 171 + .../static/img/undraw_docusaurus_react.svg | 170 + website/static/img/undraw_docusaurus_tree.svg | 40 + website/static/safari-pinned-tab.svg | 27 + website/static/site.webmanifest | 11 + website/yarn.lock | 11022 ++++ 223 files changed, 259462 insertions(+), 52450 deletions(-) create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .github/workflows/build-and-test.yml create mode 100644 .github/workflows/prod-web-deploy.yml create mode 100644 .github/workflows/test-web-deploy.yml create mode 100644 Makefile delete mode 100644 bin/generate-docs.mjs delete mode 100644 bin/generate-docs.sh delete mode 100644 bin/generate-mappings.mjs delete mode 100644 bin/generate-mappings.sh delete mode 100644 bin/generate-provider.mjs delete mode 100644 bin/generate-provider.sh delete mode 100644 bin/normalize.mjs delete mode 100644 bin/normalize.sh delete mode 100644 bin/split.sh create mode 100644 provider-dev/config/deprecation_schedule.json create mode 100644 provider-dev/config/servers.json create mode 100644 provider-dev/docgen/provider-data/headerContent1.txt create mode 100644 provider-dev/docgen/provider-data/headerContent2.txt delete mode 100644 provider-dev/downloaded/.gitkeep create mode 100644 provider-dev/downloaded/ngc_sdk_schemas.json delete mode 100644 provider-dev/openapi/src/nvidia/.gitkeep create mode 100644 provider-dev/openapi/src/nvidia/v00.00.00000/provider.yaml rename provider-dev/{source/registry.yaml => openapi/src/nvidia/v00.00.00000/services/catalog.yaml} (55%) create mode 100644 provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml create mode 100644 provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_functions.yaml create mode 100644 provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_invocation.yaml create mode 100644 provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_queues.yaml create mode 100644 provider-dev/openapi/src/nvidia/v00.00.00000/services/orgs.yaml create mode 100644 provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml create mode 100644 provider-dev/scripts/check_deprecation_page.mjs create mode 100644 provider-dev/scripts/harvest_ngc_sdk_schemas.mjs create mode 100644 provider-dev/scripts/lib/canonical.mjs create mode 100644 provider-dev/scripts/lib/inventory.mjs create mode 100644 provider-dev/scripts/post_process.mjs create mode 100644 provider-dev/scripts/pre_normalize.mjs delete mode 100644 provider-dev/source/.gitkeep create mode 100644 provider-dev/source/private_registry.yaml create mode 100644 tests/integration/mock_nvidia_server.mjs create mode 100644 tests/integration/probe.mjs create mode 100644 tests/integration/registry.mjs create mode 100644 tests/integration/run_integration_tests.mjs create mode 100644 tests/offline_validation.mjs create mode 100644 tests/smoke_test.py create mode 100644 website/.gitignore delete mode 100644 website/.gitkeep create mode 100644 website/README.md create mode 100644 website/docs/index.md create mode 100644 website/docs/services/catalog/artifact_deployment_params/index.md create mode 100644 website/docs/services/catalog/artifact_files/index.md create mode 100644 website/docs/services/catalog/artifact_specs/index.md create mode 100644 website/docs/services/catalog/artifacts/index.md create mode 100644 website/docs/services/catalog/collection_artifacts/index.md create mode 100644 website/docs/services/catalog/collections/index.md create mode 100644 website/docs/services/catalog/csp_deployment_params/index.md create mode 100644 website/docs/services/catalog/csp_deployment_params_meta/index.md create mode 100644 website/docs/services/catalog/csps/index.md create mode 100644 website/docs/services/catalog/gpus/index.md create mode 100644 website/docs/services/catalog/helm_chart_versions/index.md create mode 100644 website/docs/services/catalog/index.md create mode 100644 website/docs/services/catalog/model_files/index.md create mode 100644 website/docs/services/catalog/model_versions/index.md create mode 100644 website/docs/services/catalog/models/index.md create mode 100644 website/docs/services/catalog/nim_metadata/index.md create mode 100644 website/docs/services/catalog/recipe_files/index.md create mode 100644 website/docs/services/catalog/recipe_versions/index.md create mode 100644 website/docs/services/catalog/recipes/index.md create mode 100644 website/docs/services/catalog/resource_files/index.md create mode 100644 website/docs/services/catalog/resource_versions/index.md create mode 100644 website/docs/services/catalog/resources/index.md create mode 100644 website/docs/services/nvcf_deployments/cluster_groups/index.md create mode 100644 website/docs/services/nvcf_deployments/deployment_gpu_specs/index.md create mode 100644 website/docs/services/nvcf_deployments/deployments/index.md create mode 100644 website/docs/services/nvcf_deployments/index.md create mode 100644 website/docs/services/nvcf_deployments/recognized_registries/index.md create mode 100644 website/docs/services/nvcf_deployments/registry_credentials/index.md create mode 100644 website/docs/services/nvcf_deployments/telemetries/index.md create mode 100644 website/docs/services/nvcf_deployments/telemetry_secrets/index.md create mode 100644 website/docs/services/nvcf_functions/authorizations/index.md create mode 100644 website/docs/services/nvcf_functions/function_ids/index.md create mode 100644 website/docs/services/nvcf_functions/function_metadata/index.md create mode 100644 website/docs/services/nvcf_functions/function_ratelimits/index.md create mode 100644 website/docs/services/nvcf_functions/function_secrets/index.md create mode 100644 website/docs/services/nvcf_functions/function_versions/index.md create mode 100644 website/docs/services/nvcf_functions/functions/index.md create mode 100644 website/docs/services/nvcf_functions/index.md create mode 100644 website/docs/services/nvcf_invocation/assets/index.md create mode 100644 website/docs/services/nvcf_invocation/index.md create mode 100644 website/docs/services/nvcf_invocation/invocation_status/index.md create mode 100644 website/docs/services/nvcf_invocation/invocations/index.md create mode 100644 website/docs/services/nvcf_invocation/tokens/index.md create mode 100644 website/docs/services/nvcf_queues/index.md create mode 100644 website/docs/services/nvcf_queues/queue_positions/index.md create mode 100644 website/docs/services/nvcf_queues/queues/index.md create mode 100644 website/docs/services/orgs/current_user/index.md create mode 100644 website/docs/services/orgs/index.md create mode 100644 website/docs/services/orgs/orgs/index.md create mode 100644 website/docs/services/orgs/proto_orgs/index.md create mode 100644 website/docs/services/orgs/roles/index.md create mode 100644 website/docs/services/orgs/team_invitations/index.md create mode 100644 website/docs/services/orgs/team_member_roles/index.md create mode 100644 website/docs/services/orgs/team_members/index.md create mode 100644 website/docs/services/orgs/teams/index.md create mode 100644 website/docs/services/orgs/user_invitations/index.md create mode 100644 website/docs/services/orgs/user_roles/index.md create mode 100644 website/docs/services/orgs/users/index.md create mode 100644 website/docs/services/private_registry/artifact_catalog_flags/index.md create mode 100644 website/docs/services/private_registry/artifact_collections/index.md create mode 100644 website/docs/services/private_registry/artifact_deployment_params/index.md create mode 100644 website/docs/services/private_registry/artifact_deployments/index.md create mode 100644 website/docs/services/private_registry/artifact_files/index.md create mode 100644 website/docs/services/private_registry/artifact_product_shares/index.md create mode 100644 website/docs/services/private_registry/artifact_shares/index.md create mode 100644 website/docs/services/private_registry/artifact_signatures/index.md create mode 100644 website/docs/services/private_registry/artifact_specs/index.md create mode 100644 website/docs/services/private_registry/artifact_version_configs/index.md create mode 100644 website/docs/services/private_registry/artifact_versions/index.md create mode 100644 website/docs/services/private_registry/artifacts/index.md create mode 100644 website/docs/services/private_registry/collection_artifacts/index.md create mode 100644 website/docs/services/private_registry/collection_product_shares/index.md create mode 100644 website/docs/services/private_registry/collections/index.md create mode 100644 website/docs/services/private_registry/encryption_keys/index.md create mode 100644 website/docs/services/private_registry/helm_chart_versions/index.md create mode 100644 website/docs/services/private_registry/index.md create mode 100644 website/docs/services/private_registry/license_acceptances/index.md create mode 100644 website/docs/services/private_registry/model_encryption_keys/index.md create mode 100644 website/docs/services/private_registry/model_files/index.md create mode 100644 website/docs/services/private_registry/model_shares/index.md create mode 100644 website/docs/services/private_registry/model_versions/index.md create mode 100644 website/docs/services/private_registry/models/index.md create mode 100644 website/docs/services/private_registry/recipe_files/index.md create mode 100644 website/docs/services/private_registry/recipe_versions/index.md create mode 100644 website/docs/services/private_registry/recipes/index.md create mode 100644 website/docs/services/private_registry/repository_associated_models/index.md create mode 100644 website/docs/services/private_registry/resource_files/index.md create mode 100644 website/docs/services/private_registry/resource_versions/index.md create mode 100644 website/docs/services/private_registry/resources/index.md create mode 100644 website/docs/services/private_registry/workflows/index.md create mode 100644 website/docusaurus.config.js create mode 100644 website/package.json create mode 100644 website/provider.js create mode 100644 website/scripts/sanitize-docs.mjs create mode 100644 website/sidebars.js create mode 100644 website/src/components/CopyableCode/CopyableCode.js create mode 100644 website/src/components/HomepageFeatures/index.js create mode 100644 website/src/components/HomepageFeatures/styles.module.css create mode 100644 website/src/components/SchemaTable/SchemaTable.js create mode 100644 website/src/components/SchemaTable/SchemaTable.module.css create mode 100644 website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js create mode 100644 website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css create mode 100644 website/src/css/global.css create mode 100644 website/src/theme/DocBreadcrumbs/index.js create mode 100644 website/src/theme/Footer/Copyright/index.tsx create mode 100644 website/src/theme/Footer/Layout/index.tsx create mode 100644 website/src/theme/Footer/LinkItem/index.tsx create mode 100644 website/src/theme/Footer/Links/MultiColumn/index.tsx create mode 100644 website/src/theme/Footer/Links/Simple/index.tsx create mode 100644 website/src/theme/Footer/Links/index.tsx create mode 100644 website/src/theme/Footer/Logo/index.tsx create mode 100644 website/src/theme/Footer/Logo/styles.module.css create mode 100644 website/src/theme/Footer/index.tsx create mode 100644 website/src/theme/Footer/styles.module.css create mode 100644 website/src/theme/Logo/index.d.ts create mode 100644 website/src/theme/Logo/index.js rename provider-dev/config/.gitkeep => website/static/.nojekyll (100%) create mode 100644 website/static/CNAME create mode 100644 website/static/apple-touch-icon.png create mode 100644 website/static/favicon-16x16.png create mode 100644 website/static/favicon-32x32.png create mode 100644 website/static/favicon.ico create mode 100644 website/static/img/docusaurus-social-card.jpg create mode 100644 website/static/img/docusaurus.png create mode 100644 website/static/img/favicon-16x16.png create mode 100644 website/static/img/favicon-32x32.png create mode 100644 website/static/img/favicon.ico create mode 100644 website/static/img/logo.svg create mode 100644 website/static/img/stackql-cover.png create mode 100644 website/static/img/stackql-featured-image.png create mode 100644 website/static/img/stackql-nvidia-provider-featured-image.png create mode 100644 website/static/img/stackql-registry-logo-mobile.svg create mode 100644 website/static/img/stackql-registry-logo-white-mobile.svg create mode 100644 website/static/img/stackql-registry-logo-white.svg create mode 100644 website/static/img/stackql-registry-logo.svg create mode 100644 website/static/img/undraw_docusaurus_mountain.svg create mode 100644 website/static/img/undraw_docusaurus_react.svg create mode 100644 website/static/img/undraw_docusaurus_tree.svg create mode 100644 website/static/safari-pinned-tab.svg create mode 100644 website/static/site.webmanifest create mode 100644 website/yarn.lock diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..930a1c6 --- /dev/null +++ b/.env.example @@ -0,0 +1,34 @@ +# Live smoke-test credentials (copy to .env - gitignored - and fill in). +# `make smoke` and the other smoke targets source .env when present. Never +# point this at a production organization. +# +# The variable names are the ones the NVIDIA Terraform provider +# (NVIDIA/terraform-provider-ngc) reads, so one environment serves both. + +# NGC Personal API Key (NGC console -> Setup -> Generate Personal API Key). +# Service scopes needed: Private Registry for the registry service, and +# Cloud Functions at the ORGANIZATION level for the nvcf_* services (a key +# with a team-level Cloud Functions role does not work with NVCF - NVIDIA's +# own documentation warns about this). The provider sends it as +# `Authorization: Bearer`. +NGC_API_KEY=nvapi-... + +# NGC organization name (the org id shown under Organization -> Setup, e.g. +# 0123456789ab). Resolves the org_name server variable so org-scoped queries +# (registry, orgs) need no WHERE org_name clause; the smoke suite runs +# against this org. +NGC_ORG=0123456789ab + +# Optional: a team in the org. Only used by the smoke suite to exercise the +# *_by_team registry methods; leave unset to skip them. +# NGC_TEAM= + +# Optional, `make smoke-nvcf` only: the container image the gated deploy +# lifecycle deploys (an image in this org's private registry - the NVCF +# echo sample or any small HTTP container). Without it the deploy step is +# skipped with a notice; the undeployed function lifecycle (free) still +# runs whenever Cloud Functions is enabled for the org. GPU minutes on the +# deployed function are billable - the lifecycle uses the smallest instance +# type of the first cluster group, stays well under $1, and always tears +# down. +# NVCF_SMOKE_CONTAINER_IMAGE=nvcr.io/0123456789ab/echo:latest diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6817939 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +# Normalize line endings: everything text is LF in the repo and on checkout +# (the shell scripts and node scripts run under WSL/Linux CI). +* text=auto eol=lf +*.png binary +*.ico binary +*.jpg binary +*.gif binary +*.woff binary +*.woff2 binary +*.whl binary diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..f6f8a50 --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,165 @@ +name: build-and-test + +# Build the nvidia provider from the committed spec pins and run every +# credential-free test layer on each push / PR; the live smoke suite runs +# only where the NGC secrets are configured (never the NVCF deploy +# lifecycle - that is `make smoke-nvcf`, run deliberately); a scheduled +# drift job re-downloads the upstream inputs (the NVCF spec, the NGC API +# explorer definitions, the ngcsdk wheel) and diffs them against the pins, +# and checks the NGC deprecation schedule page for changes. + +on: + push: + branches: [main, 'feature/**'] + paths-ignore: ['website/**'] + pull_request: + branches: [main] + paths-ignore: ['website/**'] + schedule: + - cron: '17 3 * * 1' # weekly upstream drift check (Monday 03:17 UTC) + workflow_dispatch: + +jobs: + build-and-test: + if: github.event_name != 'schedule' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + # puts the latest stackql on PATH; bin/start-server.sh and the test + # runners resolve it from there + - name: Install stackql + uses: stackql/setup-stackql@v2 + + - name: stackql version + run: stackql --version + + - name: Build provider from the committed pins (pin check, clean, inventory, split, mappings, normalize, generate, post-process) + run: make build + + - name: Fail on uncommitted generation drift + run: | + git add -N . + if ! git diff --quiet -- provider-dev/openapi provider-dev/config provider-dev/source; then + echo "Generated output differs from the committed artifacts - run 'make build' and commit (a diff in provider-dev/config/all_services.csv is a mapping change: review it as a breaking-change candidate)." + git diff --stat -- provider-dev/openapi provider-dev/config provider-dev/source + exit 1 + fi + + - name: Offline validation + run: make test-offline + + - name: Integration tests (mock NGC + NVCF) + run: make test-integration + + - name: Meta-route tests + run: make test-meta + + - name: Generate docs (sanity - the site build runs on the web workflows) + run: make docs + + smoke: + # secret-gated live smoke suite against a test organization; skipped + # with a notice when the secrets are not configured (forks, PRs from + # outside). The NVCF deploy lifecycle is NOT run here - trigger it + # deliberately with `make smoke-nvcf`. + runs-on: ubuntu-latest + needs: build-and-test + if: github.event_name != 'pull_request' && github.event_name != 'schedule' + env: + NGC_API_KEY: ${{ secrets.NGC_API_KEY }} + NGC_ORG: ${{ secrets.NGC_ORG }} + NGC_TEAM: ${{ secrets.NGC_TEAM }} + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: npm + + - uses: actions/setup-python@v7 + with: + python-version: '3.12' + + - name: Install dependencies + run: npm ci + + - name: Live smoke suite (catalog + org/registry reads, cheap write lifecycles, NVCF reads where enabled) + if: env.NGC_API_KEY != '' + run: make smoke + + - name: Live smoke skipped (no credentials) + if: env.NGC_API_KEY == '' + run: | + echo "::notice title=Live smoke suite skipped::NGC_API_KEY / NGC_ORG secrets are not configured - the live smoke suite did not run. Credential-free coverage still ran via the mock-server integration suite." + + upstream-drift: + # Re-download every upstream input and diff against the pins on a + # schedule and on demand; check the NGC deprecation schedule page for + # changes; open an issue when anything moves. NVIDIA serves unversioned + # definitions, so drift is expected and must be reviewed, never silent. + runs-on: ubuntu-latest + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + permissions: + contents: read + issues: write + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Fetch upstream inputs and compare against the pins + id: drift + run: | + set +e + make fetch-specs > fetch.log 2>&1 + rc=$? + set -e + cat fetch.log + if [ "$rc" -eq 0 ]; then + echo "drift=false" >> "$GITHUB_OUTPUT" + else + echo "drift=true" >> "$GITHUB_OUTPUT" + git diff --stat -- provider-dev/downloaded > drift.txt || true + cat drift.txt + fi + + - name: Check the NGC deprecation schedule page + id: deprecation + run: | + node provider-dev/scripts/check_deprecation_page.mjs > deprecation.log 2>&1 || echo "changed=true" >> "$GITHUB_OUTPUT" + cat deprecation.log + + - name: Report drift + if: steps.drift.outputs.drift == 'true' || steps.deprecation.outputs.changed == 'true' + uses: actions/github-script@v9 + with: + script: | + const fs = require('fs'); + const stat = fs.existsSync('drift.txt') ? fs.readFileSync('drift.txt', 'utf8') : ''; + const dep = fs.existsSync('deprecation.log') ? fs.readFileSync('deprecation.log', 'utf8') : ''; + const title = 'NVIDIA NGC / NVCF upstream drift detected'; + const body = 'One or more upstream inputs no longer match the pins in provider-dev/config/spec_pin.json, or the NGC deprecation schedule page changed.\n\nSpec drift:\n```\n' + (stat || '(none)') + '\n```\nDeprecation page:\n```\n' + dep + '\n```\nRun `make upgrade` (refresh-specs, build, test, docs, website), review the generated diff - new or removed operations, mapping changes in all_services.csv, new deprecation families in build_inventory.mjs - update NOTES.md, and commit.'; + await core.summary.addHeading(title).addCodeBlock(stat + '\n' + dep).write(); + const { data: issues } = await github.rest.issues.listForRepo({ + owner: context.repo.owner, repo: context.repo.repo, state: 'open', labels: 'upstream-drift' + }); + if (issues.some(i => i.title === title)) return; + await github.rest.issues.create({ + owner: context.repo.owner, repo: context.repo.repo, title, body, labels: ['upstream-drift'] + }); diff --git a/.github/workflows/prod-web-deploy.yml b/.github/workflows/prod-web-deploy.yml new file mode 100644 index 0000000..7b950ed --- /dev/null +++ b/.github/workflows/prod-web-deploy.yml @@ -0,0 +1,58 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - main + paths: + - 'website/**' + +jobs: + build: + name: Build Docusaurus + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 0 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: yarn + cache-dependency-path: website/yarn.lock + + - name: Install dependencies + run: yarn install --frozen-lockfile + working-directory: website + + - name: Build website + run: yarn build + working-directory: website + + - name: Upload Build Artifact + uses: actions/upload-pages-artifact@v5 + with: + path: website/build # Ensure the path is correctly set to the Docusaurus build output + + deploy: + name: Deploy to GitHub Pages + needs: build + + # Grant GITHUB_TOKEN the permissions required to make a Pages deployment + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + # Deploy to the github-pages environment + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 + with: + working-directory: website/build # Ensures the correct directory is used for deployment diff --git a/.github/workflows/test-web-deploy.yml b/.github/workflows/test-web-deploy.yml new file mode 100644 index 0000000..64df0d3 --- /dev/null +++ b/.github/workflows/test-web-deploy.yml @@ -0,0 +1,31 @@ +name: Test deployment + +on: + pull_request: + branches: + - main + paths: + - 'website/**' + +jobs: + test-deploy: + name: Test deployment + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 0 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: yarn + cache-dependency-path: website/yarn.lock + + - name: Install dependencies + run: yarn install --frozen-lockfile + working-directory: website + + - name: Test build website + run: yarn build + working-directory: website \ No newline at end of file diff --git a/.gitignore b/.gitignore index 343bfcb..c5345d0 100644 --- a/.gitignore +++ b/.gitignore @@ -148,3 +148,21 @@ stackql.exe stackql-server.log meta-routes*.log .stackql/ + +# python (smoke suite venv, bytecode) +.venv/ +venv/ +__pycache__/ +*.py[cod] + +# pinned PyPI wheel cached by harvest_ngc_sdk_schemas.mjs (the derived +# ngc_sdk_schemas.json IS committed) +*.whl + +# integration test registry copy (recreated each run) +tests/integration/.registry-tmp/ + +# website build artifacts and the vendored shared config +website/build/ +website/.docusaurus/ +website/.shared-config/ diff --git a/CLAUDE.md b/CLAUDE.md index eff21e1..0fe84b3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,154 +2,91 @@ ## Project -This repository builds and documents the `nvidia` provider for [StackQL](https://github.com/stackql/stackql), enabling SQL-based query and provisioning operations against the NVIDIA NGC platform - organizations, users, the private registry and catalog (containers, models, resources, helm charts), and NVIDIA Cloud Functions (NVCF: functions, versions, deployments, cluster groups, GPUs, queues). +This repository builds and documents the `nvidia` provider for [StackQL](https://github.com/stackql/stackql), enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, generic artifacts such as containers and helm charts, versions and files, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. -**Sibling scope notes, recorded so they are never relitigated**: Run:ai (published OpenAPI, its own control plane) and DGX Cloud Lepton are reserved future siblings, out of scope here. The NIM/API-catalog inference endpoints (`integrate.api.nvidia.com`, OpenAI-compatible) are a data-plane LLM surface, not a control plane - out of scope. NVCF function *invocation* is scoped by the inventory (see design principles); streaming and gRPC invocation forms are skipped per the standing exclusions. +**Scope notes, recorded so they are never relitigated**: Run:ai and DGX Cloud Lepton have their own control planes and are reserved future siblings. The NIM / API-catalog inference endpoints (`integrate.api.nvidia.com`) are a data-plane LLM surface, out of scope. Artifact binary push/pull is the registry data plane, skipped (`data-plane-file-transfer`). Streaming and gRPC invocation forms are not in the published spec; the HTTP-polling form is mapped (`nvcf_invocation`). Fleet Command, Base Command batch, subscription/billing and notification definitions are out of scope (recorded in `download_manifest.json`). -The provider is built using the `@stackql/provider-utils` package and follows the repository pattern established in [`stackql-registry/stackql-provider-k8s`](https://github.com/stackql-registry/stackql-provider-k8s/tree/feature/provider-dev) (branch `feature/provider-dev`). Sibling-build NOTES.md findings are reused, not re-derived - dockerhub (registry-shaped resources, public-read surface), proxmox/vsphere (mock-first CI where live access is gated), snowflake/prefect (body-driven invocation decision frameworks), oci (deprecation-aware mapping). +The provider is a hybrid build: paths, parameters and request bodies come from the vendor's published definitions (archetype 1), response schemas for the registry surface come from the pinned `ngcsdk` Python wheel's data classes (archetype 2, response side only). The reference implementation for structure, scripts, tests and docs is [`stackql-provider-supabase`](../../S/stackql-provider-supabase) (which followed [`stackql-provider-k8s`](../../K/stackql-provider-k8s), branch `feature/provider-dev`); sibling-build NOTES.md findings are reused, not re-derived. nvidia-specific findings live in [NOTES.md](NOTES.md) - read it before changing a mapping. ## Positioning context -There is no Terraform provider for the NGC/NVCF control plane - and the reason is structural, not neglect: the Terraform model requires a Go SDK to vendor, and NVIDIA's ecosystem is Python-first (the NGC CLI and `ngcsdk` are Python; no stable Go SDK exists). StackQL's build chain has no language binding in it - spec -> provider - so this domain is reachable where the resource/state model cannot follow without someone first authoring a Go client. This provider is the proof case for that argument; the README states it once, factually, and the docs otherwise lead with capability statements and runnable examples, never editorializing. The query surfaces that matter: GPU and cluster-group inventory, NVCF function fleet state, registry/model estate audit, and org membership - the AI infrastructure control plane as data. +NVIDIA publishes a Go Terraform provider ([`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc)) covering NVCF functions and telemetry endpoints (one resource and one data source each). State that once, factually. This provider's counter is mechanical completeness from the published definitions (338 operations, 7 services, 83 resources) and the query surfaces that matter: GPU and cluster-group inventory, NVCF fleet state by deployment specification, function sharing audits, registry estate reports, org membership - the AI infrastructure control plane as data. Capability statements and runnable examples, never editorializing. -## Spec sources: one published, one harvested +## Spec sources (three, all pinned) -Two sources, resolved and pinned in phase 1: +1. **NVCF** - `https://api.nvcf.nvidia.com/v3/openapi` (openapi 3.1.0, linked from the NVCF API docs). Management operations are served from `api.ngc.nvidia.com`, queue details and invocation from `api.nvcf.nvidia.com`; the host is carried per service (`nvcf_queues`, `nvcf_invocation` on the nvcf host). +2. **NGC core** - two definitions harvested from the API explorer at `docs.ngc.nvidia.com/api/` (`harvest_ngc_spec.mjs` extracts the definition list from the explorer's JS bundle): `ngc_kas.json` (orgs, teams, users; served relative to `api.ngc.nvidia.com`) and `ngc_models.json` (the Private Artifacts (Models) API: registry and catalog artifact metadata; declared on `models.ngc.nvidia.com/v1/...`, served publicly at `api.ngc.nvidia.com/v2/...` - the clean step rewrites the prefix). +3. **ngcsdk** - the models definition declares no 2xx response on 303 of 333 operations. `harvest_ngc_sdk_schemas.mjs` downloads the `ngcsdk` wheel from PyPI (pinned version + sha256), parses `registry/data/model/*.py` into JSON Schema (`ngc_sdk_schemas.json`, committed), and `clean_specs.mjs` attaches them as 200 responses by an operationId rule table (`SDK_RESPONSE_CLASSES`). A SELECT method left on the bare `Response` envelope fails the inventory, so a new read endpoint must be added to the table deliberately. -1. **NVCF** - a published OpenAPI spec (linked from the NVCF documentation, with a companion Postman collection), covering function management, deployments, cluster groups and GPUs, queue details, and authorizations. Record the canonical spec URL, fetch, validate, pin. Management operations are served from `api.ngc.nvidia.com/v2/nvcf`; invocation/queue-detail operations from `api.nvcf.nvidia.com` - two hosts, carried per operation (the elasticsearch per-service-server precedent, here per-method-group). -2. **NGC core** - the API reference at `docs.ngc.nvidia.com/api/` is a spec-driven explorer whose underlying definition is currently flagged as lacking a standard version field. Phase 1 harvests that definition, and `clean_specs.mjs` normalizes it (stamp/repair the version field, whatever else swagger-parser flags) with a full fix report. **Fallback, as a recorded decision only if the harvest proves unusable**: derive the NGC core spec from the `ngcsdk` Python SDK (archetype 2) - the decision and evidence go in `provider-dev/config/spec_pin.json` either way. +Pins (URL, date, sha256) are in `provider-dev/config/spec_pin.json`; the downloads are committed (NVIDIA versions none of these URLs). `make fetch-specs` re-downloads and fails on drift; `make refresh-specs` accepts it (review the diff). The weekly CI job also snapshots the NGC deprecation schedule page (`check_deprecation_page.mjs`, `deprecation_schedule.json`). -**Deprecation-aware mapping**: NVIDIA publishes a formal NGC API deprecation schedule - notably, team-scoped paths (`/teams/{team}` segments) end September 2026. Org-scoped paths are mapped; team-scoped twins are skipped with a `deprecated` reason code citing the schedule. The pin-and-diff CI job watches the deprecation page as well as the specs. +## Design decisions (settled - see NOTES.md for the evidence) -## Design principles - -- **Bearer auth, NGC Personal API Key** - `Authorization: Bearer` with `NGC_API_KEY`. The docs cover key generation with the required service scopes (Private Registry, and Cloud Functions at the *organization* level - NVIDIA's own docs warn team-level roles break NVCF keys), and note the legacy-key type exists but personal keys are the documented path. Key scopes are static (no rotation of scope) - noted for users. -- **Org scoping** - registry and org resources live under `/v2/org/{org_name}/...`; `org_name` is the universal scoping parameter (the `compartmentId` role). Catalog/public reads may work without org scope (and possibly without auth - the dockerhub public-read precedent; confirm in phase 1 and, if so, lead the docs with the zero-setup entry point). -- **NVCF is the flagship service** - functions and versions (CRUD), deployment specifications (GPU type, instance counts - deep config blobs), cluster groups and GPUs (`SELECT` inventory - the GPU estate demo), queues, and authorizations (function sharing as the grants-as-data pattern: authorize = `INSERT`, list = `SELECT`, revoke = `DELETE`). -- **Invocation is scoped, not assumed** - HTTP-polling invocation (`invoke` returning a request ID, poll for status) may map as `EXEC` plus a status `SELECT` per the proxmox async precedent if the shapes are clean; streaming/gRPC forms are reason-coded skips. The inventory decides with the snowflake/prefect frameworks; management-first is the v1 posture. -- **Registry resources are metadata** - container images, models, resources, and helm charts map as metadata reads (and writes where the API supports them); artifact binary push/pull is the registry data plane, skipped per the standing exclusions (the dockerhub scope precedent). -- **Pagination is an inventory question** - NGC/NVCF pagination idioms are recorded per resource from the specs and confirmed live; no assumption carries from siblings. +- **Bearer auth from `NGC_API_KEY`** (an NGC Personal API Key) - the NVIDIA Terraform provider's and the NGC CLI's variable. Two fixed hosts. +- **Org scope is a path-level server variable** - `bin/split.mjs` rebases every org-scoped operation (leading `/v2/org/{org_name}`, `/v3/orgs/{org_name}`, `/v2/artifact-registry/org/{org_name}`) onto the remainder path; `post_process.mjs` attaches a path-item `servers` template carrying `org_name` with `x-stackQL-envVar: NGC_ORG` (the Terraform variable; the clickhouse / supabase / godaddy precedent). A `WHERE org_name` value beats the environment; unset, `org_name` is required. NVCF paths carry no org (the key implies it). +- **Deprecation schedule as a build input** - NVIDIA's NGC deprecated API reference ends `/teams/{team}` scoping for NVCF, NVCT, FNDS, Skyway, SIS, SI, PYM, Infinity Manager and GDN on 2026-09-30; `SCHEDULED_DEPRECATIONS` in `build_inventory.mjs` skips those families (`deprecated-schedule-2026-09-30`). Private Registry (and Data Services) team scoping is explicitly exempt, so registry/org team-scoped paths are mapped: `*_by_team` methods on the same resources (they add `team_name` to the signature), and `team_members` / `team_member_roles` / `team_invitations` resources in `orgs`. +- **The service is `private_registry`, not `registry`** - `registry` is a reserved word in the StackQL grammar (`REGISTRY PULL`). +- **snake_case surface** - `snake_case_aliases: true` on the provider config plus `request.nativeCasing` on every method: `camel` (NVCF, JSON bodies) or `kebab` (NGC core query parameters such as `page-size`), decided per method by the inventory column `native_casing`. +- **Pagination** - NGC core collections page with zero-based `page-number` + `page-size` and echo `paginationInfo {index, totalPages}`; `post_process` configures any-sdk's `page_number` algorithm per list method and pushes `LIMIT` to `page-size`. NVCF collections are unpaginated. +- **objectKey** - list envelopes unwrap their array property, entity envelopes their object property; when several qualify the property named after the resource wins (`modelVersion` for `model_versions`). Entities with array fields (GPU catalog rows) get none. +- **Opaque bodies and scalar lists** - the pexec invocation body is a `{body}` wrapper plus request transform; `function_ids` and the invocation status body are re-shaped by response transforms. +- **Verbs** - GET list/get `SELECT`, POST create `INSERT`, PATCH/PUT `UPDATE` (PUT is not `REPLACE` without field-drop evidence - keycloak rule; the one PUT with a PATCH twin, `artifacts.replace`, is `REPLACE`), DELETE `DELETE`, actions `EXEC`; grants-as-data for authorizations, shares, roles and team membership (add = `INSERT`, remove = `DELETE`). +- **Skip codes** (160 operations): `service-infra`, `internal-admin`, `deprecated-inline`, `superseded-by-v3-twin`, `non-generator-http-verb`, `data-plane-file-transfer`, `non-json-response`, `non-projectable-response`, `legacy-twin`, `duplicate-endpoint-family`, `inbound-webhook-not-client-api`, `deprecated-schedule-2026-09-30`. ## Toolchain rules -- Use the **latest** `@stackql/provider-utils` (see [npm](https://www.npmjs.com/package/@stackql/provider-utils)). Check for a newer version before starting work; do not pin to an old minor. -- Node.js >= 20. `type: module` in package.json. -- Wrap the two CLI entry points (`provider-dev-utils.mjs`, `docgen-utils.mjs`) as npm scripts, invoked through `node` (not `.bin` shims). Pass flags with npm's `--` separator. -- A local `stackql` binary is required for testing (`$STACKQL`, `./stackql`, or on `PATH`). +- Use the **latest** `@stackql/provider-utils` and `@stackql/pgwire-lite` (check npm before starting work; do not pin to an old minor). Node.js >= 20, `type: module`. +- Docusaurus 3.10.x for the microsite; `showLastUpdateTime` is flipped on in `website/docusaurus.config.js`. +- WSL is the execution environment on this machine (GNU make, bash, a `stackql` binary on PATH, Python 3, yarn). Node steps also run from Windows. +- The two CLI entry points (`provider-dev-utils.mjs`, `docgen-utils.mjs`) are npm scripts invoked through `node`; the Makefile is the operator surface (`make help`). ## Repository layout -``` -provider-dev/ - downloaded/ # pinned NVCF spec + harvested NGC core definition - source/ # cleaned + split per-service specs (build artifacts) - config/ # spec pins (incl harvest/fallback decision), service names, all_services.csv - openapi/src/nvidia/ # generated provider output - scripts/ # harvest_ngc_spec.mjs, clean_specs.mjs, map_operations.mjs, pre_normalize.mjs, post_process.mjs -bin/ # thin shell/node wrappers for npm scripts (mirror k8s repo) -tests/ - integration/ # mock NGC/NVCF servers (both hosts) + row-level assertions - fixtures/ # seed definitions for UAT objects - smoke_test.py # pystackql smoke suite -website/ # Docusaurus 3.10 microsite -CLAUDE.md -README.md # k8s-README style, steps 0-8, incl the Go-SDK positioning note and sibling notes -``` + Makefile # the pipeline: make all / make upgrade / make test / make smoke ... + bin/ # fetch-specs.sh, split.mjs, server lifecycle, test-meta-routes.cjs + provider-dev/ + downloaded/ # pinned NVCF spec, harvested NGC definitions, ngc_sdk_schemas.json (all committed), cleaned/ + config/ # spec_pin.json, servers.json, service_names.json, endpoint_inventory.csv, all_services.csv, clean_report.json, deprecation_schedule.json + scripts/ # fetch_nvcf_spec, harvest_ngc_spec, harvest_ngc_sdk_schemas, pin_specs, clean_specs, build_inventory, service_rules, map_operations, pre_normalize, post_process, check_deprecation_page, lib/inventory + source/ # split + normalized per-service specs (build artifacts, committed) + openapi/src/nvidia # generated provider output (committed) + docgen/provider-data # headerContent1.txt / headerContent2.txt (landing page) + tests/ + offline_validation.mjs + integration/ # mock_nvidia_server.mjs (both hosts), run_integration_tests.mjs, registry.mjs, probe.mjs + smoke_test.py # pystackql live suite (--live, --read-only, --with-nvcf-deploy, --cleanup-only) + website/ # Docusaurus microsite (shared stackql/docusaurus-config vendored at build) + .github/workflows/ # build-and-test.yml (pin check, build, drift gate, 3 test layers, gated smoke, weekly upstream drift), web deploys ## Build pipeline -Every step is deterministic and re-runnable. Manual mapping decisions are applied as rules in scripts, never hand-edits to CSVs or specs. Validate-and-fail-without-writing is the standard for every script. - -### 0. Acquire, pin, clean - -`bin/fetch-specs.sh` + `harvest_ngc_spec.mjs` per the spec-sources section; `clean_specs.mjs` normalizes the harvested definition (version-field repair first) and validates both sources with `@apidevtools/swagger-parser`, with per-source fix reports. Fail without writing on anything unfixable; the archetype-2 fallback is a recorded decision, not a silent switch. - -### 1. Split into service specs - -`npm run split` with `--provider-name nvidia`. Final service split (decided from the endpoint inventory 2026-07-14, recorded in `provider-dev/config/service_names.json`; assignment rules in `provider-dev/scripts/service_rules.mjs` are driven by the inventory CSV): - -`orgs` (organizations, teams, users, role grants, invitations, current user), `registry` (org-scoped artifact metadata: models, resources, recipes, helm chart versions, collections, shares, encryption keys), `catalog` (guest artifact metadata reads plus GPU and CSP catalogs - confirmed distinct from registry: different path families and auth posture), `nvcf_functions` (functions, versions, metadata, authorizations, secrets, rate limits), `nvcf_deployments` (deployments, GPU specs, cluster groups, registry credentials, telemetries), `nvcf_queues` (queue details, position), `nvcf_invocation` (added vs the candidate list: pexec polling invocation, assets, assertion tokens - all served from `api.nvcf.nvidia.com`). No `usage` service: no billing/measurement surface exists in the harvest (the Subscription Service definition is not publicly retrievable; recorded in `download_manifest.json`). - -### 2. Generate mappings - -`npm run generate-mappings`, then `node provider-dev/scripts/map_operations.mjs`: - -| Operation pattern | StackQL verb | Resource / method | -|---|---|---| -| GET collection | `SELECT` | `.list` (envelope/objectKey per resource from the specs) | -| GET single | `SELECT` | `.get` | -| POST create | `INSERT` | `.create` | -| PATCH/PUT update (semantics per resource; keycloak REPLACE warning applies) | `UPDATE`/`REPLACE` per finding | `.update` | -| DELETE | `DELETE` | `.delete` | -| function authorization add / remove | `INSERT` / `DELETE` | `nvcf_functions.authorizations` - grants-as-data | -| deployment create / update / delete | `INSERT`/`UPDATE`/`DELETE` | `nvcf_deployments.deployments` (deployment specs as blobs) | -| HTTP-polling invocation (if scoped in) | `EXEC` + status `SELECT` | per the proxmox async precedent | -| streaming/gRPC invocation, artifact binary transfer | skipped | reason-coded | -| team-scoped path twins | skipped | `deprecated`, citing the schedule | - -Resource names are plural snake_case (`functions`, `function_versions`, `cluster_groups`, `gpus`, `models`, `helm_charts`), consistent with the sibling builds. The script validates: every generator-relevant operation mapped or explicitly skipped with a reason code, method names unique per resource, overloaded SQL verbs have unique required-parameter signatures. Fail without writing on any violation. - -### 3. Normalize +`make all` runs deps -> fetch-specs (drift check) -> pin-check -> clean-specs -> inventory -> split -> mappings -> pre-normalize -> normalize -> generate (+ post-process) -> test-offline -> test-integration -> test-meta -> docs -> website. Every step is deterministic and re-runnable; manual mapping decisions are rules in `build_inventory.mjs` (the classify functions), response-class rules in `clean_specs.mjs`, and fixes in `pre_normalize.mjs` / `post_process.mjs` - never hand-edits to CSVs, specs or generated output. `endpoint_inventory.csv` is the single source of truth every later step reads (service, resource, method, verb, objectKey, host, org rebase, casing, pagination). `all_services.csv` is committed as the durable record of every operation -> resource.method mapping; `map_operations.mjs` prints the diff against the committed file, and a diff there is a breaking-change review, not noise. Validate-and-fail-without-writing is the standard for every script. -`node provider-dev/scripts/pre_normalize.mjs` (harvest-specific quirks from the clean report), then `npm run normalize -- --api-dir provider-dev/source`. Expect deployment specifications, model metadata, and GPU/cluster attributes lowered to JSON-blob columns addressed with `json_extract`. +## Tests -### 4. Generate the provider - -```bash -rm -rf provider-dev/openapi/* -npm run generate-provider -- \ - --provider-name nvidia \ - --input-dir provider-dev/source \ - --output-dir provider-dev/openapi/src/nvidia \ - --config-path provider-dev/config/all_services.csv \ - --provider-config '{"auth": {"type": "bearer", "credentialsenvvar": "NGC_API_KEY"}}' \ - --naive-req-body-translate \ - --overwrite -``` - -Servers carried per operation group (`api.ngc.nvidia.com` / `api.nvcf.nvidia.com` - both fixed literals, no dotted-host concern). Pagination config per the inventory findings, at service level. Then `node provider-dev/scripts/post_process.mjs` for whatever the integration tests surface. - -### 5. Test - -Same four layers as the k8s repo, in order - mock-first for NVCF, per the proxmox/vsphere precedent, because NVCF requires org-level enablement that a free NGC account may lack: - -1. **Offline validation** - local file registry, `SHOW SERVICES/RESOURCES/METHODS`, `DESCRIBE EXTENDED` on representative resources (`nvidia.nvcf_functions.functions`, `nvidia.nvcf_deployments.gpus`, `nvidia.registry.models`) -2. **Meta-route tests** - `npm run start-server` / `npm run test-meta-routes -- nvidia --verbose` / `npm run stop-server` -3. **Integration tests** - `tests/integration/mock_nvidia_server.mjs` (both hosts) serving real wire shapes (captured from live where accessible, from documentation examples otherwise, and marked accordingly); assert row-level results per archetype: list unwrapping per resource, org-scoped routing, a function/version `INSERT`/`UPDATE`/`DELETE` lifecycle with a deployment round trip, an authorization grants round trip, and the bearer key throughout -4. **Smoke tests** - `tests/smoke_test.py` (pystackql), tiered by access: catalog/public reads (and org/registry reads with a free NGC account) run whenever credentials allow; NVCF smokes run only where the org has Cloud Functions enabled, skip-with-notice otherwise (the vsphere capacity-degradation pattern); any function actually deployed in a smoke uses the smallest instance spec, `stackql-smoke-` naming, and is deleted within the run, breadcrumbs swept first +1. `make test-offline` - `SHOW`/`DESCRIBE` against the local file registry (services, resources, verbs, the `NGC_ORG` behaviour, snake aliases, transforms). +2. `make test-integration` - the mock NGC + NVCF API (`tests/integration/mock_nvidia_server.mjs`, real wire shapes, bearer enforced, both hosts) with row-level assertions per archetype. `tests/integration/probe.mjs ""` prints stackql output and the wire calls for ad-hoc binding checks. +3. `make test-meta` - the meta-route walk over a local server. +4. `make smoke` / `make smoke-live` / `make smoke-read-only` / `make smoke-nvcf` / `make smoke-cleanup` - live, from `.env` (`NGC_API_KEY`, `NGC_ORG`, optional `NGC_TEAM`). Tiered: public catalog, org/registry reads plus a free registry model lifecycle, NVCF reads plus an undeployed function lifecycle where Cloud Functions is enabled (auto-detected, skip-with-notice otherwise). Only the gated `smoke-nvcf` target deploys anything (smallest instance, always torn down). Never run tests against a production organization. -### 6. Publish - -Push the `nvidia` dir to `providers/src` in a feature branch of [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry) and follow the registry release flow. Verify with `registry pull nvidia` against the dev registry. - -### 7. Docs microsite - -`website/` is Docusaurus 3.10 following the shared architecture: shared `stackql/docusaurus-config` vendored to `.shared-config/`; site-local files limited to `website/provider.js` (`providerName = 'nvidia'`, `providerTitle = 'NVIDIA NGC'`), thin config wrappers, shared components, and `static/CNAME` pinning `nvidia-provider.stackql.io`. - -- Author `headerContent1.txt` / `headerContent2.txt` in `provider-dev/docgen/provider-data/` (installation, NGC Personal API Key generation with the org-level role warning, `NGC_API_KEY`, the org scoping pattern, the NVCF-enablement note, sibling notes, example queries) -- `npm run generate-docs`, then `node website/scripts/sanitize-docs.mjs` -- Publish via GitHub Pages, DNS: `nvidia-provider.stackql.io` CNAME -> `stackql.github.io.` - -Lead the docs examples with the queries this provider exists for: GPU and cluster-group inventory (what GPU capacity exists, where - the estate demo), NVCF function fleet state (functions by status, version, deployment spec, min/max instances - the GPU FinOps angle), function sharing audit (the authorizations grants query), model and container estate reports (registry contents by org, size, update recency), and one cross-provider join for the campaign: NVCF GPU allocations alongside the hyperscaler GPU instance inventory (`aws`/`azure`/`google`/`oci`) - the whole GPU estate, cloud and NGC, in one `SELECT`. - -### 8. CI +## Publish and docs -GitHub Actions: acquire + pin check + clean + build, integration tests against the mock, meta-route tests, the tiered smokes (public/registry ungated where a free-account secret exists; NVCF secret-gated). The drift job watches both specs and the deprecation schedule page. Model on the k8s repo's `build-and-test.yml`. +Push the `nvidia` dir to `providers/src` in a feature branch of [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry) and follow the registry release flow; verify with `registry pull nvidia` from the dev registry and `make smoke-live`. Docs: `make docs` (generate + sanitize) then `make website`; GitHub Pages with `nvidia-provider.stackql.io` CNAME -> `stackql.github.io.`. ## Writing conventions -- README and docs copy: measured, precise, no hyperbole. Third-person or passive framing for descriptive copy. The Go-SDK/Terraform structural point is stated once, factually, in the README positioning note - everywhere else, capability statements and runnable examples, never editorializing. +- README and docs copy: measured, precise, no hyperbole. Third-person or passive framing for descriptive copy. The Terraform provider is mentioned once, factually. - No em dashes; use `-`. No characters not on a QWERTY keyboard; use `->` for arrows. - Sample queries follow the k8s README style: realistic, runnable, `json_extract` for nested fields. ## Non-negotiables 1. Latest `@stackql/provider-utils`, always -2. The k8s `feature/provider-dev` repo is the reference pattern; sibling-build NOTES.md findings are reused, not re-derived - deviate only with a documented reason in the README -3. The harvest-vs-fallback decision for the NGC core spec is recorded with evidence - never a silent archetype switch -4. Team-scoped deprecated paths are never mapped - the deprecation schedule is a build input +2. The supabase / k8s repos are the reference pattern; sibling-build NOTES.md findings are reused, not re-derived - deviate only with a documented reason in NOTES.md +3. The three upstream inputs are pinned with evidence; the response-side SDK derivation is a recorded decision in `spec_pin.json` and `download_manifest.json`, never a silent switch +4. The deprecation schedule is a build input: scheduled families are never mapped, exempt families are never blanket-skipped 5. Deterministic scripts, never hand-edits to derived artifacts -6. Every regeneration is followed by the integration test suite before commit +6. Every regeneration is followed by `make test` before commit 7. Smoke tests never leave a deployed function running - a failed run must not leave GPU-billing resources behind diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a12b41e --- /dev/null +++ b/Makefile @@ -0,0 +1,160 @@ +# StackQL nvidia (NVIDIA NGC + NVIDIA Cloud Functions) provider build pipeline. +# +# Every step is deterministic and re-runnable; manual mapping decisions live +# in provider-dev/scripts, never in hand-edited artifacts. `make all` runs +# the full chain: fetch upstream specs (fails on drift against the pin) -> +# clean -> inventory -> split -> mappings -> pre-normalize -> normalize -> +# generate -> post-process -> offline + integration + meta-route tests -> +# docs -> website build. `make upgrade` is the same chain but accepts +# upstream changes (re-pins the specs) - review the resulting diff. +# `make smoke*` (live, needs credentials) is separate so `all` never +# touches a real account. +# +# Requirements: Node >= 20, GNU make, a stackql binary ($STACKQL, ./stackql +# or on PATH), Python 3 (a venv with pystackql is created on demand for the +# smoke suite), yarn for the website. Runs under Linux / WSL / macOS. +# +# Live credentials for the smoke suite (never committed - .env is +# gitignored; the smoke targets source it if present; see .env.example): +# NGC_API_KEY NGC Personal API Key (bearer) - the Terraform provider variable +# NGC_ORG NGC organization name (x-stackQL-envVar target for org_name) +# NGC_TEAM optional team for the *_by_team registry methods + +SHELL := bash +.DEFAULT_GOAL := help + +PROVIDER := nvidia +SERVICES_DIR := provider-dev/openapi/src/$(PROVIDER) +# Bearer auth from NGC_API_KEY; snake_case_aliases presents the camelCase +# wire properties (displayName, createdDate, ...) as snake_case columns, +# paired with request.nativeCasing (camel / kebab per method, set in +# post_process) so snake_case WHERE keys and body columns resolve. +PROVIDER_CONFIG := {"auth": {"type": "bearer", "credentialsenvvar": "NGC_API_KEY"}, "snake_case_aliases": true} +# NOTE: servers are per service (two hosts) and org-scoped paths ride a +# path-level server template - both come from the endpoint inventory (split +# + post_process), so no --servers / --service-config is passed here. +VENV := .venv +PY := $(VENV)/bin/python +ENV_FILE := .env + +.PHONY: help deps fetch-specs refresh-specs pin-check clean-specs inventory split mappings pre-normalize normalize generate post-process build \ + test-offline test-integration test-meta test venv smoke smoke-live smoke-read-only smoke-nvcf smoke-cleanup \ + docs website website-start clean all upgrade + +help: ## show this help + @grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-18s %s\n", $$1, $$2}' + +deps: ## install node dependencies (latest @stackql/provider-utils + @stackql/pgwire-lite per package.json ranges) + npm install + +# ---------------------------------------------------------------- pipeline + +fetch-specs: ## download the NVCF spec, harvest the NGC definitions + ngcsdk schemas, and verify against the pins (fails on drift) + npm run fetch-specs -- --check + +refresh-specs: ## download everything and ACCEPT the upstream change (rewrites the pins - review the diff) + npm run fetch-specs + +pin-check: ## verify the committed downloads against provider-dev/config/spec_pin.json (no network) + npm run pin-specs -- --check + +clean-specs: ## deterministic spec repairs (v2 gateway prefix, snake_case path params, SDK response injection) + swagger-parser validation + npm run clean-specs + +inventory: ## build provider-dev/config/endpoint_inventory.csv from the cleaned specs (every operation classified or skip-coded) + npm run build-inventory + +split: ## split the cleaned specs into per-service specs on their hosts, org-scoped paths rebased (provider-dev/source) + npm run split -- --provider-name $(PROVIDER) --overwrite + +mappings: ## regenerate all_services.csv from scratch and apply the inventory mappings (fails on unmapped ops; prints the mapping diff) + rm -f provider-dev/config/all_services.csv + npm run generate-mappings -- --provider-name $(PROVIDER) --input-dir provider-dev/source --output-dir provider-dev/config + npm run map-operations + +pre-normalize: ## nvidia-specific spec adjustments before the generic normalize pass + npm run pre-normalize + +normalize: ## generic provider-utils normalize pass (allOf flatten, opaque objects, param lifting, bare-array wrap) + npm run normalize -- --api-dir provider-dev/source + +generate: ## generate the provider (bearer auth, snake_case aliases, naive request body translate) + rm -rf provider-dev/openapi/* + npm run generate-provider -- \ + --provider-name $(PROVIDER) \ + --input-dir provider-dev/source \ + --output-dir $(SERVICES_DIR) \ + --config-path provider-dev/config/all_services.csv \ + --provider-config '$(PROVIDER_CONFIG)' \ + --naive-req-body-translate \ + --overwrite + $(MAKE) post-process + +post-process: ## re-apply generated-provider fixes (org server templates + NGC_ORG, casing, pagination, LIMIT pushdown, objectKeys) + npm run post-process + +build: pin-check clean-specs inventory split mappings pre-normalize normalize generate ## full spec -> provider pipeline from the committed pins + +# ------------------------------------------------------------------- tests + +test-offline: ## quick offline validation against the local file registry (SHOW / DESCRIBE, NGC_ORG behaviour) + npm run test-offline + +test-integration: ## row-level integration tests against the mock NGC + NVCF servers (no account required) + npm run test-integration + +test-meta: ## meta-route suite against a local stackql server (walks every service/resource/method) + npm run start-server -- --provider $(PROVIDER) --registry "$$(pwd)/provider-dev/openapi" + npm run test-meta-routes -- $(PROVIDER) || (npm run stop-server; exit 1) + npm run stop-server + +test: test-offline test-integration test-meta ## all non-live test layers + +$(VENV)/bin/activate: + python3 -m venv $(VENV) + $(VENV)/bin/pip install --quiet --upgrade pip pystackql + +venv: $(VENV)/bin/activate ## create the python venv with pystackql for the smoke suite + +# smoke targets source .env when present so a developer checkout works +# without exporting anything; CI sets variables from secrets. +with_env = set -a; [ -f $(ENV_FILE) ] && source <(tr -d '\r' < $(ENV_FILE)); set +a; + +smoke: venv ## live smoke suite with the locally generated provider - catalog + org/registry reads, cheap write lifecycles (needs NGC_API_KEY, NGC_ORG) + @$(with_env) $(PY) tests/smoke_test.py + +smoke-live: venv ## live smoke suite against the PUBLISHED provider in the stackql registry (post-publish verification) + @$(with_env) $(PY) tests/smoke_test.py --live + +smoke-read-only: venv ## live read smokes only, no writes + @$(with_env) $(PY) tests/smoke_test.py --read-only + +smoke-nvcf: venv ## live suite INCLUDING the gated NVCF function deploy lifecycle (billable GPU minutes, smallest instance, always torn down) + @$(with_env) $(PY) tests/smoke_test.py --with-nvcf-deploy + +smoke-cleanup: venv ## sweep stackql-smoke-* breadcrumbs (functions, registry artifacts) and exit + @$(with_env) $(PY) tests/smoke_test.py --cleanup-only + +# -------------------------------------------------------------------- docs + +docs: ## generate the website docs (snake_case surface), then sanitize for MDX v3 + npm run generate-docs -- \ + --provider-name $(PROVIDER) \ + --provider-dir ./$(SERVICES_DIR)/v00.00.00000 \ + --output-dir ./website \ + --provider-data-dir ./provider-dev/docgen/provider-data \ + --snake-case-aliases + npm run sanitize-docs + +website: ## build the docusaurus microsite (vendors shared config first) + cd website && yarn install && yarn build + +website-start: ## run the docusaurus dev server + cd website && yarn install && yarn start + +clean: ## remove regenerable artifacts (provider output, docs, website build, test registry copy) + rm -rf provider-dev/openapi/* website/build website/.docusaurus website/docs tests/integration/.registry-tmp + +all: deps fetch-specs build test docs website ## everything non-live: deps, upstream drift check, pipeline, tests, docs, site build + +upgrade: deps refresh-specs build test docs website ## accept upstream spec changes (re-pin), then the full pipeline, tests, docs and site build diff --git a/NOTES.md b/NOTES.md index 7ea97c8..84691f7 100644 --- a/NOTES.md +++ b/NOTES.md @@ -1,58 +1,59 @@ -# Engineering Notes +# Engineering Notes -Phase 1 scope: spec acquisition (NVCF pin + NGC harvest), auth verification, endpoint inventory across both sources, mapping groundwork on three pilot services. Wire evidence is live against `api.ngc.nvidia.com` and `api.nvcf.nvidia.com` (2026-07-14, unauthenticated probes only - see Blocked). Spec pins in `provider-dev/config/spec_pin.json`: NVCF 2.245.1 (sha256 b79060bf...), ngc_kas v3.249.6 (dcaf78b0...), ngc_models 0.0.1-SNAPSHOT placeholder (7541d8f6...). +Phase 1 (2026-07-14) acquired and pinned the specs, verified the public-read posture on the wire, built the endpoint inventory and piloted the mapping. Phase 2 (2026-09-25) refreshed the toolchain (`@stackql/provider-utils` 0.7.10, `@stackql/pgwire-lite` 1.0.2, Docusaurus 3.10.2), converted the pipeline to `make`, resolved the response-schema gap in the harvested models definition, corrected the deprecation rule, added the org server template, the casing/pagination/pushdown wiring, the mock-backed integration suite, the offline validation, the tiered smoke suite, the docs microsite and CI. Live verification against an NGC organization is still owed (item 21). -Sibling findings reused, not re-derived: dockerhub (public-read classification, `auth_declared` vs `observed_public_read` inventory columns, zero-setup docs lead), proxmox (EXEC returns request id + status SELECT, mock-first CI with secret-gated live smoke), vsphere (blocked-on-lab gating - harness exercised to its error paths when the live target is absent, offline phases proceed), keycloak (PUT is not REPLACE without field-drop evidence; numbered `## Open` list format). +Sibling findings reused, not re-derived: supabase (the project-scope server template with `x-stackQL-envVar`, root-path server overrides in post_process, the offline validation and mock-server integration layers, `--live` smokes, the weekly drift job), k8s (mock-first CI, the meta-route walk, `snake_case_aliases` + `nativeCasing`), clickhouse (org-scoped server template without a default), godaddy (path-level server templates with an env-var variable; the `kindOf` request transform), dockerhub (public-read classification), proxmox (EXEC returns a request id + status SELECT), vsphere (skip-with-notice gating), keycloak (PUT is not REPLACE without evidence), vercel (opaque body wrapper + transform). ## Resolved -1. **NVCF spec source - ANSWERED, live.** The OpenAPI Spec link on https://docs.nvidia.com/nvcf/api resolves to https://api.nvcf.nvidia.com/v3/openapi (served by the NVCF API itself; a companion Postman collection is referenced from the same documentation set). openapi 3.1.0, version 2.245.1, 35 paths / 54 operations. swagger-parser 12.1.0 validates it clean with no repairs. +1. **NVCF spec source - live.** `https://api.nvcf.nvidia.com/v3/openapi` (openapi 3.1.0, version 2.245.1, 35 paths / 54 operations), linked from https://docs.nvidia.com/nvcf/api. swagger-parser validates it clean. Pinned by sha256 in `spec_pin.json`. -2. **NGC harvest - ANSWERED, usable after cleaning.** The explorer at docs.ngc.nvidia.com/api/ is a swagger-ui over 11 displayed per-service definitions; the {url, name} list is extracted deterministically from its JS bundle. Publicly retrievable and in scope: `ngc_kas.json` ("NGC API Documentation" v3.249.6 - orgs, teams, users, invitations, 77 paths; the explorer labels it "KASv1 API (Deprecated)" but it is the only public orgs/users definition) and `ngc_models.json` ("Models API" - registry artifact metadata, 231 paths). Five in-scope definitions (Org Mgmt, User IAM, Search, Metadata, Publishing) resolve in DNS but refuse public connections - recorded in `download_manifest.json`. The "lacking a standard version field" flag materialized as: models carries a `0.0.1-SNAPSHOT` placeholder (noted, left as-is), kas declares a relative server `/` (repaired to `https://api.ngc.nvidia.com` by rule). The ngcsdk archetype-2 fallback is NOT invoked; decision and evidence in `spec_pin.json`. +2. **NGC harvest - usable; the explorer moved, the definitions did not.** In phase 1 the explorer at docs.ngc.nvidia.com/api/ was a swagger-ui over per-service definitions listed in its JS bundle. By 2026-09-25 the explorer is a hosted ReadMe site with no definition list in its pages, but the definition URLs the bundle declared still serve, and the NGC API definition is also served by the public gateway (`https://api.ngc.nvidia.com/v3/api-docs`, identical bytes to the internal host). `harvest_ngc_spec.mjs` now carries that catalogue as pinned URLs (with fallbacks) instead of scraping the bundle. Two in-scope definitions are publicly retrievable: `ngc_kas.json` (orgs/teams/users, v3.249.17, 77 paths, 102 operations, every one with a typed 2xx response) and `ngc_models.json` (registry and catalog artifact metadata, 232 paths, 334 operations). Five in-scope definitions (Org Mgmt, User IAM, Search, Metadata, Publishing) refuse public connections (the gateway answers 401 for the search and meta docs) - recorded in `download_manifest.json`. -3. **NVCF two-host split - ANSWERED from documentation.** The published spec declares a single server (`https://api.nvcf.nvidia.com`), but the NVCF documentation states the primary domain for function management is `api.ngc.nvidia.com` and the NVCF domain for function invocation and queue details is `api.nvcf.nvidia.com`. Both hosts return 401 (route exists) for `/v2/nvcf/functions` unauthenticated. Host is carried per operation group; per-operation assignment in `endpoint_inventory.csv`. +3. **The models definition was response-less in July; the ngcsdk fallback covered the response side, and stays as the safety net.** The 2026-07-14 harvest declared no 2xx response on 303 of 333 models operations (4 `*Response` schemas in total); provider-utils `generate` refuses an operation without a 2xx, and a SELECT without a response schema projects nothing. The `ngcsdk` wheel on PyPI (4.36.6, sha256 `8cf4ce3b...`) ships auto-generated data classes for exactly this API (`registry/data/model/*.py`: `Model`, `ModelListResponse`, `ArtifactVersionFileListResponse`, `PaginationInfo`, ...; "auto-generated by main/tools/jsonparser"). `harvest_ngc_sdk_schemas.mjs` parses 149 classes into JSON Schema (typed property by property from the setter guards; enum modules skipped) and `clean_specs.mjs` merges the classes the definition lacks into `components.schemas` and attaches a 200 response to every response-less operation by an operationId rule (`SDK_RESPONSE_CLASSES`). The 2026-09-25 harvest of the same URL declares a 2xx response on every operation (127 schemas), so the rule now injects nothing and the vendor's own response schemas drive the mapping; the SDK derivation remains the recorded fallback (`spec_pin.json` `ngcSdk`, `download_manifest.json`) and `build_inventory.mjs` still fails on any SELECT method left on the bare `Response` envelope. Response naming differences between the SDK classes and the vendor schemas were absorbed by the objectKey rules (item 14). -4. **Public-read hypothesis - CONFIRMED, wire-proven (the dockerhub precedent holds).** Unauthenticated (2026-07-14): - - `GET /v2/search/catalog/resources/{type}?q={"query":"pytorch","pageSize":2}` -> 200 with full rows (`resultTotal: 22`). The `q` parameter is a JSON query object; a bare string is a 400. - - `GET /v2/models/{org}/{name}` and `.../versions` -> 200 for public artifacts (`canGuestDownload: true` in the payload). Envelope `{"model": {...}, "requestStatus": {...}}`. - - Org-scoped registry reads (`/v2/org/{org}/models/{name}`, and the models-host `/v1/org/...` originals) -> 401. `/v2/orgs`, `/v2/users/me`, `/v2/nvcf/*` -> 401. - The zero-setup entry point for the docs is catalog search + guest artifact metadata. +4. **Gateway v1 -> v2 rewrite - applied in clean, confirmed by the SDK.** The models definition declares `/v1/...` on `models.ngc.nvidia.com`; the public gateway serves the same operations at `api.ngc.nvidia.com/v2/...` (phase-1 probes; the SDK's endpoint builders are `v2/org/{org}/models`, `v2/org/{org}/helm-charts/...`, `v2/artifact-registry/org/{org}/encryption-keys`, `v2/csps`; the Terraform provider's model URIs are `/v2/org/nvidia/team/nemo/models/...`). Rule `gateway-v2-path-prefix` rewrites 228 paths and the server. -5. **Gateway v1 -> v2 path rewrite - ANSWERED, wire-proven.** The harvested models spec declares `/v1/...` paths on `models.ngc.nvidia.com`; the public gateway serves the same operations at `api.ngc.nvidia.com/v2/...` (search responses echo `"instance": "/v1/search/..."` for `/v2/search/...` requests; `/v2/models/{org}/{name}` serves 200 where the spec path is `/v1/models/{org-name}/{name}`; the org-scoped twins 401 rather than 404 on both hosts/prefixes). Decision: the provider targets `api.ngc.nvidia.com` with the `/v1` -> `/v2` prefix rewrite applied at clean/pre-normalize time, so all NGC core operations ride one public host. +5. **Public reads - wire-proven (phase 1).** Unauthenticated `GET /v2/models`, `/v2/models/{org}/{name}`, `/versions`, `/v2/recipes`, `/v2/resources`, `/v2/collections`, `/v2/gpus`, `/v2/{artifact_type}` return 200; org-scoped registry reads, `/v2/orgs`, `/v2/users/me`, `/v2/nvcf/*` return 401. The `/v2/gpus` body is a bare array (normalize wraps it). The provider's bearer config still requires `NGC_API_KEY` to be set for any query; any value works for the public reads (documented). -6. **Auth error envelopes - observed.** `api.ngc.nvidia.com` returns `{"requestStatus": {"statusCode": "UNAUTHORIZED", ...}}` with 401; `api.nvcf.nvidia.com` returns an empty 401 body. Useful for integration-test assertions. +6. **Deprecation schedule - corrected in phase 2.** The authoritative page is https://docs.nvidia.com/ngc/latest/ngc-deprecated-api.html: on 2026-09-30 NVIDIA ends team-scoped (`/teams/{team}`) paths for NVCF, NVCT, FNDS, Skyway, SIS, SI, PYM, Infinity Manager and GDN, with the org-scoped replacement being the same path minus the segment; "products other than NVIDIA Private Registry and NVIDIA Data Services do not support team-level resource scoping". The phase-1 blanket skip of 141 team-scoped registry/org twins citing that schedule was therefore wrong: those families are exempt. Phase 2 maps them as `*_by_team` methods on the same resources (121 methods; `team_name` joins the required-parameter signature, so no verb overload clashes) and as `team_members` / `team_member_roles` / `team_invitations` resources in `orgs`. `SCHEDULED_DEPRECATIONS` in `build_inventory.mjs` encodes the page's families (none appear in the pinned specs today - the NVCF spec is `/v2/nvcf/...` without an org segment - but the rule is the build input); `check_deprecation_page.mjs` snapshots the page (`deprecation_schedule.json`, 86 path patterns) for the weekly drift job. -7. **Service split - DECIDED from the inventory.** Seven services (recorded in `service_names.json`): `orgs`, `registry`, `catalog`, `nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`. Catalog is distinct from registry (guest path families, public auth posture). `nvcf_invocation` was added vs the candidate list (pexec, assets, assertion tokens). No usage service: no billing/measurement surface in the harvest. Host-service alignment is 1:1 (`nvcf_invocation`/`nvcf_queues` -> `api.nvcf.nvidia.com`, all others -> `api.ngc.nvidia.com`), so the two-host carry is service-level server assignment - no per-operation servers needed. Owed in phase 2 `pre_normalize`: stamp the correct server per service spec (the split specs inherit their source's server today: nvcf management specs say `api.nvcf`, registry/catalog say `models.ngc`) and apply the `/v1` -> `/v2` gateway path rewrite for registry/catalog (Resolved item 5). +7. **NVCF paths: the published `/v2/nvcf/...` form is used, not the gateway's org-scoped form.** The Terraform provider and the deprecation page show `/v2/orgs/{org}/nvcf/functions/...` (and `/teams/{team}/` between) on the gateway; the published spec declares `/v2/nvcf/functions` and the NVCF docs use that form with a personal key. Both are served; the spec form needs no org and is what the pin documents. Switching is a one-line rebase rule if live use shows otherwise (item 21). -8. **Pilot mapping - GREEN (task 7).** 221 operations, 81 resources across the 7 services (select 101, insert 40, update 29, delete 32, replace 3, exec 16); map_operations validations all pass (coverage both directions, unique methods, unique path-param signatures per SQL verb). Grants proof on `nvcf_functions.authorizations`: list `SELECT`, add `INSERT`, remove `DELETE`, set (full-list POST) `REPLACE`, delete-all kept as `EXEC` (same path-param signature as the granular remove). The harvested source is proven end to end via `registry` (32 resources incl. models/versions CRUD, shares grants, collection membership). Notable spec truths kept as-is: the typed models family has no DELETE (deletion rides `artifacts.delete` with `artifact-type=models`, purge is `EXEC`); `openapi: 3.1.0` sources passed split/analyze without issue. +8. **Org scope as a server variable.** 204 org-scoped operations (orgs + private registry) are rebased by `bin/split.mjs` (prefix stripped, org path parameter dropped) and `post_process.mjs` attaches path-item `servers` templates (`https://api.ngc.nvidia.com/v2/org/{org_name}` etc.) with `org_name` carrying `x-stackQL-envVar: NGC_ORG`, no default. Verified offline (`org_name` leaves the required parameters when `NGC_ORG` is set) and against the mock (env value routes to `/v2/org//...`, a `WHERE org_name` value wins, unset with no `WHERE` fails with "cannot find any viable servers" - any-sdk's message, not one naming the variable). Root paths that keep an org parameter (`/v2/orgs/{org_name}`, `/v2/csps/{artifact_type}/org/{org_name}/...`) are ordinary path parameters. One host per service is validated by the inventory; `nvcf_queues` and `nvcf_invocation` sit on `api.nvcf.nvidia.com`. -9. **Pagination - spec sweep done, wire confirmation owed.** 36 mapped list operations declare `page-number`+`page-size` offset paging (all in `orgs` and `registry`); catalog guest lists and every NVCF list declare no pagination parameters; the (out-of-spec) catalog search wire response carries `page`/`pageSize` in the query object with `resultPageTotal`/`resultTotal` in the envelope. Per the keycloak finding, offset paging is not expressible as any-sdk token pagination -> parameter-driven paging (page params exposed as optional WHERE parameters, documented per resource), no pagination config at generate time. Confirm server default page sizes live in phase 2. +9. **Reserved word.** `registry` cannot be a service name (`SHOW RESOURCES IN nvidia.registry` is a parser error - `REGISTRY` is a statement keyword). The service is `private_registry`. -10. **Envelope/objectKey - recorded per resource in the inventory.** Wire-proven catalog list envelopes vary: `$.models`, `$.recipes` (also for `resources`), `$.collections`, `$.artifacts` (generic artifact-type list), bare array for `gpus`. NVCF lists: `$.functions` (functions and versions), `$.functionIds`, `$.clusterGroups`, `$.telemetries`, `$.registryCredentials`. Single-object gets ride the `{: {...}, requestStatus: {...}}` envelope. Multi-array-prop candidates are left blank in `all_services.csv` pending wire checks (flagged `?multi` in the inventory). +10. **Definition defects repaired in clean, with a report** (`clean_report.json`): `ngc_kas` declares a relative server (`/`), 29 path parameters whose `name` is prose ("user id or b64encoded email") rather than the template token, one stray path parameter with no token, 16 query parameters with prose names ("Filter using org name" - wire names unknown, dropped) and 24 cookie parameters (`ncid`, `VisitorID`; any-sdk has no cookie location); `ngc_models` has 16 cookie parameters (`sc_cmp`) and camelCase / kebab-case path tokens used inconsistently (`{orgName}` and `{org-name}` for the same thing). Every path parameter is snake_cased in clean (provider-utils' split only converts the first hyphen per token). -## Blocked on key (the vsphere blocked-on-lab pattern) +11. **Mapping - green.** 498 operations inventoried (55 NVCF, 443 NGC core), 338 mapped (select 156, insert 64, update 42, delete 48, replace 4, exec 24), 160 skipped with reason codes (service-infra 24, internal-admin 34, deprecated-inline 44, superseded-by-v3-twin 4, non-generator-http-verb 7, data-plane-file-transfer 22, non-json-response 4, non-projectable-response 2, legacy-twin 3, duplicate-endpoint-family 15, inbound-webhook 1), 83 resources across 7 services (`catalog` 21, `nvcf_deployments` 7, `nvcf_functions` 7, `nvcf_invocation` 4, `nvcf_queues` 2, `orgs` 11, `private_registry` 31). The 2026-09-25 refresh (NVCF 2.245.1 -> 2.256.0 with a new `/info` endpoint, models definition with a new NIM metadata endpoint, collection shares deprecated inline) moved the counts from the phase-2 baseline of 347 / 149. Notable spec truths kept as-is: the typed models family has no DELETE (deletion rides `artifacts.delete` with `artifact_type = 'models'`, purge is `EXEC`); functions get/update/delete live on `function_versions` (the spec addresses a function by version); `authorizations` is grants-as-data (list `SELECT`, add `INSERT`, remove `DELETE`, set `REPLACE`, delete-all `EXEC`). -11. **Live bearer verification - BLOCKED, no `NGC_API_KEY` in the environment** (process, user, and machine level checked). NGC Personal API Key generation is a console action (org > Setup > Generate Personal API Key) with service scopes: Private Registry, and Cloud Functions at the organization level - NVIDIA's docs warn team-level roles break NVCF keys. Key scopes are static. The legacy-key type exists (see item 12) but personal keys (`nvapi-...`) are the documented path. Owed once a key is present: a live `GET /v2/orgs` and `GET /v2/users/me` with `Authorization: Bearer $NGC_API_KEY`, the authenticated spec-endpoint probes (item 13), and the NVCF enablement check (item 14). +12. **Pagination.** NGC core lists declare zero-based `page-number` + `page-size`; `ngc_kas` responses carry `paginationInfo {index, size, totalPages, totalResults, nextPage}` and the SDK's `ModelListResponse` etc. carry the same object (undeclared in the models definition). any-sdk's `page_number` algorithm (linode/vercel precedent) follows `$.paginationInfo.index` / `$.paginationInfo.totalPages`: it requests page N after the last page N-1 and stops when the echoed index reaches the total, so the terminating request must return an empty page rather than an error - the mock does; the live behaviour is owed (item 21). 64 list methods carry the config plus `queryParamPushdown.top -> page-size` (no documented maximum, none set). NVCF lists are unpaginated. Verified against the mock: 5 rows over 3 pages of 2, `LIMIT 1` -> `page-size=1`. -12. **Two key types, two auth flows - recorded, wire verification owed.** The explorer bundle's request interceptor exchanges a legacy NGC API key for a short-lived JWT via `https://authn.nvidia.com/token?scope=group/ngc&service=ngc` with `Authorization: Basic base64($oauthtoken:)`. Personal API keys are documented to work directly as `Authorization: Bearer`. The provider auth config assumes the direct-bearer personal-key path; if any NGC core endpoint rejects direct bearer, the token exchange becomes a documented prerequisite (not a provider concern - StackQL carries the env var as-is). +13. **Casing.** `snake_case_aliases: true` on the provider; `request.nativeCasing` per method from the inventory (`camel` x225 for NVCF and JSON bodies, `kebab` x113 for methods with kebab query parameters). Verified against the mock: `resolve_labels = 'true'` -> `resolve-labels=true`; `display_name` -> `displayName` in POST/PATCH bodies. Docs render the wire spelling of kebab parameters (`page-size`); the engine accepts `page_size`. -13. **Authenticated spec endpoints - BLOCKED on key.** `api.ngc.nvidia.com/v3/openapi`, `/v3/search/api-docs`, `/v3/meta/api-docs` return 401 unauthenticated (the unreachable Search/Metadata definitions may be served authenticated through the gateway). Re-probe with the key; if the Search definition is retrievable it becomes the catalog-search spec source (see Open item 2). +14. **objectKey per response shape.** Lists unwrap their array property; entity reads unwrap their object property; when several qualify the property named after the resource wins (`modelVersion` for `model_versions`, `recipeVersion` for `resource_versions` via the trailing-segment rule, `artifactVersion` for `helm_chart_versions`). Entities with array fields (GPU catalog rows, `gpuCounts`) get none - the first rule tried used the array property and projected `column_anon`. The vendor types `GET .../license/acceptance` as the `requestStatus`-only envelope, so that read is skipped (`non-projectable-response`); the acceptance `POST` stays mapped. -14. **NVCF enablement of the test org - BLOCKED on key/org.** Recorded as unknown. The tiered smoke design (drafted): tier 1 catalog/public reads - no credentials, every CI run; tier 2 org/registry reads - free NGC account key; tier 3 NVCF - only where the org has Cloud Functions enabled, skip-with-notice otherwise (vsphere pattern); any deployed function uses the smallest instance spec, `stackql-smoke-` naming, deleted within the run. +15. **Transforms.** `function_ids.list` (`{functionIds: [string]}`) is re-shaped to `function_id` rows; `invocation_status.get` (typed as a byte buffer in the spec, really the function's own JSON) is wrapped into a `response` column; the pexec invocation body (lowered to an opaque string by normalize) is a `{body}` wrapper with a `kindOf`-guarded request transform - stackql hands a JSON-looking string argument to the template already parsed, so `toJson .body` is required (the `_raw: map[prompt:hello]` failure mode). All three verified against the mock. -## Open +16. **Integer-typed columns swallow non-numeric values, and the neighbouring columns too.** With the SDK's `ModelVersion.id` typed `long`, a mock that put "v1.0" in `id` made `SELECT id, status` return `id = 0, status = null` for the row while `SELECT *` was fine. The real wire has a numeric `id` and the string `versionId` ("use this instead of id" per the SDK) - the mock was corrected. Worth remembering when a typed column looks empty: check the wire type before the mapping. + +17. **Terraform parity.** `NVIDIA/terraform-provider-ngc` (Go, 2024-, `ngc_cloud_function` + `ngc_cloud_function_telemetry`) reads `NGC_API_KEY`, `NGC_ORG`, `NGC_TEAM`, `NGC_ENDPOINT`. The provider uses the first three by name (`NGC_TEAM` only in the smoke suite - team scope is a per-query `team_name`). Its test template names the smallest instance it deploys with (`DGX-CLOUD.GPU.L40_1x` / `L40`) - the smoke suite picks the first instance type of the first cluster group instead. + +18. **Auth error envelopes.** `api.ngc.nvidia.com` returns `{"requestStatus": {"statusCode": "UNAUTHORIZED", ...}}` with 401; `api.nvcf.nvidia.com` returns an empty 401 body. The mock reproduces both; the integration suite asserts the bearer header on every call and the 401 with a wrong key. + +19. **Two key types.** The explorer exchanges a legacy NGC API key for a JWT (`authn.nvidia.com/token`, `Basic $oauthtoken:`); personal API keys (`nvapi-...`) work directly as `Authorization: Bearer` per the NVCF docs and the Terraform provider. The provider assumes the direct-bearer personal-key path. -1. **Catalog search served but definition unreachable** - the public search surface (`/v2/search/catalog/...`) is wire-proven but the Search API definition is not publicly retrievable; blocked-on-key probe (Blocked item 13) or the operation stays out of v1 with a reason code if no definition materializes. Phase 2. -2. **Update semantics per resource** - every PUT is mapped `UPDATE` and every op noted "PUT semantics unverified" in the inventory, except `registry.artifacts.replace` (PUT with a PATCH twin, proposed `REPLACE` - the dockerhub PUT-with-PATCH-twin rule) which still needs the single-field field-drop probe before it keeps `REPLACE`. Phase 2 live probes per the keycloak method. -3. **Authorizations list envelope** - the inventory derives `$.functions` as the objectKey for `nvcf_functions.authorizations.list`, which reads odd for a grants list; verify the wire shape (mock capture from the spec examples, live if NVCF enabled) before generation. -4. **openapi 3.1.0 through normalize/generate** - 3.1 sources passed split/analyze in the pilot; normalize and generate are unexercised (out of phase 1 scope). Any breakage is handled in `pre_normalize` as a deterministic downgrade of the affected constructs. Phase 2. -5. **Teams CRUD vs the deprecation schedule** - team-scoped twins (resources under `/team/{team}`) are skipped citing the 2026-09 schedule, but teams CRUD itself (`/v2/org/{org}/teams...`) and the newer v3 team-user endpoints (nca-invitations) are mapped/skipped by the same blanket rule; confirm against the published deprecation schedule page whether teams-as-a-resource survives. The drift job should watch that page. -6. **v3 vs v2 org-creation flows** - `orgs.create` maps `POST /v3/orgs` and `proto_orgs` maps the NCA proto-org flow; whether a classic (non-NCA) org create exists for customers is unconfirmed (the v2 create lives under the skipped super-admin controllers). +20. **The definition servers are not byte-stable.** Two fetches of the models definition seconds apart were canonically identical but differed in bytes (the `securitySchemes` scopes map, a Java map, serialises in a different key order each time), so a raw-byte pin drifted on the very next `make all`. The fetchers now write every download as canonical JSON (keys sorted recursively, arrays untouched - `lib/canonical.mjs`) and the pins hash those bytes; a pin drift therefore means real upstream change. NVCF 2.245.1 -> 2.256.0 and the models definition's new NIM endpoint were real changes accepted on 2026-09-25. -## Phase 2 obligations recorded +## Blocked on a key + +21. **Live verification - owed once `.env` carries `NGC_API_KEY` / `NGC_ORG`.** `make smoke` covers: bearer acceptance on `orgs`, `current_user`, `users`, `teams`, registry models; the `page_number` pagination against a real multi-page collection (terminating request behaviour, `paginationInfo` present on registry lists); the kebab query parameters; a registry model INSERT / UPDATE / DELETE; NVCF enablement (cluster groups), fleet reads and an undeployed function INSERT / version get / authorizations / DELETE. `make smoke-nvcf` adds the deploy lifecycle (billable, gated, needs `NVCF_SMOKE_CONTAINER_IMAGE`). Also to confirm: whether `/v2/nvcf/...` or the gateway's `/v2/orgs/{org}/nvcf/...` form is right for a personal key (item 7), PUT field-drop semantics on `function_versions.update` and `artifacts.replace` (keycloak rule), and whether `GET /v2/csps` needs the Private Registry scope (phase-1 probe: 401). + +## Open -- `pre_normalize.mjs`: per-service server stamp (Resolved item 7) and the `/v1` -> `/v2` gateway path rewrite for registry/catalog (Resolved item 5). -- Integration tests: mock servers for both hosts serving captured wire shapes (catalog reads captured live already; NVCF shapes from spec examples, marked accordingly); assert list unwrapping per the envelope table (Resolved item 10), org-scoped routing, the function/version INSERT/UPDATE/DELETE lifecycle with a deployment round trip, the authorizations grants round trip (mock-first; live only if NVCF enabled), and the bearer header on every request. -- Smoke tiers per Blocked item 14; the credential-free catalog smoke runs on every CI build (dockerhub precedent). -- Live probes owed once a key exists: bearer verification, authenticated spec endpoints, NVCF enablement, page-size defaults, PUT field-drop semantics. -- CI drift job: `fetch-specs.sh --check` against the pins plus the deprecation schedule page. +1. **Catalog search** (`/v2/search/catalog/...`, wire-proven in phase 1) has no retrievable definition (the Search API host refuses public connections); the operation stays out until a definition materializes or the authenticated gateway probe (`api.ngc.nvidia.com/v3/search/api-docs`, 401 unauthenticated) succeeds with a key. +2. **`/v2/orgs` list filters** (`Filter using org name`, `...PEC ID`, ...) are declared with prose names; the wire parameter names are unknown, so the list is unfiltered on the wire (client-side `WHERE` still applies). +3. **`csps` writes** (`create`/`update`/`delete` on `/v2/csps`) and the GPU catalog writes are publisher-privileged; mapped as documented, untested. +4. **`orgs.orgs.get` keeps `org_name` as a path parameter** (the remainder after the org prefix is empty, so it cannot ride the server template) - it does not default from `NGC_ORG`. +5. **Docs casing for kebab parameters** - the generated docs show `page-size`; a sanitize-docs rule could present the snake spelling the engine accepts. Cosmetic. diff --git a/README.md b/README.md index ccd0bbc..26286bf 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,259 @@ # `nvidia` provider for [`stackql`](https://github.com/stackql/stackql) -StackQL provider for the NVIDIA NGC platform - organizations, users, the private registry and catalog (containers, models, resources, helm charts), and NVIDIA Cloud Functions (NVCF: functions, versions, deployments, cluster groups, GPUs, queues). Query and provision the NGC control plane with SQL: GPU and cluster-group inventory, NVCF function fleet state, registry and model estate audits, and org membership. +This repository generates and documents the `nvidia` provider for StackQL, enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, containers and helm charts as metadata, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. The provider is built using the `@stackql/provider-utils` package. ## Positioning -There is no Terraform provider for the NGC/NVCF control plane. The reason is structural: the Terraform model requires a Go SDK to vendor, and NVIDIA's ecosystem is Python-first (the NGC CLI and `ngcsdk` are Python; no stable Go SDK exists). StackQL's build chain is spec -> provider, with no language binding in between, so this control plane is reachable without anyone first authoring a Go client. +NVIDIA publishes a Go Terraform provider, [`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc), covering NVCF functions and telemetry endpoints (one resource and one data source each); it reads `NGC_API_KEY`, `NGC_ORG` and `NGC_TEAM`, and this provider uses the same variables. The surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer: 338 operations across 7 services and 83 resources, with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. The query surfaces that matter: GPU and cluster-group inventory, NVCF function fleet state by deployment specification, function sharing audits, registry and model estate reports, and org membership - the AI infrastructure control plane as data. ## Design Principles -- **Bearer auth with an NGC Personal API Key** - `Authorization: Bearer` with the key in `NGC_API_KEY`. Keys need the Private Registry service scope and, for NVCF, Cloud Functions at the organization level (NVIDIA's own docs warn that team-level roles break NVCF keys). -- **Org scoping** - registry and org resources are scoped by `org_name`; it is the universal scoping parameter. -- **NVCF is the flagship service** - functions and versions (CRUD), deployment specifications, cluster groups and GPUs (`SELECT` inventory), queues, and authorizations (function sharing: authorize = `INSERT`, list = `SELECT`, revoke = `DELETE`). -- **Deprecation-aware mapping** - NVIDIA publishes a formal NGC API deprecation schedule; team-scoped paths (`/team/{team}` segments) end September 2026. Org-scoped paths are mapped; team-scoped twins are skipped with a `deprecated` reason code citing the schedule. -- **Registry resources are metadata** - container images, models, resources, and helm charts map as metadata reads (and writes where the API supports them); artifact binary push/pull is the registry data plane and out of scope. -- **Deterministic builds** - every step is a re-runnable script; manual mapping decisions are rules in scripts, never hand-edits to derived artifacts. +- **Bearer auth with an NGC Personal API Key** - `Authorization: Bearer` with the key in `NGC_API_KEY`. Keys need the Private Registry service scope for the registry service and, for NVCF, Cloud Functions at the organization level (NVIDIA's own docs warn that team-level roles break NVCF keys). +- **Org scope is a server variable** - registry and organization resources are scoped by `org_name`, resolved from `NGC_ORG` via `x-stackQL-envVar`; a `WHERE org_name` value always wins. NVCF paths carry no org (the key implies it). +- **Two hosts, one provider** - NVCF management, the registry, the catalog and organizations are served from `api.ngc.nvidia.com`; queue details and invocation from `api.nvcf.nvidia.com`, carried per service. +- **Deprecation-aware mapping** - NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those families are excluded by rule. Private Registry team scoping is exempt from that schedule and stays mapped as `*_by_team` methods on the same resources. +- **Registry resources are metadata** - artifact binary push/pull is the registry data plane and out of scope; streaming and gRPC invocation are not in the published spec, the HTTP-polling form is mapped. +- **snake_case surface** - columns, parameters and body attributes are snake_case aliases of the camelCase and kebab-case wire names. +- **Deterministic builds** - every step is a re-runnable `make` target; manual mapping decisions are rules in scripts, never hand-edits to derived artifacts; `all_services.csv` is committed as the durable record of every operation-to-method mapping. -Sibling-build findings are reused, not re-derived: dockerhub (registry-shaped resources, public-read classification), proxmox (async polling, mock-first CI), vsphere (skip-with-notice access gating), snowflake/prefect (invocation scoping frameworks), keycloak (REPLACE-vs-UPDATE semantics), oci (deprecation-aware mapping). +Sibling-build findings are reused, not re-derived: supabase (the project-scope server template, offline validation and mock-server layers), k8s (mock-first CI, meta-route walk, snake_case aliases), clickhouse, godaddy, dockerhub, proxmox, vsphere, keycloak and vercel precedents are cited in [NOTES.md](NOTES.md). ## Prerequisites -- Node.js >= 20 -- npm -- a local `stackql` binary for testing (`$STACKQL`, `./stackql`, or on `PATH`) -- an NGC account with a Personal API Key in `NGC_API_KEY` (live tests only; catalog reads and the mock-backed suites run without one) +To build or test the provider you will need: + +1. Node.js 20+ and GNU make (for the build pipeline) +2. StackQL CLI installed (see [StackQL](https://github.com/stackql/stackql)) - `$STACKQL`, `./stackql`, or on `PATH` +3. Python 3 (a venv with `pystackql` is created on demand for the smoke suite) +4. yarn (for the docs microsite) +5. For live tests only: an NGC account with a Personal API Key in `NGC_API_KEY` and an organization name in `NGC_ORG` (see `.env.example`); the public catalog, the mock-backed integration suite and every other layer run without one + +## Build with make + +Every pipeline stage below is wrapped as a `make` target ([Makefile](Makefile)); `make all` runs the full chain - upstream drift check, clean, inventory, split, mappings, normalize, generate, post-process, all credential-free tests, docs and the website build - and can be used at any stage to produce and test a new provider and docs. `make upgrade` is the same chain but accepts upstream changes (re-pins the specs): ```bash -npm install +make all # deps -> fetch-specs (drift check) -> build -> test -> docs -> website +make upgrade # deps -> refresh-specs (accept upstream) -> build -> test -> docs -> website +make help # list all targets ``` -## 1. Acquire, Pin, Clean the Upstream Specs +Individual stages (each corresponds to a numbered section below): + +| Target | Purpose | +|---|---| +| `make deps` | install node dependencies | +| `make fetch-specs` / `make refresh-specs` | download the NVCF spec, harvest the NGC definitions and the ngcsdk schemas; verify against the pins / accept the change | +| `make clean-specs` | deterministic spec repairs and validation | +| `make inventory` | classify every operation into `endpoint_inventory.csv` | +| `make split` | per-service specs on their hosts, org-scoped paths rebased | +| `make mappings` | regenerate and validate `all_services.csv` | +| `make pre-normalize normalize` | lower polymorphism in the service specs | +| `make generate` | generate the provider (runs `post-process` automatically) | +| `make test` | offline + integration + meta-route test layers (no account required) | +| `make smoke` | live smoke suite against the locally generated provider (needs `NGC_API_KEY`, `NGC_ORG`) | +| `make smoke-live` | live smoke suite against the published provider in the public registry | +| `make docs website` | generate the doc pages and build the microsite | + +The smoke targets source a gitignored `.env` file if present (`NGC_API_KEY`, `NGC_ORG`, optional `NGC_TEAM`; see `.env.example`). -Two spec sources: +## 1. Acquire, Pin, Clean the Upstream Specs (`make fetch-specs`, `make clean-specs`) -1. **NVCF** - a published OpenAPI spec served by the NVCF API itself. Management operations are served from `api.ngc.nvidia.com/v2/nvcf`; invocation and queue-detail operations from `api.nvcf.nvidia.com` - two hosts, carried per operation group. -2. **NGC core** - the API reference at `docs.ngc.nvidia.com/api/` is a spec-driven explorer over per-service definitions; `harvest_ngc_spec.mjs` retrieves the definitions behind it and `clean_specs.mjs` normalizes them with a full fix report. +Three pinned inputs (`provider-dev/config/spec_pin.json`: URL, date, sha256; the downloads are committed since NVIDIA versions none of these URLs): + +1. **NVCF** - the published OpenAPI spec served by the NVCF API itself (`https://api.nvcf.nvidia.com/v3/openapi`, linked from the NVCF API docs). +2. **NGC core** - `provider-dev/scripts/harvest_ngc_spec.mjs` downloads the per-service definitions behind the NGC API explorer (`docs.ngc.nvidia.com/api/`) from their pinned URLs: the NGC API definition (orgs, teams, users - served by the public gateway at `api.ngc.nvidia.com/v3/api-docs`) and the Private Artifacts (Models) API (registry and catalog artifact metadata, from `models.ngc.nvidia.com`). The definitions that refuse public connections are recorded in `download_manifest.json`. +3. **ngcsdk** - the July 2026 models definition declared no 2xx response on 303 of its 333 operations. `harvest_ngc_sdk_schemas.mjs` downloads the `ngcsdk` wheel from PyPI (pinned version and sha256), converts its auto-generated data classes (`registry/data/model/*.py`) to JSON Schema, and the clean step attaches them as 200 responses to any operation that lacks one. The current definition ships responses on every operation, so the rule injects nothing today; it stays as the recorded fallback. ```bash -npm run fetch-specs # download NVCF spec + harvest NGC definitions, record pins -npm run clean-specs # validate + repair, write provider-dev/downloaded/cleaned + fix report -npm run fetch-specs -- --check # CI drift check against the recorded pins +npm run fetch-specs -- --check # download + verify against the pins (fails on drift) +npm run fetch-specs # download + re-pin (accept upstream changes) +npm run clean-specs # repairs + swagger-parser validation, fix report in provider-dev/config/clean_report.json ``` -Pins (URL, date, sha256) live in `provider-dev/config/spec_pin.json`, including the harvest-vs-fallback decision for the NGC core source. The downloaded specs are committed: NVIDIA versions neither URL, so the pinned bytes in-repo are the reproducible input. +`clean_specs.mjs` applies deterministic repair rules with a per-source report: the relative server on the NGC definition, the `/v1` -> `/v2` public-gateway prefix on the models definition, snake_case path parameters throughout, path parameters whose declared name does not match their template token, cookie parameters (unsupported by the engine), query parameters with prose names, and the SDK response injection. It fails without writing on anything unfixable. + +## 2. Inventory and Split (`make inventory`, `make split`) -## 2. Split into Service Specs +`build_inventory.mjs` classifies every operation of the cleaned specs into `provider-dev/config/endpoint_inventory.csv` - host, org and team scoping, the org-scope rebase (`org_prefix`, `rebased_path`, `server_url`), declared auth and wire-observed public reads, pagination parameters, wire casing, response shape and objectKey candidate, the proposed service / resource / method / SQL verb, and a skip reason where applicable. The deprecation schedule is applied here as a rule (`SCHEDULED_DEPRECATIONS`). The CSV is the single source of truth every later step reads; it fails without writing on an unclassified operation, a duplicate method, a rebase collision, a service spanning two hosts, or a SELECT method without a projectable response. ```bash +npm run build-inventory npm run split -- --provider-name nvidia --overwrite ``` -Service assignment is a deterministic rule set in `provider-dev/scripts/service_rules.mjs`; the service list is recorded in `provider-dev/config/service_names.json`. +The split assigns operations to services from the inventory, sets each service's root server (host) and title (`provider-dev/config/service_names.json`), and rebases org-scoped operations: the leading org prefix (`/v2/org/{org_name}`, `/v3/orgs/{org_name}`, `/v2/artifact-registry/org/{org_name}`) is removed from the path and the org path parameter dropped, to be re-attached as a server template in post-processing. -## 3. Generate Mappings +| Service | Resources | Contents | +|---|---|---| +| `orgs` | 11 | organizations, teams, users, team members and member roles, role grants, invitations, current user | +| `private_registry` | 31 | org-scoped artifact metadata: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys, workflows; `*_by_team` twins | +| `catalog` | 21 | public artifact metadata reads plus the GPU and cloud service provider catalogs, NIM metadata publishing | +| `nvcf_functions` | 7 | functions, versions, function ids, metadata, authorizations (sharing grants), secrets, rate limits | +| `nvcf_deployments` | 7 | deployments and GPU specifications, cluster groups and GPUs, registry credentials, telemetries | +| `nvcf_queues` | 2 | queue details, queue position | +| `nvcf_invocation` | 4 | HTTP-polling invocation (pexec + status), assets, assertion tokens | + +## 3. Generate Mappings (`make mappings`) ```bash +rm -f provider-dev/config/all_services.csv npm run generate-mappings -- --provider-name nvidia --input-dir provider-dev/source --output-dir provider-dev/config -node provider-dev/scripts/map_operations.mjs +npm run map-operations ``` -`map_operations.mjs` populates the StackQL resource/method/verb columns in `provider-dev/config/all_services.csv` from the endpoint inventory (`provider-dev/config/endpoint_inventory.csv`, produced by `build_inventory.mjs` - the single source of truth for classification). It validates that every generator-relevant operation is mapped or explicitly skipped with a reason code, that method names are unique per resource, and that overloaded SQL verbs have unique required-parameter signatures - and fails without writing on any violation. +`map_operations.mjs` fills the `stackql_resource_name`, `stackql_method_name`, `stackql_verb` and `stackql_object_key` columns from the inventory (joined by service and operationId), validates that every operation is mapped, that method names are unique per resource and that overloaded SQL verbs have unique path-parameter signatures, prints the mapping diff against the committed `all_services.csv` (a diff there is a breaking-change review, not noise), and fails without writing on any violation. -## Service Coverage +| Operation pattern | StackQL verb | Resource / method | +|---|---|---| +| GET collection | `SELECT` | `.list` (objectKey per envelope: `$.models`, `$.functions`, `$.clusterGroups`, ...) | +| GET single | `SELECT` | `.get` (entity envelopes unwrapped: `$.model`, `$.function`, `$.user`, ...) | +| POST create | `INSERT` | `.create` | +| PATCH / PUT update | `UPDATE` (PUT with a PATCH twin: `REPLACE`) | `.update` / `replace` | +| DELETE | `DELETE` | `.delete` | +| team-scoped registry twins | same verb | `._by_team` | +| function sharing add / remove / set | `INSERT` / `DELETE` / `REPLACE` | `nvcf_functions.authorizations` - grants-as-data | +| shares, role grants, team membership | `INSERT` / `DELETE` | `*_shares`, `user_roles`, `team_members`, ... | +| HTTP-polling invocation | `EXEC` + status `SELECT` | `nvcf_invocation.invocations.invoke`, `invocation_status.get` | +| actions (purge, stash, malware scan, resend, api-key mint, ...) | `EXEC` | on the owning resource | +| streaming / gRPC invocation, artifact binary transfer, admin and infra endpoints, scheduled team-scoped families | skipped | reason-coded in the inventory | -489 upstream operations inventoried (54 NVCF, 435 NGC core); 221 mapped (101 select, 40 insert, 29 update, 32 delete, 3 replace, 16 exec), 268 skipped with reason codes (141 deprecated team-scoped twins per the NGC deprecation schedule, 36 deprecated-inline, 34 internal-admin, 23 service-infra, 22 data-plane file transfer, 12 other), 81 resources across 7 services: +## 4. Normalize the Service Specs (`make pre-normalize normalize`) -| Service | Resources | Contents | -|---|---|---| -| `orgs` | 8 | organizations, teams, users, role grants, invitations, current user | -| `registry` | 32 | org-scoped artifact metadata: models, resources, recipes, helm chart versions, collections, shares, encryption keys | -| `catalog` | 21 | guest artifact metadata reads plus the GPU and CSP catalogs | -| `nvcf_functions` | 7 | functions, versions, metadata, authorizations (sharing grants), secrets, rate limits | -| `nvcf_deployments` | 7 | deployments, GPU specs, cluster groups and GPUs, registry credentials, telemetries | -| `nvcf_queues` | 2 | queue details, queue position | -| `nvcf_invocation` | 4 | HTTP-polling invocation (pexec + status), assets, assertion tokens | +```bash +npm run pre-normalize +npm run normalize -- --api-dir provider-dev/source +``` + +`pre_normalize.mjs` lowers OpenAPI 3.1 constructs (type arrays, numeric exclusive bounds) and strips the models definition's per-operation `x-ssa-scopes` security hints. `npm run normalize` (provider-utils) then flattens composition, converts opaque objects to JSON-blob strings, lifts path-item parameters onto operations and wraps bare-array responses (the GPU catalog). + +## 5. Generate Provider (`make generate`) + +```bash +rm -rf provider-dev/openapi/* +npm run generate-provider -- \ + --provider-name nvidia \ + --input-dir provider-dev/source \ + --output-dir provider-dev/openapi/src/nvidia \ + --config-path provider-dev/config/all_services.csv \ + --provider-config '{"auth": {"type": "bearer", "credentialsenvvar": "NGC_API_KEY"}, "snake_case_aliases": true}' \ + --naive-req-body-translate \ + --overwrite +npm run post-process +``` + +No `--servers` or `--service-config` is passed: servers are per service (two hosts) and the org templates, casing and pagination are per method, all driven by the inventory in `post_process.mjs`, which applies: + +- **Org server templates** - every rebased path item gets a path-level `servers` template (`https://api.ngc.nvidia.com/v2/org/{org_name}` and the v3 / artifact-registry forms) whose `org_name` variable carries `x-stackQL-envVar: NGC_ORG`. any-sdk resolves servers operation -> path item -> document, so the override applies to those operations only; it is applied after generation because normalize strips path-level servers. +- **Casing** - `request.nativeCasing: camel` (NVCF and JSON bodies) or `kebab` (methods with kebab query parameters such as `page-size`, `resolve-labels`) on every method, paired with `snake_case_aliases` on the provider. +- **Pagination and LIMIT pushdown** - NGC core collections page with zero-based `page-number` + `page-size` and echo `paginationInfo {index, totalPages}`; the `page_number` algorithm is configured per list method and `LIMIT n` is pushed to `page-size`. +- **Opaque bodies and scalar lists** - the pexec invocation body becomes a `{body}` wrapper with a request transform; `function_ids` and the invocation status body are re-shaped by response transforms. + +### Organization scope + +```bash +export NGC_API_KEY='nvapi-...' +export NGC_ORG='0123456789ab' # org_name default; a WHERE org_name value always wins +``` + +```sql +SELECT name, framework, latest_version_id_str, updated_date +FROM nvidia.private_registry.models; + +SELECT name FROM nvidia.private_registry.models WHERE org_name = 'another-org'; +SELECT name FROM nvidia.private_registry.models WHERE team_name = 'ml-platform'; -- the *_by_team twin +``` + +With `NGC_ORG` unset, `org_name` is a required parameter on every org-scoped method (visible in `SHOW METHODS`). + +## 6. Test Provider (`make test`) + +### Validate offline (`make test-offline`) + +[tests/offline_validation.mjs](tests/offline_validation.mjs) runs `SHOW SERVICES` / `SHOW RESOURCES` / `SHOW METHODS` / `DESCRIBE EXTENDED` against the local file registry and asserts the service and resource lists, verbs and required parameters, the `NGC_ORG` behaviour (`org_name` required only when unset), snake aliases and the transforms - no network, no server. -**Public reads need no auth.** Catalog artifact metadata and the GPU catalog serve unauthenticated (wire-proven) - start there before any account setup. Function sharing maps as grants-as-data: authorize = `INSERT`, list = `SELECT`, revoke = `DELETE`. +### Integration tests (`make test-integration` - mock NGC + NVCF, no account required) -Engineering findings, open questions and phase 2 obligations are in [NOTES.md](NOTES.md). +[tests/integration/mock_nvidia_server.mjs](tests/integration/mock_nvidia_server.mjs) plays both hosts with real wire shapes (the `{, paginationInfo, requestStatus}` envelopes, the bare-array GPU catalog, the NVCF `{functions}` / `{function}` envelopes, the 202 + `NVCF-REQID` invocation) and enforces the bearer token. [run_integration_tests.mjs](tests/integration/run_integration_tests.mjs) materialises a test copy of the provider pointed at the mock and asserts row-level results: envelope unwrapping, pagination over three pages and `LIMIT` pushdown, `NGC_ORG` resolution and override, the `*_by_team` routing, kebab and camel casing on the wire, a registry model lifecycle, the NVCF function / authorization / deployment lifecycles, queue details on the second host, the polling invocation and a 404. `tests/integration/probe.mjs ""` prints stackql's output and the wire calls for ad-hoc checks. + +```bash +npm run test-integration # add -- --verbose for per-query output +``` + +### Meta-route test suite (`make test-meta`) + +Starts a StackQL wire server against the local registry and walks every service, resource and method, asserting that every resource has methods, that no two methods on the same SQL verb share a required-parameter signature, and that every selectable resource yields a non-empty `DESCRIBE EXTENDED`. + +### Smoke tests + +[tests/smoke_test.py](tests/smoke_test.py) (pystackql) runs against a real NGC organization, tiered by what the credentials can reach: the public catalog; organization and registry reads plus a free registry model `INSERT` / `UPDATE` / `DELETE`; NVCF reads (cluster groups and GPUs, fleet state) plus an undeployed function `INSERT` / version get / authorizations / `DELETE` where Cloud Functions is enabled (auto-detected, skipped with a notice otherwise). Everything it creates is named `stackql-smoke-` and breadcrumbs are swept first. Only the gated deploy lifecycle costs anything: + +```bash +make smoke # local provider (creates a pystackql venv on demand) +make smoke-live # --live: the published provider in the stackql registry +make smoke-read-only # reads only +make smoke-nvcf # + deploy the smoke function on the smallest instance type, wait, undeploy (billable minutes, well under $1; needs NVCF_SMOKE_CONTAINER_IMAGE) +make smoke-cleanup # just sweep breadcrumbs +``` + +Never run tests against a production organization. + +### CI + +[.github/workflows/build-and-test.yml](.github/workflows/build-and-test.yml) rebuilds the provider from the committed pins on every push and PR (`make build`), fails on uncommitted generation drift, and runs the offline, integration and meta-route layers plus the docs generation. On pushes it runs the live smoke suite where the `NGC_API_KEY` / `NGC_ORG` secrets exist (never the deploy lifecycle). A weekly job re-downloads every upstream input, diffs it against the pins, snapshots the NGC deprecation schedule page, and opens an issue when anything moves. The docs microsite deploys separately via the web workflows. + +## 7. Publish the Provider + +To publish, push the `nvidia` dir to `providers/src` in a feature branch of the [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry). Follow the [registry release flow](https://github.com/stackql/stackql-provider-registry/blob/dev/docs/build-and-deployment.md). + +Pull and verify from the dev registry: + +```bash +export DEV_REG="{ \"url\": \"https://registry-dev.stackql.app/providers\" }" +stackql --registry="${DEV_REG}" shell +``` + +```sql +registry pull nvidia; +``` + +## 8. Generate Web Docs (`make docs website`) + +The doc microsite (`website/`) is Docusaurus 3.10 and follows the shared architecture used by the other provider microsites: all navbar/footer/theme/plugin configuration lives in [`stackql/docusaurus-config`](https://github.com/stackql/docusaurus-config), vendored into `.shared-config/` at build time. Site-local files are limited to the provider identity (`website/provider.js`), thin wrappers (`docusaurus.config.js` - which also flips `showLastUpdateTime` on so every page is date-stamped - and `sidebars.js`), the shared components under `src/`, and static assets including `static/CNAME`. + +a. `headerContent1.txt` and `headerContent2.txt` in `provider-dev/docgen/provider-data/` are injected into the docs landing page (installation, authentication, organization scope, pagination, deprecations, example queries) + +b. Generate the docs on the snake_case surface and sanitize them for MDX v3: + +```bash +npm run generate-docs -- \ + --provider-name nvidia \ + --provider-dir ./provider-dev/openapi/src/nvidia/v00.00.00000 \ + --output-dir ./website \ + --provider-data-dir ./provider-dev/docgen/provider-data \ + --snake-case-aliases +npm run sanitize-docs +``` + +c. Build and test locally (yarn, Node 20+; the build vendors the shared config, so network access to GitHub is required): + +```bash +cd website +yarn install +yarn build +yarn serve +``` + +To publish, select __GitHub Actions__ as the __Source__ under __Pages -> Build and deployment__ in the repository settings, and create the following DNS record (the served hostname is pinned by `website/static/CNAME`): + +| Source Domain | Record Type | Target | +|---|---|---| +| nvidia-provider.stackql.io | CNAME | stackql.github.io. | ## License MIT + +## Contributing + +Contributions are welcome. Please submit a Pull Request. diff --git a/bin/fetch-specs.sh b/bin/fetch-specs.sh index 5bc5c2f..944bcb4 100644 --- a/bin/fetch-specs.sh +++ b/bin/fetch-specs.sh @@ -1,14 +1,20 @@ #!/usr/bin/env bash # -# Acquire both upstream spec sources into provider-dev/downloaded/: +# Acquire every upstream input into provider-dev/downloaded/: # 1. NVCF - published OpenAPI spec served by the NVCF API itself # (provider-dev/scripts/fetch_nvcf_spec.mjs) # 2. NGC - per-service definitions harvested from the API explorer at # docs.ngc.nvidia.com/api/ (provider-dev/scripts/harvest_ngc_spec.mjs) -# then record/verify pins (URL, date, sha256) in provider-dev/config/spec_pin.json. +# 3. ngcsdk - response schemas derived from the pinned ngcsdk PyPI wheel +# (provider-dev/scripts/harvest_ngc_sdk_schemas.mjs; the wheel +# is pinned by version + sha256 inside the script) +# then record (default) or verify (--check) the pins in +# provider-dev/config/spec_pin.json. # -# Re-runnable. Pass --check to verify current downloads against the recorded -# pins without writing anything (CI drift job). +# Re-runnable. With --check the downloads are refreshed and verified against +# the recorded pins WITHOUT rewriting them: any drift fails the run, and +# `git checkout -- provider-dev/downloaded` restores the pinned inputs +# (or `npm run fetch-specs` accepts the change by re-pinning). set -euo pipefail @@ -22,6 +28,7 @@ fi node "$REPO_ROOT/provider-dev/scripts/fetch_nvcf_spec.mjs" node "$REPO_ROOT/provider-dev/scripts/harvest_ngc_spec.mjs" +node "$REPO_ROOT/provider-dev/scripts/harvest_ngc_sdk_schemas.mjs" node "$REPO_ROOT/provider-dev/scripts/pin_specs.mjs" $CHECK_MODE -echo "Done. Downloaded specs in $REPO_ROOT/provider-dev/downloaded" +echo "Done. Upstream inputs in $REPO_ROOT/provider-dev/downloaded" diff --git a/bin/generate-docs.mjs b/bin/generate-docs.mjs deleted file mode 100644 index 4be9b84..0000000 --- a/bin/generate-docs.mjs +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env node - -import { docgen } from '@stackql/provider-utils'; - -async function generateDocs() { - // Get command line arguments - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const providerName = getArg('--provider-name'); - const providerDir = getArg('--provider-dir'); - const outputDir = getArg('--output-dir'); - const providerDataDir = getArg('--provider-data-dir'); - - if (!providerName || !providerDir || !outputDir || !providerDataDir) { - console.error('Error: Missing required arguments'); - console.error('Usage: node generate-docs.mjs --provider-name NAME --provider-dir DIR --output-dir DIR --provider-data-dir DIR'); - process.exit(1); - } - - try { - console.log(`Generating docs for provider: ${providerName}`); - console.log(`Provider directory: ${providerDir}`); - console.log(`Output directory: ${outputDir}`); - console.log(`Provider data directory: ${providerDataDir}`); - - const result = await docgen.generateDocs({ - providerName, - providerDir, - outputDir, - providerDataDir - }); - - console.log('Documentation generated successfully:', result); - } catch (error) { - console.error('Error generating documentation:', error); - process.exit(1); - } -} - -generateDocs(); \ No newline at end of file diff --git a/bin/generate-docs.sh b/bin/generate-docs.sh deleted file mode 100644 index 0602e15..0000000 --- a/bin/generate-docs.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash - -# Exit on error -set -e - -# Get the script directory for relative paths -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --provider-name) - PROVIDER_NAME="$2" - shift 2 - ;; - --provider-dir) - PROVIDER_DIR="$2" - shift 2 - ;; - --output-dir) - OUTPUT_DIR="$2" - shift 2 - ;; - --provider-data-dir) - PROVIDER_DATA_DIR="$2" - shift 2 - ;; - --help) - echo "Usage: generate-docs.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --provider-name NAME Provider name (default: snowflake)" - echo " --provider-dir DIR Provider directory path (default: $PROVIDER_DIR)" - echo " --output-dir DIR Output directory for docs (default: $OUTPUT_DIR)" - echo " --provider-data-dir DIR Provider data directory (default: $PROVIDER_DATA_DIR)" - echo " --help Show this help message" - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -echo "šŸ“š Generating documentation using @stackql/provider-utils..." - -# Run the Node.js script with arguments -node --experimental-modules "$SCRIPT_DIR/generate-docs.mjs" \ - --provider-name "$PROVIDER_NAME" \ - --provider-dir "$PROVIDER_DIR" \ - --output-dir "$OUTPUT_DIR" \ - --provider-data-dir "$PROVIDER_DATA_DIR" - -# Check if command succeeded -if [ $? -ne 0 ]; then - echo "āŒ Documentation generation failed" - exit 1 -fi - -echo "āœ… Documentation generated successfully" \ No newline at end of file diff --git a/bin/generate-mappings.mjs b/bin/generate-mappings.mjs deleted file mode 100644 index f711fbc..0000000 --- a/bin/generate-mappings.mjs +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node - -import { providerdev } from '@stackql/provider-utils'; - -async function generateMappings() { - // Get command line arguments - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const providerName = getArg('--provider-name'); - const inputDir = getArg('--input-dir'); - const outputDir = getArg('--output-dir'); - const verbose = args.includes('--verbose'); - - if (!providerName || !inputDir || !outputDir) { - console.error('Error: Missing required arguments'); - console.error('Usage: node generate-mappings.mjs --provider-name NAME --input-dir DIR --output-dir DIR [--verbose]'); - process.exit(1); - } - - try { - console.log(`Analyzing OpenAPI specs for provider: ${providerName}`); - console.log(`Input directory: ${inputDir}`); - console.log(`Output directory: ${outputDir}`); - - const result = await providerdev.analyze({ - inputDir, - outputDir, - verbose - }); - - console.log('Analysis completed successfully:', result); - } catch (error) { - console.error('Error analyzing OpenAPI specs:', error); - process.exit(1); - } -} - -generateMappings(); \ No newline at end of file diff --git a/bin/generate-mappings.sh b/bin/generate-mappings.sh deleted file mode 100644 index a4921c1..0000000 --- a/bin/generate-mappings.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env bash - -# Exit on error -set -e - -# Get the script directory for relative paths -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" - -# Default values -PROVIDER_NAME="" -INPUT_DIR="" -OUTPUT_DIR="" -VERBOSE=false - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --provider-name) - PROVIDER_NAME="$2" - shift 2 - ;; - --input-dir) - INPUT_DIR="$2" - shift 2 - ;; - --output-dir) - OUTPUT_DIR="$2" - shift 2 - ;; - --verbose) - VERBOSE=true - shift - ;; - --help) - echo "Usage: generate-mappings.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --provider-name NAME Provider name (required)" - echo " --input-dir DIR Input directory containing split OpenAPI files (required)" - echo " --output-dir DIR Output directory for mapping file (required)" - echo " --verbose Enable verbose output" - echo " --help Show this help message" - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -# Check required arguments -if [ -z "$PROVIDER_NAME" ] || [ -z "$INPUT_DIR" ] || [ -z "$OUTPUT_DIR" ]; then - echo "Error: Missing required arguments" - echo "Use --help for usage information" - exit 1 -fi - -echo "šŸ” Analyzing OpenAPI specs to generate mappings..." -echo "Provider: $PROVIDER_NAME" -echo "Input Directory: $INPUT_DIR" -echo "Output Directory: $OUTPUT_DIR" - -# Build command arguments -ARGS=("--provider-name" "$PROVIDER_NAME" "--input-dir" "$INPUT_DIR" "--output-dir" "$OUTPUT_DIR") - -if [ "$VERBOSE" = true ]; then - ARGS+=("--verbose") - echo "Verbose: Yes" -fi - -# Run the Node.js script with arguments -node --experimental-modules "$SCRIPT_DIR/generate-mappings.mjs" "${ARGS[@]}" - -# Check if command succeeded -if [ $? -ne 0 ]; then - echo "āŒ Mapping generation failed" - exit 1 -fi - -echo "āœ… Mapping file generated successfully at: $OUTPUT_DIR/all_services.csv" \ No newline at end of file diff --git a/bin/generate-provider.mjs b/bin/generate-provider.mjs deleted file mode 100644 index ddd27bd..0000000 --- a/bin/generate-provider.mjs +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env node - -import { providerdev } from '@stackql/provider-utils'; - -async function generateProvider() { - // Get command line arguments - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const providerName = getArg('--provider-name'); - const inputDir = getArg('--input-dir'); - const outputDir = getArg('--output-dir'); - const configPath = getArg('--config-path'); - const servers = getArg('--servers'); - const providerConfig = getArg('--provider-config'); - const serviceConfig = getArg('--service-config'); - const skipFiles = getArg('--skip-files')?.split(',') || []; - const overwrite = args.includes('--overwrite'); - const verbose = args.includes('--verbose'); - const naiveReqBodyTranslate = args.includes('--naive-req-body-translate'); - - if (!providerName || !inputDir || !outputDir || !configPath) { - console.error('Error: Missing required arguments'); - console.error('Usage: node generate-provider.mjs --provider-name NAME --input-dir DIR --output-dir DIR --config-path PATH [--servers JSON] [--provider-config JSON] [--skip-files LIST] [--overwrite] [--verbose]'); - process.exit(1); - } - - try { - console.log(`Generating StackQL provider extensions for: ${providerName}`); - console.log(`Input directory: ${inputDir}`); - console.log(`Output directory: ${outputDir}`); - console.log(`Config path: ${configPath}`); - - if (servers) { - console.log(`Custom servers configuration provided`); - } - - if (providerConfig) { - console.log(`Custom provider configuration provided`); - } - - if (skipFiles.length > 0) { - console.log(`Skipping files: ${skipFiles.join(', ')}`); - } - - const result = await providerdev.generate({ - inputDir, - outputDir, - configPath, - providerId: providerName, - servers, - providerConfig, - serviceConfig, - skipFiles, - naiveReqBodyTranslate, - overwrite, - verbose - }); - - console.log('Provider generation completed successfully:', result); - } catch (error) { - console.error('Error generating provider extensions:', error); - process.exit(1); - } -} - -generateProvider(); \ No newline at end of file diff --git a/bin/generate-provider.sh b/bin/generate-provider.sh deleted file mode 100644 index 429933a..0000000 --- a/bin/generate-provider.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env bash - -# Exit on error -set -e - -# Get the script directory for relative paths -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" - -# Default values -PROVIDER_NAME="" -INPUT_DIR="" -OUTPUT_DIR="" -CONFIG_PATH="" -SERVERS="" -PROVIDER_CONFIG="" -SKIP_FILES="" -OVERWRITE=false -VERBOSE=false - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --provider-name) - PROVIDER_NAME="$2" - shift 2 - ;; - --input-dir) - INPUT_DIR="$2" - shift 2 - ;; - --output-dir) - OUTPUT_DIR="$2" - shift 2 - ;; - --config-path) - CONFIG_PATH="$2" - shift 2 - ;; - --servers) - SERVERS="$2" - shift 2 - ;; - --provider-config) - PROVIDER_CONFIG="$2" - shift 2 - ;; - --skip-files) - SKIP_FILES="$2" - shift 2 - ;; - --overwrite) - OVERWRITE=true - shift - ;; - --verbose) - VERBOSE=true - shift - ;; - --help) - echo "Usage: generate-provider.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --provider-name NAME Provider name/ID (required)" - echo " --input-dir DIR Input directory containing split OpenAPI files (required)" - echo " --output-dir DIR Output directory for provider (required)" - echo " --config-path PATH Path to CSV mapping file (required)" - echo " --servers JSON JSON string with servers configuration" - echo " --provider-config JSON JSON string with provider configuration" - echo " --skip-files LIST Comma-separated list of files to skip" - echo " --overwrite Overwrite existing files" - echo " --verbose Enable verbose output" - echo " --help Show this help message" - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -# Check required arguments -if [ -z "$PROVIDER_NAME" ] || [ -z "$INPUT_DIR" ] || [ -z "$OUTPUT_DIR" ] || [ -z "$CONFIG_PATH" ]; then - echo "Error: Missing required arguments" - echo "Use --help for usage information" - exit 1 -fi - -echo "šŸ”§ Generating StackQL provider extensions..." -echo "Provider: $PROVIDER_NAME" -echo "Input Directory: $INPUT_DIR" -echo "Output Directory: $OUTPUT_DIR" -echo "Config Path: $CONFIG_PATH" - -# Build command arguments -ARGS=("--provider-name" "$PROVIDER_NAME" "--input-dir" "$INPUT_DIR" "--output-dir" "$OUTPUT_DIR" "--config-path" "$CONFIG_PATH") - -if [ -n "$SERVERS" ]; then - ARGS+=("--servers" "$SERVERS") - echo "Custom servers configuration provided" -fi - -if [ -n "$PROVIDER_CONFIG" ]; then - ARGS+=("--provider-config" "$PROVIDER_CONFIG") - echo "Custom provider configuration provided" -fi - -if [ -n "$SKIP_FILES" ]; then - ARGS+=("--skip-files" "$SKIP_FILES") - echo "Skipping files: $SKIP_FILES" -fi - -if [ "$OVERWRITE" = true ]; then - ARGS+=("--overwrite") - echo "Overwrite: Yes" -fi - -if [ "$VERBOSE" = true ]; then - ARGS+=("--verbose") - echo "Verbose: Yes" -fi - -# Run the Node.js script with arguments -node --experimental-modules "$SCRIPT_DIR/generate-provider.mjs" "${ARGS[@]}" - -# Check if command succeeded -if [ $? -ne 0 ]; then - echo "āŒ Provider generation failed" - exit 1 -fi - -echo "āœ… Provider generated successfully at: $OUTPUT_DIR" \ No newline at end of file diff --git a/bin/normalize.mjs b/bin/normalize.mjs deleted file mode 100644 index 01ffcdf..0000000 --- a/bin/normalize.mjs +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env node - -import { providerdev } from '@stackql/provider-utils'; -import fs from 'fs'; - -async function normalizeSpecs() { - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const apiDir = getArg('--api-dir'); - const verbose = args.includes('--verbose'); - const bareArrayOverridesStr = getArg('--bare-array-overrides'); - - if (!apiDir) { - console.error('Error: Missing required arguments'); - console.error('Usage: node normalize.mjs --api-dir DIR [--verbose] [--bare-array-overrides JSON|FILE.json]'); - process.exit(1); - } - - // --bare-array-overrides accepts inline JSON or a path to a JSON file - let bareArrayOverrides = null; - if (bareArrayOverridesStr) { - try { - const trimmed = bareArrayOverridesStr.trim(); - bareArrayOverrides = trimmed.startsWith('{') - ? JSON.parse(trimmed) - : JSON.parse(fs.readFileSync(trimmed, 'utf8')); - } catch (err) { - console.error('Error parsing bare array overrides (inline JSON or file path):', err.message); - process.exit(1); - } - } - - try { - const stats = await providerdev.normalize({ apiDir, verbose, bareArrayOverrides }); - console.log('Normalize completed:', JSON.stringify({ - filesProcessed: stats.filesProcessed, - allOfFlattened: stats.allOfFlattened, - oneOfRenamed: stats.oneOfRenamed, - anyOfRenamed: stats.anyOfRenamed, - misplacedKeywordsStripped: stats.stripped.length, - opaqueObjectsConverted: stats.opaqueConverted.length, - pathParamsLifted: stats.pathParamsLifted, - serversStripped: stats.serversStripped, - bareArraysWrapped: stats.bareArrayWrapped - }, null, 2)); - } catch (error) { - console.error('Error normalizing specs:', error); - process.exit(1); - } -} - -normalizeSpecs(); diff --git a/bin/normalize.sh b/bin/normalize.sh deleted file mode 100644 index b0a04c0..0000000 --- a/bin/normalize.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -# Thin passthrough to normalize.mjs (kept for bash users; `npm run normalize` calls normalize.mjs directly) - -set -e - -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -node "$SCRIPT_DIR/normalize.mjs" "$@" diff --git a/bin/split.mjs b/bin/split.mjs index c05f4fc..1a43d2f 100644 --- a/bin/split.mjs +++ b/bin/split.mjs @@ -1,9 +1,23 @@ #!/usr/bin/env node // Split the cleaned upstream specs (provider-dev/downloaded/cleaned) into -// per-service specs in provider-dev/source. Service assignment is a -// deterministic rule set in provider-dev/scripts/service_rules.mjs - one -// rule module for every source spec, never hand-edits to the outputs. +// per-service specs in provider-dev/source. Service assignment is the +// endpoint inventory (provider-dev/scripts/service_rules.mjs reads it) - +// one deterministic classification for every operation, never hand-edits +// to the outputs. +// +// After the split, every service spec is rewritten from the inventory: +// - root `servers` is the service's host (api.ngc.nvidia.com for the NGC +// core and NVCF management services, api.nvcf.nvidia.com for queue +// details and invocation) +// - org-scoped operations are rebased: the leading org prefix +// (/v2/org/{org_name}, /v3/orgs/{org_name}, /v2/artifact-registry/org/ +// {org_name}) is removed from the path key and the org path parameter +// is dropped; post_process.mjs re-attaches it as a path-level server +// template whose org_name variable resolves from NGC_ORG via +// x-stackQL-envVar (the clickhouse / supabase precedent). It is done +// here, before the mappings, so all_services.csv keys carry the +// rebased paths. // // Usage: node bin/split.mjs --provider-name nvidia [--input-dir DIR] [--output-dir DIR] [--overwrite] [--verbose] @@ -11,9 +25,12 @@ import fs from 'fs'; import os from 'os'; import path from 'path'; import { fileURLToPath } from 'url'; +import yaml from 'js-yaml'; import { providerdev } from '@stackql/provider-utils'; +import { loadInventory } from '../provider-dev/scripts/lib/inventory.mjs'; const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const HTTP_VERBS = ['get', 'post', 'put', 'patch', 'delete']; async function main() { const args = process.argv.slice(2); @@ -35,11 +52,9 @@ async function main() { } const rulesPath = path.join(repoRoot, 'provider-dev', 'scripts', 'service_rules.mjs'); - if (!fs.existsSync(rulesPath)) { - console.error(`Error: Service rules module not found: ${rulesPath}`); - process.exit(1); - } const { serviceFor } = await import(`file://${rulesPath}`); + const { byOp, hostByService } = loadInventory(); + const serviceNames = JSON.parse(fs.readFileSync(path.join(repoRoot, 'provider-dev', 'config', 'service_names.json'), 'utf8')); const specFiles = fs.readdirSync(inputDir).filter((f) => f.endsWith('.json')).sort(); if (specFiles.length === 0) { @@ -47,27 +62,19 @@ async function main() { process.exit(1); } - // Prepare the output directory, preserving non-spec files (e.g. .gitkeep) fs.mkdirSync(outputDir, { recursive: true }); const existing = fs.readdirSync(outputDir).filter((f) => /\.(yaml|yml|json)$/.test(f)); - if (existing.length > 0) { - if (!overwrite) { - console.error(`Error: Output directory ${outputDir} is not empty. Use --overwrite to replace existing service specs.`); - process.exit(1); - } - for (const f of existing) { - fs.rmSync(path.join(outputDir, f)); - } + if (existing.length > 0 && !overwrite) { + console.error(`Error: Output directory ${outputDir} is not empty. Use --overwrite to replace existing service specs.`); + process.exit(1); } - const written = new Map(); // service spec file -> source spec that produced it + // service file -> { doc, sourceFile } + const produced = new Map(); for (const specFile of specFiles) { const sourceName = specFile.replace(/\.json$/, ''); console.log(`Splitting ${specFile} (source: ${sourceName})`); - - // provider-utils split() cleans its output dir on every call, so split - // each source spec into a temp dir and collect the service specs from there const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'stackql-split-')); try { const result = await providerdev.split({ @@ -75,8 +82,7 @@ async function main() { providerName, outputDir: tmpDir, svcDiscriminator: 'function', - svcDiscriminatorFn: (pathKey, operationId, tags, ctx) => - serviceFor(sourceName, pathKey, operationId, tags, ctx), + svcDiscriminatorFn: (pathKey, operationId, tags, ctx) => serviceFor(sourceName, pathKey, operationId, tags, ctx), overwrite: true, verbose, svcNameOverrides: {} @@ -85,25 +91,79 @@ async function main() { console.error(`Error: Split failed for ${specFile}`); process.exit(1); } - for (const outFile of fs.readdirSync(tmpDir)) { - const dest = path.join(outputDir, outFile); - if (written.has(outFile)) { - console.error(`Error: Service spec ${outFile} produced by both ${written.get(outFile)} and ${specFile} - service names must not collide across sources`); + if (produced.has(outFile)) { + console.error(`Error: Service spec ${outFile} produced by both ${produced.get(outFile).sourceFile} and ${specFile} - service names must not collide across sources`); process.exit(1); } - fs.copyFileSync(path.join(tmpDir, outFile), dest); - written.set(outFile, specFile); + produced.set(outFile, { doc: yaml.load(fs.readFileSync(path.join(tmpDir, outFile), 'utf8')), sourceFile: specFile }); } } finally { fs.rmSync(tmpDir, { recursive: true, force: true }); } } - console.log(`Split operation completed successfully: ${written.size} service specs written to ${outputDir}`); - for (const f of [...written.keys()].sort()) { - console.log(` ${f}`); + // rewrite from the inventory: host, org rebase + const summary = []; + for (const [outFile, { doc, sourceFile }] of produced) { + const service = outFile.replace(/\.(yaml|yml|json)$/, ''); + const host = hostByService.get(service); + if (!host) { + console.error(`Error: no host recorded for service ${service} in the inventory`); + process.exit(1); + } + doc.servers = [{ url: host }]; + const names = serviceNames[service]; + if (!names) { + console.error(`Error: service ${service} has no entry in provider-dev/config/service_names.json`); + process.exit(1); + } + doc.info = { ...(doc.info || {}), title: names.title, description: names.description }; + + const newPaths = {}; + let rebased = 0, kept = 0; + for (const [pathKey, item] of Object.entries(doc.paths || {})) { + for (const verb of HTTP_VERBS) { + const op = item[verb]; + if (!op) continue; + const row = byOp.get(`${sourceFile}::${op.operationId}`); + if (!row) { + console.error(`Error: ${sourceFile} ${verb} ${pathKey} (${op.operationId}) is not in the inventory`); + process.exit(1); + } + if (row.service !== service) { + console.error(`Error: ${sourceFile} ${op.operationId} landed in ${service} but the inventory says ${row.service}`); + process.exit(1); + } + const target = row.rebased_path; + const dropOrg = row.org_prefix !== ''; + const orgParamNames = new Set(['org_name', 'org']); + const prune = (params) => (params || []).filter((p) => !(p && p.in === 'path' && orgParamNames.has(p.name))); + if (!newPaths[target]) newPaths[target] = {}; + if (newPaths[target][verb]) { + console.error(`Error: rebase collision in ${service}: ${verb} ${target} produced twice (${pathKey})`); + process.exit(1); + } + // path-item level parameters are lifted onto each operation so the + // rebased path item stays self-contained + const inherited = (item.parameters || []).filter((p) => !(op.parameters || []).some((q) => q && p && q.name === p.name && q.in === p.in)); + const params = [...inherited, ...(op.parameters || [])]; + op.parameters = dropOrg ? prune(params) : params; + newPaths[target][verb] = op; + if (dropOrg) rebased++; else kept++; + } + } + doc.paths = newPaths; + summary.push(`${outFile}: ${Object.keys(newPaths).length} paths on ${host} (${rebased} org-scoped operations rebased, ${kept} kept as root paths)`); } + + for (const f of existing) fs.rmSync(path.join(outputDir, f)); + for (const [outFile, { doc }] of produced) { + fs.writeFileSync(path.join(outputDir, outFile), yaml.dump(doc, { lineWidth: -1, noRefs: true })); + } + + console.log(`Split operation completed successfully: ${produced.size} service specs written to ${outputDir}`); + for (const line of summary.sort()) console.log(` ${line}`); } main().catch((err) => { diff --git a/bin/split.sh b/bin/split.sh deleted file mode 100644 index 00f5718..0000000 --- a/bin/split.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -# Thin passthrough to split.mjs (kept for bash users; `npm run split` calls split.mjs directly) - -set -e - -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -node "$SCRIPT_DIR/split.mjs" "$@" diff --git a/bin/start-server.sh b/bin/start-server.sh index e050450..414dffa 100644 --- a/bin/start-server.sh +++ b/bin/start-server.sh @@ -1,10 +1,13 @@ #!/bin/bash -# Get current directory +# Start a stackql wire server (pgwire) against the local file registry for +# the meta-route suite. Binary resolution: $STACKQL, ./stackql, then +# `stackql` on PATH (the test runners resolve the same way); download into +# the repo only as a last resort. + DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" BASE_DIR="$( cd "$DIR/.." && pwd )" -# Parse command line arguments PROVIDER="" REG_PATH="" PORT="5444" @@ -14,7 +17,7 @@ function display_help() { echo "Usage: start-server.sh [OPTIONS]" echo "Options:" echo " --provider NAME Provider name (default: use provider from package.json)" - echo " --registry PATH Path to local registry (default: current directory)" + echo " --registry PATH Path to local registry root (default: provider-dev/openapi)" echo " --port PORT Port to run server on (default: 5444)" echo " --verify Enable signature verification (default: false)" echo " --help Display this help message" @@ -22,44 +25,20 @@ function display_help() { while [[ $# -gt 0 ]]; do case $1 in - --provider) - PROVIDER="$2" - shift 2 - ;; - --registry) - REG_PATH="$2" - shift 2 - ;; - --port) - PORT="$2" - shift 2 - ;; - --verify) - VERIFY="true" - shift - ;; - --help) - display_help - exit 0 - ;; - *) - echo "Unknown option: $1" - display_help - exit 1 - ;; + --provider) PROVIDER="$2"; shift 2 ;; + --registry) REG_PATH="$2"; shift 2 ;; + --port) PORT="$2"; shift 2 ;; + --verify) VERIFY="true"; shift ;; + --help) display_help; exit 0 ;; + *) echo "Unknown option: $1"; display_help; exit 1 ;; esac done -# If provider not specified, try to get from package.json -if [ -z "$PROVIDER" ]; then - if [ -f "$BASE_DIR/package.json" ]; then - PROVIDER=$(grep -o '"name": "stackql-provider-[^"]*"' "$BASE_DIR/package.json" | sed 's/"name": "stackql-provider-//' | sed 's/"//') - fi +if [ -z "$PROVIDER" ] && [ -f "$BASE_DIR/package.json" ]; then + PROVIDER=$(grep -o '"name": "stackql-provider-[^"]*"' "$BASE_DIR/package.json" | sed 's/"name": "stackql-provider-//' | sed 's/"//') fi - -# If registry path not specified, use current directory if [ -z "$REG_PATH" ]; then - REG_PATH="$BASE_DIR/provider-dev/openapi/src" + REG_PATH="$BASE_DIR/provider-dev/openapi" fi echo "Using provider: $PROVIDER" @@ -67,61 +46,53 @@ echo "Registry path: $REG_PATH" echo "Port: $PORT" echo "Verify signatures: $VERIFY" -# Check if stackql binary exists -if [ ! -f "$BASE_DIR/stackql" ]; then +STACKQL_BIN="" +if [ -n "${STACKQL:-}" ] && [ -x "$STACKQL" ]; then + STACKQL_BIN="$STACKQL" +elif [ -x "$BASE_DIR/stackql" ]; then + STACKQL_BIN="$BASE_DIR/stackql" +elif command -v stackql >/dev/null 2>&1; then + STACKQL_BIN="$(command -v stackql)" +fi + +if [ -z "$STACKQL_BIN" ]; then echo "StackQL binary not found. Downloading..." - - # Determine OS and architecture OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) - - # Map architecture to stackql naming - if [ "$ARCH" = "x86_64" ]; then - ARCH="amd64" - elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then - ARCH="arm64" - fi - - # Set download URL based on OS + if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then ARCH="arm64"; fi if [ "$OS" = "darwin" ]; then DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_darwin_${ARCH}.zip" elif [ "$OS" = "linux" ]; then DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_linux_${ARCH}.zip" else - echo "Unsupported OS: $OS" - echo "Please download stackql manually from https://github.com/stackql/stackql/releases" + echo "Unsupported OS: $OS - download stackql manually from https://github.com/stackql/stackql/releases" exit 1 fi - - # Download and extract cd "$BASE_DIR" curl -L -o stackql.zip "$DOWNLOAD_URL" unzip -o stackql.zip rm stackql.zip chmod +x stackql + STACKQL_BIN="$BASE_DIR/stackql" echo "StackQL binary downloaded successfully" fi -# Set registry configuration if [ "$VERIFY" = "true" ]; then REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": false}}' else REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": true}}' fi -# Check if server is already running if pgrep -f "stackql.*--pgsrv.port=${PORT}" > /dev/null; then echo "StackQL server is already running on port ${PORT}" exit 0 fi -# Start the server -echo "Starting StackQL server with registry: $REG" +echo "Starting StackQL server ($STACKQL_BIN) with registry: $REG" cd "$BASE_DIR" -nohup ./stackql --registry="${REG}" --pgsrv.port="${PORT}" srv > stackql-server.log 2>&1 & +nohup "$STACKQL_BIN" --registry="${REG}" --pgsrv.port="${PORT}" srv > stackql-server.log 2>&1 & SERVER_PID=$! -# Check if server started successfully sleep 2 if ps -p $SERVER_PID > /dev/null; then echo "StackQL server started successfully with PID: $SERVER_PID" @@ -129,4 +100,4 @@ if ps -p $SERVER_PID > /dev/null; then else echo "Failed to start StackQL server. Check log file: $BASE_DIR/stackql-server.log" exit 1 -fi \ No newline at end of file +fi diff --git a/package-lock.json b/package-lock.json index b2908f7..2a6a25a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "0.1.0", "dependencies": { "@apidevtools/swagger-parser": "^12.1.0", - "@stackql/pgwire-lite": "^1.0.1", - "@stackql/provider-utils": "^0.7.6", + "@stackql/pgwire-lite": "^1.0.2", + "@stackql/provider-utils": "^0.7.10", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" }, @@ -92,6 +92,30 @@ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", "license": "MIT" }, + "node_modules/@jsep-plugin/assignment": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", + "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" + } + }, + "node_modules/@jsep-plugin/regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", + "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" + } + }, "node_modules/@so-ric/colorspace": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", @@ -104,30 +128,30 @@ }, "node_modules/@stackql/deno-openapi-dereferencer": { "name": "@jsr/stackql__deno-openapi-dereferencer", - "version": "0.3.1", - "resolved": "https://npm.jsr.io/~/11/@jsr/stackql__deno-openapi-dereferencer/0.3.1.tgz", - "integrity": "sha512-7Ucdom3SYxvzp7VwzulQMe66E+1LeCZIprFQ70PwRPIUfL90bYNQDrLfe5L1WaB+X7StWdHmoFSFxoa9RDlN7w==", + "version": "0.3.2", + "resolved": "https://npm.jsr.io/~/11/@jsr/stackql__deno-openapi-dereferencer/0.3.2.tgz", + "integrity": "sha512-Qj5B0pl2Rsec+GHwGGIh9254AQfEplkD82HW9FEhQR+vZvzhEgF2Ap72hmdLq8rWOGV4soSnQ4sFYorE2pIT5Q==", "dependencies": { - "jsonpath-plus": "7.0.0" + "jsonpath-plus": "^10.3.0" } }, "node_modules/@stackql/pgwire-lite": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stackql/pgwire-lite/-/pgwire-lite-1.0.1.tgz", - "integrity": "sha512-jgA6ogzlXySZ1xiJzBxuvgRNu9V38Gs3qUZ4AjinlT7hj+8RH3UhYaDvyBd33QWiK3tVNkglYcnXPQ7q0+rmNA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stackql/pgwire-lite/-/pgwire-lite-1.0.2.tgz", + "integrity": "sha512-uHZA0yzVyow8TtWYyGPFI7/If8Ci/5EjjKdoaZ4YEk1XcSoCKaGQmH9KCUlR/R1FvQk4Ic3DV9It8XhePsoTqQ==", "license": "MIT", "dependencies": { "winston": "^3.14.2" } }, "node_modules/@stackql/provider-utils": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.6.tgz", - "integrity": "sha512-1aa7xdVKoA9RppNIE/ojOTmc8k/I+glyKqAjZjTvcA87kyP7gmbMJPOdsX+LDFxSJ5xfslxTR+/ZZD3M5HZsiw==", + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.10.tgz", + "integrity": "sha512-3hlaKT2ce8IaFx0E99ksW0uvmBcQgtfzWAAJz24oSM7bX++6ZrLe87j6CAUyRszowP4FLaO6UMOlHNQzibnViw==", "license": "MIT", "dependencies": { "@apidevtools/swagger-parser": "^10.1.1", - "@stackql/deno-openapi-dereferencer": "npm:@jsr/stackql__deno-openapi-dereferencer@^0.3.1", + "@stackql/deno-openapi-dereferencer": "npm:@jsr/stackql__deno-openapi-dereferencer@^0.3.2", "csv-parser": "^3.2.0", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" @@ -373,6 +397,15 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsep": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", + "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -380,12 +413,21 @@ "license": "MIT" }, "node_modules/jsonpath-plus": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.0.0.tgz", - "integrity": "sha512-MH4UnrWrU1hJGVEyEyjvYgONkzNTO6Yol0nq18EMnUQ/ZC5cTuJheirXXIwu1b9mZ6t3XL0P79gPsu+zlTnDIQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.4.0.tgz", + "integrity": "sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==", "license": "MIT", + "dependencies": { + "@jsep-plugin/assignment": "^1.3.0", + "@jsep-plugin/regex": "^1.0.4", + "jsep": "^1.4.0" + }, + "bin": { + "jsonpath": "bin/jsonpath-cli.js", + "jsonpath-plus": "bin/jsonpath-cli.js" + }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, "node_modules/kuler": { diff --git a/package.json b/package.json index 28e7354..7c76929 100644 --- a/package.json +++ b/package.json @@ -6,25 +6,30 @@ "scripts": { "fetch-specs": "bash ./bin/fetch-specs.sh", "harvest-ngc": "node ./provider-dev/scripts/harvest_ngc_spec.mjs", - "clean-specs": "node ./provider-dev/scripts/clean_specs.mjs", + "harvest-sdk": "node ./provider-dev/scripts/harvest_ngc_sdk_schemas.mjs", "pin-specs": "node ./provider-dev/scripts/pin_specs.mjs", + "clean-specs": "node ./provider-dev/scripts/clean_specs.mjs", "build-inventory": "node ./provider-dev/scripts/build_inventory.mjs", "split": "node ./bin/split.mjs", - "generate-mappings": "bash ./bin/generate-mappings.sh", + "generate-mappings": "node ./node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs analyze", "map-operations": "node ./provider-dev/scripts/map_operations.mjs", - "normalize": "node ./bin/normalize.mjs", - "generate-provider": "bash ./bin/generate-provider.sh", - "generate-docs": "bash ./bin/generate-docs.sh", + "pre-normalize": "node ./provider-dev/scripts/pre_normalize.mjs", + "normalize": "node ./node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs normalize", + "generate-provider": "node ./node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs generate", + "post-process": "node ./provider-dev/scripts/post_process.mjs", + "generate-docs": "node ./node_modules/@stackql/provider-utils/bin/docgen-utils.mjs generate-docs", + "sanitize-docs": "node ./website/scripts/sanitize-docs.mjs", "start-server": "bash ./bin/start-server.sh", "stop-server": "bash ./bin/stop-server.sh", "server-status": "bash ./bin/server-status.sh", "test-meta-routes": "node ./bin/test-meta-routes.cjs", + "test-offline": "node ./tests/offline_validation.mjs", "test-integration": "node ./tests/integration/run_integration_tests.mjs" }, "dependencies": { "@apidevtools/swagger-parser": "^12.1.0", - "@stackql/pgwire-lite": "^1.0.1", - "@stackql/provider-utils": "^0.7.6", + "@stackql/pgwire-lite": "^1.0.2", + "@stackql/provider-utils": "^0.7.10", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" }, diff --git a/provider-dev/config/all_services.csv b/provider-dev/config/all_services.csv index ac12430..685e43d 100644 --- a/provider-dev/config/all_services.csv +++ b/provider-dev/config/all_services.csv @@ -1,222 +1,339 @@ filename,path,operationId,formatted_op_id,verb,response_object,tags,formatted_tags,stackql_resource_name,stackql_method_name,stackql_verb,stackql_object_key,op_description -catalog.yaml,/v1/csps,listCloudServiceProviders,list_cloud_service_providers,get,,Cloud service providers,cloud service providers,csps,list,select,,List cloud service providers -catalog.yaml,/v1/csps,createCloudServiceProvider,create_cloud_service_provider,post,,Cloud service providers,cloud service providers,csps,create,insert,,Create cloud service provider -catalog.yaml,/v1/{artifactType}/{orgName}/{artifactName}/spec,getPublicModelArtifactsSpec,get_public_model_artifacts_spec,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get,select,,Get AI Playground for public artifactType -catalog.yaml,/v1/recipes,listPublicRecipes,list_public_recipes,get,,Resources,resources,recipes,list,select,,List public recipes -catalog.yaml,/v1/resources,listPublicRecipes_1,list_public_recipes_1,get,,Resources,resources,resources,list,select,,List public recipes -catalog.yaml,/v1/models,listPublicModels,list_public_models,get,,Models,models,models,list,select,,List public models -catalog.yaml,/v1/gpus,getGpus,get_gpus,get,,GpuByPci,gpu_by_pci,gpus,list,select,,Get all GPUs -catalog.yaml,/v1/collections,listPublicCollections,list_public_collections,get,,Collections,collections,collections,list,select,,List public collections -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},getGpuByPciDeviceId,get_gpu_by_pci_device_id,get,,GpuByPci,gpu_by_pci,gpus,get,select,,Get GPU by PCI Device ID -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},createGpuByPciDeviceId,create_gpu_by_pci_device_id,post,,GpuByPci,gpu_by_pci,gpus,create,insert,,Create GPU by PCI Device ID only -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},deleteGpuByPciDeviceId,delete_gpu_by_pci_device_id,delete,,GpuByPci,gpu_by_pci,gpus,delete,delete,,Delete GPU by PCI Device ID only -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id},updateGpuByPciDeviceId,update_gpu_by_pci_device_id,patch,,GpuByPci,gpu_by_pci,gpus,update,update,,Partially update GPU by PCI Device ID only -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},getGpuByPciDeviceIdVendorIdSubsystemDeviceId,get_gpu_by_pci_device_id_vendor_id_subsystem_device_id,get,,GpuByPci,gpu_by_pci,gpus,get_by_vendor_subsystem,select,,"Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},createGpuByPciFullKey,create_gpu_by_pci_full_key,post,,GpuByPci,gpu_by_pci,gpus,create_by_vendor_subsystem,insert,,"Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},deleteGpuByPciFullKey,delete_gpu_by_pci_full_key,delete,,GpuByPci,gpu_by_pci,gpus,delete_by_vendor_subsystem,delete,,"Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id},updateGpuByPciFullKey,update_gpu_by_pci_full_key,patch,,GpuByPci,gpu_by_pci,gpus,update_by_vendor_subsystem,update,,"Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" -catalog.yaml,/v1/csps/{csp_name}/deployments/params,getCloudServiceProviderDeploymentParametersDetails,get_cloud_service_provider_deployment_parameters_details,get,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,get,select,,Get cloud service provider deployment parameters details -catalog.yaml,/v1/csps/{csp_name}/deployments/params,createCloudServiceProviderDeploymentParameters,create_cloud_service_provider_deployment_parameters,post,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,create,insert,,Create cloud service provider deployment parameters -catalog.yaml,/v1/csps/{csp_name}/deployments/params,deleteCloudServiceProviderDeploymentParameters,delete_cloud_service_provider_deployment_parameters,delete,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,delete,delete,,Delete cloud service provider deployment parameters -catalog.yaml,/v1/csps/{csp_name}/deployments/params,updateCloudServiceProviderDeploymentParameters,update_cloud_service_provider_deployment_parameters,patch,,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,update,update,,Update cloud service provider deployment parameters -catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,getCloudServiceProviderDeploymentParametersMetaDetails,get_cloud_service_provider_deployment_parameters_meta_details,get,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,get,select,,Get cloud service provider deployment parameters meta details -catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,createCloudServiceProviderDeploymentParametersMeta,create_cloud_service_provider_deployment_parameters_meta,post,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,create,insert,,Create cloud service provider deployment parameters meta -catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,deleteCloudServiceProviderDeploymentParametersMeta,delete_cloud_service_provider_deployment_parameters_meta,delete,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,delete,delete,,Delete cloud service provider deployment parameters meta -catalog.yaml,/v1/csps/{csp_name}/deployments/params/meta,updateCloudServiceProviderDeploymentParametersMeta,update_cloud_service_provider_deployment_parameters_meta,patch,,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,update,update,,Update cloud service provider deployment parameters meta -catalog.yaml,/v1/csps/{csp_name},getCloudServiceProviderDetails,get_cloud_service_provider_details,get,,Cloud service providers,cloud service providers,csps,get,select,,Get cloud service provider details -catalog.yaml,/v1/csps/{csp_name},deleteCloudServiceProvider,delete_cloud_service_provider,delete,,Cloud service providers,cloud service providers,csps,delete,delete,,Delete cloud service provider -catalog.yaml,/v1/csps/{csp_name},updateCloudServiceProvider,update_cloud_service_provider,patch,,Cloud service providers,cloud service providers,csps,update,update,,Update cloud service provider -catalog.yaml,/v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignatureAsGuest,get_artifact_version_signature_as_guest,get,,ArtifactSigning,artifact_signing,artifact_signatures,get,select,,Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest. -catalog.yaml,/v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrgAsGuest,list_artifact_files_in_org_as_guest,get,,Artifact Version Files,artifact version files,artifact_files,list,select,,List artifact files in org as guest -catalog.yaml,/v1/{artifact_type},listPublicArtifacts,list_public_artifacts,get,,Artifacts,artifacts,artifacts,list,select,,List public artifacts -catalog.yaml,/v1/{artifact_type}/{org_name}/{artifact_name},getArtifactInOrgAsGuest,get_artifact_in_org_as_guest,get,,Artifacts,artifacts,artifacts,get,select,,Get artifact in org as guest -catalog.yaml,/v1/recipes/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest,list_mode_files_in_org_as_guest,get,,Resource Version Files endpoints,resource version files endpoints,recipe_files,list,select,,List recipe files in org as guest -catalog.yaml,/v1/resources/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_1,list_mode_files_in_org_as_guest_1,get,,Resource Version Files endpoints,resource version files endpoints,resource_files,list,select,,List recipe files in org as guest -catalog.yaml,/v1/recipes/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest,get_recipe_version_in_org_as_guest,get,,Resource Versions,resource versions,recipe_versions,get,select,,Get recipe version in org as guest -catalog.yaml,/v1/resources/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest_1,get_recipe_version_in_org_as_guest_1,get,,Resource Versions,resource versions,resource_versions,get,select,,Get recipe version in org as guest -catalog.yaml,/v1/recipes/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest,list_recipe_versions_in_org_as_guest,get,,Resource Versions,resource versions,recipe_versions,list,select,,List recipe versions in org as guest -catalog.yaml,/v1/resources/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest_1,list_recipe_versions_in_org_as_guest_1,get,,Resource Versions,resource versions,resource_versions,list,select,,List recipe versions in org as guest -catalog.yaml,/v1/recipes/{org_name}/{recipe_name},getRecipeInOrgAsGuest,get_recipe_in_org_as_guest,get,,Resources,resources,recipes,get,select,,Get recipe in org as guest -catalog.yaml,/v1/resources/{org_name}/{recipe_name},getRecipeInOrgAsGuest_1,get_recipe_in_org_as_guest_1,get,,Resources,resources,resources,get,select,,Get recipe in org as guest -catalog.yaml,/v1/models/{org_name}/{model_name},getModelInOrgAsGuest,get_model_in_org_as_guest,get,,Models,models,models,get,select,,Get model in org as guest -catalog.yaml,/v1/models/{org_name}/{model_name}/versions,listModelVersionsInOrgAsGuest,list_model_versions_in_org_as_guest,get,,Model Version,model version,model_versions,list,select,,List model versions in org as guest -catalog.yaml,/v1/models/{org_name}/{model_name}/versions/{version_id},getModelVersionInOrgAsGuest,get_model_version_in_org_as_guest,get,,Model Version,model version,model_versions,get,select,,Get model version in org as guest -catalog.yaml,/v1/models/{org_name}/{model_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_2,list_mode_files_in_org_as_guest_2,get,,Model Version Files,model version files,model_files,list,select,,List model files in org as guest -catalog.yaml,/v1/helm-charts/{org_name}/{artifact_name}/versions,listHelmChartVersionsInOrgAsGuest,list_helm_chart_versions_in_org_as_guest,get,,Helm Charts,helm charts,helm_chart_versions,list,select,,List chart versions in org as guest -catalog.yaml,/v1/helm-charts/{org_name}/{artifact_name}/versions/{version_id},getHelmChartVersionInOrgAsGuest,get_helm_chart_version_in_org_as_guest,get,,Helm Charts,helm charts,helm_chart_versions,get,select,,Get chart version in org as guest -catalog.yaml,/v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id},getGpuByPciDeviceIdVendorId,get_gpu_by_pci_device_id_vendor_id,get,,GpuByPci,gpu_by_pci,gpus,get_by_vendor,select,,Get GPUs by PCI Device ID and Vendor ID -catalog.yaml,/v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInOrg,get_public_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get,select,,Get public artifact deployment parameters details in org -catalog.yaml,/v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInOrg,list_public_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list,select,,List public artifact deployment parameters in org -catalog.yaml,/v1/collections/{org_name}/{collection_name},getCollectionInOrgAsGuest,get_collection_in_org_as_guest,get,,Collections,collections,collections,get,select,,Get collection in org as guest -catalog.yaml,/v1/collections/{org_name}/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrgAsGuest,list_collection_artifacts_in_org_as_guest,get,,Collections,collections,collection_artifacts,list,select,,List collection artifacts in org as guest -nvcf_deployments.yaml,/v2/nvcf/secrets/telemetries/{telemetryId},updateTelemetrySecret,update_telemetry_secret,put,,User Secret Management,user secret management,telemetry_secrets,update,update,,Update secret for a specific Telemetry Id -nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},getFunctionDeployment,get_function_deployment,get,DeploymentResponse,Function Deployment,function deployment,deployments,get,select,,Get Function Deployment Details -nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},updateFunctionDeployment,update_function_deployment,put,DeploymentResponse,Function Deployment,function deployment,deployments,update,update,,Update Function Deployment -nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},createFunctionDeployment,create_function_deployment,post,DeploymentResponse,Function Deployment,function deployment,deployments,create,insert,,Deploy Function -nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},deleteFunctionDeployment,delete_function_deployment,delete,FunctionResponse,Function Deployment,function deployment,deployments,delete,delete,,Delete Function Deployment -nvcf_deployments.yaml,/v2/nvcf/telemetries,getTelemetriesByAccount,get_telemetries_by_account,get,ListTelemetryResponse,Telemetry Management,telemetry management,telemetries,list,select,$.telemetries,List Telemetries -nvcf_deployments.yaml,/v2/nvcf/telemetries,createTelemetry,create_telemetry,post,TelemetryResponse,Telemetry Management,telemetry management,telemetries,create,insert,,Create Telemetry -nvcf_deployments.yaml,/v2/nvcf/registry-credentials,listRegistryCredentialDetails,list_registry_credential_details,get,ListRegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,list,select,$.registryCredentials,List Registry Credentials -nvcf_deployments.yaml,/v2/nvcf/registry-credentials,addRegistryCredential,add_registry_credential,post,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,create,insert,,Add new registry credential to the account -nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registryCredentialId},getRegistryCredentialDetails,get_registry_credential_details,get,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,get,select,,Get Registry Credential Details -nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registryCredentialId},deleteRegistryCredential,delete_registry_credential,delete,,Registry Credential Management,registry credential management,registry_credentials,delete,delete,,Delete Registry Credential -nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registryCredentialId},updateRegistryCredential,update_registry_credential,patch,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,update,update,,Update registry credential -nvcf_deployments.yaml,/v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId},updateGpuSpecification,update_gpu_specification,patch,UpdateGpuSpecificationResponse,Function Deployment,function deployment,deployment_gpu_specs,update,update,,Update the specified GPU specification under the specified deployment -nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetryId},getTelemetry,get_telemetry,get,TelemetryResponse,Telemetry Management,telemetry management,telemetries,get,select,,Get Telemetry Details -nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetryId},deleteTelemetry,delete_telemetry,delete,,Telemetry Management,telemetry management,telemetries,delete,delete,,Delete Telemetry -nvcf_deployments.yaml,/v2/nvcf/recognized-registries,getRecognizedRegistries,get_recognized_registries,get,RecognizedRegistriesResponse,Registry Credential Management,registry credential management,recognized_registries,list,select,,List Recognized Registries -nvcf_deployments.yaml,/v2/nvcf/deployments/{deploymentId},getFunctionDeployment_1,get_function_deployment_1,get,DeploymentResponse,Function Deployment,function deployment,deployments,get_by_id,select,,Get Function Deployment Details +catalog.yaml,/v2/collections,listPublicCollections,list_public_collections,get,CollectionListResponse,Collections,collections,collections,list,select,$.collections,List public collections +catalog.yaml,/v2/collections/{org_name}/{collection_name},getCollectionInOrgAsGuest,get_collection_in_org_as_guest,get,CollectionResponse,Collections,collections,collections,get,select,$.collection,Get collection in org as guest +catalog.yaml,/v2/collections/{org_name}/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrgAsGuest,list_collection_artifacts_in_org_as_guest,get,ArtifactListResponse,Collections,collections,collection_artifacts,list,select,$.artifacts,List collection artifacts in org as guest +catalog.yaml,/v2/collections/{org_name}/{team_name}/{collection_name},getCollectionInTeamAsGuest,get_collection_in_team_as_guest,get,CollectionResponse,Collections,collections,collections,get_by_team,select,$.collection,Get collection in team as guest +catalog.yaml,/v2/collections/{org_name}/{team_name}/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInTeamAsGuest,list_collection_artifacts_in_team_as_guest,get,ArtifactListResponse,Collections,collections,collection_artifacts,list_by_team,select,$.artifacts,List collection artifacts in org and team as guest +catalog.yaml,/v2/csps,listCloudServiceProviders,list_cloud_service_providers,get,CloudServiceProviderListResponse,Cloud service providers,cloud service providers,csps,list,select,$.cloudServiceProviders,List cloud service providers +catalog.yaml,/v2/csps,createCloudServiceProvider,create_cloud_service_provider,post,CloudServiceProvider,Cloud service providers,cloud service providers,csps,create,insert,,Create cloud service provider +catalog.yaml,/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInOrg,list_public_artifact_deployment_parameters_in_org,get,DeploymentParametersListResponse,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list,select,$.deploymentParameters,List public artifact deployment parameters in org +catalog.yaml,/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInOrg,get_public_artifact_deployment_parameters_in_org,get,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get,select,,Get public artifact deployment parameters details in org +catalog.yaml,/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInTeam,list_public_artifact_deployment_parameters_in_team,get,DeploymentParametersListResponse,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list_by_team,select,$.deploymentParameters,List public artifact deployment parameters in team +catalog.yaml,/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInTeam,get_public_artifact_deployment_parameters_in_team,get,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get_by_team,select,,Get public artifact deployment parameters details in team +catalog.yaml,/v2/csps/{csp_name},getCloudServiceProviderDetails,get_cloud_service_provider_details,get,CloudServiceProvider,Cloud service providers,cloud service providers,csps,get,select,,Get cloud service provider details +catalog.yaml,/v2/csps/{csp_name},updateCloudServiceProvider,update_cloud_service_provider,patch,CloudServiceProvider,Cloud service providers,cloud service providers,csps,update,update,,Update cloud service provider +catalog.yaml,/v2/csps/{csp_name},deleteCloudServiceProvider,delete_cloud_service_provider,delete,Response,Cloud service providers,cloud service providers,csps,delete,delete,,Delete cloud service provider +catalog.yaml,/v2/csps/{csp_name}/deployments/params,getCloudServiceProviderDeploymentParametersDetails,get_cloud_service_provider_deployment_parameters_details,get,DeploymentParameters,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,get,select,,Get cloud service provider deployment parameters details +catalog.yaml,/v2/csps/{csp_name}/deployments/params,createCloudServiceProviderDeploymentParameters,create_cloud_service_provider_deployment_parameters,post,DeploymentParameters,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,create,insert,,Create cloud service provider deployment parameters +catalog.yaml,/v2/csps/{csp_name}/deployments/params,updateCloudServiceProviderDeploymentParameters,update_cloud_service_provider_deployment_parameters,patch,DeploymentParameters,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,update,update,,Update cloud service provider deployment parameters +catalog.yaml,/v2/csps/{csp_name}/deployments/params,deleteCloudServiceProviderDeploymentParameters,delete_cloud_service_provider_deployment_parameters,delete,Response,Cloud service provider deployment parameters,cloud service provider deployment parameters,csp_deployment_params,delete,delete,,Delete cloud service provider deployment parameters +catalog.yaml,/v2/csps/{csp_name}/deployments/params/meta,getCloudServiceProviderDeploymentParametersMetaDetails,get_cloud_service_provider_deployment_parameters_meta_details,get,DeploymentParametersMeta,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,get,select,,Get cloud service provider deployment parameters meta details +catalog.yaml,/v2/csps/{csp_name}/deployments/params/meta,createCloudServiceProviderDeploymentParametersMeta,create_cloud_service_provider_deployment_parameters_meta,post,DeploymentParametersMeta,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,create,insert,,Create cloud service provider deployment parameters meta +catalog.yaml,/v2/csps/{csp_name}/deployments/params/meta,updateCloudServiceProviderDeploymentParametersMeta,update_cloud_service_provider_deployment_parameters_meta,patch,DeploymentParametersMeta,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,update,update,,Update cloud service provider deployment parameters meta +catalog.yaml,/v2/csps/{csp_name}/deployments/params/meta,deleteCloudServiceProviderDeploymentParametersMeta,delete_cloud_service_provider_deployment_parameters_meta,delete,Response,Deployment parameters meta,deployment parameters meta,csp_deployment_params_meta,delete,delete,,Delete cloud service provider deployment parameters meta +catalog.yaml,/v2/gpus,getGpus,get_gpus,get,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,list,select,,Get all GPUs +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id},getGpuByPciDeviceId,get_gpu_by_pci_device_id,get,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,get,select,,Get GPU by PCI Device ID +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id},createGpuByPciDeviceId,create_gpu_by_pci_device_id,post,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,create,insert,,Create GPU by PCI Device ID only +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id},updateGpuByPciDeviceId,update_gpu_by_pci_device_id,patch,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,update,update,,Partially update GPU by PCI Device ID only +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id},deleteGpuByPciDeviceId,delete_gpu_by_pci_device_id,delete,Response,GpuByPci,gpu_by_pci,gpus,delete,delete,,Delete GPU by PCI Device ID only +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id},getGpuByPciDeviceIdVendorId,get_gpu_by_pci_device_id_vendor_id,get,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,get_by_vendor,select,,Get GPUs by PCI Device ID and Vendor ID +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},getGpuByPciDeviceIdVendorIdSubsystemDeviceId,get_gpu_by_pci_device_id_vendor_id_subsystem_device_id,get,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,get_by_vendor_subsystem,select,,"Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},createGpuByPciFullKey,create_gpu_by_pci_full_key,post,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,create_by_vendor_subsystem,insert,,"Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},updateGpuByPciFullKey,update_gpu_by_pci_full_key,patch,GpuByPciResponse,GpuByPci,gpu_by_pci,gpus,update_by_vendor_subsystem,update,,"Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},deleteGpuByPciFullKey,delete_gpu_by_pci_full_key,delete,Response,GpuByPci,gpu_by_pci,gpus,delete_by_vendor_subsystem,delete,,"Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID" +catalog.yaml,/v2/helm-charts/{org_name}/{artifact_name}/versions,listHelmChartVersionsInOrgAsGuest,list_helm_chart_versions_in_org_as_guest,get,ArtifactVersionListResponse,Helm Charts,helm charts,helm_chart_versions,list,select,$.artifactVersions,List chart versions in org as guest +catalog.yaml,/v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id},getHelmChartVersionInOrgAsGuest,get_helm_chart_version_in_org_as_guest,get,ArtifactVersionResponse,Helm Charts,helm charts,helm_chart_versions,get,select,$.artifactVersion,Get chart version in org as guest +catalog.yaml,/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions,listHelmChartVersionsInTeamAsGuest,list_helm_chart_versions_in_team_as_guest,get,ArtifactVersionListResponse,Helm Charts,helm charts,helm_chart_versions,list_by_team,select,$.artifactVersions,List chart versions in team as guest +catalog.yaml,/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions/{version_id},getHelmChartVersionInTeamAsGuest,get_helm_chart_version_in_team_as_guest,get,ArtifactVersionResponse,Helm Charts,helm charts,helm_chart_versions,get_by_team,select,$.artifactVersion,Get chart version in team as guest +catalog.yaml,/v2/models,listPublicModels,list_public_models,get,ModelListResponse,Models,models,models,list,select,$.models,List public models +catalog.yaml,/v2/models/{org_name}/{model_name},getModelInOrgAsGuest,get_model_in_org_as_guest,get,ModelResponse,Models,models,models,get,select,$.model,Get model in org as guest +catalog.yaml,/v2/models/{org_name}/{model_name}/versions,listModelVersionsInOrgAsGuest,list_model_versions_in_org_as_guest,get,ModelVersionListResponse,Model Version,model version,model_versions,list,select,$.modelVersions,List model versions in org as guest +catalog.yaml,/v2/models/{org_name}/{model_name}/versions/{version_id},getModelVersionInOrgAsGuest,get_model_version_in_org_as_guest,get,ModelVersionResponse,Model Version,model version,model_versions,get,select,$.modelVersion,Get model version in org as guest +catalog.yaml,/v2/models/{org_name}/{model_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_2,list_mode_files_in_org_as_guest_2,get,ModelVersionFileListResponse,Model Version Files,model version files,model_files,list,select,$.modelFiles,List model files in org as guest +catalog.yaml,/v2/models/{org_name}/{team_name}/{model_name},getModelInTeamAsGuest,get_model_in_team_as_guest,get,ModelResponse,Models,models,models,get_by_team,select,$.model,Get model in team as guest +catalog.yaml,/v2/models/{org_name}/{team_name}/{model_name}/versions,listModelVersionsInTeamAsGuest,list_model_versions_in_team_as_guest,get,ModelVersionListResponse,Model Version,model version,model_versions,list_by_team,select,$.modelVersions,List model versions in team as guest +catalog.yaml,/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id},getModelVersionInTeamAsGuest,get_model_version_in_team_as_guest,get,ModelVersionResponse,Model Version,model version,model_versions,get_by_team,select,$.modelVersion,Get model version in team as guest +catalog.yaml,/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}/files,listModeFilesInTeamAsGuest_2,list_mode_files_in_team_as_guest_2,get,ModelVersionFileListResponse,Model Version Files,model version files,model_files,list_by_team,select,$.modelFiles,List model files in team as guest +catalog.yaml,/v2/nim/{team}/{nim_name}/{tag}/metadata,createNimMetadata,create_nim_metadata,post,NimManifestMetadataResponse,NIM Metadata,nim metadata,nim_metadata,create,insert,$.profiles,Create NIM metadata +catalog.yaml,/v2/recipes,listPublicRecipes,list_public_recipes,get,RecipeListResponse,Resources,resources,recipes,list,select,$.recipes,List public recipes +catalog.yaml,/v2/recipes/{org_name}/{recipe_name},getRecipeInOrgAsGuest,get_recipe_in_org_as_guest,get,RecipeResponse,Resources,resources,recipes,get,select,$.recipe,Get recipe in org as guest +catalog.yaml,/v2/recipes/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest,list_recipe_versions_in_org_as_guest,get,RecipeVersionListResponse,Resource Versions,resource versions,recipe_versions,list,select,$.recipeVersions,List recipe versions in org as guest +catalog.yaml,/v2/recipes/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest,get_recipe_version_in_org_as_guest,get,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,get,select,$.recipeVersion,Get recipe version in org as guest +catalog.yaml,/v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest,list_mode_files_in_org_as_guest,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,recipe_files,list,select,$.recipeFiles,List recipe files in org as guest +catalog.yaml,/v2/recipes/{org_name}/{team_name}/{recipe_name},getRecipeInTeamAsGuest,get_recipe_in_team_as_guest,get,RecipeResponse,Resources,resources,recipes,get_by_team,select,$.recipe,Get recipe in team as guest +catalog.yaml,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions,listRecipeVersionsInTeamAsGuest,list_recipe_versions_in_team_as_guest,get,RecipeVersionListResponse,Resource Versions,resource versions,recipe_versions,list_by_team,select,$.recipeVersions,List recipe versions in team as guest +catalog.yaml,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id},getRecipeVersionInTeamAsGuest,get_recipe_version_in_team_as_guest,get,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,get_by_team,select,$.recipeVersion,Get recipe version in team as guest +catalog.yaml,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInTeamAsGuest,list_mode_files_in_team_as_guest,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,recipe_files,list_by_team,select,$.recipeFiles,List recipe files in team as guest +catalog.yaml,/v2/resources,listPublicRecipes_1,list_public_recipes_1,get,RecipeListResponse,Resources,resources,resources,list,select,$.recipes,List public recipes +catalog.yaml,/v2/resources/{org_name}/{recipe_name},getRecipeInOrgAsGuest_1,get_recipe_in_org_as_guest_1,get,RecipeResponse,Resources,resources,resources,get,select,$.recipe,Get recipe in org as guest +catalog.yaml,/v2/resources/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest_1,list_recipe_versions_in_org_as_guest_1,get,RecipeVersionListResponse,Resource Versions,resource versions,resource_versions,list,select,$.recipeVersions,List recipe versions in org as guest +catalog.yaml,/v2/resources/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest_1,get_recipe_version_in_org_as_guest_1,get,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,get,select,$.recipeVersion,Get recipe version in org as guest +catalog.yaml,/v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_1,list_mode_files_in_org_as_guest_1,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,resource_files,list,select,$.recipeFiles,List recipe files in org as guest +catalog.yaml,/v2/resources/{org_name}/{team_name}/{recipe_name},getRecipeInTeamAsGuest_1,get_recipe_in_team_as_guest_1,get,RecipeResponse,Resources,resources,resources,get_by_team,select,$.recipe,Get recipe in team as guest +catalog.yaml,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions,listRecipeVersionsInTeamAsGuest_1,list_recipe_versions_in_team_as_guest_1,get,RecipeVersionListResponse,Resource Versions,resource versions,resource_versions,list_by_team,select,$.recipeVersions,List recipe versions in team as guest +catalog.yaml,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id},getRecipeVersionInTeamAsGuest_1,get_recipe_version_in_team_as_guest_1,get,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,get_by_team,select,$.recipeVersion,Get recipe version in team as guest +catalog.yaml,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInTeamAsGuest_1,list_mode_files_in_team_as_guest_1,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,resource_files,list_by_team,select,$.recipeFiles,List recipe files in team as guest +catalog.yaml,/v2/{artifact_type},listPublicArtifacts,list_public_artifacts,get,ArtifactListResponse,Artifacts,artifacts,artifacts,list,select,$.artifacts,List public artifacts +catalog.yaml,/v2/{artifact_type}/{org_name}/{artifact_name},getArtifactInOrgAsGuest,get_artifact_in_org_as_guest,get,ArtifactResponse,Artifacts,artifacts,artifacts,get,select,$.artifact,Get artifact in org as guest +catalog.yaml,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrgAsGuest,list_artifact_files_in_org_as_guest,get,ArtifactVersionFileListResponse,Artifact Version Files,artifact version files,artifact_files,list,select,$.artifactFiles,List artifact files in org as guest +catalog.yaml,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name},getChartInTeamAsGuest,get_chart_in_team_as_guest,get,ArtifactResponse,Artifacts,artifacts,artifacts,get_by_team,select,$.artifact,Get artifact in team as guest +catalog.yaml,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInTeamAsGuest,list_artifact_files_in_team_as_guest,get,ArtifactVersionFileListResponse,Artifact Version Files,artifact version files,artifact_files,list_by_team,select,$.artifactFiles,List artifact files in team as guest +catalog.yaml,/v2/{artifact_type}/{org_name}/{artifact_name}/spec,getPublicModelArtifactsSpec,get_public_model_artifacts_spec,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get,select,,Get AI Playground for public artifactType +catalog.yaml,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/spec,getPublicModelArtifactsSpec_1,get_public_model_artifacts_spec_1,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get_by_team,select,,Get AI Playground for public artifactType nvcf_deployments.yaml,/v2/nvcf/clusterGroups,getClusterGroups,get_cluster_groups,get,ClusterGroupsResponse,Cluster Groups and GPUs,cluster groups and gpus,cluster_groups,list,select,$.clusterGroups,List Cluster Groups -nvcf_functions.yaml,/v2/nvcf/secrets/functions/{functionId}/versions/{versionId},updateFunctionSecrets,update_function_secrets,put,,User Secret Management,user secret management,function_secrets,update,update,,Update user secrets for a function version -nvcf_functions.yaml,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},updateRateLimit,update_rate_limit,put,,User Ratelimit Management,user ratelimit management,function_ratelimits,update,update,,Update user ratelimit for a function version -nvcf_functions.yaml,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},deleteRateLimit,delete_rate_limit,delete,,User Ratelimit Management,user ratelimit management,function_ratelimits,delete,delete,,Delete user ratelimit for a function version -nvcf_functions.yaml,/v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId},updateFunctionMetadata,update_function_metadata,put,FunctionResponse,Function Management,function management,function_metadata,update,update,,Update Function Metadata -nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},getFunction,get_function,get,FunctionResponse,Function Management,function management,function_versions,get,select,,Get Function Version Details -nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},updateFunction,update_function,put,FunctionResponse,Function Management,function management,function_versions,update,update,,Updates mutable fields of the specified function version. -nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},deleteFunction,delete_function,delete,,Function Management,function management,function_versions,delete,delete,,Delete Function +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},getFunctionDeployment,get_function_deployment,get,DeploymentResponse,Function Deployment,function deployment,deployments,get,select,$.deployment,Get Function Deployment Details +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},createFunctionDeployment,create_function_deployment,post,DeploymentResponse,Function Deployment,function deployment,deployments,create,insert,$.deployment,Deploy Function +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},updateFunctionDeployment,update_function_deployment,put,DeploymentResponse,Function Deployment,function deployment,deployments,update,update,$.deployment,Update Function Deployment +nvcf_deployments.yaml,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},deleteFunctionDeployment,delete_function_deployment,delete,FunctionResponse,Function Deployment,function deployment,deployments,delete,delete,$.function,Delete Function Deployment +nvcf_deployments.yaml,/v2/nvcf/deployments/{deployment_id},getFunctionDeployment_1,get_function_deployment_1,get,DeploymentResponse,Function Deployment,function deployment,deployments,get_by_id,select,$.deployment,Get Function Deployment Details +nvcf_deployments.yaml,/v2/nvcf/deployments/{deployment_id}/gpu-specifications/{gpu_spec_id},updateGpuSpecification,update_gpu_specification,patch,UpdateGpuSpecificationResponse,Function Deployment,function deployment,deployment_gpu_specs,update,update,$.gpuSpecification,Update the specified GPU specification under the specified deployment +nvcf_deployments.yaml,/v2/nvcf/recognized-registries,getRecognizedRegistries,get_recognized_registries,get,RecognizedRegistriesResponse,Registry Credential Management,registry credential management,recognized_registries,list,select,,List Recognized Registries +nvcf_deployments.yaml,/v2/nvcf/registry-credentials,listRegistryCredentialDetails,list_registry_credential_details,get,ListRegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,list,select,$.registryCredentials,List Registry Credentials +nvcf_deployments.yaml,/v2/nvcf/registry-credentials,addRegistryCredential,add_registry_credential,post,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,create,insert,$.registryCredential,Add new registry credential to the account +nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registry_credential_id},getRegistryCredentialDetails,get_registry_credential_details,get,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,get,select,$.registryCredential,Get Registry Credential Details +nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registry_credential_id},updateRegistryCredential,update_registry_credential,patch,RegistryCredentialDetailsResponse,Registry Credential Management,registry credential management,registry_credentials,update,update,$.registryCredential,Update registry credential +nvcf_deployments.yaml,/v2/nvcf/registry-credentials/{registry_credential_id},deleteRegistryCredential,delete_registry_credential,delete,,Registry Credential Management,registry credential management,registry_credentials,delete,delete,,Delete Registry Credential +nvcf_deployments.yaml,/v2/nvcf/secrets/telemetries/{telemetry_id},updateTelemetrySecret,update_telemetry_secret,put,,User Secret Management,user secret management,telemetry_secrets,update,update,,Update secret for a specific Telemetry Id +nvcf_deployments.yaml,/v2/nvcf/telemetries,getTelemetriesByAccount,get_telemetries_by_account,get,ListTelemetryResponse,Telemetry Management,telemetry management,telemetries,list,select,$.telemetries,List Telemetries +nvcf_deployments.yaml,/v2/nvcf/telemetries,createTelemetry,create_telemetry,post,TelemetryResponse,Telemetry Management,telemetry management,telemetries,create,insert,$.telemetry,Create Telemetry +nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetry_id},getTelemetry,get_telemetry,get,TelemetryResponse,Telemetry Management,telemetry management,telemetries,get,select,$.telemetry,Get Telemetry Details +nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetry_id},deleteTelemetry,delete_telemetry,delete,,Telemetry Management,telemetry management,telemetries,delete,delete,,Delete Telemetry +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id},getAuthorizedPartiesForAllVersions,get_authorized_parties_for_all_versions,get,ListAuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list,select,$.functions,List Account Authorizations For Function +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id},createAuthorizedPartiesForAllVersions,create_authorized_parties_for_all_versions,post,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,set,replace,$.function,Authorize Accounts To Invoke Function +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id},deleteAuthorizedPartiesForAllVersions,delete_authorized_parties_for_all_versions,delete,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,delete_all,exec,$.function,Delete All Authorizations At Function Level +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/add,addAuthorizedPartyForAllVersions,add_authorized_party_for_all_versions,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,add,insert,$.function,"Authorize Another Account To Invoke, List, and Check Queue Details of Function" +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/remove,removeAuthorizedPartyForAllVersions,remove_authorized_party_for_all_versions,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,remove,delete,$.function,"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function" +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},getAuthorizedPartiesForSpecificVersion,get_authorized_parties_for_specific_version,get,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list_version,select,$.function,Get Account Authorizations For Function Version +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},createAuthorizedPartiesForSpecificVersion,create_authorized_parties_for_specific_version,post,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,set_version,replace,$.function,Authorize Accounts To Invoke/List Function Version +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},deleteAuthorizedPartiesForSpecificVersion,delete_authorized_parties_for_specific_version,delete,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,delete_all_version,exec,$.function,Delete All Authorizations At Version Level +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/add,addAuthorizedPartyForSpecificVersion,add_authorized_party_for_specific_version,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,add_version,insert,$.function,"Authorize Another Account To Invoke, List, and Check Queue Details of Function Version" +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/remove,removeAuthorizedPartyForSpecificVersion,remove_authorized_party_for_specific_version,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,remove_version,delete,$.function,"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function Version" nvcf_functions.yaml,/v2/nvcf/functions,getFunctions,get_functions,get,ListFunctionsResponse,Function Management,function management,functions,list,select,$.functions,List Functions -nvcf_functions.yaml,/v2/nvcf/functions,createFunction,create_function,post,CreateFunctionResponse,Function Management,function management,functions,create,insert,,Create Function -nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions,getFunctions_1,get_functions_1,get,ListFunctionsResponse,Function Management,function management,function_versions,list,select,$.functions,List Function Versions -nvcf_functions.yaml,/v2/nvcf/functions/{functionId}/versions,createFunction_1,create_function_1,post,CreateFunctionResponse,Function Management,function management,function_versions,create,insert,,Create Function Version -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId},getAuthorizedPartiesForAllVersions,get_authorized_parties_for_all_versions,get,ListAuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list,select,$.functions,List Account Authorizations For Function -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId},createAuthorizedPartiesForAllVersions,create_authorized_parties_for_all_versions,post,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,set,replace,,Authorize Accounts To Invoke Function -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId},deleteAuthorizedPartiesForAllVersions,delete_authorized_parties_for_all_versions,delete,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,delete_all,exec,,Delete All Authorizations At Function Level -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},getAuthorizedPartiesForSpecificVersion,get_authorized_parties_for_specific_version,get,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list_version,select,,Get Account Authorizations For Function Version -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},createAuthorizedPartiesForSpecificVersion,create_authorized_parties_for_specific_version,post,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,set_version,replace,,Authorize Accounts To Invoke/List Function Version -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},deleteAuthorizedPartiesForSpecificVersion,delete_authorized_parties_for_specific_version,delete,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,delete_all_version,exec,,Delete All Authorizations At Version Level -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove,removeAuthorizedPartyForSpecificVersion,remove_authorized_party_for_specific_version,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,remove_version,delete,,"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function Version" -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add,addAuthorizedPartyForSpecificVersion,add_authorized_party_for_specific_version,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,add_version,insert,,"Authorize Another Account To Invoke, List, and Check Queue Details of Function Version" -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/remove,removeAuthorizedPartyForAllVersions,remove_authorized_party_for_all_versions,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,remove,delete,,"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function" -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{functionId}/add,addAuthorizedPartyForAllVersions,add_authorized_party_for_all_versions,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,add,insert,,"Authorize Another Account To Invoke, List, and Check Queue Details of Function" +nvcf_functions.yaml,/v2/nvcf/functions,createFunction,create_function,post,CreateFunctionResponse,Function Management,function management,functions,create,insert,$.function,Create Function nvcf_functions.yaml,/v2/nvcf/functions/ids,getFunctionIds,get_function_ids,get,ListFunctionIdsResponse,Function Management,function management,function_ids,list,select,$.functionIds,List Function Ids -nvcf_invocation.yaml,/v2/nvcf/tokens/functions,issueMultiFunctionsInvocationToken,issue_multi_functions_invocation_token,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_functions,exec,,Issue Function Invocation Token -nvcf_invocation.yaml,/v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId},issueInvocationToken,issue_invocation_token,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_version,exec,,Issue Function Invocation Token -nvcf_invocation.yaml,/v2/nvcf/tokens/functions/{functionId},issueInvocationToken_1,issue_invocation_token_1,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_function,exec,,Issue Function Invocation Token -nvcf_invocation.yaml,/v2/nvcf/pexec/functions/{functionId},invokeFunction,invoke_function,post,,Function Invocation,function invocation,invocations,invoke,exec,,Call Function -nvcf_invocation.yaml,/v2/nvcf/pexec/functions/{functionId}/versions/{versionId},invokeFunction_1,invoke_function_1,post,,Function Invocation,function invocation,invocations,invoke_version,exec,,Call Function +nvcf_functions.yaml,/v2/nvcf/functions/{function_id}/versions,getFunctions_1,get_functions_1,get,ListFunctionsResponse,Function Management,function management,function_versions,list,select,$.functions,List Function Versions +nvcf_functions.yaml,/v2/nvcf/functions/{function_id}/versions,createFunction_1,create_function_1,post,CreateFunctionResponse,Function Management,function management,function_versions,create,insert,$.function,Create Function Version +nvcf_functions.yaml,/v2/nvcf/functions/{function_id}/versions/{function_version_id},getFunction,get_function,get,FunctionResponse,Function Management,function management,function_versions,get,select,$.function,Get Function Version Details +nvcf_functions.yaml,/v2/nvcf/functions/{function_id}/versions/{function_version_id},updateFunction,update_function,put,FunctionResponse,Function Management,function management,function_versions,update,update,$.function,Updates mutable fields of the specified function version. +nvcf_functions.yaml,/v2/nvcf/functions/{function_id}/versions/{function_version_id},deleteFunction,delete_function,delete,,Function Management,function management,function_versions,delete,delete,,Delete Function +nvcf_functions.yaml,/v2/nvcf/metadata/functions/{function_id}/versions/{function_version_id},updateFunctionMetadata,update_function_metadata,put,FunctionResponse,Function Management,function management,function_metadata,update,update,$.function,Update Function Metadata +nvcf_functions.yaml,/v2/nvcf/ratelimit/functions/{function_id}/versions/{version_id},updateRateLimit,update_rate_limit,put,,User Ratelimit Management,user ratelimit management,function_ratelimits,update,update,,Update user ratelimit for a function version +nvcf_functions.yaml,/v2/nvcf/ratelimit/functions/{function_id}/versions/{version_id},deleteRateLimit,delete_rate_limit,delete,,User Ratelimit Management,user ratelimit management,function_ratelimits,delete,delete,,Delete user ratelimit for a function version +nvcf_functions.yaml,/v2/nvcf/secrets/functions/{function_id}/versions/{version_id},updateFunctionSecrets,update_function_secrets,put,,User Secret Management,user secret management,function_secrets,update,update,,Update user secrets for a function version nvcf_invocation.yaml,/v2/nvcf/assets,getAssets,get_assets,get,ListAssetsResponse,Asset Management,asset management,assets,list,select,$.assets,List Assets nvcf_invocation.yaml,/v2/nvcf/assets,createAsset,create_asset,post,CreateAssetResponse,Asset Management,asset management,assets,create,insert,,Create Asset -nvcf_invocation.yaml,/v2/nvcf/pexec/status/{requestId},getFunctionInvocationResult,get_function_invocation_result,get,,Function Invocation,function invocation,invocation_status,get,select,,Poll For Result Using Function Invocation Request -nvcf_invocation.yaml,/v2/nvcf/assets/{assetId},getAsset,get_asset,get,AssetResponse,Asset Management,asset management,assets,get,select,,Show Asset Details -nvcf_invocation.yaml,/v2/nvcf/assets/{assetId},deleteAsset,delete_asset,delete,,Asset Management,asset management,assets,delete,delete,,Delete Asset -nvcf_queues.yaml,/v2/nvcf/queues/{requestId}/position,getPositionInQueue,get_position_in_queue,get,GetPositionInQueueResponse,Queue Details,queue details,queue_positions,get,select,,Queue Position -nvcf_queues.yaml,/v2/nvcf/queues/functions/{functionId}/versions/{versionId},getQueuesDetails,get_queues_details,get,GetQueuesResponse,Queue Details,queue details,queues,list_version,select,$.queues,Queue Details -nvcf_queues.yaml,/v2/nvcf/queues/functions/{functionId},getQueuesDetails_1,get_queues_details_1,get,GetQueuesResponse,Queue Details,queue details,queues,list,select,$.queues,Queue Details -orgs.yaml,/v3/orgs/proto-org,createOrganizationFromProtoOrg,create_organization_from_proto_org,post,OrgResponse,Orgs,orgs,proto_orgs,create,insert,,Create Organization from ProtoOrg -orgs.yaml,/v3/orgs,createOrganizationFromScratch,create_organization_from_scratch,post,OrgResponse,Orgs,orgs,orgs,create,insert,,Create Organization from Scratch -orgs.yaml,/v2/users/me/api-key,generateUserApiKey,generate_user_api_key,post,UserKeyResponse,Users Management,users management,current_user,create_api_key,exec,,Generate API Key -orgs.yaml,/v2/users/me,whoAmI,who_am_i,get,UserResponse,Users Management,users management,current_user,get,select,$.userRoles,Who am I? -orgs.yaml,/v2/users/me,editUserProfile,edit_user_profile,patch,UserResponse,Users Management,users management,current_user,update,update,$.userRoles,Edit current user profile -orgs.yaml,/v3/orgs/proto-org/validate,protoOrgInvitationValidate,proto_org_invitation_validate,get,OrgInvitationResponse,Orgs,orgs,proto_orgs,validate,select,,Validate org creation invite -orgs.yaml,/v2/orgs,listOrganizations_1,list_organizations_1,get,OrgListResponse,Orgs,orgs,orgs,list,select,$.organizations,List Organizations +nvcf_invocation.yaml,/v2/nvcf/assets/{asset_id},getAsset,get_asset,get,AssetResponse,Asset Management,asset management,assets,get,select,$.asset,Show Asset Details +nvcf_invocation.yaml,/v2/nvcf/assets/{asset_id},deleteAsset,delete_asset,delete,,Asset Management,asset management,assets,delete,delete,,Delete Asset +nvcf_invocation.yaml,/v2/nvcf/pexec/functions/{function_id},invokeFunction,invoke_function,post,,Function Invocation,function invocation,invocations,invoke,exec,,Call Function +nvcf_invocation.yaml,/v2/nvcf/pexec/functions/{function_id}/versions/{version_id},invokeFunction_1,invoke_function_1,post,,Function Invocation,function invocation,invocations,invoke_version,exec,,Call Function +nvcf_invocation.yaml,/v2/nvcf/pexec/status/{request_id},getFunctionInvocationResult,get_function_invocation_result,get,,Function Invocation,function invocation,invocation_status,get,select,,Poll For Result Using Function Invocation Request +nvcf_invocation.yaml,/v2/nvcf/tokens/functions,issueMultiFunctionsInvocationToken,issue_multi_functions_invocation_token,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_functions,exec,,Issue Function Invocation Token +nvcf_invocation.yaml,/v2/nvcf/tokens/functions/{function_id},issueInvocationToken_1,issue_invocation_token_1,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_function,exec,,Issue Function Invocation Token +nvcf_invocation.yaml,/v2/nvcf/tokens/functions/{function_id}/versions/{function_version_id},issueInvocationToken,issue_invocation_token,post,,Function Invocation Assertion Token,function invocation assertion token,tokens,create_for_version,exec,,Issue Function Invocation Token +nvcf_queues.yaml,/v2/nvcf/queues/functions/{function_id},getQueuesDetails_1,get_queues_details_1,get,GetQueuesResponse,Queue Details,queue details,queues,list,select,$.queues,Queue Details +nvcf_queues.yaml,/v2/nvcf/queues/functions/{function_id}/versions/{version_id},getQueuesDetails,get_queues_details,get,GetQueuesResponse,Queue Details,queue details,queues,list_version,select,$.queues,Queue Details +nvcf_queues.yaml,/v2/nvcf/queues/{request_id}/position,getPositionInQueue,get_position_in_queue,get,GetPositionInQueueResponse,Queue Details,queue details,queue_positions,get,select,,Queue Position orgs.yaml,/roles,getRoles,get_roles,get,UserRoleDefinitionsResponse,Services,services,roles,list,select,$.roles,NGC Roles -orgs.yaml,/v3/orgs/{org_name}/users/nca-invitations,inviteUserToNcaInOrg,invite_user_to_nca_in_org,post,UserResponse,Users Management,users management,user_invitations,create_nca,insert,$.userRoles,Invite User to NCA (org version) -orgs.yaml,/v2/org/{org_name}/users,listUsersInOrg,list_users_in_org,get,UserListResponse,Users Management,users management,users,list,select,$.users,List users In org -orgs.yaml,/v2/org/{org_name}/users,createUserInOrg,create_user_in_org,post,UserResponse,Users Management,users management,users,create,insert,$.userRoles,Creates a User in org -orgs.yaml,/v2/org/{org_name}/teams,listTeams,list_teams,get,TeamListResponse,Teams,teams,teams,list,select,$.teams,List Teams -orgs.yaml,/v2/org/{org_name}/teams,createTeam,create_team,post,TeamCreateResponse,Teams,teams,teams,create,insert,,Create Team -orgs.yaml,/v3/orgs/{org_name}/users/{user_email-or-id}/add-role,addRoleOrInviteUserToOrg,add_role_or_invite_user_to_org,patch,UserResponse,Users Management,users management,user_roles,add,insert,$.userRoles,Invite user or add role in org -orgs.yaml,/v2/orgs/{org_name},getOrganization,get_organization,get,OrgResponse,Orgs,orgs,orgs,get,select,,Get Organization -orgs.yaml,/v2/orgs/{org_name},updateOrganization,update_organization,patch,OrgResponse,Orgs,orgs,orgs,update,update,,Update Organization -orgs.yaml,/v2/org/{org_name}/teams/{team_name},getTeam,get_team,get,TeamResponse,Teams,teams,teams,get,select,,Get Team -orgs.yaml,/v2/org/{org_name}/teams/{team_name},deleteTeam,delete_team,delete,Response,Teams,teams,teams,delete,delete,,Delete Team -orgs.yaml,/v2/org/{org_name}/teams/{team_name},editTeam,edit_team,patch,TeamResponse,Teams,teams,teams,update,update,,Edit Team -orgs.yaml,/v3/orgs/{org_name}/users/{user_email-or-id},listUserRolesInOrg,list_user_roles_in_org,get,UserResponse,Users Management,users management,users,get,select,$.userRoles,Get user in an org by email or id. -orgs.yaml,/v2/org/{org_name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInOrg,resend_user_invitation_email_in_org,get,UserResponse,Users Management,users management,user_invitations,resend_email,exec,$.userRoles,Resend email of a specific invitation in an org. -orgs.yaml,/v2/org/{org_name}/users/invitations,listInvitationsForUserInOrg,list_invitations_for_user_in_org,get,UserInvitationListResponse,Users Management,users management,user_invitations,list,select,$.invitations,List user invitations in an org. -orgs.yaml,/v2/org/{org_name}/starfleetIds/{starfleet_id},getUserInOrg_1,get_user_in_org_1,get,UserResponse,Users Management,users management,users,get_by_starfleet_id,select,$.userRoles,Get User in org -orgs.yaml,/v3/orgs/{org_name}/users/{user_email-or-id}/remove-role,removeRoleOrInvitationInOrg,remove_role_or_invitation_in_org,delete,UserResponse,Users Management,users management,user_roles,remove,delete,$.userRoles,Remove role or invitation in org -orgs.yaml,/v3/orgs/{org_name}/users/{id},removeUserFromOrg,remove_user_from_org,delete,Response,Users Management,users management,users,delete,delete,,Remove User from org -orgs.yaml,/v2/org/{org_name}/users/invitations/{id},deleteUserInvitationInOrg,delete_user_invitation_in_org,delete,Response,Users Management,users management,user_invitations,delete,delete,,Delete a specific invitation in an org. -registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,getModelArtifactsSpec,get_model_artifacts_spec,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get,select,,Get AI Playground for artifactType -registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,updateModelArtifactsSpec,update_model_artifacts_spec,put,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,update,update,,Update AI Playground for artifactType -registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,deleteModelArtifactsSpec,delete_model_artifacts_spec,delete,Response,AIPlayground,aiplayground,artifact_specs,delete,delete,,Delete AI Playground for artifactType -registry.yaml,/v1/org/{orgName}/{artifactType}/spec,createModelArtifactsSpec,create_model_artifacts_spec,post,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,create,insert,,Create AI Playground for artifactType -registry.yaml,/v1/artifact-registry/org/{org}/workflows/{workflowId},getWorkflowStatus,get_workflow_status,get,,Workflows,workflows,workflows,get,select,,Get workflow status -registry.yaml,/v1/org/{orgName}/{artifactType}/{artifactName}/purge,purgeDeletedArtifact,purge_deleted_artifact,delete,,Artifacts,artifacts,artifacts,purge,exec,,Purge Search DB -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/terms-of-service,updateTermsOfService,update_terms_of_service,put,,Publish,publish,artifacts,set_terms_of_service,exec,,Update artifact terms of service -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share,publishArtifact,publish_artifact,put,,Publish,publish,artifact_shares,add,insert,,Publish artifact to public -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share,undoPublishArtifact,undo_publish_artifact,delete,,Publish,publish,artifact_shares,remove,delete,,Undo publishing of artifact to public -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share/product,publishArtifactFromRequest,publish_artifact_from_request,put,,Publish,publish,artifact_product_shares,add,insert,,Publish artifact to product -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/share/product,undoPublishProduct,undo_publish_product,delete,,Publish,publish,artifact_product_shares,remove,delete,,Undo publishing of product artifacts -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignature,get_artifact_version_signature,get,,ArtifactSigning,artifact_signing,artifact_signatures,get,select,,Request to retrieve a pre-signed Download URL for the signature of an artifact version -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,signArtifactVersion,sign_artifact_version,put,,ArtifactSigning,artifact_signing,artifact_signatures,set,exec,,Request to sign artifact version -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/release-type,updateReleaseLabel,update_release_label,put,,Publish,publish,artifacts,set_release_type,exec,,Update artifact version release type -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},getArtifactInOrg,get_artifact_in_org,get,,Artifacts,artifacts,artifacts,get,select,,Get artifact in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},replaceArtifactInOrg,replace_artifact_in_org,put,,Artifacts,artifacts,artifacts,replace,replace,,Replace artifact in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},deleteArtifactInOrg,delete_artifact_in_org,delete,,Artifacts,artifacts,artifacts,delete,delete,,Delete artifact in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name},updateArtifactInOrg,update_artifact_in_org,patch,,Artifacts,artifacts,artifacts,update,update,,Update artifact in org -registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/team/{target_team},shareModelInOrgWithTeam,share_model_in_org_with_team,put,,Models,models,model_shares,add_team,insert,,Share org model with the specified team -registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInOrgWithTeam,revoke_share_model_in_org_with_team,delete,,Models,models,model_shares,remove_team,delete,,Revoke shared org model with the specified team -registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/org,shareModelInOrgWithOrg,share_model_in_org_with_org,put,,Models,models,model_shares,add_org,insert,,Share org model with the org -registry.yaml,/v1/org/{org_name}/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,revoke_share_model_in_org_with_org,delete,,Models,models,model_shares,remove_org,delete,,Revoke shared org model with the org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrg,add_artifact_to_collection_in_org,put,,Collections,collections,collection_artifacts,add,insert,,Add artifact to collection in org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrg,remove_artifact_from_collection_in_org,delete,,Collections,collections,collection_artifacts,remove,delete,,Remove artifact from collection in org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/team/{target_team},shareCollectionInOrgWithTeam,share_collection_in_org_with_team,put,,Collections,collections,collection_shares,add_team,insert,,Share org collection with the specified team -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/team/{target_team},revokeShareCollectionInOrgWithTeam,revoke_share_collection_in_org_with_team,delete,,Collections,collections,collection_shares,remove_team,delete,,Revoke shared org collection with the specified team -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/org,shareCollectionInOrgWithOrg,share_collection_in_org_with_org,put,,Collections,collections,collection_shares,add_org,insert,,Share org collection with the org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/shares/org,revokeShareCollectionInOrgWithOrg,revoke_share_collection_in_org_with_org,delete,,Collections,collections,collection_shares,remove_org,delete,,Revoke shared org collection with the org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/share/product,publishCollectionFromRequest,publish_collection_from_request,put,,Publish,publish,collection_product_shares,add,insert,,Publish collection to product -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org-name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrgFromAnotherOrg,add_artifact_to_collection_in_org_from_another_org,put,,Collections,collections,collection_artifacts,add_cross_org,insert,,Add artifact to collection in org from another org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org-name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrgFromAnotherOrg,remove_artifact_from_collection_in_org_from_another_org,delete,,Collections,collections,collection_artifacts,remove_cross_org,delete,,Remove artifact from collection in org from another org -registry.yaml,/v1/org/{orgName}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,initiateMalwareScan,initiate_malware_scan,post,Response,MalwareScan,malware_scan,artifacts,malware_scan,exec,,Initiates malwares can for the artifact -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createArtifactDeploymentUrlInOrg,create_artifact_deployment_url_in_org,post,,Artifact deployment parameters,artifact deployment parameters,artifact_deployments,create,insert,,Create artifact version deployment url in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,getArtifactDeploymentParametersInOrg,get_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get,select,,Get artifact deployment parameters details in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,createArtifactDeploymentParametersInOrg,create_artifact_deployment_parameters_in_org,post,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,create,insert,,Create artifact deployment parameters in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,deleteArtifactDeploymentParametersInOrg,delete_artifact_deployment_parameters_in_org,delete,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,delete,delete,,Delete artifact deployment parameters in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,updateArtifactDeploymentParametersInOrg,update_artifact_deployment_parameters_in_org,patch,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,update,update,,Update artifact deployment parameters in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact,sync_collection_release_type_labels_for_artifact,post,,Collections,collections,artifacts,sync_release_type_labels,exec,,Sync collection release type labels for artifact -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance,getOrgArtifactLicenseAcceptance,get_org_artifact_license_acceptance,get,,Publish,publish,license_acceptances,get,select,,Check if user needs to accept license -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance,acceptArtifactLicense,accept_artifact_license,post,,Publish,publish,license_acceptances,create,insert,,Accept artifact license -registry.yaml,/v1/org/{org_name}/{artifact_type},listArtifactsInOrg,list_artifacts_in_org,get,,Artifacts,artifacts,artifacts,list,select,,List artifacts in org -registry.yaml,/v1/org/{org_name}/{artifact_type},createArtifactInOrg,create_artifact_in_org,post,,Artifacts,artifacts,artifacts,create,insert,,Create artifact in org -registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions,listRecipeVersionsInOrg,list_recipe_versions_in_org,get,,Resource Versions,resource versions,recipe_versions,list,select,,List recipe versions in org -registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions,createRecipeVersionInOrg,create_recipe_version_in_org,post,,Resource Versions,resource versions,recipe_versions,create,insert,,Create recipe version in org -registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions,listRecipeVersionsInOrg_1,list_recipe_versions_in_org_1,get,,Resource Versions,resource versions,resource_versions,list,select,,List recipe versions in org -registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions,createRecipeVersionInOrg_1,create_recipe_version_in_org_1,post,,Resource Versions,resource versions,resource_versions,create,insert,,Create recipe version in org -registry.yaml,/v1/org/{org_name}/recipes,listRecipesInOrg,list_recipes_in_org,get,,Resources,resources,recipes,list,select,,List recipes in org -registry.yaml,/v1/org/{org_name}/recipes,createRecipeInOrg,create_recipe_in_org,post,,Resources,resources,recipes,create,insert,,Create recipe in org -registry.yaml,/v1/org/{org_name}/resources,listRecipesInOrg_1,list_recipes_in_org_1,get,,Resources,resources,resources,list,select,,List recipes in org -registry.yaml,/v1/org/{org_name}/resources,createRecipeInOrg_1,create_recipe_in_org_1,post,,Resources,resources,resources,create,insert,,Create recipe in org -registry.yaml,/v1/org/{org_name}/models,listModelsInOrg,list_models_in_org,get,,Models,models,models,list,select,,List models in org -registry.yaml,/v1/org/{org_name}/models,createModelInOrg,create_model_in_org,post,,Models,models,models,create,insert,,Create model in org -registry.yaml,/v1/org/{org_name}/models/{model_name}/versions,listModelVersionsInOrg,list_model_versions_in_org,get,,Model Version,model version,model_versions,list,select,,List model versions in org -registry.yaml,/v1/org/{org_name}/models/{model_name}/versions,createModelVersionInOrg,create_model_version_in_org,post,,Model Version,model version,model_versions,create,insert,,Create model version in org -registry.yaml,/v1/org/{org_name}/collections,listCollectionsInOrg,list_collections_in_org,get,,Collections,collections,collections,list,select,,List collections in org -registry.yaml,/v1/org/{org_name}/collections,createCollectionInOrg,create_collection_in_org,post,,Collections,collections,collections,create,insert,,Create collection in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs,updateTagLevelPublishConfigs,update_tag_level_publish_configs,patch,,Publish,publish,artifact_version_configs,update,update,,Publish artifact version with configs like policy badge -registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id},getRecipeVersionInOrg,get_recipe_version_in_org,get,,Resource Versions,resource versions,recipe_versions,get,select,,Get recipe version in org -registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg,update_recipe_version_in_org,patch,,Resource Versions,resource versions,recipe_versions,update,update,,Update recipe version in org -registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInOrg_1,get_recipe_version_in_org_1,get,,Resource Versions,resource versions,resource_versions,get,select,,Get recipe version in org -registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg_1,update_recipe_version_in_org_1,patch,,Resource Versions,resource versions,resource_versions,update,update,,Update recipe version in org -registry.yaml,/v1/org/{org_name}/recipes/{recipe_name},getRecipeInOrg,get_recipe_in_org,get,,Resources,resources,recipes,get,select,,Get recipe in org -registry.yaml,/v1/org/{org_name}/recipes/{recipe_name},updateRecipeInOrg,update_recipe_in_org,patch,,Resources,resources,recipes,update,update,,Update recipe in org -registry.yaml,/v1/org/{org_name}/resources/{recipe_name},getRecipeInOrg_1,get_recipe_in_org_1,get,,Resources,resources,resources,get,select,,Get recipe in org -registry.yaml,/v1/org/{org_name}/resources/{recipe_name},updateRecipeInOrg_1,update_recipe_in_org_1,patch,,Resources,resources,resources,update,update,,Update recipe in org -registry.yaml,/v1/org/{org_name}/models/{model_name},getModelInOrg,get_model_in_org,get,,Models,models,models,get,select,,Get model details in org -registry.yaml,/v1/org/{org_name}/models/{model_name},updateModelInOrg,update_model_in_org,patch,,Models,models,models,update,update,,Update model in org -registry.yaml,/v1/org/{org_name}/models/{model_name}/versions/{version_id},getModelVersionInOrg,get_model_version_in_org,get,,Model Version,model version,model_versions,get,select,,Get model version in org -registry.yaml,/v1/org/{org_name}/models/{model_name}/versions/{version_id},updateModelVersionInOrg,update_model_version_in_org,patch,,Model Version,model version,model_versions,update,update,,Update model version in org -registry.yaml,/v1/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInOrg,stash_artifact_version_in_org,patch,,Model Version,model version,model_versions,stash,exec,,Stash artifact version in org -registry.yaml,/v1/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id},getHelmChartVersionInOrg,get_helm_chart_version_in_org,get,,Helm Charts,helm charts,helm_chart_versions,get,select,,Get chart version in org -registry.yaml,/v1/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id},updateHelmChartVersionInOrg,update_helm_chart_version_in_org,patch,,Helm Charts,helm charts,helm_chart_versions,update,update,,Update chart version in org -registry.yaml,/v1/org/{org_name}/collections/{collection_name},getCollectionInOrg,get_collection_in_org,get,,Collections,collections,collections,get,select,,Get collection in org -registry.yaml,/v1/org/{org_name}/collections/{collection_name},deleteCollectionInOrg,delete_collection_in_org,delete,,Collections,collections,collections,delete,delete,,Delete collection in org -registry.yaml,/v1/org/{org_name}/collections/{collection_name},updateCollectionInOrg,update_collection_in_org,patch,,Collections,collections,collections,update,update,,Update collection in org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts,patchCollectionInOrg,patch_collection_in_org,patch,,Collections,collections,collection_artifacts,update_bulk,update,,Patch collection in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/params,listArtifactDeploymentParametersInOrg,list_artifact_deployment_parameters_in_org,get,,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list,select,,List artifact deployment parameters in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/collections,listArtifactCollectionsInOrg,list_artifact_collections_in_org,get,,Collections,collections,artifact_collections,list,select,,List artifact collections in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/catalog/flags,getPublicFlagsInOrg,get_public_flags_in_org,get,,Publish,publish,artifact_catalog_flags,get,select,,Get Catalog flags -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrg,list_artifact_files_in_org,get,,Artifact Version Files,artifact version files,artifact_files,list,select,,List artifact files in org -registry.yaml,/v1/org/{org_name}/repositories/{container_name}/associated-models,listModelVersionsAssociatedByContainer,list_model_versions_associated_by_container,get,,Model Version,model version,repository_associated_models,list,select,,List associated model versions by container -registry.yaml,/v1/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models,listModelVersionsAssociatedByContainer_2,list_model_versions_associated_by_container_2,get,,Model Version,model version,repository_associated_models,list_by_tag,select,,List associated model versions by container -registry.yaml,/v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg,list_recipe_files_in_org,get,,Resource Version Files endpoints,resource version files endpoints,recipe_files,list,select,,List recipe files in org -registry.yaml,/v1/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg_1,list_recipe_files_in_org_1,get,,Resource Version Files endpoints,resource version files endpoints,resource_files,list,select,,List recipe files in org -registry.yaml,/v1/org/{org_name}/models/{model_name}/versions/{version_id}/files,listModeFilesInOrg,list_mode_files_in_org,get,,Model Version Files,model version files,model_files,list,select,,List model files in org -registry.yaml,/v1/org/{org_name}/helm-charts/{artifact_name}/versions,listHelmChartVersionsInOrg,list_helm_chart_versions_in_org,get,,Helm Charts,helm charts,helm_chart_versions,list,select,,List chart versions in org -registry.yaml,/v1/org/{org_name}/collections/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrg,list_collection_artifacts_in_org,get,,Collections,collections,collection_artifacts,list,select,,List collection artifacts in org -registry.yaml,/v1/artifact-registry/org/{org_name}/encryption-keys,listKeysInOrg,list_keys_in_org,get,,Encryption Keys,encryption keys,encryption_keys,list,select,,List encryption keys in org -registry.yaml,/v1/artifact-registry/org/{org_name}/encryption-keys/{key_id},listArtifactsForKeyInOrg,list_artifacts_for_key_in_org,get,,Encryption Keys,encryption keys,encryption_keys,get,select,,List artifacts for encryption key in org -registry.yaml,/v1/artifact-registry/org/{org_name}/encryption-keys/{key_id},deleteKeyFromOrg,delete_key_from_org,delete,WorkflowStatusUrlResponse,Encryption Keys,encryption keys,encryption_keys,delete,delete,,Revoke encryption key in org -registry.yaml,/v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id},deleteArtifactVersionInOrg,delete_artifact_version_in_org,delete,,Artifact Versions,artifact versions,artifact_versions,delete,delete,,Delete a artifact version in org -registry.yaml,/v1/org/{org_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,disassociate_key_from_model_in_org,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete,delete,,Disassociate encryption key from model in org +orgs.yaml,/starfleetIds/{starfleet_id},getUserInOrg_1,get_user_in_org_1,get,UserResponse,Users Management,users management,users,get_by_starfleet_id,select,$.user,Get User in org +orgs.yaml,/team/{team_name}/starfleetIds/{starfleet_id},getUserInTeamByStarfleetId,get_user_in_team_by_starfleet_id,get,UserResponse,Users Management,users management,team_members,get_by_starfleet_id,select,,Get User in team +orgs.yaml,/team/{team_name}/users,listUsersInTeam,list_users_in_team,get,UserListResponse,Users Management,users management,team_members,list,select,$.users,List users in team +orgs.yaml,/team/{team_name}/users,createUserInTeam,create_user_in_team,post,UserResponse,Users Management,users management,team_members,create,insert,,Creates a User in team +orgs.yaml,/team/{team_name}/users/invitations,listInvitationsForUserInTeam,list_invitations_for_user_in_team,get,UserInvitationListResponse,Users Management,users management,team_invitations,list,select,$.invitations,List user invitations in a team. +orgs.yaml,/team/{team_name}/users/invitations/{id},deleteUserInvitationInTeam,delete_user_invitation_in_team,delete,Response,Users Management,users management,team_invitations,delete,delete,,Delete a specific invitation in a team. +orgs.yaml,/team/{team_name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInTeam,resend_user_invitation_email_in_team,get,UserResponse,Users Management,users management,team_invitations,resend_email,exec,,Resend email of a specific invitation in a team. +orgs.yaml,/team/{team_name}/users/{id},addUserToTeam,add_user_to_team,post,Response,Users Management,users management,team_members,add,insert,,Add a User to team +orgs.yaml,/teams,listTeams,list_teams,get,TeamListResponse,Teams,teams,teams,list,select,$.teams,List Teams +orgs.yaml,/teams,createTeam,create_team,post,TeamCreateResponse,Teams,teams,teams,create,insert,$.team,Create Team +orgs.yaml,/teams/{team_name},getTeam,get_team,get,TeamResponse,Teams,teams,teams,get,select,$.team,Get Team +orgs.yaml,/teams/{team_name},editTeam,edit_team,patch,TeamResponse,Teams,teams,teams,update,update,$.team,Edit Team +orgs.yaml,/teams/{team_name},deleteTeam,delete_team,delete,Response,Teams,teams,teams,delete,delete,,Delete Team +orgs.yaml,/users,listUsersInOrg,list_users_in_org,get,UserListResponse,Users Management,users management,users,list,select,$.users,List users In org +orgs.yaml,/users,createUserInOrg,create_user_in_org,post,UserResponse,Users Management,users management,users,create,insert,$.user,Creates a User in org +orgs.yaml,/users/invitations,listInvitationsForUserInOrg,list_invitations_for_user_in_org,get,UserInvitationListResponse,Users Management,users management,user_invitations,list,select,$.invitations,List user invitations in an org. +orgs.yaml,/users/invitations/{id},deleteUserInvitationInOrg,delete_user_invitation_in_org,delete,Response,Users Management,users management,user_invitations,delete,delete,,Delete a specific invitation in an org. +orgs.yaml,/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInOrg,resend_user_invitation_email_in_org,get,UserResponse,Users Management,users management,user_invitations,resend_email,exec,,Resend email of a specific invitation in an org. +orgs.yaml,/v2/orgs,listOrganizations_1,list_organizations_1,get,OrgListResponse,Orgs,orgs,orgs,list,select,$.organizations,List Organizations +orgs.yaml,/v2/orgs/{org_name},getOrganization,get_organization,get,OrgResponse,Orgs,orgs,orgs,get,select,$.organizations,Get Organization +orgs.yaml,/v2/orgs/{org_name},updateOrganization,update_organization,patch,OrgResponse,Orgs,orgs,orgs,update,update,$.organizations,Update Organization +orgs.yaml,/v2/users/me,whoAmI,who_am_i,get,UserResponse,Users Management,users management,current_user,get,select,$.user,Who am I? +orgs.yaml,/v2/users/me,editUserProfile,edit_user_profile,patch,UserResponse,Users Management,users management,current_user,update,update,$.user,Edit current user profile +orgs.yaml,/v2/users/me/api-key,generateUserApiKey,generate_user_api_key,post,UserKeyResponse,Users Management,users management,current_user,create_api_key,exec,,Generate API Key +orgs.yaml,/v3/orgs,createOrganizationFromScratch,create_organization_from_scratch,post,OrgResponse,Orgs,orgs,orgs,create,insert,$.organizations,Create Organization from Scratch +orgs.yaml,/v3/orgs/proto-org,createOrganizationFromProtoOrg,create_organization_from_proto_org,post,OrgResponse,Orgs,orgs,proto_orgs,create,insert,$.organizations,Create Organization from ProtoOrg +orgs.yaml,/v3/orgs/proto-org/validate,protoOrgInvitationValidate,proto_org_invitation_validate,get,OrgInvitationResponse,Orgs,orgs,proto_orgs,validate,select,$.orgInvitation,Validate org creation invite +orgs.yaml,/teams/{team_name}/users/nca-invitations,inviteUserToNcaInTeam,invite_user_to_nca_in_team,post,UserResponse,Users Management,users management,team_invitations,create_nca,insert,,Invite User to NCA (team version) +orgs.yaml,/teams/{team_name}/users/{id},removeUserFromTeam,remove_user_from_team,delete,Response,Users Management,users management,team_members,remove,delete,,Remove User from team +orgs.yaml,/teams/{team_name}/users/{user_email_or_id},listUserRolesInOrgTeam,list_user_roles_in_org_team,get,UserResponse,Users Management,users management,team_members,get,select,,Get user in a team by email or id. +orgs.yaml,/teams/{team_name}/users/{user_email_or_id}/add-role,addRoleOrInviteUserToTeam,add_role_or_invite_user_to_team,patch,UserResponse,Users Management,users management,team_member_roles,add,insert,,Invite user or add role in team +orgs.yaml,/teams/{team_name}/users/{user_email_or_id}/remove-role,removeRoleOrInvitationInTeam,remove_role_or_invitation_in_team,delete,UserResponse,Users Management,users management,team_member_roles,remove,delete,,Remove role or invitation in team +orgs.yaml,/users/nca-invitations,inviteUserToNcaInOrg,invite_user_to_nca_in_org,post,UserResponse,Users Management,users management,user_invitations,create_nca,insert,,Invite User to NCA (org version) +orgs.yaml,/users/{id},removeUserFromOrg,remove_user_from_org,delete,Response,Users Management,users management,users,delete,delete,,Remove User from org +orgs.yaml,/users/{user_email_or_id},listUserRolesInOrg,list_user_roles_in_org,get,UserResponse,Users Management,users management,users,get,select,$.user,Get user in an org by email or id. +orgs.yaml,/users/{user_email_or_id}/add-role,addRoleOrInviteUserToOrg,add_role_or_invite_user_to_org,patch,UserResponse,Users Management,users management,user_roles,add,insert,,Invite user or add role in org +orgs.yaml,/users/{user_email_or_id}/remove-role,removeRoleOrInvitationInOrg,remove_role_or_invitation_in_org,delete,UserResponse,Users Management,users management,user_roles,remove,delete,,Remove role or invitation in org +private_registry.yaml,/encryption-keys,listKeysInOrg,list_keys_in_org,get,KeyListResponse,Encryption Keys,encryption keys,encryption_keys,list,select,$.encryptionKeys,List encryption keys in org +private_registry.yaml,/encryption-keys/{key_id},listArtifactsForKeyInOrg,list_artifacts_for_key_in_org,get,KeyArtifactListResponse,Encryption Keys,encryption keys,encryption_keys,get,select,$.artifacts,List artifacts for encryption key in org +private_registry.yaml,/encryption-keys/{key_id},deleteKeyFromOrg,delete_key_from_org,delete,WorkflowStatusUrlResponse,Encryption Keys,encryption keys,encryption_keys,delete,delete,,Revoke encryption key in org +private_registry.yaml,/team/{team_name}/encryption-keys,listKeysInTeam,list_keys_in_team,get,KeyListResponse,Encryption Keys,encryption keys,encryption_keys,list_by_team,select,$.encryptionKeys,List encryption keys in org/team +private_registry.yaml,/team/{team_name}/encryption-keys/{key_id},listArtifactsForKeyInTeam,list_artifacts_for_key_in_team,get,KeyArtifactListResponse,Encryption Keys,encryption keys,encryption_keys,get_by_team,select,$.artifacts,List artifacts for encryption key in org/team +private_registry.yaml,/team/{team_name}/encryption-keys/{key_id},deleteKeyFromTeam,delete_key_from_team,delete,WorkflowStatusUrlResponse,Encryption Keys,encryption keys,encryption_keys,delete_by_team,delete,,Revoke encryption key in org/team +private_registry.yaml,/team/{team}/workflows/{workflow_id},getWorkflowStatusForTeam,get_workflow_status_for_team,get,,Workflows,workflows,workflows,get_by_team,select,,Get team-scoped workflow status +private_registry.yaml,/workflows/{workflow_id},getWorkflowStatus,get_workflow_status,get,,Workflows,workflows,workflows,get,select,,Get workflow status +private_registry.yaml,/collections,listCollectionsInOrg,list_collections_in_org,get,CollectionListResponse,Collections,collections,collections,list,select,$.collections,List collections in org +private_registry.yaml,/collections,createCollectionInOrg,create_collection_in_org,post,CollectionResponse,Collections,collections,collections,create,insert,$.collection,Create collection in org +private_registry.yaml,/collections/{collection_name},getCollectionInOrg,get_collection_in_org,get,CollectionResponse,Collections,collections,collections,get,select,$.collection,Get collection in org +private_registry.yaml,/collections/{collection_name},updateCollectionInOrg,update_collection_in_org,patch,CollectionResponse,Collections,collections,collections,update,update,$.collection,Update collection in org +private_registry.yaml,/collections/{collection_name},deleteCollectionInOrg,delete_collection_in_org,delete,Response,Collections,collections,collections,delete,delete,,Delete collection in org +private_registry.yaml,/collections/{collection_name}/artifacts,patchCollectionInOrg,patch_collection_in_org,patch,Response,Collections,collections,collection_artifacts,update_bulk,update,,Patch collection in org +private_registry.yaml,/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrgFromAnotherOrgAndTeam,add_artifact_to_collection_in_org_from_another_org_and_team,put,Response,Collections,collections,collection_artifacts,add_cross_org_team,insert,,Add artifact to collection in org from another org and team +private_registry.yaml,/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam,remove_artifact_from_collection_in_org_from_another_org_and_team,delete,Response,Collections,collections,collection_artifacts,remove_cross_org_team,delete,,Remove artifact from collection in org from another org +private_registry.yaml,/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrgFromAnotherOrg,add_artifact_to_collection_in_org_from_another_org,put,Response,Collections,collections,collection_artifacts,add_cross_org,insert,,Add artifact to collection in org from another org +private_registry.yaml,/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrgFromAnotherOrg,remove_artifact_from_collection_in_org_from_another_org,delete,Response,Collections,collections,collection_artifacts,remove_cross_org,delete,,Remove artifact from collection in org from another org +private_registry.yaml,/collections/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrg,list_collection_artifacts_in_org,get,ArtifactListResponse,Collections,collections,collection_artifacts,list,select,$.artifacts,List collection artifacts in org +private_registry.yaml,/collections/{collection_name}/share/product,publishCollectionFromRequest,publish_collection_from_request,put,Response,Publish,publish,collection_product_shares,add,insert,,Publish collection to product +private_registry.yaml,/collections/{collection_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrg,add_artifact_to_collection_in_org,put,Response,Collections,collections,collection_artifacts,add,insert,,Add artifact to collection in org +private_registry.yaml,/collections/{collection_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrg,remove_artifact_from_collection_in_org,delete,Response,Collections,collections,collection_artifacts,remove,delete,,Remove artifact from collection in org +private_registry.yaml,/helm-charts/{artifact_name}/versions,listHelmChartVersionsInOrg,list_helm_chart_versions_in_org,get,ArtifactVersionListResponse,Helm Charts,helm charts,helm_chart_versions,list,select,$.artifactVersions,List chart versions in org +private_registry.yaml,/helm-charts/{artifact_name}/versions/{version_id},getHelmChartVersionInOrg,get_helm_chart_version_in_org,get,ArtifactVersionResponse,Helm Charts,helm charts,helm_chart_versions,get,select,$.artifactVersion,Get chart version in org +private_registry.yaml,/helm-charts/{artifact_name}/versions/{version_id},updateHelmChartVersionInOrg,update_helm_chart_version_in_org,patch,ArtifactVersionResponse,Helm Charts,helm charts,helm_chart_versions,update,update,$.artifactVersion,Update chart version in org +private_registry.yaml,/models,listModelsInOrg,list_models_in_org,get,ModelListResponse,Models,models,models,list,select,$.models,List models in org +private_registry.yaml,/models,createModelInOrg,create_model_in_org,post,ModelResponse,Models,models,models,create,insert,$.model,Create model in org +private_registry.yaml,/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInOrg,stash_artifact_version_in_org,patch,Response,Model Version,model version,model_versions,stash,exec,,Stash artifact version in org +private_registry.yaml,/models/{model_name},getModelInOrg,get_model_in_org,get,ModelResponse,Models,models,models,get,select,$.model,Get model details in org +private_registry.yaml,/models/{model_name},updateModelInOrg,update_model_in_org,patch,ModelResponse,Models,models,models,update,update,$.model,Update model in org +private_registry.yaml,/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,disassociate_key_from_model_in_org,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete,delete,,Disassociate encryption key from model in org +private_registry.yaml,/models/{model_name}/shares/org,shareModelInOrgWithOrg,share_model_in_org_with_org,put,Response,Models,models,model_shares,add_org,insert,,Share org model with the org +private_registry.yaml,/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,revoke_share_model_in_org_with_org,delete,Response,Models,models,model_shares,remove_org,delete,,Revoke shared org model with the org +private_registry.yaml,/models/{model_name}/shares/team/{target_team},shareModelInOrgWithTeam,share_model_in_org_with_team,put,Response,Models,models,model_shares,add_team,insert,,Share org model with the specified team +private_registry.yaml,/models/{model_name}/shares/team/{target_team},revokeShareModelInOrgWithTeam,revoke_share_model_in_org_with_team,delete,Response,Models,models,model_shares,remove_team,delete,,Revoke shared org model with the specified team +private_registry.yaml,/models/{model_name}/versions,listModelVersionsInOrg,list_model_versions_in_org,get,ModelVersionListResponse,Model Version,model version,model_versions,list,select,$.modelVersions,List model versions in org +private_registry.yaml,/models/{model_name}/versions,createModelVersionInOrg,create_model_version_in_org,post,ModelVersionResponse,Model Version,model version,model_versions,create,insert,$.modelVersion,Create model version in org +private_registry.yaml,/models/{model_name}/versions/{version_id},getModelVersionInOrg,get_model_version_in_org,get,ModelVersionResponse,Model Version,model version,model_versions,get,select,$.modelVersion,Get model version in org +private_registry.yaml,/models/{model_name}/versions/{version_id},updateModelVersionInOrg,update_model_version_in_org,patch,ModelVersionResponse,Model Version,model version,model_versions,update,update,$.modelVersion,Update model version in org +private_registry.yaml,/models/{model_name}/versions/{version_id}/files,listModeFilesInOrg,list_mode_files_in_org,get,ModelVersionFileListResponse,Model Version Files,model version files,model_files,list,select,$.modelFiles,List model files in org +private_registry.yaml,/recipes,listRecipesInOrg,list_recipes_in_org,get,RecipeListResponse,Resources,resources,recipes,list,select,$.recipes,List recipes in org +private_registry.yaml,/recipes,createRecipeInOrg,create_recipe_in_org,post,RecipeResponse,Resources,resources,recipes,create,insert,$.recipe,Create recipe in org +private_registry.yaml,/recipes/{recipe_name},getRecipeInOrg,get_recipe_in_org,get,RecipeResponse,Resources,resources,recipes,get,select,$.recipe,Get recipe in org +private_registry.yaml,/recipes/{recipe_name},updateRecipeInOrg,update_recipe_in_org,patch,RecipeResponse,Resources,resources,recipes,update,update,$.recipe,Update recipe in org +private_registry.yaml,/recipes/{recipe_name}/versions,listRecipeVersionsInOrg,list_recipe_versions_in_org,get,RecipeVersionListResponse,Resource Versions,resource versions,recipe_versions,list,select,$.recipeVersions,List recipe versions in org +private_registry.yaml,/recipes/{recipe_name}/versions,createRecipeVersionInOrg,create_recipe_version_in_org,post,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,create,insert,$.recipeVersion,Create recipe version in org +private_registry.yaml,/recipes/{recipe_name}/versions/{version_id},getRecipeVersionInOrg,get_recipe_version_in_org,get,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,get,select,$.recipeVersion,Get recipe version in org +private_registry.yaml,/recipes/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg,update_recipe_version_in_org,patch,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,update,update,$.recipeVersion,Update recipe version in org +private_registry.yaml,/recipes/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg,list_recipe_files_in_org,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,recipe_files,list,select,$.recipeFiles,List recipe files in org +private_registry.yaml,/repositories/{container_name}/associated-models,listModelVersionsAssociatedByContainer,list_model_versions_associated_by_container,get,ModelVersionListResponse,Model Version,model version,repository_associated_models,list,select,$.modelVersions,List associated model versions by container +private_registry.yaml,/repositories/{container_name}/tags/{container_tag}/associated-models,listModelVersionsAssociatedByContainer_2,list_model_versions_associated_by_container_2,get,ModelVersionListResponse,Model Version,model version,repository_associated_models,list_by_tag,select,$.modelVersions,List associated model versions by container +private_registry.yaml,/resources,listRecipesInOrg_1,list_recipes_in_org_1,get,RecipeListResponse,Resources,resources,resources,list,select,$.recipes,List recipes in org +private_registry.yaml,/resources,createRecipeInOrg_1,create_recipe_in_org_1,post,RecipeResponse,Resources,resources,resources,create,insert,$.recipe,Create recipe in org +private_registry.yaml,/resources/{recipe_name},getRecipeInOrg_1,get_recipe_in_org_1,get,RecipeResponse,Resources,resources,resources,get,select,$.recipe,Get recipe in org +private_registry.yaml,/resources/{recipe_name},updateRecipeInOrg_1,update_recipe_in_org_1,patch,RecipeResponse,Resources,resources,resources,update,update,$.recipe,Update recipe in org +private_registry.yaml,/resources/{recipe_name}/versions,listRecipeVersionsInOrg_1,list_recipe_versions_in_org_1,get,RecipeVersionListResponse,Resource Versions,resource versions,resource_versions,list,select,$.recipeVersions,List recipe versions in org +private_registry.yaml,/resources/{recipe_name}/versions,createRecipeVersionInOrg_1,create_recipe_version_in_org_1,post,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,create,insert,$.recipeVersion,Create recipe version in org +private_registry.yaml,/resources/{recipe_name}/versions/{version_id},getRecipeVersionInOrg_1,get_recipe_version_in_org_1,get,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,get,select,$.recipeVersion,Get recipe version in org +private_registry.yaml,/resources/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg_1,update_recipe_version_in_org_1,patch,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,update,update,$.recipeVersion,Update recipe version in org +private_registry.yaml,/resources/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg_1,list_recipe_files_in_org_1,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,resource_files,list,select,$.recipeFiles,List recipe files in org +private_registry.yaml,/team/{team_name}/collections,listCollectionsInTeam,list_collections_in_team,get,CollectionListResponse,Collections,collections,collections,list_by_team,select,$.collections,List collections in team +private_registry.yaml,/team/{team_name}/collections,createCollectionInTeam,create_collection_in_team,post,CollectionResponse,Collections,collections,collections,create_by_team,insert,$.collection,Create collection in org and team +private_registry.yaml,/team/{team_name}/collections/{collection_name},getCollectionInTeam,get_collection_in_team,get,CollectionResponse,Collections,collections,collections,get_by_team,select,$.collection,Get collection in team +private_registry.yaml,/team/{team_name}/collections/{collection_name},updateCollectionInTeam,update_collection_in_team,patch,CollectionResponse,Collections,collections,collections,update_by_team,update,$.collection,Update collection in team +private_registry.yaml,/team/{team_name}/collections/{collection_name},deleteCollectionInTeam,delete_collection_in_team,delete,Response,Collections,collections,collections,delete_by_team,delete,,Delete collection in org and team +private_registry.yaml,/team/{team_name}/collections/{collection_name}/artifacts,patchCollectionInTeam,patch_collection_in_team,patch,Response,Collections,collections,collection_artifacts,update_bulk_by_team,update,,Patch collection in org and team +private_registry.yaml,/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInTeamFromAnotherOrgAndTeam,add_artifact_to_collection_in_team_from_another_org_and_team,put,Response,Collections,collections,collection_artifacts,add_cross_org_team_by_team,insert,,Add artifact to collection in org and team from another org and team +private_registry.yaml,/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam,remove_artifact_from_collection_in_team_from_another_org_and_team,delete,Response,Collections,collections,collection_artifacts,remove_cross_org_team_by_team,delete,,Remove artifact from collection in org and team from another org and team +private_registry.yaml,/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInTeamFromAnotherOrg,add_artifact_to_collection_in_team_from_another_org,put,Response,Collections,collections,collection_artifacts,add_cross_org_by_team,insert,,Add artifact to collection in org and team from another org +private_registry.yaml,/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInTeamFromAnotherOrg,remove_artifact_from_collection_in_team_from_another_org,delete,Response,Collections,collections,collection_artifacts,remove_cross_org_by_team,delete,,Remove artifact from collection in org and team from another org +private_registry.yaml,/team/{team_name}/collections/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInTeam,list_collection_artifacts_in_team,get,ArtifactListResponse,Collections,collections,collection_artifacts,list_by_team,select,$.artifacts,List collection artifacts in org and team +private_registry.yaml,/team/{team_name}/collections/{collection_name}/share/product,publishCollectionFromRequest_1,publish_collection_from_request_1,put,Response,Publish,publish,collection_product_shares,add_by_team,insert,,Publish collection to product +private_registry.yaml,/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInTeam,add_artifact_to_collection_in_team,put,Response,Collections,collections,collection_artifacts,add_by_team,insert,,Add artifact to collection in org and team +private_registry.yaml,/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInTeam,remove_artifact_from_collection_in_team,delete,Response,Collections,collections,collection_artifacts,remove_by_team,delete,,Remove artifact from collection in org and team +private_registry.yaml,/team/{team_name}/helm-charts/{artifact_name}/versions,listHelmChartVersionsInTeam,list_helm_chart_versions_in_team,get,ArtifactVersionListResponse,Helm Charts,helm charts,helm_chart_versions,list_by_team,select,$.artifactVersions,List chart versions in team +private_registry.yaml,/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id},getHelmChartVersionInTeam,get_helm_chart_version_in_team,get,ArtifactVersionResponse,Helm Charts,helm charts,helm_chart_versions,get_by_team,select,$.artifactVersion,Get chart version in team +private_registry.yaml,/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id},updateHelmChartVersionInTeam,update_helm_chart_version_in_team,patch,ArtifactVersionResponse,Helm Charts,helm charts,helm_chart_versions,update_by_team,update,$.artifactVersion,Update chart version in team +private_registry.yaml,/team/{team_name}/models,listModelsInTeam,list_models_in_team,get,ModelListResponse,Models,models,models,list_by_team,select,$.models,List models in team +private_registry.yaml,/team/{team_name}/models,createModelInTeam,create_model_in_team,post,ModelResponse,Models,models,models,create_by_team,insert,$.model,Create model in team +private_registry.yaml,/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInTeam,stash_artifact_version_in_team,patch,Response,Model Version,model version,model_versions,stash_by_team,exec,,Stash artifact version in team +private_registry.yaml,/team/{team_name}/models/{model_name},getModelInTeam,get_model_in_team,get,ModelResponse,Models,models,models,get_by_team,select,$.model,Get model in team +private_registry.yaml,/team/{team_name}/models/{model_name},updateModelInTeam,update_model_in_team,patch,ModelResponse,Models,models,models,update_by_team,update,$.model,Update model in team +private_registry.yaml,/team/{team_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInTeam,disassociate_key_from_model_in_team,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete_by_team,delete,,Disassociate encryption key from model in team +private_registry.yaml,/team/{team_name}/models/{model_name}/shares/org,shareModelInTeamWithOrg,share_model_in_team_with_org,put,Response,Models,models,model_shares,add_org_by_team,insert,,Share team model with the org +private_registry.yaml,/team/{team_name}/models/{model_name}/shares/org,revokeShareModelInTeamWithOrg,revoke_share_model_in_team_with_org,delete,Response,Models,models,model_shares,remove_org_by_team,delete,,Revoke shared team model with the org +private_registry.yaml,/team/{team_name}/models/{model_name}/shares/team/{target_team},shareModelInTeamWithTeam,share_model_in_team_with_team,put,Response,Models,models,model_shares,add_team_by_team,insert,,Share team model with the specified team +private_registry.yaml,/team/{team_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInTeamWithTeam,revoke_share_model_in_team_with_team,delete,Response,Models,models,model_shares,remove_team_by_team,delete,,Revoke shared team model with the specified team +private_registry.yaml,/team/{team_name}/models/{model_name}/versions,listModelVersionsInTeam,list_model_versions_in_team,get,ModelVersionListResponse,Model Version,model version,model_versions,list_by_team,select,$.modelVersions,List model versions in team +private_registry.yaml,/team/{team_name}/models/{model_name}/versions,createModelVersionInTeam,create_model_version_in_team,post,ModelVersionResponse,Model Version,model version,model_versions,create_by_team,insert,$.modelVersion,Create model version in team. +private_registry.yaml,/team/{team_name}/models/{model_name}/versions/{version_id},getModelVersionInTeam,get_model_version_in_team,get,ModelVersionResponse,Model Version,model version,model_versions,get_by_team,select,$.modelVersion,Get model version in team +private_registry.yaml,/team/{team_name}/models/{model_name}/versions/{version_id},updateModelVersionInTeam,update_model_version_in_team,patch,ModelVersionResponse,Model Version,model version,model_versions,update_by_team,update,$.modelVersion,Update model version in team +private_registry.yaml,/team/{team_name}/models/{model_name}/versions/{version_id}/files,listModeFilesInTeam,list_mode_files_in_team,get,ModelVersionFileListResponse,Model Version Files,model version files,model_files,list_by_team,select,$.modelFiles,List model files in team +private_registry.yaml,/team/{team_name}/recipes,listRecipesInTeam,list_recipes_in_team,get,RecipeListResponse,Resources,resources,recipes,list_by_team,select,$.recipes,List recipes in team +private_registry.yaml,/team/{team_name}/recipes,createRecipeInTeam,create_recipe_in_team,post,RecipeResponse,Resources,resources,recipes,create_by_team,insert,$.recipe,Create recipe in team +private_registry.yaml,/team/{team_name}/recipes/{recipe_name},getRecipeInTeam,get_recipe_in_team,get,RecipeResponse,Resources,resources,recipes,get_by_team,select,$.recipe,Get recipe in team +private_registry.yaml,/team/{team_name}/recipes/{recipe_name},updateRecipeInTeam,update_recipe_in_team,patch,RecipeResponse,Resources,resources,recipes,update_by_team,update,$.recipe,Update recipe in team +private_registry.yaml,/team/{team_name}/recipes/{recipe_name}/versions,listRecipeVersionsInTeam,list_recipe_versions_in_team,get,RecipeVersionListResponse,Resource Versions,resource versions,recipe_versions,list_by_team,select,$.recipeVersions,List recipe versions in team +private_registry.yaml,/team/{team_name}/recipes/{recipe_name}/versions,createRecipeVersionInTeam,create_recipe_version_in_team,post,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,create_by_team,insert,$.recipeVersion,Create recipe version in team +private_registry.yaml,/team/{team_name}/recipes/{recipe_name}/versions/{version_id},getRecipeVersionInTeam,get_recipe_version_in_team,get,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,get_by_team,select,$.recipeVersion,Get recipe version in team +private_registry.yaml,/team/{team_name}/recipes/{recipe_name}/versions/{version_id},updateRecipeVersionInTeam,update_recipe_version_in_team,patch,RecipeVersionResponse,Resource Versions,resource versions,recipe_versions,update_by_team,update,$.recipeVersion,Update recipe version in team +private_registry.yaml,/team/{team_name}/recipes/{recipe_name}/versions/{version_id}/files,listRecipeFilesInTeam,list_recipe_files_in_team,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,recipe_files,list_by_team,select,$.recipeFiles,List recipe files in team +private_registry.yaml,/team/{team_name}/repositories/{container_name}/associated-models,listModelVersionsAssociatedByContainer_1,list_model_versions_associated_by_container_1,get,ModelVersionListResponse,Model Version,model version,repository_associated_models,list_by_team,select,$.modelVersions,List associated model versions by container +private_registry.yaml,/team/{team_name}/repositories/{container_name}/tags/{container_tag}/associated-models,listModelVersionsAssociatedByContainer_3,list_model_versions_associated_by_container_3,get,ModelVersionListResponse,Model Version,model version,repository_associated_models,list_by_tag_by_team,select,$.modelVersions,List associated model versions by container +private_registry.yaml,/team/{team_name}/resources,listRecipesInTeam_1,list_recipes_in_team_1,get,RecipeListResponse,Resources,resources,resources,list_by_team,select,$.recipes,List recipes in team +private_registry.yaml,/team/{team_name}/resources,createRecipeInTeam_1,create_recipe_in_team_1,post,RecipeResponse,Resources,resources,resources,create_by_team,insert,$.recipe,Create recipe in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name},getRecipeInTeam_1,get_recipe_in_team_1,get,RecipeResponse,Resources,resources,resources,get_by_team,select,$.recipe,Get recipe in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name},updateRecipeInTeam_1,update_recipe_in_team_1,patch,RecipeResponse,Resources,resources,resources,update_by_team,update,$.recipe,Update recipe in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions,listRecipeVersionsInTeam_1,list_recipe_versions_in_team_1,get,RecipeVersionListResponse,Resource Versions,resource versions,resource_versions,list_by_team,select,$.recipeVersions,List recipe versions in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions,createRecipeVersionInTeam_1,create_recipe_version_in_team_1,post,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,create_by_team,insert,$.recipeVersion,Create recipe version in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInTeam_1,get_recipe_version_in_team_1,get,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,get_by_team,select,$.recipeVersion,Get recipe version in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions/{version_id},updateRecipeVersionInTeam_1,update_recipe_version_in_team_1,patch,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,update_by_team,update,$.recipeVersion,Update recipe version in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions/{version_id}/files,listRecipeFilesInTeam_1,list_recipe_files_in_team_1,get,RecipeVersionFileListResponse,Resource Version Files endpoints,resource version files endpoints,resource_files,list_by_team,select,$.recipeFiles,List recipe files in team +private_registry.yaml,/team/{team_name}/{artifact_type},listArtifactsInTeam,list_artifacts_in_team,get,ArtifactListResponse,Artifacts,artifacts,artifacts,list_by_team,select,$.artifacts,List artifacts in team +private_registry.yaml,/team/{team_name}/{artifact_type},createArtifactInTeam,create_artifact_in_team,post,ArtifactResponse,Artifacts,artifacts,artifacts,create_by_team,insert,$.artifact,Create artifact in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name},getArtifactInTeam,get_artifact_in_team,get,ArtifactResponse,Artifacts,artifacts,artifacts,get_by_team,select,$.artifact,Get artifact in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name},replaceArtifactInTeam,replace_artifact_in_team,put,ArtifactResponse,Artifacts,artifacts,artifacts,replace_by_team,replace,$.artifact,Replace artifact in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name},updateArtifactInTeam,update_artifact_in_team,patch,ArtifactResponse,Artifacts,artifacts,artifacts,update_by_team,update,$.artifact,Update artifact in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name},deleteArtifactInTeam,delete_artifact_in_team,delete,Response,Artifacts,artifacts,artifacts,delete_by_team,delete,,Delete artifact in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/catalog/flags,getPublicFlagsInTeam,get_public_flags_in_team,get,ArtifactCatalogFlags,Publish,publish,artifact_catalog_flags,get_by_team,select,,Get Catalog flags +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/collections,listArtifactCollectionsInTeam,list_artifact_collections_in_team,get,CollectionListResponse,Collections,collections,artifact_collections,list_by_team,select,$.collections,List artifact collections in org and team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact_1,sync_collection_release_type_labels_for_artifact_1,post,Response,Collections,collections,artifacts,sync_release_type_labels_by_team,exec,,Sync collection release type labels for artifact +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/deployments/params,listArtifactDeploymentParametersInTeam,list_artifact_deployment_parameters_in_team,get,DeploymentParametersListResponse,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list_by_team,select,$.deploymentParameters,List artifact deployment parameters in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,getArtifactDeploymentParametersInTeam,get_artifact_deployment_parameters_in_team,get,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get_by_team,select,,Get artifact deployment parameters details in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,createArtifactDeploymentParametersInTeam,create_artifact_deployment_parameters_in_team,post,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,create_by_team,insert,,Create artifact deployment parameters in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,updateArtifactDeploymentParametersInTeam,update_artifact_deployment_parameters_in_team,patch,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,update_by_team,update,,Update artifact deployment parameters in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,deleteArtifactDeploymentParametersInTeam,delete_artifact_deployment_parameters_in_team,delete,Response,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,delete_by_team,delete,,Delete artifact deployment parameters in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance,acceptArtifactLicense_1,accept_artifact_license_1,post,Response,Publish,publish,license_acceptances,create_by_team,insert,,Accept artifact license +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/release-type,updateReleaseLabel_1,update_release_label_1,put,Response,Publish,publish,artifacts,set_release_type_by_team,exec,,Update artifact version release type +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/share,publishArtifact_1,publish_artifact_1,put,Response,Publish,publish,artifact_shares,add_by_team,insert,,Publish artifact to public +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/share,undoPublishArtifact_1,undo_publish_artifact_1,delete,Response,Publish,publish,artifact_shares,remove_by_team,delete,,Undo publishing of artifact to public +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/share/product,publishArtifactFromRequest_1,publish_artifact_from_request_1,put,Response,Publish,publish,artifact_product_shares,add_by_team,insert,,Publish artifact to product +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/share/product,undoPublishProduct_1,undo_publish_product_1,delete,Response,Publish,publish,artifact_product_shares,remove_by_team,delete,,Undo publishing of product artifacts +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/terms-of-service,updateTermsOfService_1,update_terms_of_service_1,put,Response,Publish,publish,artifacts,set_terms_of_service_by_team,exec,,Update artifact terms of service +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id},deleteArtifactVersionInTeam,delete_artifact_version_in_team,delete,Response,Artifact Versions,artifact versions,artifact_versions,delete_by_team,delete,,Delete a artifact version in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs,updateTagLevelPublishConfigs_1,update_tag_level_publish_configs_1,patch,Response,Publish,publish,artifact_version_configs,update_by_team,update,,Publish artifact version with configs like policy badge +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createArtifactDeploymentUrlInTeam,create_artifact_deployment_url_in_team,post,DeploymentUrlResponse,Artifact deployment parameters,artifact deployment parameters,artifact_deployments,create_by_team,insert,,Create artifact version deployment url in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInTeam,list_artifact_files_in_team,get,ArtifactVersionFileListResponse,Artifact Version Files,artifact version files,artifact_files,list_by_team,select,$.artifactFiles,List artifact files in team +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,signArtifactVersion_1,sign_artifact_version_1,put,ArtifactDownloadResponse,ArtifactSigning,artifact_signing,artifact_signatures,set_by_team,exec,,Request to sign artifact version +private_registry.yaml,/{artifact_type},listArtifactsInOrg,list_artifacts_in_org,get,ArtifactListResponse,Artifacts,artifacts,artifacts,list,select,$.artifacts,List artifacts in org +private_registry.yaml,/{artifact_type},createArtifactInOrg,create_artifact_in_org,post,ArtifactResponse,Artifacts,artifacts,artifacts,create,insert,$.artifact,Create artifact in org +private_registry.yaml,/{artifact_type}/{artifact_name},getArtifactInOrg,get_artifact_in_org,get,ArtifactResponse,Artifacts,artifacts,artifacts,get,select,$.artifact,Get artifact in org +private_registry.yaml,/{artifact_type}/{artifact_name},replaceArtifactInOrg,replace_artifact_in_org,put,ArtifactResponse,Artifacts,artifacts,artifacts,replace,replace,$.artifact,Replace artifact in org +private_registry.yaml,/{artifact_type}/{artifact_name},updateArtifactInOrg,update_artifact_in_org,patch,ArtifactResponse,Artifacts,artifacts,artifacts,update,update,$.artifact,Update artifact in org +private_registry.yaml,/{artifact_type}/{artifact_name},deleteArtifactInOrg,delete_artifact_in_org,delete,Response,Artifacts,artifacts,artifacts,delete,delete,,Delete artifact in org +private_registry.yaml,/{artifact_type}/{artifact_name}/catalog/flags,getPublicFlagsInOrg,get_public_flags_in_org,get,ArtifactCatalogFlags,Publish,publish,artifact_catalog_flags,get,select,,Get Catalog flags +private_registry.yaml,/{artifact_type}/{artifact_name}/collections,listArtifactCollectionsInOrg,list_artifact_collections_in_org,get,CollectionListResponse,Collections,collections,artifact_collections,list,select,$.collections,List artifact collections in org +private_registry.yaml,/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact,sync_collection_release_type_labels_for_artifact,post,Response,Collections,collections,artifacts,sync_release_type_labels,exec,,Sync collection release type labels for artifact +private_registry.yaml,/{artifact_type}/{artifact_name}/deployments/params,listArtifactDeploymentParametersInOrg,list_artifact_deployment_parameters_in_org,get,DeploymentParametersListResponse,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,list,select,$.deploymentParameters,List artifact deployment parameters in org +private_registry.yaml,/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,getArtifactDeploymentParametersInOrg,get_artifact_deployment_parameters_in_org,get,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,get,select,,Get artifact deployment parameters details in org +private_registry.yaml,/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,createArtifactDeploymentParametersInOrg,create_artifact_deployment_parameters_in_org,post,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,create,insert,,Create artifact deployment parameters in org +private_registry.yaml,/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,updateArtifactDeploymentParametersInOrg,update_artifact_deployment_parameters_in_org,patch,DeploymentParameters,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,update,update,,Update artifact deployment parameters in org +private_registry.yaml,/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,deleteArtifactDeploymentParametersInOrg,delete_artifact_deployment_parameters_in_org,delete,Response,Artifact deployment parameters,artifact deployment parameters,artifact_deployment_params,delete,delete,,Delete artifact deployment parameters in org +private_registry.yaml,/{artifact_type}/{artifact_name}/license/acceptance,acceptArtifactLicense,accept_artifact_license,post,Response,Publish,publish,license_acceptances,create,insert,,Accept artifact license +private_registry.yaml,/{artifact_type}/{artifact_name}/release-type,updateReleaseLabel,update_release_label,put,Response,Publish,publish,artifacts,set_release_type,exec,,Update artifact version release type +private_registry.yaml,/{artifact_type}/{artifact_name}/share,publishArtifact,publish_artifact,put,Response,Publish,publish,artifact_shares,add,insert,,Publish artifact to public +private_registry.yaml,/{artifact_type}/{artifact_name}/share,undoPublishArtifact,undo_publish_artifact,delete,Response,Publish,publish,artifact_shares,remove,delete,,Undo publishing of artifact to public +private_registry.yaml,/{artifact_type}/{artifact_name}/share/product,publishArtifactFromRequest,publish_artifact_from_request,put,Response,Publish,publish,artifact_product_shares,add,insert,,Publish artifact to product +private_registry.yaml,/{artifact_type}/{artifact_name}/share/product,undoPublishProduct,undo_publish_product,delete,Response,Publish,publish,artifact_product_shares,remove,delete,,Undo publishing of product artifacts +private_registry.yaml,/{artifact_type}/{artifact_name}/terms-of-service,updateTermsOfService,update_terms_of_service,put,Response,Publish,publish,artifacts,set_terms_of_service,exec,,Update artifact terms of service +private_registry.yaml,/{artifact_type}/{artifact_name}/versions/{version_id},deleteArtifactVersionInOrg,delete_artifact_version_in_org,delete,Response,Artifact Versions,artifact versions,artifact_versions,delete,delete,,Delete a artifact version in org +private_registry.yaml,/{artifact_type}/{artifact_name}/versions/{version_id}/configs,updateTagLevelPublishConfigs,update_tag_level_publish_configs,patch,Response,Publish,publish,artifact_version_configs,update,update,,Publish artifact version with configs like policy badge +private_registry.yaml,/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createArtifactDeploymentUrlInOrg,create_artifact_deployment_url_in_org,post,DeploymentUrlResponse,Artifact deployment parameters,artifact deployment parameters,artifact_deployments,create,insert,,Create artifact version deployment url in org +private_registry.yaml,/{artifact_type}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrg,list_artifact_files_in_org,get,ArtifactVersionFileListResponse,Artifact Version Files,artifact version files,artifact_files,list,select,$.artifactFiles,List artifact files in org +private_registry.yaml,/{artifact_type}/{artifact_name}/versions/{version_id}/signature,signArtifactVersion,sign_artifact_version,put,ArtifactDownloadResponse,ArtifactSigning,artifact_signing,artifact_signatures,set,exec,,Request to sign artifact version +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,initiateMalwareScan_1,initiate_malware_scan_1,post,Response,MalwareScan,malware_scan,artifacts,malware_scan_by_team,exec,,Initiates malwares can for the artifact +private_registry.yaml,/team/{team_name}/{artifact_type}/spec,createModelArtifactsSpec_1,create_model_artifacts_spec_1,post,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,create_by_team,insert,,Create AI Playground for artifactType +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/purge,purgeDeletedArtifact_1,purge_deleted_artifact_1,delete,Response,Artifacts,artifacts,artifacts,purge_by_team,exec,,Purge Search DB +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/spec,getModelArtifactsSpec_1,get_model_artifacts_spec_1,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get_by_team,select,,Get AI Playground for artifactType +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/spec,updateModelArtifactsSpec_1,update_model_artifacts_spec_1,put,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,update_by_team,update,,Update AI Playground for artifactType +private_registry.yaml,/team/{team_name}/{artifact_type}/{artifact_name}/spec,deleteModelArtifactsSpec_1,delete_model_artifacts_spec_1,delete,Response,AIPlayground,aiplayground,artifact_specs,delete_by_team,delete,,Delete AI Playground for artifactType +private_registry.yaml,/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,initiateMalwareScan,initiate_malware_scan,post,Response,MalwareScan,malware_scan,artifacts,malware_scan,exec,,Initiates malwares can for the artifact +private_registry.yaml,/{artifact_type}/spec,createModelArtifactsSpec,create_model_artifacts_spec,post,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,create,insert,,Create AI Playground for artifactType +private_registry.yaml,/{artifact_type}/{artifact_name}/purge,purgeDeletedArtifact,purge_deleted_artifact,delete,Response,Artifacts,artifacts,artifacts,purge,exec,,Purge Search DB +private_registry.yaml,/{artifact_type}/{artifact_name}/spec,getModelArtifactsSpec,get_model_artifacts_spec,get,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,get,select,,Get AI Playground for artifactType +private_registry.yaml,/{artifact_type}/{artifact_name}/spec,updateModelArtifactsSpec,update_model_artifacts_spec,put,AIPlaygroundResponse,AIPlayground,aiplayground,artifact_specs,update,update,,Update AI Playground for artifactType +private_registry.yaml,/{artifact_type}/{artifact_name}/spec,deleteModelArtifactsSpec,delete_model_artifacts_spec,delete,Response,AIPlayground,aiplayground,artifact_specs,delete,delete,,Delete AI Playground for artifactType diff --git a/provider-dev/config/clean_report.json b/provider-dev/config/clean_report.json index f97aa37..b031f9f 100644 --- a/provider-dev/config/clean_report.json +++ b/provider-dev/config/clean_report.json @@ -1,15 +1,34 @@ { - "generated": "2026-07-14", + "generated": "2026-09-25", "sources": { "ngc_kas.json": { "openapi": "3.0.1", "title": "NGC API Documentation", - "version": "v3.249.6", + "version": "v3.249.17", + "servers": [ + "https://api.ngc.nvidia.com" + ], "paths": 77, "fixes": [ { "rule": "repair-relative-server", "note": "servers [{\"url\":\"/\"}] is relative/absent; set to https://api.ngc.nvidia.com (the host the definition is served from)" + }, + { + "rule": "snake-case-path-params", + "note": "48 path key(s) and 124 path parameter name(s) converted to snake_case" + }, + { + "rule": "repair-path-param-names", + "note": "29 path parameter name(s) renamed to their template token, 1 stray path parameter(s) dropped (/v2/admin/entitlements: \"org_name\" dropped (no template token); /v2/admin/org/{org_name}/team/{team_name}/users/{id}: \"user_id_or_b64encoded_email\" -> id; /v2/admin/org/{org_name}/team/{team_name}/users/{id}/add-role: \"user_id_or_b64encoded_email\" -> id; /v2/admin/org/{org_name}/team/{team_name}/users/{id}/remove-role: \"user_id_or_b64encoded_email\" -> id; +22 more)" + }, + { + "rule": "drop-cookie-params", + "note": "24 cookie parameter(s) dropped (any-sdk supports path, query, header and body parameters only): /v2/admin/org/{org_name}/team/{team_name}/users: ncid; /v2/admin/org/{org_name}/team/{team_name}/users: VisitorID; /v2/admin/org/{org_name}/team/{team_name}/users/{id}: ncid; /v2/admin/org/{org_name}/team/{team_name}/users/{id}: VisitorID; /v2/admin/org/{org_name}/users: ncid; /v2/admin/org/{org_name}/users: VisitorID; ..." + }, + { + "rule": "drop-prose-query-params", + "note": "16 query parameter(s) with prose names dropped (wire names unknown): /v2/admin/org: \"Filter using org display name\"; /v2/admin/org: \"Filter using org owner name\"; /v2/admin/org: \"Filter using org owner email. Email should be base-64-encoded.\"; /v2/admin/org/{org_name}/team/{team_name}/users/{id}: \"user role, defaults to REGISTRY_READ\"; /v2/admin/org/{org_name}/users/{id}: \"user role, defaults to REGISTRY_READ\"; /v2/org/{org_name}/team/{team_name}/users/{id}: \"user role\"; ..." } ], "notes": [], @@ -19,8 +38,24 @@ "openapi": "3.1.0", "title": "Models API", "version": "0.0.1-SNAPSHOT", - "paths": 231, - "fixes": [], + "servers": [ + "https://api.ngc.nvidia.com" + ], + "paths": 232, + "fixes": [ + { + "rule": "inject-sdk-responses", + "note": "27 SDK data classes added to components.schemas (ngcsdk 4.36.6); 200 responses injected on 0 response-less operations (0 of them declared an untyped 2xx; 0 on the bare Response envelope): " + }, + { + "rule": "gateway-v2-path-prefix", + "note": "229 path(s) rewritten /v1/ -> /v2/; servers [{\"description\":\"Generated server url - production\",\"url\":\"https://models.ngc.nvidia.com\",\"x-internal\":true}] -> https://api.ngc.nvidia.com (the public gateway serving the definition)" + }, + { + "rule": "snake-case-path-params", + "note": "209 path key(s) and 986 path parameter name(s) converted to snake_case" + } + ], "notes": [ "info.version is a placeholder (0.0.1-SNAPSHOT); left as-is" ], @@ -29,9 +64,17 @@ "nvcf_openapi.json": { "openapi": "3.1.0", "title": "Cloud Functions", - "version": "2.245.1", - "paths": 35, - "fixes": [], + "version": "2.256.0", + "servers": [ + "https://api.nvcf.nvidia.com" + ], + "paths": 36, + "fixes": [ + { + "rule": "snake-case-path-params", + "note": "26 path key(s) and 61 path parameter name(s) converted to snake_case" + } + ], "notes": [], "validation": "clean" } diff --git a/provider-dev/config/deprecation_schedule.json b/provider-dev/config/deprecation_schedule.json new file mode 100644 index 0000000..7cc6522 --- /dev/null +++ b/provider-dev/config/deprecation_schedule.json @@ -0,0 +1,95 @@ +{ + "url": "https://docs.nvidia.com/ngc/latest/ngc-deprecated-api.html", + "paths": [ + "/v1/orgs/{org}/gdn/**", + "/v1/orgs/{org}/gdncs/**", + "/v1/orgs/{org}/teams/{team}/gdn/**", + "/v1/orgs/{org}/teams/{team}/gdncs/**", + "/v2/org/{org}/infinity-manager/**", + "/v2/org/{org}/team/{team}/infinity-manager/**", + "/v2/orgs/{org}/fnds/functions/**", + "/v2/orgs/{org}/gdn/**", + "/v2/orgs/{org}/ngc/nvcf/deployments/**", + "/v2/orgs/{org}/ngc/nvcf/gpu/quota/rules", + "/v2/orgs/{org}/ngc/nvcf/quota/request", + "/v2/orgs/{org}/nvcf/authorizations/functions/**", + "/v2/orgs/{org}/nvcf/clusterGroups", + "/v2/orgs/{org}/nvcf/deployments/**", + "/v2/orgs/{org}/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}", + "/v2/orgs/{org}/nvcf/deployments/{deploymentId}/gpu-specifications/{specId}", + "/v2/orgs/{org}/nvcf/functions/**", + "/v2/orgs/{org}/nvcf/logs/functions/**", + "/v2/orgs/{org}/nvcf/logs/{log-id}", + "/v2/orgs/{org}/nvcf/metadata/functions/**", + "/v2/orgs/{org}/nvcf/metrics/functions/**", + "/v2/orgs/{org}/nvcf/ratelimit/functions/**", + "/v2/orgs/{org}/nvcf/recognized-registries", + "/v2/orgs/{org}/nvcf/registry-credentials/**", + "/v2/orgs/{org}/nvcf/reval/validate", + "/v2/orgs/{org}/nvcf/secrets", + "/v2/orgs/{org}/nvcf/secrets/functions/**", + "/v2/orgs/{org}/nvcf/secrets/telemetries/**", + "/v2/orgs/{org}/nvcf/supportedGpus", + "/v2/orgs/{org}/nvcf/telemetries/**", + "/v2/orgs/{org}/nvct/logs/tasks/**", + "/v2/orgs/{org}/nvct/logs/{log-id}", + "/v2/orgs/{org}/nvct/reval/validate", + "/v2/orgs/{org}/nvct/secrets/tasks/**", + "/v2/orgs/{org}/nvct/tasks", + "/v2/orgs/{org}/nvct/tasks/**", + "/v2/orgs/{org}/pym/**", + "/v2/orgs/{org}/si/**", + "/v2/orgs/{org}/sis/clusterVersions", + "/v2/orgs/{org}/sis/clusters", + "/v2/orgs/{org}/sis/clusters/**", + "/v2/orgs/{org}/skyway/*/functions/**", + "/v2/orgs/{org}/skyway/*/tasks/**", + "/v2/orgs/{org}/teams/{team}/fnds/functions/**", + "/v2/orgs/{org}/teams/{team}/gdn/**", + "/v2/orgs/{org}/teams/{team}/ngc/nvcf/deployments/**", + "/v2/orgs/{org}/teams/{team}/ngc/nvcf/gpu/quota/rules", + "/v2/orgs/{org}/teams/{team}/ngc/nvcf/quota/request", + "/v2/orgs/{org}/teams/{team}/nvcf/authorizations/functions/**", + "/v2/orgs/{org}/teams/{team}/nvcf/clusterGroups", + "/v2/orgs/{org}/teams/{team}/nvcf/deployments/**", + "/v2/orgs/{org}/teams/{team}/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}", + "/v2/orgs/{org}/teams/{team}/nvcf/deployments/{deploymentId}/gpu-specifications/{specId}", + "/v2/orgs/{org}/teams/{team}/nvcf/functions/**", + "/v2/orgs/{org}/teams/{team}/nvcf/logs/functions/**", + "/v2/orgs/{org}/teams/{team}/nvcf/logs/{log-id}", + "/v2/orgs/{org}/teams/{team}/nvcf/metadata/functions/**", + "/v2/orgs/{org}/teams/{team}/nvcf/metrics/functions/**", + "/v2/orgs/{org}/teams/{team}/nvcf/ratelimit/functions/**", + "/v2/orgs/{org}/teams/{team}/nvcf/recognized-registries", + "/v2/orgs/{org}/teams/{team}/nvcf/registry-credentials/**", + "/v2/orgs/{org}/teams/{team}/nvcf/reval/validate", + "/v2/orgs/{org}/teams/{team}/nvcf/secrets", + "/v2/orgs/{org}/teams/{team}/nvcf/secrets/functions/**", + "/v2/orgs/{org}/teams/{team}/nvcf/secrets/telemetries/**", + "/v2/orgs/{org}/teams/{team}/nvcf/supportedGpus", + "/v2/orgs/{org}/teams/{team}/nvcf/telemetries/**", + "/v2/orgs/{org}/teams/{team}/nvct/logs/tasks/**", + "/v2/orgs/{org}/teams/{team}/nvct/logs/{log-id}", + "/v2/orgs/{org}/teams/{team}/nvct/reval/validate", + "/v2/orgs/{org}/teams/{team}/nvct/secrets/tasks/**", + "/v2/orgs/{org}/teams/{team}/nvct/tasks", + "/v2/orgs/{org}/teams/{team}/nvct/tasks/**", + "/v2/orgs/{org}/teams/{team}/pym/**", + "/v2/orgs/{org}/teams/{team}/si/**", + "/v2/orgs/{org}/teams/{team}/sis/clusterVersions", + "/v2/orgs/{org}/teams/{team}/sis/clusters", + "/v2/orgs/{org}/teams/{team}/sis/clusters/**", + "/v2/orgs/{org}/teams/{team}/skyway/*/functions/**", + "/v2/orgs/{org}/teams/{team}/skyway/*/tasks/**", + "/v3/ngc/nvcf/orgs/{org}/keys/**", + "/v3/ngc/nvcf/orgs/{org}/teams/{team}/keys/**", + "/v3/orgs/{org}/fnds/functions/**", + "/v3/orgs/{org}/ngc/nvcf/deployments/**", + "/v3/orgs/{org}/teams/{team}/fnds/functions/**", + "/v3/orgs/{org}/teams/{team}/ngc/nvcf/deployments/**" + ], + "dates": [ + "September 30, 2026" + ], + "captured": "2026-09-25" +} diff --git a/provider-dev/config/endpoint_inventory.csv b/provider-dev/config/endpoint_inventory.csv index 51c1a5b..7ed1a92 100644 --- a/provider-dev/config/endpoint_inventory.csv +++ b/provider-dev/config/endpoint_inventory.csv @@ -1,497 +1,499 @@ -source,file,host,verb,path,operation_id,tags,org_scoped,team_scoped,deprecated,auth_declared,observed_public_read,pagination_params,has_request_body,response_shape,object_key_candidate,invocation_form,service,resource,method,sql_verb,skip_reason,notes -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/secrets/telemetries/{telemetryId},updateTelemetrySecret,User Secret Management,n,n,n,none-declared,,,y,none,,,nvcf_deployments,telemetry_secrets,update,update,,PUT semantics unverified -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/secrets/functions/{functionId}/versions/{versionId},updateFunctionSecrets,User Secret Management,n,n,n,none-declared,,,y,none,,,nvcf_functions,function_secrets,update,update,,PUT semantics unverified -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},updateRateLimit,User Ratelimit Management,n,n,y,none-declared,,,y,none,,,nvcf_functions,function_ratelimits,update,update,,PUT semantics unverified -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId},deleteRateLimit,User Ratelimit Management,n,n,n,none-declared,,,n,none,,,nvcf_functions,function_ratelimits,delete,delete,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId},updateFunctionMetadata,Function Management,n,n,y,none-declared,,,y,object{function},,,nvcf_functions,function_metadata,update,update,,PUT semantics unverified -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},getFunction,Function Management,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,function_versions,get,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},updateFunction,Function Management,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,function_versions,update,update,,PUT semantics unverified (keycloak rule): update until field-drop evidence -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/functions/{functionId}/versions/{functionVersionId},deleteFunction,Function Management,n,n,n,none-declared,,,n,none,,,nvcf_functions,function_versions,delete,delete,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},getFunctionDeployment,Function Deployment,n,n,n,none-declared,,,n,object{deployment},,,nvcf_deployments,deployments,get,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},createFunctionDeployment,Function Deployment,n,n,n,none-declared,,,y,object{deployment},,,nvcf_deployments,deployments,create,insert,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,put,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},updateFunctionDeployment,Function Deployment,n,n,y,none-declared,,,y,object{deployment},,,nvcf_deployments,deployments,update,update,,PUT semantics unverified -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId},deleteFunctionDeployment,Function Deployment,n,n,n,none-declared,,,n,object{function},,,nvcf_deployments,deployments,delete,delete,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions,issueMultiFunctionsInvocationToken,Function Invocation Assertion Token,n,n,n,none-declared,,,y,object{access_token;expires_in},,,nvcf_invocation,tokens,create_for_functions,exec,,"ephemeral credential mint - action, nothing queryable persisted" -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId},issueInvocationToken,Function Invocation Assertion Token,n,n,n,none-declared,,,y,object{access_token;expires_in},,,nvcf_invocation,tokens,create_for_version,exec,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions/{functionId},issueInvocationToken_1,Function Invocation Assertion Token,n,n,n,none-declared,,,y,object{access_token;expires_in},,,nvcf_invocation,tokens,create_for_function,exec,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/telemetries,getTelemetriesByAccount,Telemetry Management,n,n,n,none-declared,,,n,object{telemetries},$.telemetries,,nvcf_deployments,telemetries,list,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/telemetries,createTelemetry,Telemetry Management,n,n,n,none-declared,,,y,object{telemetry},,,nvcf_deployments,telemetries,create,insert,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/registry-credentials,listRegistryCredentialDetails,Registry Credential Management,n,n,n,none-declared,,,n,object{registryCredentials},$.registryCredentials,,nvcf_deployments,registry_credentials,list,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/registry-credentials,addRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,y,object{registryCredential},,,nvcf_deployments,registry_credentials,create,insert,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/pexec/functions/{functionId},invokeFunction,Function Invocation,n,n,y,none-declared,,,y,object{short;char;int;long;float;double;...},,polling,nvcf_invocation,invocations,invoke,exec,,"polling invocation, scoped in" -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/pexec/functions/{functionId}/versions/{versionId},invokeFunction_1,Function Invocation,n,n,y,none-declared,,,y,object{short;char;int;long;float;double;...},,polling,nvcf_invocation,invocations,invoke_version,exec,,"polling invocation, scoped in" -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions,getFunctions,Function Management,n,n,n,none-declared,n,,n,object{functions},$.functions,,nvcf_functions,functions,list,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/functions,createFunction,Function Management,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,functions,create,insert,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/{functionId}/versions,getFunctions_1,Function Management,n,n,n,none-declared,,,n,object{functions},$.functions,,nvcf_functions,function_versions,list,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/functions/{functionId}/versions,createFunction_1,Function Management,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,function_versions,create,insert,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions/{functionId},getAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,n,object{functions},$.functions,,nvcf_functions,authorizations,list,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/authorizations/functions/{functionId},createAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,set,replace,,POST replaces the full authorized-party list - grants-as-data set operation -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/authorizations/functions/{functionId},deleteAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,authorizations,delete_all,exec,,delete-all kept off the DELETE verb: same path-param signature as the granular remove -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},getAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,authorizations,list_version,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,post,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},createAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,set_version,replace,,POST replaces the full authorized-party list - grants-as-data set operation -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId},deleteAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,n,object{function},,,nvcf_functions,authorizations,delete_all_version,exec,,delete-all kept off the DELETE verb: same path-param signature as the granular remove -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/assets,getAssets,Asset Management,n,n,y,none-declared,,,n,object{assets},$.assets,,nvcf_invocation,assets,list,select,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,post,/v2/nvcf/assets,createAsset,Asset Management,n,n,y,none-declared,,,y,object{assetId;uploadUrl;contentType;description},,,nvcf_invocation,assets,create,insert,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/registry-credentials/{registryCredentialId},getRegistryCredentialDetails,Registry Credential Management,n,n,n,none-declared,,,n,object{registryCredential},,,nvcf_deployments,registry_credentials,get,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/registry-credentials/{registryCredentialId},updateRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,y,object{registryCredential},,,nvcf_deployments,registry_credentials,update,update,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/registry-credentials/{registryCredentialId},deleteRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,n,none,,,nvcf_deployments,registry_credentials,delete,delete,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId},updateGpuSpecification,Function Deployment,n,n,n,none-declared,,,y,object{gpuSpecification},,,nvcf_deployments,deployment_gpu_specs,update,update,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove,removeAuthorizedPartyForSpecificVersion,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,remove_version,delete,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add,addAuthorizedPartyForSpecificVersion,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,add_version,insert,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/remove,removeAuthorizedPartyForAllVersions,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,remove,delete,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{functionId}/add,addAuthorizedPartyForAllVersions,Function Sharing,n,n,n,none-declared,,,y,object{function},,,nvcf_functions,authorizations,add,insert,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/telemetries/{telemetryId},getTelemetry,Telemetry Management,n,n,n,none-declared,,,n,object{telemetry},,,nvcf_deployments,telemetries,get,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,delete,/v2/nvcf/telemetries/{telemetryId},deleteTelemetry,Telemetry Management,n,n,n,none-declared,,,n,none,,,nvcf_deployments,telemetries,delete,delete,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/recognized-registries,getRecognizedRegistries,Registry Credential Management,n,n,n,none-declared,,,n,object{recognizedRegistries},,,nvcf_deployments,recognized_registries,list,select,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/{requestId}/position,getPositionInQueue,Queue Details,n,n,n,none-declared,,,n,object{functionVersionId;functionId;positionInQueue},,,nvcf_queues,queue_positions,get,select,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{functionId}/versions/{versionId},getQueuesDetails,Queue Details,n,n,n,none-declared,,,n,object{functionId;queues},$.queues,,nvcf_queues,queues,list_version,select,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{functionId},getQueuesDetails_1,Queue Details,n,n,n,none-declared,,,n,object{functionId;queues},$.queues,,nvcf_queues,queues,list,select,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/pexec/status/{requestId},getFunctionInvocationResult,Function Invocation,n,n,y,none-declared,,,n,object{short;char;int;long;float;double;...},,polling,nvcf_invocation,invocation_status,get,select,,"polling form: EXEC returns 202 + requestId, status polled here (proxmox precedent)" -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/functions/ids,getFunctionIds,Function Management,n,n,n,none-declared,,,n,object{functionIds},$.functionIds,,nvcf_functions,function_ids,list,select,,own resource: same empty path-param signature as functions.list -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/deployments/{deploymentId},getFunctionDeployment_1,Function Deployment,n,n,n,none-declared,,,n,object{deployment},,,nvcf_deployments,deployments,get_by_id,select,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/v2/nvcf/clusterGroups,getClusterGroups,Cluster Groups and GPUs,n,n,y,none-declared,n,,n,object{clusterGroups},$.clusterGroups,,nvcf_deployments,cluster_groups,list,select,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,get,/v2/nvcf/assets/{assetId},getAsset,Asset Management,n,n,y,none-declared,,,n,object{asset},,,nvcf_invocation,assets,get,select,, -nvcf,nvcf_openapi.json,api.nvcf.nvidia.com,delete,/v2/nvcf/assets/{assetId},deleteAsset,Asset Management,n,n,y,none-declared,,,n,none,,,nvcf_invocation,assets,delete,delete,, -nvcf,nvcf_openapi.json,api.ngc.nvidia.com,get,/health,getHealth,health-controller,n,n,n,none-declared,,,n,object{description;status},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs/{org-name}/users/nca-invitations,inviteUserToNcaInOrg,Users Management,y,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_invitations,create_nca,insert,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs/{org-name}/teams/{team-name}/users/nca-invitations,inviteUserToNcaInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs/proto-org,createOrganizationFromProtoOrg,Orgs,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,orgs,proto_orgs,create,insert,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/orgs,createOrganizationFromScratch,Orgs,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,orgs,orgs,create,insert,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/admin/orgs,createProtoOrganization,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v3/admin/orgs/ncaIds,getMapping,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,y,object{orgNcaMapping},$.orgNcaMapping,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/users/me/api-key,generateUserApiKey,Users Management,n,n,n,api-key+bearer-token,,,n,object{cloudNfsKey;cloudNfsKeyPwd;requestStatus;key;cloudNfsUserName},,,orgs,current_user,create_api_key,exec,,credential mint - action -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users,listUsersInOrg,Users Management,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;users},$.users,,orgs,users,list,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/users,createUserInOrg,Users Management,y,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,users,create,insert,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/teams,listTeams,Teams,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;teams},$.teams,,orgs,teams,list,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/teams,createTeam,Teams,y,n,n,api-key+bearer-token,,,y,object{requestStatus;team},,,orgs,teams,create,insert,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users/{id},getUserInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/team/{team-name}/users/{id},addUserToTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/team/{team-name}/users/{id},removeUserFromTeam_1,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users,listUsersInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;users},$.users,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/org/{org-name}/team/{team-name}/users,createUserInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/users/{user-id}/org-owner-backfill,backfillOrgOwnerByUser,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/users/{id}/migrate-deprecated-roles,migrateUserDeprecatedRoles,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/users/{id}/crm-sync,syncCrmUser,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/orgs,createOrganization,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/users/{id},addUserToOrg,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/admin/org/{org-name}/users/{id},removeUserFromOrg_2,Super Admin User Controller,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/users,createUserInOrg_1,Super Admin User Controller,y,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/team/{team-name}/users/{id},addUserToTeam_1,Super Admin User Controller,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/team/{team-name}/users,createUserInTeam_1,Super Admin User Controller,y,y,y (schedule 2026-09),api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/org/{org-name}/org-owner-backfill,backfillOrgOwnerByOrg,Super Admin User Controller,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/v2/admin/backfill-orgs-to-kratos,backfillOrgsToKratos,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v3/orgs/{org-name}/users/{user-email-or-id}/add-role,addRoleOrInviteUserToOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_roles,add,insert,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/add-role,addRoleOrInviteUserToTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/admin/org/{org-name},getOrg,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{organizations;requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v3/admin/org/{org-name},updateOrg,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/users/me,whoAmI,Users Management,n,n,n,api-key+bearer-token,n,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,current_user,get,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/users/me,editUserProfile,Users Management,n,n,n,api-key+bearer-token,,,y,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,current_user,update,update,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/orgs/{org-name},getOrganization,Orgs,y,n,n,api-key+bearer-token,,,n,object{organizations;requestStatus},,,orgs,orgs,get,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/orgs/{org-name},updateOrganization,Orgs,y,n,n,api-key+bearer-token,,,y,object{organizations;requestStatus},,,orgs,orgs,update,update,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/users/{id}/update-role,updateUserRole,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/users/{id}/add-role,addUserRole,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/teams/{team-name},getTeam,Teams,y,n,n,api-key+bearer-token,,,n,object{requestStatus;team},,,orgs,teams,get,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/teams/{team-name},editTeam,Teams,y,n,n,api-key+bearer-token,,,y,object{requestStatus;team},,,orgs,teams,update,update,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/teams/{team-name},deleteTeam,Teams,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,orgs,teams,delete,delete,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/team/{team-name}/users/{id}/update-role,updateUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/org/{org-name}/team/{team-name}/users/{id}/add-role,addUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/users/invite,emailInviteToUser,Super Admin User Controller,n,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name},getOrg_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{organizations;requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name},updateOrg_1,Super Admin Org Controller,y,n,y,api-key+bearer-token,,,y,object{organizations;requestStatus},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/users/{id}/update-role,updateUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/users/{id}/add-role,addUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/teams/{team-name},getTeam_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{requestStatus;team},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/teams/{team-name},editTeam_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,y,object{requestStatus;team},,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/v2/admin/org/{org-name}/team/{team-name}/users/{id}/add-role,addUserRole_3,Super Admin User Controller,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/v2/ping,headPing,Users Management,n,n,n,api-key+bearer-token,,,n,none,,,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/entitlements,listOrganizationsWithEntitlement,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,n,object{entitlements;requestStatus},$.entitlements,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/entitlements,listOrganizationsWithEntitlement_1,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,n,object{entitlements;requestStatus},$.entitlements,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/version,getLatestPackageVersion,Services,n,n,n,api-key+bearer-token,,,n,object{requestStatus;versions},$.versions,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/orgs/{org-name}/users/{user-email-or-id},listUserRolesInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,users,get,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id},listUserRolesInOrgTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/orgs/proto-org/validate,protoOrgInvitationValidate,Orgs,n,n,n,api-key+bearer-token,,,n,object{orgInvitation;requestStatus},,,orgs,proto_orgs,validate,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v3/admin/org,listOrganizations,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/orgs,listOrganizations_1,Orgs,n,n,n,api-key+bearer-token,n,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,orgs,orgs,list,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/{id}/invite,emailInviteToUser_1,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/{id},getUserInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,superseded-by-v3-twin (/v3/orgs/{org-name}/users/{user-email-or-id}), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/users/{id},removeUserFromOrg_1,Users Management,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,,,,,superseded-by-v3-twin (/v3/orgs/{org-name}/users/{id}), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_invitations,resend_email,exec,,"non-idempotent GET (sends email) - action, not a read" -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/users/invitations,listInvitationsForUserInOrg,Users Management,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;invitations},$.invitations,,orgs,user_invitations,list,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/users/invitations,listInvitationsForUserInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;invitations},$.invitations,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/team/{team-name}/starfleetIds/{starfleet-id},getUserInTeamByStarfleetId,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/org/{org-name}/starfleetIds/{starfleet-id},getUserInOrg_1,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,users,get_by_starfleet_id,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/users/{id},getUserDetails,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/users/me,whoAmI_1,Super Admin User Controller,n,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org,listOrganizations_2,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/orgs/offboarded,listOffboardedOrgs,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/{org-name}/teams,listTeams_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,page-number+page-size,n,object{paginationInfo;requestStatus;teams},$.teams,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/v2/admin/org/validate,listValidatedOrganizations,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/roles,getRoles,Services,n,n,n,api-key+bearer-token,,,n,object{requestStatus;roles},$.roles,,orgs,roles,list,select,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/public-keys,getPublicKey,Services,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/health/all,statusDetails,Services,n,n,n,api-key+bearer-token,,,n,object{health;requestStatus},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/health,status,Services,n,n,n,api-key+bearer-token,,,n,object{health;requestStatus},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/users/{user-email-or-id}/remove-role,removeRoleOrInvitationInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,orgs,user_roles,remove,delete,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/users/{id},removeUserFromOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,orgs,users,delete,delete,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/remove-role,removeRoleOrInvitationInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v3/orgs/{org-name}/teams/{team-name}/users/{id},removeUserFromTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/users/{id}/remove-role,removeUserRole,Users Management,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/users/invitations/{id},deleteUserInvitationInOrg,Users Management,y,n,n,api-key+bearer-token,,,n,object{requestStatus},,,orgs,user_invitations,delete,delete,, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/team/{team-name}/users/{id}/remove-role,removeUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,deprecated-inline, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/org/{org-name}/team/{team-name}/users/invitations/{id},deleteUserInvitationInTeam,Users Management,y,y,y (schedule 2026-09),api-key+bearer-token,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/admin/org/{org-name}/users/{id}/remove-role,removeUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/v2/admin/org/{org-name}/team/{team-name}/users/{id}/remove-role,removeUserRole_3,Super Admin User Controller,y,y,y,api-key+bearer-token,,,n,object{activationToken;userRoles;requestStatus;ncaRole;user},$.userRoles,,,,,,internal-admin, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources,swaggerResources_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources,swaggerResources,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources,swaggerResources_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources,swaggerResources_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources,swaggerResources_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/swagger-resources,swaggerResources_1,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,options,/swagger-resources,swaggerResources_3,api-resource-controller,n,n,n,api-key+bearer-token,,,n,array,,,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources/configuration/ui,uiConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources/configuration/ui,uiConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources/configuration/ui,uiConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources/configuration/ui,uiConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources/configuration/ui,uiConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/swagger-resources/configuration/ui,uiConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,options,/swagger-resources/configuration/ui,uiConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{deepLinking;displayOperationId;defaultModelsExpandDepth;defaultModelExpandDepth;defaultModelRendering;displayRequestDuration;...},$.supportedSubmitMethods,,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,get,/swagger-resources/configuration/security,securityConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,post,/swagger-resources/configuration/security,securityConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,put,/swagger-resources/configuration/security,securityConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,patch,/swagger-resources/configuration/security,securityConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,delete,/swagger-resources/configuration/security,securityConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,service-infra, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,head,/swagger-resources/configuration/security,securityConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,api.ngc.nvidia.com,options,/swagger-resources/configuration/security,securityConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,n,object{apiKey;apiKeyVehicle;apiKeyName;clientId;clientSecret;realm;...},,,,,,,non-generator-http-verb, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync,Artifact File,y,n,n,ssa,,,y,object{statusUrl;workflowId;requestStatus},,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,object{statusUrl;workflowId;requestStatus},,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org}/files/multipart,fileUpload,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/files/multipart,completeFileUpload,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org}/files/multipart,abortFileUpload,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org}/team/{team}/files/multipart,fileUpload_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/files/multipart,completeFileUpload_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org}/team/{team}/files/multipart,abortFileUpload_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/files/clone/status,cloneArtifactVersionFilesStatus,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/files/clone/status,cloneArtifactVersionFilesStatus_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/files/clone,cloneArtifactVersionFiles,Artifact File,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org}/team/{team}/files/clone,cloneArtifactVersionFiles_1,Artifact File,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/{artifactType}/playground/{artifactName},getModelAIPlayground,AIPlayground,y,n,y,ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/{artifactType}/playground/{artifactName},updateModelAIPlayground,AIPlayground,y,n,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/{artifactType}/playground/{artifactName},deleteModelAIPlayground,AIPlayground,y,n,y,ssa,,,n,object{requestStatus},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName},getModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName},updateModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName},deleteModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,n,object{requestStatus},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,getModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,registry,artifact_specs,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,updateModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,registry,artifact_specs,update,update,,PUT semantics unverified -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/{artifactType}/{artifactName}/spec,deleteModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,n,object{requestStatus},,,registry,artifact_specs,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec,getModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec,updateModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec,deleteModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/terms-of-service,updateTermsOfService,Publish,y,n,n,ssa,,,y,none,,,registry,artifacts,set_terms_of_service,exec,,single-field action endpoint -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service,updateTermsOfService_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share,publishArtifact,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,add,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share,undoPublishArtifact,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_shares,remove,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,publishArtifactFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,artifact_product_shares,add,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product,undoPublishProduct,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_product_shares,remove,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignature,ArtifactSigning,y,n,n,none-declared,,,n,none,,,registry,artifact_signatures,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,signArtifactVersion,ArtifactSigning,y,n,n,ssa,,,n,none,,,registry,artifact_signatures,set,exec,,write of a computed signature - action -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignature_1,ArtifactSigning,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature,signArtifactVersion_1,ArtifactSigning,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name}/release-type,updateReleaseLabel,Publish,y,n,n,ssa,,,y,none,,,registry,artifacts,set_release_type,exec,,single-field action endpoint -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/release-type,updateReleaseLabel_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name},getArtifactInOrg,Artifacts,y,n,n,ssa,,,n,none,,,registry,artifacts,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/{artifact-type}/{artifact-name},replaceArtifactInOrg,Artifacts,y,n,n,ssa,,,y,none,,,registry,artifacts,replace,replace,,"PUT with a PATCH twin - proposed replace, semantics unverified (keycloak rule)" -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/{artifact-type}/{artifact-name},updateArtifactInOrg,Artifacts,y,n,n,ssa,,,y,none,,,registry,artifacts,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name},deleteArtifactInOrg,Artifacts,y,n,n,ssa,,,n,none,,,registry,artifacts,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share,publishArtifact_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share,undoPublishArtifact_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product,publishArtifactFromRequest_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product,undoPublishProduct_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},getArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},replaceArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},updateArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name},deleteArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name},updateModelAppAssociation,Apps,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name},deleteModelAppAssociation,Apps,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team},shareModelInTeamWithTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team},revokeShareModelInTeamWithTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org,shareModelInTeamWithOrg,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org,revokeShareModelInTeamWithOrg,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team},shareCollectionInTeamWithTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team},revokeShareCollectionInTeamWithTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org,shareCollectionInTeamWithOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org,revokeShareCollectionInTeamWithOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share,publishCollection,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share,undoPublishCollection,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInTeamFromAnotherOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInTeamFromAnotherOrg,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInTeamFromAnotherOrgAndTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/models/{model-name}/shares/team/{target-team},shareModelInOrgWithTeam,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,add_team,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/models/{model-name}/shares/team/{target-team},revokeShareModelInOrgWithTeam,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,remove_team,delete,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/models/{model-name}/shares/org,shareModelInOrgWithOrg,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,add_org,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/models/{model-name}/shares/org,revokeShareModelInOrgWithOrg,Models,y,n,n,ssa,,,n,none,,,registry,model_shares,remove_org,delete,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,add,insert,,grants-as-data membership -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,remove,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team},shareCollectionInOrgWithTeam,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,add_team,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team},revokeShareCollectionInOrgWithTeam,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,remove_team,delete,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/shares/org,shareCollectionInOrgWithOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,add_org,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/shares/org,revokeShareCollectionInOrgWithOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_shares,remove_org,delete,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/share,publishCollection_1,Publish,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/share,undoPublishCollection_1,Publish,y,n,n,ssa,,,n,none,,,,,,,legacy-twin (PUT counterpart deprecated inline; superseded by /shares/org), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/share/product,publishCollectionFromRequest,Publish,y,n,n,ssa,,,y,none,,,registry,collection_product_shares,add,insert,,grants-as-data -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product,publishCollectionFromRequest_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,add_cross_org,insert,,grants-as-data membership -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collection_artifacts,remove_cross_org,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,put,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},addArtifactToCollectionInOrgFromAnotherOrgAndTeam,Collections,y,n,n,ssa,,,n,none,,,,,,,deprecated-team-scoped (references a team-scoped artifact; NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name},removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam,Collections,y,n,n,ssa,,,n,none,,,,,,,deprecated-team-scoped (references a team-scoped artifact; NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/{artifactType}/playground,createModelAIPlayground,AIPlayground,y,n,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/team/{teamName}/{artifactType}/playground,createModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/{artifactType}/spec,createModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,registry,artifact_specs,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/team/{teamName}/{artifactType}/spec,createModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),ssa,,,y,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan,initiateMalwareScan,MalwareScan,y,n,n,ssa,,,n,object{requestStatus},,,registry,artifacts,malware_scan,exec,,action -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{orgName}/team/{teamName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan,initiateMalwareScan_1,MalwareScan,y,y,y (schedule 2026-09),ssa,,,n,object{requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createArtifactVerionFileDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createArtifactDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,registry,artifact_deployments,create,insert,,launches a CSP deployment -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,getArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,n,none,,,registry,artifact_deployment_params,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,createArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,registry,artifact_deployment_params,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,updateArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,registry,artifact_deployment_params,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,deleteArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,n,none,,,registry,artifact_deployment_params,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact,Collections,y,n,n,ssa,,,n,none,,,registry,artifacts,sync_release_type_labels,exec,,action -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact_1,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance,getOrgArtifactLicenseAcceptance,Publish,y,n,n,ssa,,,n,none,,,registry,license_acceptances,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance,acceptArtifactLicense,Publish,y,n,n,ssa,,,y,none,,,registry,license_acceptances,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance,getOrgArtifactLicenseAcceptance_1,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance,acceptArtifactLicense_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type}/{artifact-name}/files,checkArtifactFilesExistByChecksum,ArtifactChecksum,y,n,n,ssa,,page-size+page-number,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/files,checkArtifactFilesExistByChecksum_1,ArtifactChecksum,y,y,y (schedule 2026-09),ssa,,page-size+page-number,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type},listArtifactsInOrg,Artifacts,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifacts,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/{artifact-type},createArtifactInOrg,Artifacts,y,n,n,ssa,,,y,none,,,registry,artifacts,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createArtifactVersionFileDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createArtifactDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,getArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,createArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,updateArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params,deleteArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/parameters,createArtifactDeploymentParametersInTeam_1,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type},listArtifactsInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/{artifact-type},createArtifactInTeam,Artifacts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions,listRecipeVersionsInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions,createRecipeVersionInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions,listRecipeVersionsInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions,createRecipeVersionInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes,listRecipesInTeam,Resources,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/recipes,createRecipeInTeam,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources,listRecipesInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/resources,createRecipeInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models,listModelsInTeam,Models,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/models,createModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions,listModelVersionsInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions,createModelVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/collections,listCollectionsInTeam,Collections,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/collections,createCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name}/versions,listRecipeVersionsInOrg,Resource Versions,y,n,n,ssa,,page-size+page-number,n,none,,,registry,recipe_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/recipes/{recipe-name}/versions,createRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,y,none,,,registry,recipe_versions,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name}/versions,listRecipeVersionsInOrg_1,Resource Versions,y,n,n,ssa,,page-size+page-number,n,none,,,registry,resource_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/resources/{recipe-name}/versions,createRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,y,none,,,registry,resource_versions,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes,listRecipesInOrg,Resources,y,n,n,ssa,,page-size+page-number,n,none,,,registry,recipes,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/recipes,createRecipeInOrg,Resources,y,n,n,ssa,,,y,none,,,registry,recipes,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources,listRecipesInOrg_1,Resources,y,n,n,ssa,,page-size+page-number,n,none,,,registry,resources,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/resources,createRecipeInOrg_1,Resources,y,n,n,ssa,,,y,none,,,registry,resources,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models,listModelsInOrg,Models,y,n,n,ssa,,page-size+page-number,n,none,,,registry,models,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/models,createModelInOrg,Models,y,n,n,ssa,,,y,none,,,registry,models,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name}/versions,listModelVersionsInOrg,Model Version,y,n,n,ssa,,page-size+page-number,n,none,,,registry,model_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/models/{model-name}/versions,createModelVersionInOrg,Model Version,y,n,n,ssa,,,y,none,,,registry,model_versions,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/files/commit,commitArtifactFiles,ArtifactChecksum,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/team/{team-name}/files/commit,commitArtifactFiles_1,ArtifactChecksum,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/collections,listCollectionsInOrg,Collections,y,n,n,ssa,,page-size+page-number,n,none,,,registry,collections,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/org/{org-name}/collections,createCollectionInOrg,Collections,y,n,n,ssa,,,y,none,,,registry,collections,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/malware-scan-notification,notifyScanResult,MalwareScan,n,n,n,ssa,,,y,object{status},,,,,,,inbound-webhook-not-client-api, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus/pci-device-id/{pci-device-id},getGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/gpus/pci-device-id/{pci-device-id},createGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,create,insert,,"publisher-privileged write, mapped as documented" -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/gpus/pci-device-id/{pci-device-id},updateGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,update,update,,publisher-privileged write -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/gpus/pci-device-id/{pci-device-id},deleteGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,delete,delete,,publisher-privileged write -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},getGpuByPciDeviceIdVendorIdSubsystemDeviceId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,get_by_vendor_subsystem,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},createGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,create_by_vendor_subsystem,insert,,"publisher-privileged write, mapped as documented" -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},updateGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,y,none,,,catalog,gpus,update_by_vendor_subsystem,update,,publisher-privileged write -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id},deleteGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,delete_by_vendor_subsystem,delete,,publisher-privileged write -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps,listCloudServiceProviders,Cloud service providers,n,n,n,none-declared,n,page-size+page-number,n,none,,,catalog,csps,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps,createCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,y,none,,,catalog,csps,create,insert,,publisher-privileged write -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{csp-name}/deployments/params,getCloudServiceProviderDeploymentParametersDetails,Cloud service provider deployment parameters,n,n,n,none-declared,,,n,none,,,catalog,csp_deployment_params,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{csp-name}/deployments/params,createCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/csps/{csp-name}/deployments/params,updateCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/csps/{csp-name}/deployments/params,deleteCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,n,none,,,catalog,csp_deployment_params,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{csp-name}/deployments/params/meta,getCloudServiceProviderDeploymentParametersMetaDetails,Deployment parameters meta,n,n,n,none-declared,,,n,none,,,catalog,csp_deployment_params_meta,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{csp-name}/deployments/params/meta,createCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params_meta,create,insert,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/csps/{csp-name}/deployments/params/meta,updateCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,y,none,,,catalog,csp_deployment_params_meta,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/csps/{csp-name}/deployments/params/meta,deleteCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,n,none,,,catalog,csp_deployment_params_meta,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createPublicArtifactVersionFileDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createPublicArtifactDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,y,none,,,,,,,duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/.../deployments), -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name},createPublicArtifactVersionFileDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,post,/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name},createPublicArtifactDeploymentUrlInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs,updateTagLevelPublishConfigs,Publish,y,n,n,ssa,,,y,none,,,registry,artifact_version_configs,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs,updateTagLevelPublishConfigs_1,Publish,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id},getRecipeVersionInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id},updateRecipeVersionInTeam,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id},getRecipeVersionInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id},updateRecipeVersionInTeam_1,Resource Versions,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name},getRecipeInTeam,Resources,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name},updateRecipeInTeam,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name},getRecipeInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name},updateRecipeInTeam_1,Resources,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name},getModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/models/{model-name},updateModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id},getModelVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id},updateModelVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash,stashArtifactVersionInTeam,Model Version,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id},getHelmChartVersionInTeam,Helm Charts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id},updateHelmChartVersionInTeam,Helm Charts,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/collections/{collection-name},getCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/collections/{collection-name},updateCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/collections/{collection-name},deleteCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts,patchCollectionInTeam,Collections,y,y,y (schedule 2026-09),ssa,,,y,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id},getRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,n,none,,,registry,recipe_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id},updateRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,y,none,,,registry,recipe_versions,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id},getRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,n,none,,,registry,resource_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id},updateRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,y,none,,,registry,resource_versions,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name},getRecipeInOrg,Resources,y,n,n,ssa,,,n,none,,,registry,recipes,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/recipes/{recipe-name},updateRecipeInOrg,Resources,y,n,n,ssa,,,y,none,,,registry,recipes,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name},getRecipeInOrg_1,Resources,y,n,n,ssa,,,n,none,,,registry,resources,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/resources/{recipe-name},updateRecipeInOrg_1,Resources,y,n,n,ssa,,,y,none,,,registry,resources,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name},getModelInOrg,Models,y,n,n,ssa,,,n,none,,,registry,models,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/models/{model-name},updateModelInOrg,Models,y,n,n,ssa,,,y,none,,,registry,models,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name}/versions/{version-id},getModelVersionInOrg,Model Version,y,n,n,ssa,,,n,none,,,registry,model_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/models/{model-name}/versions/{version-id},updateModelVersionInOrg,Model Version,y,n,n,ssa,,,y,none,,,registry,model_versions,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash,stashArtifactVersionInOrg,Model Version,y,n,n,ssa,,,n,none,,,registry,model_versions,stash,exec,,action on a version -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id},getHelmChartVersionInOrg,Helm Charts,y,n,n,ssa,,,n,none,,,registry,helm_chart_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id},updateHelmChartVersionInOrg,Helm Charts,y,n,n,ssa,,,y,none,,,registry,helm_chart_versions,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/collections/{collection-name},getCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collections,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/collections/{collection-name},updateCollectionInOrg,Collections,y,n,n,ssa,,,y,none,,,registry,collections,update,update,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/collections/{collection-name},deleteCollectionInOrg,Collections,y,n,n,ssa,,,n,none,,,registry,collections,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/org/{org-name}/collections/{collection-name}/artifacts,patchCollectionInOrg,Collections,y,n,n,ssa,,,y,none,,,registry,collection_artifacts,update_bulk,update,,bulk membership update -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{csp-name},getCloudServiceProviderDetails,Cloud service providers,n,n,n,none-declared,,,n,none,,,catalog,csps,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,patch,/v1/csps/{csp-name},updateCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,y,none,,,catalog,csps,update,update,,publisher-privileged write -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/csps/{csp-name},deleteCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,n,none,,,catalog,csps,delete,delete,,publisher-privileged write -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{type}/org/{org}/{name}/{version}/files,downloadAllArtifactFilesAsGuest,Artifact File,y,n,n,none-declared,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (typed/guest file listing twins), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{type}/org/{org}/team/{team}/{name}/{version}/files,downloadAllArtifactFilesAsGuest_1,Artifact File,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{artifactName}/playground,getPublicModelAIPlayground,AIPlayground,y,n,y,none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/playground,getPublicModelAIPlayground_1,AIPlayground,y,y,y,none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{artifactName}/spec,getPublicModelArtifactsSpec,AIPlayground,y,n,n,none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,catalog,artifact_specs,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/spec,getPublicModelArtifactsSpec_1,AIPlayground,y,y,y (schedule 2026-09),none-declared,,,n,object{artifactName;artifactType;namespace;nvcfFunctionId;attributes;openAPISpec;...},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/org/{org-name}/{artifact-name}/collections,listArtifactCollectionsInOrgAsGuest,Collections,y,n,n,none-declared,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/{artifact-name}/collections), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/collections,listArtifactCollectionsInTeamAsGuest,Collections,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignatureAsGuest,ArtifactSigning,y,n,n,none-declared,,,n,none,,,catalog,artifact_signatures,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/signature,getArtifactVersionSignatureAsGuest_1,ArtifactSigning,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip/download,directDownloadAllFilesInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**/zip/download,downloadArtifactFileInTeamAsGuestAsZip,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/latest-version/zip,downloadAllFilesInTeamAsGuest_1,Artifact Version Files,y,y,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip/download,directDownloadAllFilesInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**/zip/download,downloadArtifactFileInOrgAsGuestAsZip,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/latest-version/zip,downloadAllFilesOfLatestVersionInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInTeamAsGuest,Artifact Version Files,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInOrgAsGuest,Artifact Version Files,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,artifact_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type},listPublicArtifacts,Artifacts,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,artifacts,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name},getChartInTeamAsGuest,Artifacts,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/{artifact-type}/{org-name}/{artifact-name},getArtifactInOrgAsGuest,Artifacts,y,n,n,none-declared,,,n,none,,,catalog,artifacts,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInTeamAsGuest,Resource Version Files endpoints,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInTeamAsGuest_1,Resource Version Files endpoints,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id},getRecipeVersionInTeamAsGuest,Resource Versions,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id},getRecipeVersionInTeamAsGuest_1,Resource Versions,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions,listRecipeVersionsInTeamAsGuest,Resource Versions,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name}/versions,listRecipeVersionsInTeamAsGuest_1,Resource Versions,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{team-name}/{recipe-name},getRecipeInTeamAsGuest,Resources,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{team-name}/{recipe-name},getRecipeInTeamAsGuest_1,Resources,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInOrgAsGuest,Resource Version Files endpoints,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,recipe_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files,listModeFilesInOrgAsGuest_1,Resource Version Files endpoints,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,resource_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name}/versions/{version-id},getRecipeVersionInOrgAsGuest,Resource Versions,y,n,n,none-declared,,,n,none,,,catalog,recipe_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name}/versions/{version-id},getRecipeVersionInOrgAsGuest_1,Resource Versions,y,n,n,none-declared,,,n,none,,,catalog,resource_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name}/versions,listRecipeVersionsInOrgAsGuest,Resource Versions,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,recipe_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name}/versions,listRecipeVersionsInOrgAsGuest_1,Resource Versions,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,resource_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes/{org-name}/{recipe-name},getRecipeInOrgAsGuest,Resources,y,n,n,none-declared,,,n,none,,,catalog,recipes,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources/{org-name}/{recipe-name},getRecipeInOrgAsGuest_1,Resources,y,n,n,none-declared,,,n,none,,,catalog,resources,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/recipes,listPublicRecipes,Resources,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,recipes,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/resources,listPublicRecipes_1,Resources,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,resources,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org}/{type}/{name}/{version}/files,downloadAllArtifactFiles,Artifact File,y,n,n,ssa,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (same listing as /versions/{version-id}/files), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org}/team/{team}/{type}/{name}/{version}/files,downloadAllArtifactFiles_1,Artifact File,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params,listArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,n,none,,,registry,artifact_deployment_params,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections,listArtifactCollectionsInOrg,Collections,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifact_collections,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/catalog/flags,getPublicFlagsInOrg,Publish,y,n,n,ssa,,,n,none,,,registry,artifact_catalog_flags,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInOrg,Artifact Version Files,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/*/zip/download,downloadArtifactFileInOrgAsZip,Artifact Version Files,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInOrg,Artifact Version Files,y,n,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,deleteArtifactFileInOrg,Artifact Version Files,y,n,n,ssa,,,n,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInOrg,Artifact Version Files,y,n,n,ssa,,page-size+page-number,n,none,,,registry,artifact_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/params,listArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections,listArtifactCollectionsInTeam,Collections,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/catalog/flags,getPublicFlagsInTeam,Publish,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip,downloadAllFilesInTeam,Artifact Version Files,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,downloadArtifactFileInTeam,Artifact Version Files,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**,deleteArtifactFileInTeam,Artifact Version Files,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,data-plane-file-transfer, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/zip/download,downloadArtifactFileInTeamAsZip,Artifact Version Files,y,y,y,ssa,,,n,none,,,,,,,deprecated-inline, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files,listArtifactFilesInTeam,Artifact Version Files,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}/files,listRecipeFilesInTeam,Resource Version Files endpoints,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}/files,listRecipeFilesInTeam_1,Resource Version Files endpoints,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/files,listModeFilesInTeam,Model Version Files,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions,listHelmChartVersionsInTeam,Helm Charts,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInTeam,Collections,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/repositories/{container-name}/associated-models,listModelVersionsAssociatedByContainer,Model Version,y,n,n,ssa,,page-size+page-number,n,none,,,registry,repository_associated_models,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/associated-models,listModelVersionsAssociatedByContainer_1,Model Version,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models,listModelVersionsAssociatedByContainer_2,Model Version,y,n,n,ssa,,page-size+page-number,n,none,,,registry,repository_associated_models,list_by_tag,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/tags/{container-tag}/associated-models,listModelVersionsAssociatedByContainer_3,Model Version,y,y,y (schedule 2026-09),ssa,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files,listRecipeFilesInOrg,Resource Version Files endpoints,y,n,n,ssa,,page-size+page-number,n,none,,,registry,recipe_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files,listRecipeFilesInOrg_1,Resource Version Files endpoints,y,n,n,ssa,,page-size+page-number,n,none,,,registry,resource_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files,listModeFilesInOrg,Model Version Files,y,n,n,ssa,,page-size+page-number,n,none,,,registry,model_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/helm-charts/{artifact-name}/versions,listHelmChartVersionsInOrg,Helm Charts,y,n,n,ssa,,page-size+page-number,n,none,,,registry,helm_chart_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/org/{org-name}/collections/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInOrg,Collections,y,n,n,ssa,,page-size+page-number,n,none,,,registry,collection_artifacts,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models,listPublicModels,Models,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,models,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name},getModelInTeamAsGuest,Models,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name}/versions,listModelVersionsInTeamAsGuest,Model Version,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id},getModelVersionInTeamAsGuest,Model Version,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}/files,listModeFilesInTeamAsGuest_2,Model Version Files,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name},getModelInOrgAsGuest,Models,y,n,n,none-declared,y,,n,none,,,catalog,models,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name}/versions,listModelVersionsInOrgAsGuest,Model Version,y,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,model_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name}/versions/{version-id},getModelVersionInOrgAsGuest,Model Version,y,n,n,none-declared,,,n,none,,,catalog,model_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/models/{org-name}/{model-name}/versions/{version-id}/files,listModeFilesInOrgAsGuest_2,Model Version Files,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,model_files,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions,listHelmChartVersionsInTeamAsGuest,Helm Charts,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions/{version-id},getHelmChartVersionInTeamAsGuest,Helm Charts,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{artifact-name}/versions,listHelmChartVersionsInOrgAsGuest,Helm Charts,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,helm_chart_versions,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id},getHelmChartVersionInOrgAsGuest,Helm Charts,y,n,n,none-declared,,,n,none,,,catalog,helm_chart_versions,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus,getGpus,GpuByPci,n,n,n,ssa,y,,n,none,,,catalog,gpus,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id},getGpuByPciDeviceIdVendorId,GpuByPci,n,n,n,ssa,,,n,none,,,catalog,gpus,get_by_vendor,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInTeamAsGuest,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInTeamAsGuest,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInOrgAsGuest,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInOrgAsGuest,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps/{csp-name},getCloudServiceProviderDetails_1,Cloud service providers,n,n,n,none-declared,,,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params,getPublicArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,catalog,artifact_deployment_params,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params,listPublicArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,none-declared,,,n,none,,,catalog,artifact_deployment_params,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/deploy/csps,listCloudServiceProviders_1,Cloud service providers,n,n,n,none-declared,,page-size+page-number,n,none,,,,,,,duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections,listPublicCollections,Collections,n,n,n,none-declared,y,page-size+page-number,n,none,,,catalog,collections,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{team-name}/{collection-name},getCollectionInTeamAsGuest,Collections,y,y,y (schedule 2026-09),none-declared,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{team-name}/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInTeamAsGuest,Collections,y,y,y (schedule 2026-09),none-declared,,page-size+page-number,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{collection-name},getCollectionInOrgAsGuest,Collections,y,n,n,none-declared,,,n,none,,,catalog,collections,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/collections/{org-name}/{collection-name}/artifacts/{artifact-type},listCollectionArtifactsInOrgAsGuest,Collections,y,n,n,none-declared,,page-size+page-number,n,none,,,catalog,collection_artifacts,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org}/workflows/{workflowId},getWorkflowStatus,Workflows,y,n,n,ssa,,,n,none,,,registry,workflows,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org}/team/{team}/workflows/{workflowId},getWorkflowStatusForTeam,Workflows,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys,listKeysInTeam,Encryption Keys,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id},listArtifactsForKeyInTeam,Encryption Keys,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id},deleteKeyFromTeam,Encryption Keys,y,y,y (schedule 2026-09),ssa,,,n,object{statusUrl;workflowId;requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/encryption-keys,listKeysInOrg,Encryption Keys,y,n,n,ssa,,,n,none,,,registry,encryption_keys,list,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id},listArtifactsForKeyInOrg,Encryption Keys,y,n,n,ssa,,,n,none,,,registry,encryption_keys,get,select,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id},deleteKeyFromOrg,Encryption Keys,y,n,n,ssa,,,n,object{statusUrl;workflowId;requestStatus},,,registry,encryption_keys,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/health,status,Health,n,n,n,none-declared,,,n,none,,,,,,,service-infra, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/health/all,statusDetails,Health,n,n,n,none-declared,,,n,none,,,,,,,service-infra, -ngc-core,ngc_models.json,api.ngc.nvidia.com,get,/health/**,getHealth,Health,n,n,n,none-declared,,,n,object{description;status},,,,,,,service-infra, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/{artifactType}/{artifactName}/purge,purgeDeletedArtifact,Artifacts,y,n,n,ssa,,,n,none,,,registry,artifacts,purge,exec,,kept off DELETE: same path-param signature as artifacts.delete -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/purge,purgeDeletedArtifact_1,Artifacts,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id},deleteArtifactVersionInOrg,Artifact Versions,y,n,n,ssa,,,n,none,,,registry,artifact_versions,delete,delete,, -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id},deleteArtifactVersionInTeam,Artifact Versions,y,y,y (schedule 2026-09),ssa,,,n,none,,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key,disassociateKeyFromModelInTeam,Models,y,y,y (schedule 2026-09),ssa,,,n,object{statusUrl;workflowId;requestStatus},,,,,,,deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09), -ngc-core,ngc_models.json,api.ngc.nvidia.com,delete,/v1/org/{org-name}/models/{model-name}/encryption-key,disassociateKeyFromModelInOrg,Models,y,n,n,ssa,,,n,object{statusUrl;workflowId;requestStatus},,,registry,model_encryption_keys,delete,delete,, +source,file,host,verb,path,operation_id,tags,org_scoped,team_scoped,deprecated,auth_declared,observed_public_read,pagination_params,native_casing,has_request_body,response_shape,object_key_candidate,invocation_form,org_prefix,rebased_path,server_url,service,resource,method,sql_verb,skip_reason,notes +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/health,getHealth,health-controller,n,n,n,none-declared,,,camel,n,object{description;details;status},,,,/health,https://api.ngc.nvidia.com,,,,,service-infra, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/info,getInfo,info-controller,n,n,n,none-declared,,,camel,n,object{commit;service;version},,,,/info,https://api.ngc.nvidia.com,,,,,service-infra, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/assets,getAssets,Asset Management,n,n,y,none-declared,,,camel,n,object{assets},$.assets,,,/v2/nvcf/assets,https://api.nvcf.nvidia.com,nvcf_invocation,assets,list,select,, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,post,/v2/nvcf/assets,createAsset,Asset Management,n,n,y,none-declared,,,camel,y,object{assetId;contentType;description;uploadUrl},,,,/v2/nvcf/assets,https://api.nvcf.nvidia.com,nvcf_invocation,assets,create,insert,, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/assets/{asset_id},getAsset,Asset Management,n,n,y,none-declared,,,camel,n,object{asset},$.asset,,,/v2/nvcf/assets/{asset_id},https://api.nvcf.nvidia.com,nvcf_invocation,assets,get,select,, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,delete,/v2/nvcf/assets/{asset_id},deleteAsset,Asset Management,n,n,y,none-declared,,,camel,n,none,,,,/v2/nvcf/assets/{asset_id},https://api.nvcf.nvidia.com,nvcf_invocation,assets,delete,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions/{function_id},getAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,n,object{functions},$.functions,,,/v2/nvcf/authorizations/functions/{function_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,list,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/authorizations/functions/{function_id},createAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,set,replace,,POST replaces the full authorized-party list - grants-as-data set operation +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/authorizations/functions/{function_id},deleteAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,n,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,delete_all,exec,,delete-all kept off the DELETE verb: same path-param signature as the granular remove +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{function_id}/add,addAuthorizedPartyForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id}/add,https://api.ngc.nvidia.com,nvcf_functions,authorizations,add,insert,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{function_id}/remove,removeAuthorizedPartyForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id}/remove,https://api.ngc.nvidia.com,nvcf_functions,authorizations,remove,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},getAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,camel,n,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,list_version,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},createAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,set_version,replace,,POST replaces the full authorized-party list - grants-as-data set operation +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},deleteAuthorizedPartiesForSpecificVersion,Function Sharing,n,n,n,none-declared,,,camel,n,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,delete_all_version,exec,,delete-all kept off the DELETE verb: same path-param signature as the granular remove +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/add,addAuthorizedPartyForSpecificVersion,Function Sharing,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/add,https://api.ngc.nvidia.com,nvcf_functions,authorizations,add_version,insert,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,patch,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/remove,removeAuthorizedPartyForSpecificVersion,Function Sharing,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/remove,https://api.ngc.nvidia.com,nvcf_functions,authorizations,remove_version,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/clusterGroups,getClusterGroups,Cluster Groups and GPUs,n,n,y,none-declared,n,,camel,n,object{clusterGroups},$.clusterGroups,,,/v2/nvcf/clusterGroups,https://api.ngc.nvidia.com,nvcf_deployments,cluster_groups,list,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},getFunctionDeployment,Function Deployment,n,n,n,none-declared,,,camel,n,object{deployment},$.deployment,,,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_deployments,deployments,get,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},createFunctionDeployment,Function Deployment,n,n,n,none-declared,,,camel,y,object{deployment},$.deployment,,,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_deployments,deployments,create,insert,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,put,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},updateFunctionDeployment,Function Deployment,n,n,y,none-declared,,,camel,y,object{deployment},$.deployment,,,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_deployments,deployments,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},deleteFunctionDeployment,Function Deployment,n,n,n,none-declared,,,camel,n,object{function},$.function,,,/v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_deployments,deployments,delete,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/deployments/{deployment_id},getFunctionDeployment_1,Function Deployment,n,n,n,none-declared,,,camel,n,object{deployment},$.deployment,,,/v2/nvcf/deployments/{deployment_id},https://api.ngc.nvidia.com,nvcf_deployments,deployments,get_by_id,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,patch,/v2/nvcf/deployments/{deployment_id}/gpu-specifications/{gpu_spec_id},updateGpuSpecification,Function Deployment,n,n,n,none-declared,,,camel,y,object{gpuSpecification},$.gpuSpecification,,,/v2/nvcf/deployments/{deployment_id}/gpu-specifications/{gpu_spec_id},https://api.ngc.nvidia.com,nvcf_deployments,deployment_gpu_specs,update,update,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/functions,getFunctions,Function Management,n,n,n,none-declared,n,,camel,n,object{functions},$.functions,,,/v2/nvcf/functions,https://api.ngc.nvidia.com,nvcf_functions,functions,list,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/functions,createFunction,Function Management,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/functions,https://api.ngc.nvidia.com,nvcf_functions,functions,create,insert,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/functions/ids,getFunctionIds,Function Management,n,n,n,none-declared,,,camel,n,object{functionIds},$.functionIds,,,/v2/nvcf/functions/ids,https://api.ngc.nvidia.com,nvcf_functions,function_ids,list,select,,own resource: same empty path-param signature as functions.list +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/functions/{function_id}/versions,getFunctions_1,Function Management,n,n,n,none-declared,,,camel,n,object{functions},$.functions,,,/v2/nvcf/functions/{function_id}/versions,https://api.ngc.nvidia.com,nvcf_functions,function_versions,list,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/functions/{function_id}/versions,createFunction_1,Function Management,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/functions/{function_id}/versions,https://api.ngc.nvidia.com,nvcf_functions,function_versions,create,insert,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/functions/{function_id}/versions/{function_version_id},getFunction,Function Management,n,n,n,none-declared,,,camel,n,object{function},$.function,,,/v2/nvcf/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_functions,function_versions,get,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,put,/v2/nvcf/functions/{function_id}/versions/{function_version_id},updateFunction,Function Management,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_functions,function_versions,update,update,,PUT semantics unverified (keycloak rule): update until field-drop evidence +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/functions/{function_id}/versions/{function_version_id},deleteFunction,Function Management,n,n,n,none-declared,,,camel,n,none,,,,/v2/nvcf/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_functions,function_versions,delete,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,put,/v2/nvcf/metadata/functions/{function_id}/versions/{function_version_id},updateFunctionMetadata,Function Management,n,n,y,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/metadata/functions/{function_id}/versions/{function_version_id},https://api.ngc.nvidia.com,nvcf_functions,function_metadata,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,post,/v2/nvcf/pexec/functions/{function_id},invokeFunction,Function Invocation,n,n,y,none-declared,,,kebab,y,object{char;direct;double;float;int;long;...},,polling,,/v2/nvcf/pexec/functions/{function_id},https://api.nvcf.nvidia.com,nvcf_invocation,invocations,invoke,exec,,"polling invocation, scoped in" +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,post,/v2/nvcf/pexec/functions/{function_id}/versions/{version_id},invokeFunction_1,Function Invocation,n,n,y,none-declared,,,kebab,y,object{char;direct;double;float;int;long;...},,polling,,/v2/nvcf/pexec/functions/{function_id}/versions/{version_id},https://api.nvcf.nvidia.com,nvcf_invocation,invocations,invoke_version,exec,,"polling invocation, scoped in" +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/pexec/status/{request_id},getFunctionInvocationResult,Function Invocation,n,n,y,none-declared,,,camel,n,object{char;direct;double;float;int;long;...},,polling,,/v2/nvcf/pexec/status/{request_id},https://api.nvcf.nvidia.com,nvcf_invocation,invocation_status,get,select,,"polling form: EXEC returns 202 + requestId, status polled here (proxmox precedent)" +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{function_id},getQueuesDetails_1,Queue Details,n,n,n,none-declared,,,camel,n,object{functionId;queues},$.queues,,,/v2/nvcf/queues/functions/{function_id},https://api.nvcf.nvidia.com,nvcf_queues,queues,list,select,, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/queues/functions/{function_id}/versions/{version_id},getQueuesDetails,Queue Details,n,n,n,none-declared,,,camel,n,object{functionId;queues},$.queues,,,/v2/nvcf/queues/functions/{function_id}/versions/{version_id},https://api.nvcf.nvidia.com,nvcf_queues,queues,list_version,select,, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/queues/{request_id}/position,getPositionInQueue,Queue Details,n,n,n,none-declared,,,camel,n,object{functionId;functionVersionId;positionInQueue},,,,/v2/nvcf/queues/{request_id}/position,https://api.nvcf.nvidia.com,nvcf_queues,queue_positions,get,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,put,/v2/nvcf/ratelimit/functions/{function_id}/versions/{version_id},updateRateLimit,User Ratelimit Management,n,n,y,none-declared,,,camel,y,none,,,,/v2/nvcf/ratelimit/functions/{function_id}/versions/{version_id},https://api.ngc.nvidia.com,nvcf_functions,function_ratelimits,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/ratelimit/functions/{function_id}/versions/{version_id},deleteRateLimit,User Ratelimit Management,n,n,n,none-declared,,,camel,n,none,,,,/v2/nvcf/ratelimit/functions/{function_id}/versions/{version_id},https://api.ngc.nvidia.com,nvcf_functions,function_ratelimits,delete,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/recognized-registries,getRecognizedRegistries,Registry Credential Management,n,n,n,none-declared,,,camel,n,object{recognizedRegistries},,,,/v2/nvcf/recognized-registries,https://api.ngc.nvidia.com,nvcf_deployments,recognized_registries,list,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/registry-credentials,listRegistryCredentialDetails,Registry Credential Management,n,n,n,none-declared,,,camel,n,object{registryCredentials},$.registryCredentials,,,/v2/nvcf/registry-credentials,https://api.ngc.nvidia.com,nvcf_deployments,registry_credentials,list,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/registry-credentials,addRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,camel,y,object{registryCredential},$.registryCredential,,,/v2/nvcf/registry-credentials,https://api.ngc.nvidia.com,nvcf_deployments,registry_credentials,create,insert,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/registry-credentials/{registry_credential_id},getRegistryCredentialDetails,Registry Credential Management,n,n,n,none-declared,,,camel,n,object{registryCredential},$.registryCredential,,,/v2/nvcf/registry-credentials/{registry_credential_id},https://api.ngc.nvidia.com,nvcf_deployments,registry_credentials,get,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,patch,/v2/nvcf/registry-credentials/{registry_credential_id},updateRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,camel,y,object{registryCredential},$.registryCredential,,,/v2/nvcf/registry-credentials/{registry_credential_id},https://api.ngc.nvidia.com,nvcf_deployments,registry_credentials,update,update,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/registry-credentials/{registry_credential_id},deleteRegistryCredential,Registry Credential Management,n,n,n,none-declared,,,camel,n,none,,,,/v2/nvcf/registry-credentials/{registry_credential_id},https://api.ngc.nvidia.com,nvcf_deployments,registry_credentials,delete,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,put,/v2/nvcf/secrets/functions/{function_id}/versions/{version_id},updateFunctionSecrets,User Secret Management,n,n,n,none-declared,,,camel,y,none,,,,/v2/nvcf/secrets/functions/{function_id}/versions/{version_id},https://api.ngc.nvidia.com,nvcf_functions,function_secrets,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,put,/v2/nvcf/secrets/telemetries/{telemetry_id},updateTelemetrySecret,User Secret Management,n,n,n,none-declared,,,camel,y,none,,,,/v2/nvcf/secrets/telemetries/{telemetry_id},https://api.ngc.nvidia.com,nvcf_deployments,telemetry_secrets,update,update,,PUT semantics unverified +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/telemetries,getTelemetriesByAccount,Telemetry Management,n,n,n,none-declared,,,camel,n,object{telemetries},$.telemetries,,,/v2/nvcf/telemetries,https://api.ngc.nvidia.com,nvcf_deployments,telemetries,list,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/telemetries,createTelemetry,Telemetry Management,n,n,n,none-declared,,,camel,y,object{telemetry},$.telemetry,,,/v2/nvcf/telemetries,https://api.ngc.nvidia.com,nvcf_deployments,telemetries,create,insert,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/telemetries/{telemetry_id},getTelemetry,Telemetry Management,n,n,n,none-declared,,,camel,n,object{telemetry},$.telemetry,,,/v2/nvcf/telemetries/{telemetry_id},https://api.ngc.nvidia.com,nvcf_deployments,telemetries,get,select,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/telemetries/{telemetry_id},deleteTelemetry,Telemetry Management,n,n,n,none-declared,,,camel,n,none,,,,/v2/nvcf/telemetries/{telemetry_id},https://api.ngc.nvidia.com,nvcf_deployments,telemetries,delete,delete,, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions,issueMultiFunctionsInvocationToken,Function Invocation Assertion Token,n,n,n,none-declared,,,camel,y,object{access_token;expires_in},,,,/v2/nvcf/tokens/functions,https://api.nvcf.nvidia.com,nvcf_invocation,tokens,create_for_functions,exec,,"ephemeral credential mint - action, nothing queryable persisted" +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions/{function_id},issueInvocationToken_1,Function Invocation Assertion Token,n,n,n,none-declared,,,camel,y,object{access_token;expires_in},,,,/v2/nvcf/tokens/functions/{function_id},https://api.nvcf.nvidia.com,nvcf_invocation,tokens,create_for_function,exec,, +nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,post,/v2/nvcf/tokens/functions/{function_id}/versions/{function_version_id},issueInvocationToken,Function Invocation Assertion Token,n,n,n,none-declared,,,camel,y,object{access_token;expires_in},,,,/v2/nvcf/tokens/functions/{function_id}/versions/{function_version_id},https://api.nvcf.nvidia.com,nvcf_invocation,tokens,create_for_version,exec,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/health,status,Services,n,n,n,api-key+bearer-token,,,camel,n,object{health;requestStatus},,,,/health,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/health/all,statusDetails,Services,n,n,n,api-key+bearer-token,,,camel,n,object{health;requestStatus},,,,/health/all,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/public-keys,getPublicKey,Services,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/public-keys,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/roles,getRoles,Services,n,n,n,api-key+bearer-token,,,kebab,n,object{requestStatus;roles},$.roles,,,/roles,https://api.ngc.nvidia.com,orgs,roles,list,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources,swaggerResources_4,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources,swaggerResources_3,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources,swaggerResources_5,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources,swaggerResources_2,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources,swaggerResources_6,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources,swaggerResources_1,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources,swaggerResources,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources/configuration/security,securityConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources/configuration/security,securityConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources/configuration/security,securityConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources/configuration/security,securityConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources/configuration/security,securityConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources/configuration/security,securityConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources/configuration/security,securityConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources/configuration/ui,uiConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources/configuration/ui,uiConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources/configuration/ui,uiConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources/configuration/ui,uiConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources/configuration/ui,uiConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources/configuration/ui,uiConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources/configuration/ui,uiConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/backfill-orgs-to-kratos,backfillOrgsToKratos,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/admin/backfill-orgs-to-kratos,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/entitlements,listOrganizationsWithEntitlement_1,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,kebab,n,object{entitlements;requestStatus},,,,/v2/admin/entitlements,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/org,listOrganizations_2,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{organizations;paginationInfo;requestStatus},,,,/v2/admin/org,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/org/validate,listValidatedOrganizations,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,camel,n,object{organizations;paginationInfo;requestStatus},,,,/v2/admin/org/validate,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/org/{org_name},getOrg_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,camel,n,object{organizations;requestStatus},,,,/v2/admin/org/{org_name},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/admin/org/{org_name},updateOrg_1,Super Admin Org Controller,y,n,y,api-key+bearer-token,,,camel,y,object{organizations;requestStatus},,,,/v2/admin/org/{org_name},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/org/{org_name}/entitlements,listOrganizationsWithEntitlement,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,kebab,n,object{entitlements;requestStatus},,,,/v2/admin/org/{org_name}/entitlements,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/org/{org_name}/org-owner-backfill,backfillOrgOwnerByOrg,Super Admin User Controller,y,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/admin/org/{org_name}/org-owner-backfill,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/org/{org_name}/team/{team_name}/users,createUserInTeam_1,Super Admin User Controller,y,y,n,api-key+bearer-token,,,kebab,y,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/team/{team_name}/users,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/org/{org_name}/team/{team_name}/users/{id},addUserToTeam_1,Super Admin User Controller,y,y,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/team/{team_name}/users/{id},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/admin/org/{org_name}/team/{team_name}/users/{id}/add-role,addUserRole_3,Super Admin User Controller,y,y,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/team/{team_name}/users/{id}/add-role,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/admin/org/{org_name}/team/{team_name}/users/{id}/remove-role,removeUserRole_3,Super Admin User Controller,y,y,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/team/{team_name}/users/{id}/remove-role,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/org/{org_name}/teams,listTeams_1,Super Admin Org Controller,y,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{paginationInfo;requestStatus;teams},,,,/v2/admin/org/{org_name}/teams,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/org/{org_name}/teams/{team_name},getTeam_1,Super Admin Org Controller,y,y,n,api-key+bearer-token,,,camel,n,object{requestStatus;team},,,,/v2/admin/org/{org_name}/teams/{team_name},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/admin/org/{org_name}/teams/{team_name},editTeam_1,Super Admin Org Controller,y,y,n,api-key+bearer-token,,,camel,y,object{requestStatus;team},,,,/v2/admin/org/{org_name}/teams/{team_name},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/org/{org_name}/users,createUserInOrg_1,Super Admin User Controller,y,n,n,api-key+bearer-token,,,kebab,y,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/users,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/org/{org_name}/users/{id},addUserToOrg,Super Admin User Controller,y,n,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/users/{id},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/admin/org/{org_name}/users/{id},removeUserFromOrg_2,Super Admin User Controller,y,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/admin/org/{org_name}/users/{id},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/admin/org/{org_name}/users/{id}/add-role,addUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/users/{id}/add-role,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/admin/org/{org_name}/users/{id}/remove-role,removeUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/users/{id}/remove-role,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/admin/org/{org_name}/users/{id}/update-role,updateUserRole_2,Super Admin User Controller,y,n,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/org/{org_name}/users/{id}/update-role,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/orgs,createOrganization,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,camel,y,object{organizations;requestStatus},,,,/v2/admin/orgs,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/orgs/offboarded,listOffboardedOrgs,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{organizations;paginationInfo;requestStatus},,,,/v2/admin/orgs/offboarded,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/admin/users/invite,emailInviteToUser,Super Admin User Controller,n,n,y,api-key+bearer-token,,,kebab,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/users/invite,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/users/me,whoAmI_1,Super Admin User Controller,n,n,n,api-key+bearer-token,,,kebab,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/users/me,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/users/{id},getUserDetails,Super Admin User Controller,n,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/users/{id},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/users/{id}/crm-sync,syncCrmUser,Super Admin User Controller,n,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/admin/users/{id}/crm-sync,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/users/{id}/migrate-deprecated-roles,migrateUserDeprecatedRoles,Super Admin User Controller,n,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/admin/users/{id}/migrate-deprecated-roles,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/users/{user_id}/org-owner-backfill,backfillOrgOwnerByUser,Super Admin User Controller,n,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/admin/users/{user_id}/org-owner-backfill,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/starfleetIds/{starfleet_id},getUserInOrg_1,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},$.user,,/v2/org/{org_name},/starfleetIds/{starfleet_id},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,users,get_by_starfleet_id,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/starfleetIds/{starfleet_id},getUserInTeamByStarfleetId,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v2/org/{org_name},/team/{team_name}/starfleetIds/{starfleet_id},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,team_members,get_by_starfleet_id,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/users,listUsersInTeam,Users Management,y,y,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{paginationInfo;requestStatus;users},$.users,,/v2/org/{org_name},/team/{team_name}/users,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,team_members,list,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/users,createUserInTeam,Users Management,y,y,n,api-key+bearer-token,,,kebab,y,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v2/org/{org_name},/team/{team_name}/users,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,team_members,create,insert,,creates (invites) a user directly into the team +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/users/invitations,listInvitationsForUserInTeam,Users Management,y,y,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{invitations;paginationInfo;requestStatus},$.invitations,,/v2/org/{org_name},/team/{team_name}/users/invitations,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,team_invitations,list,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/users/invitations/{id},deleteUserInvitationInTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/users/invitations/{id},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,team_invitations,delete,delete,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v2/org/{org_name},/team/{team_name}/users/invitations/{id}/resend-invitation-email,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,team_invitations,resend_email,exec,,"non-idempotent GET (sends email) - action, not a read" +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/users/{id},getUserInTeam,Users Management,y,y,n,api-key+bearer-token,,,kebab,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/team/{team_name}/users/{id},https://api.ngc.nvidia.com,,,,,superseded-by-v3-twin (/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id}), +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/users/{id},addUserToTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/users/{id},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,team_members,add,insert,,adds an existing org user to the team - grants-as-data +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/users/{id},removeUserFromTeam_1,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/users/{id},https://api.ngc.nvidia.com,,,,,superseded-by-v3-twin (/v3/orgs/{org_name}/teams/{team_name}/users/{id}), +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/users/{id}/add-role,addUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/team/{team_name}/users/{id}/add-role,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/users/{id}/remove-role,removeUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/team/{team_name}/users/{id}/remove-role,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/users/{id}/update-role,updateUserRole_1,Users Management,y,y,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/team/{team_name}/users/{id}/update-role,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/teams,listTeams,Teams,y,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{paginationInfo;requestStatus;teams},$.teams,,/v2/org/{org_name},/teams,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,teams,list,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/teams,createTeam,Teams,y,n,n,api-key+bearer-token,,,camel,y,object{requestStatus;team},$.team,,/v2/org/{org_name},/teams,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,teams,create,insert,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/teams/{team_name},getTeam,Teams,y,y,n,api-key+bearer-token,,,camel,n,object{requestStatus;team},$.team,,/v2/org/{org_name},/teams/{team_name},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,teams,get,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/teams/{team_name},editTeam,Teams,y,y,n,api-key+bearer-token,,,camel,y,object{requestStatus;team},$.team,,/v2/org/{org_name},/teams/{team_name},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,teams,update,update,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/teams/{team_name},deleteTeam,Teams,y,y,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/teams/{team_name},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,teams,delete,delete,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/users,listUsersInOrg,Users Management,y,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{paginationInfo;requestStatus;users},$.users,,/v2/org/{org_name},/users,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,users,list,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/users,createUserInOrg,Users Management,y,n,n,api-key+bearer-token,,,kebab,y,object{activationToken;ncaRole;requestStatus;user;userRoles},$.user,,/v2/org/{org_name},/users,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,users,create,insert,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/users/invitations,listInvitationsForUserInOrg,Users Management,y,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{invitations;paginationInfo;requestStatus},$.invitations,,/v2/org/{org_name},/users/invitations,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,user_invitations,list,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/users/invitations/{id},deleteUserInvitationInOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/users/invitations/{id},https://api.ngc.nvidia.com/v2/org/{org_name},orgs,user_invitations,delete,delete,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/users/invitations/{id}/resend-invitation-email,resendUserInvitationEmailInOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v2/org/{org_name},/users/invitations/{id}/resend-invitation-email,https://api.ngc.nvidia.com/v2/org/{org_name},orgs,user_invitations,resend_email,exec,,"non-idempotent GET (sends email) - action, not a read" +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/users/{id},getUserInOrg,Users Management,y,n,n,api-key+bearer-token,,,kebab,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/users/{id},https://api.ngc.nvidia.com,,,,,superseded-by-v3-twin (/v3/orgs/{org_name}/users/{user_email_or_id}), +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/users/{id},removeUserFromOrg_1,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/users/{id},https://api.ngc.nvidia.com,,,,,superseded-by-v3-twin (/v3/orgs/{org_name}/users/{id}), +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/users/{id}/add-role,addUserRole,Users Management,y,n,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/users/{id}/add-role,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/users/{id}/invite,emailInviteToUser_1,Users Management,y,n,y,api-key+bearer-token,,,kebab,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/users/{id}/invite,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/users/{id}/remove-role,removeUserRole,Users Management,y,n,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/users/{id}/remove-role,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/users/{id}/update-role,updateUserRole,Users Management,y,n,y,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,,/v2/org/{org_name}/users/{id}/update-role,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/orgs,listOrganizations_1,Orgs,n,n,n,api-key+bearer-token,n,page-number+page-size,kebab,n,object{organizations;paginationInfo;requestStatus},$.organizations,,,/v2/orgs,https://api.ngc.nvidia.com,orgs,orgs,list,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/orgs/{org_name},getOrganization,Orgs,y,n,n,api-key+bearer-token,,,camel,n,object{organizations;requestStatus},$.organizations,,,/v2/orgs/{org_name},https://api.ngc.nvidia.com,orgs,orgs,get,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/orgs/{org_name},updateOrganization,Orgs,y,n,n,api-key+bearer-token,,,camel,y,object{organizations;requestStatus},$.organizations,,,/v2/orgs/{org_name},https://api.ngc.nvidia.com,orgs,orgs,update,update,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/v2/ping,headPing,Users Management,n,n,n,api-key+bearer-token,,,camel,n,none,,,,/v2/ping,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/users/me,whoAmI,Users Management,n,n,n,api-key+bearer-token,n,,kebab,n,object{activationToken;ncaRole;requestStatus;user;userRoles},$.user,,,/v2/users/me,https://api.ngc.nvidia.com,orgs,current_user,get,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v2/users/me,editUserProfile,Users Management,n,n,n,api-key+bearer-token,,,camel,y,object{activationToken;ncaRole;requestStatus;user;userRoles},$.user,,,/v2/users/me,https://api.ngc.nvidia.com,orgs,current_user,update,update,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/users/me/api-key,generateUserApiKey,Users Management,n,n,n,api-key+bearer-token,,,camel,n,object{cloudNfsKey;cloudNfsKeyPwd;cloudNfsUserName;key;requestStatus},,,,/v2/users/me/api-key,https://api.ngc.nvidia.com,orgs,current_user,create_api_key,exec,,credential mint - action +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v3/admin/org,listOrganizations,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{organizations;paginationInfo;requestStatus},,,,/v3/admin/org,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v3/admin/org/{org_name},getOrg,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,kebab,n,object{organizations;requestStatus},,,,/v3/admin/org/{org_name},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v3/admin/org/{org_name},updateOrg,Super Admin Org Controller,y,n,n,api-key+bearer-token,,,camel,y,object{organizations;requestStatus},,,,/v3/admin/org/{org_name},https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v3/admin/orgs,createProtoOrganization,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,camel,y,object{organizations;requestStatus},,,,/v3/admin/orgs,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v3/admin/orgs/ncaIds,getMapping,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,camel,y,object{orgNcaMapping},,,,/v3/admin/orgs/ncaIds,https://api.ngc.nvidia.com,,,,,internal-admin, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v3/orgs,createOrganizationFromScratch,Orgs,n,n,n,api-key+bearer-token,,,camel,y,object{organizations;requestStatus},$.organizations,,,/v3/orgs,https://api.ngc.nvidia.com,orgs,orgs,create,insert,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v3/orgs/proto-org,createOrganizationFromProtoOrg,Orgs,n,n,n,api-key+bearer-token,,,camel,y,object{organizations;requestStatus},$.organizations,,,/v3/orgs/proto-org,https://api.ngc.nvidia.com,orgs,proto_orgs,create,insert,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v3/orgs/proto-org/validate,protoOrgInvitationValidate,Orgs,n,n,n,api-key+bearer-token,,,camel,n,object{orgInvitation;requestStatus},$.orgInvitation,,,/v3/orgs/proto-org/validate,https://api.ngc.nvidia.com,orgs,proto_orgs,validate,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v3/orgs/{org_name}/teams/{team_name}/users/nca-invitations,inviteUserToNcaInTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,y,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/teams/{team_name}/users/nca-invitations,https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,team_invitations,create_nca,insert,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v3/orgs/{org_name}/teams/{team_name}/users/{id},removeUserFromTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,/v3/orgs/{org_name},/teams/{team_name}/users/{id},https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,team_members,remove,delete,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id},listUserRolesInOrgTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/teams/{team_name}/users/{user_email_or_id},https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,team_members,get,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id}/add-role,addRoleOrInviteUserToTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/teams/{team_name}/users/{user_email_or_id}/add-role,https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,team_member_roles,add,insert,,grants-as-data +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id}/remove-role,removeRoleOrInvitationInTeam,Users Management,y,y,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/teams/{team_name}/users/{user_email_or_id}/remove-role,https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,team_member_roles,remove,delete,,grants-as-data +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v3/orgs/{org_name}/users/nca-invitations,inviteUserToNcaInOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,y,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/users/nca-invitations,https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,user_invitations,create_nca,insert,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v3/orgs/{org_name}/users/{id},removeUserFromOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,/v3/orgs/{org_name},/users/{id},https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,users,delete,delete,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v3/orgs/{org_name}/users/{user_email_or_id},listUserRolesInOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},$.user,,/v3/orgs/{org_name},/users/{user_email_or_id},https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,users,get,select,, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v3/orgs/{org_name}/users/{user_email_or_id}/add-role,addRoleOrInviteUserToOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/users/{user_email_or_id}/add-role,https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,user_roles,add,insert,,grants-as-data +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v3/orgs/{org_name}/users/{user_email_or_id}/remove-role,removeRoleOrInvitationInOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/users/{user_email_or_id}/remove-role,https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,user_roles,remove,delete,,grants-as-data +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/version,getLatestPackageVersion,Services,n,n,n,api-key+bearer-token,,,camel,n,object{requestStatus;versions},,,,/version,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/health,status,Health,n,n,n,none-declared,,,camel,n,object{health},,,,/health,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/health/**,getHealth,Health,n,n,n,none-declared,,,camel,n,object{description;status},,,,/health/**,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/health/all,statusDetails,Health,n,n,n,none-declared,,,camel,n,object{health},,,,/health/all,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org_name}/encryption-keys,listKeysInOrg,Encryption Keys,y,n,n,ssa,,,camel,n,object{encryptionKeys},$.encryptionKeys,,/v2/artifact-registry/org/{org_name},/encryption-keys,https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org_name}/encryption-keys/{key_id},listArtifactsForKeyInOrg,Encryption Keys,y,n,n,ssa,,,kebab,n,object{artifacts;requestStatus},$.artifacts,,/v2/artifact-registry/org/{org_name},/encryption-keys/{key_id},https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/artifact-registry/org/{org_name}/encryption-keys/{key_id},deleteKeyFromOrg,Encryption Keys,y,n,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/artifact-registry/org/{org_name},/encryption-keys/{key_id},https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org_name}/team/{team_name}/encryption-keys,listKeysInTeam,Encryption Keys,y,y,n,ssa,,,camel,n,object{encryptionKeys},$.encryptionKeys,,/v2/artifact-registry/org/{org_name},/team/{team_name}/encryption-keys,https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,list_by_team,select,,team-scoped twin of /v2/artifact-registry/org/{org_name}/encryption-keys (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org_name}/team/{team_name}/encryption-keys/{key_id},listArtifactsForKeyInTeam,Encryption Keys,y,y,n,ssa,,,camel,n,object{artifacts;requestStatus},$.artifacts,,/v2/artifact-registry/org/{org_name},/team/{team_name}/encryption-keys/{key_id},https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,get_by_team,select,,team-scoped twin of /v2/artifact-registry/org/{org_name}/encryption-keys/{key_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/artifact-registry/org/{org_name}/team/{team_name}/encryption-keys/{key_id},deleteKeyFromTeam,Encryption Keys,y,y,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/artifact-registry/org/{org_name},/team/{team_name}/encryption-keys/{key_id},https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,delete_by_team,delete,,team-scoped twin of /v2/artifact-registry/org/{org_name}/encryption-keys/{key_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org}/team/{team}/workflows/{workflow_id},getWorkflowStatusForTeam,Workflows,y,y,n,ssa,,,camel,n,object{cloneStatus;duration;endTime;message;requestStatus;startTime;...},,,/v2/artifact-registry/org/{org_name},/team/{team}/workflows/{workflow_id},https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,workflows,get_by_team,select,,team-scoped twin of /v2/artifact-registry/org/{org}/workflows/{workflow_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org}/workflows/{workflow_id},getWorkflowStatus,Workflows,y,n,n,ssa,,,camel,n,object{cloneStatus;duration;endTime;message;requestStatus;startTime;...},,,/v2/artifact-registry/org/{org_name},/workflows/{workflow_id},https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,workflows,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/collections,listPublicCollections,Collections,n,n,n,none-declared,y,page-size+page-number,kebab,n,object{collections;paginationInfo;requestStatus},$.collections,,,/v2/collections,https://api.ngc.nvidia.com,catalog,collections,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/collections/{org_name}/{collection_name},getCollectionInOrgAsGuest,Collections,y,n,n,none-declared,,,kebab,n,object{collection;requestStatus},$.collection,,,/v2/collections/{org_name}/{collection_name},https://api.ngc.nvidia.com,catalog,collections,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/collections/{org_name}/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrgAsGuest,Collections,y,n,n,none-declared,,page-size+page-number,kebab,n,object{artifacts;paginationInfo;requestStatus},$.artifacts,,,/v2/collections/{org_name}/{collection_name}/artifacts/{artifact_type},https://api.ngc.nvidia.com,catalog,collection_artifacts,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/collections/{org_name}/{team_name}/{collection_name},getCollectionInTeamAsGuest,Collections,y,y,n,none-declared,,,kebab,n,object{collection;requestStatus},$.collection,,,/v2/collections/{org_name}/{team_name}/{collection_name},https://api.ngc.nvidia.com,catalog,collections,get_by_team,select,,team-scoped twin of /v2/collections/{org_name}/{collection_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/collections/{org_name}/{team_name}/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInTeamAsGuest,Collections,y,y,n,none-declared,,page-size+page-number,kebab,n,object{artifacts;paginationInfo;requestStatus},$.artifacts,,,/v2/collections/{org_name}/{team_name}/{collection_name}/artifacts/{artifact_type},https://api.ngc.nvidia.com,catalog,collection_artifacts,list_by_team,select,,team-scoped twin of /v2/collections/{org_name}/{collection_name}/artifacts/{artifact_type} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps,listCloudServiceProviders,Cloud service providers,n,n,n,none-declared,n,page-size+page-number,kebab,n,object{cloudServiceProviders;paginationInfo;requestStatus},$.cloudServiceProviders,,,/v2/csps,https://api.ngc.nvidia.com,catalog,csps,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/csps,createCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,camel,y,object{attributes;createdDate;description;displayName;isDeployable;isEnabled;...},,,,/v2/csps,https://api.ngc.nvidia.com,catalog,csps,create,insert,,publisher-privileged write +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/csps/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createPublicArtifactDeploymentUrlInTeam,Artifact deployment parameters,y,y,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,,/v2/csps/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/versions/{version_id}/deployments/{csp_name},https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operation under /v2/org/{org_name}/{artifact_type}/.../deployments), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/csps/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},createPublicArtifactVersionFileDeploymentUrlInTeam,Artifact deployment parameters,y,y,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,,/v2/csps/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/csps/{artifact_type}/org/{org_name}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createPublicArtifactDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,,/v2/csps/{artifact_type}/org/{org_name}/{artifact_name}/versions/{version_id}/deployments/{csp_name},https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operation under /v2/org/{org_name}/{artifact_type}/.../deployments), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/csps/{artifact_type}/org/{org_name}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},createPublicArtifactVersionFileDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,,/v2/csps/{artifact_type}/org/{org_name}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,none-declared,,,kebab,n,object{artifact;csp;deploymentParameters;paginationInfo;requestStatus},$.deploymentParameters,,,/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params,https://api.ngc.nvidia.com,catalog,artifact_deployment_params,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,none-declared,,,kebab,n,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com,catalog,artifact_deployment_params,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,n,none-declared,,,kebab,n,object{artifact;csp;deploymentParameters;paginationInfo;requestStatus},$.deploymentParameters,,,/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params,https://api.ngc.nvidia.com,catalog,artifact_deployment_params,list_by_team,select,,team-scoped twin of /v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,n,none-declared,,,kebab,n,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com,catalog,artifact_deployment_params,get_by_team,select,,team-scoped twin of /v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps/{csp_name},getCloudServiceProviderDetails,Cloud service providers,n,n,n,none-declared,,,camel,n,object{attributes;createdDate;description;displayName;isDeployable;isEnabled;...},,,,/v2/csps/{csp_name},https://api.ngc.nvidia.com,catalog,csps,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/csps/{csp_name},updateCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,camel,y,object{attributes;createdDate;description;displayName;isDeployable;isEnabled;...},,,,/v2/csps/{csp_name},https://api.ngc.nvidia.com,catalog,csps,update,update,,publisher-privileged write +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/csps/{csp_name},deleteCloudServiceProvider,Cloud service providers,n,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/csps/{csp_name},https://api.ngc.nvidia.com,catalog,csps,delete,delete,,publisher-privileged write +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps/{csp_name}/deployments/params,getCloudServiceProviderDeploymentParametersDetails,Cloud service provider deployment parameters,n,n,n,none-declared,,,camel,n,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/csps/{csp_name}/deployments/params,https://api.ngc.nvidia.com,catalog,csp_deployment_params,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/csps/{csp_name}/deployments/params,createCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,camel,y,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/csps/{csp_name}/deployments/params,https://api.ngc.nvidia.com,catalog,csp_deployment_params,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/csps/{csp_name}/deployments/params,updateCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,camel,y,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/csps/{csp_name}/deployments/params,https://api.ngc.nvidia.com,catalog,csp_deployment_params,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/csps/{csp_name}/deployments/params,deleteCloudServiceProviderDeploymentParameters,Cloud service provider deployment parameters,n,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/csps/{csp_name}/deployments/params,https://api.ngc.nvidia.com,catalog,csp_deployment_params,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/csps/{csp_name}/deployments/params/meta,getCloudServiceProviderDeploymentParametersMetaDetails,Deployment parameters meta,n,n,n,none-declared,,,camel,n,object{cpu;csp;gpu;memory;storage},,,,/v2/csps/{csp_name}/deployments/params/meta,https://api.ngc.nvidia.com,catalog,csp_deployment_params_meta,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/csps/{csp_name}/deployments/params/meta,createCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,camel,y,object{cpu;csp;gpu;memory;storage},,,,/v2/csps/{csp_name}/deployments/params/meta,https://api.ngc.nvidia.com,catalog,csp_deployment_params_meta,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/csps/{csp_name}/deployments/params/meta,updateCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,camel,y,object{cpu;csp;gpu;memory;storage},,,,/v2/csps/{csp_name}/deployments/params/meta,https://api.ngc.nvidia.com,catalog,csp_deployment_params_meta,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/csps/{csp_name}/deployments/params/meta,deleteCloudServiceProviderDeploymentParametersMeta,Deployment parameters meta,n,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/csps/{csp_name}/deployments/params/meta,https://api.ngc.nvidia.com,catalog,csp_deployment_params_meta,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/deploy/csps,listCloudServiceProviders_1,Cloud service providers,n,n,n,none-declared,,page-size+page-number,kebab,n,object{cloudServiceProviders;paginationInfo;requestStatus},,,,/v2/deploy/csps,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operations as the /v2/csps/{artifact_type} family), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/deploy/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInOrgAsGuest,Artifact deployment parameters,y,n,n,none-declared,,,kebab,n,object{artifact;csp;deploymentParameters;paginationInfo;requestStatus},,,,/v2/deploy/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operations as the /v2/csps/{artifact_type} family), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/deploy/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInOrgAsGuest,Artifact deployment parameters,y,n,n,none-declared,,,kebab,n,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/deploy/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operations as the /v2/csps/{artifact_type} family), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/deploy/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params,listPublicArtifactDeploymentParametersInTeamAsGuest,Artifact deployment parameters,y,y,n,none-declared,,,kebab,n,object{artifact;csp;deploymentParameters;paginationInfo;requestStatus},,,,/v2/deploy/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operations as the /v2/csps/{artifact_type} family), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/deploy/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params,getPublicArtifactDeploymentParametersInTeamAsGuest,Artifact deployment parameters,y,y,n,none-declared,,,kebab,n,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/deploy/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operations as the /v2/csps/{artifact_type} family), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/deploy/csps/{csp_name},getCloudServiceProviderDetails_1,Cloud service providers,n,n,n,none-declared,,,camel,n,object{attributes;createdDate;description;displayName;isDeployable;isEnabled;...},,,,/v2/deploy/csps/{csp_name},https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operations as the /v2/csps/{artifact_type} family), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/gpus,getGpus,GpuByPci,n,n,n,ssa,y,,camel,n,array,,,,/v2/gpus,https://api.ngc.nvidia.com,catalog,gpus,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/gpus/pci-device-id/{pci_device_id},getGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,camel,n,array,,,,/v2/gpus/pci-device-id/{pci_device_id},https://api.ngc.nvidia.com,catalog,gpus,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/gpus/pci-device-id/{pci_device_id},createGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,camel,y,object{createdAt;cudaMajorVersion;cudaMinorVersion;displayName;formFactor;gpuCounts;...},,,,/v2/gpus/pci-device-id/{pci_device_id},https://api.ngc.nvidia.com,catalog,gpus,create,insert,,"publisher-privileged write, mapped as documented" +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/gpus/pci-device-id/{pci_device_id},updateGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,camel,y,object{createdAt;cudaMajorVersion;cudaMinorVersion;displayName;formFactor;gpuCounts;...},,,,/v2/gpus/pci-device-id/{pci_device_id},https://api.ngc.nvidia.com,catalog,gpus,update,update,,publisher-privileged write +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/gpus/pci-device-id/{pci_device_id},deleteGpuByPciDeviceId,GpuByPci,n,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/gpus/pci-device-id/{pci_device_id},https://api.ngc.nvidia.com,catalog,gpus,delete,delete,,publisher-privileged write +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id},getGpuByPciDeviceIdVendorId,GpuByPci,n,n,n,ssa,,,camel,n,array,,,,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id},https://api.ngc.nvidia.com,catalog,gpus,get_by_vendor,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},getGpuByPciDeviceIdVendorIdSubsystemDeviceId,GpuByPci,n,n,n,ssa,,,camel,n,object{createdAt;cudaMajorVersion;cudaMinorVersion;displayName;formFactor;gpuCounts;...},,,,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},https://api.ngc.nvidia.com,catalog,gpus,get_by_vendor_subsystem,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},createGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,camel,y,object{createdAt;cudaMajorVersion;cudaMinorVersion;displayName;formFactor;gpuCounts;...},,,,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},https://api.ngc.nvidia.com,catalog,gpus,create_by_vendor_subsystem,insert,,"publisher-privileged write, mapped as documented" +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},updateGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,camel,y,object{createdAt;cudaMajorVersion;cudaMinorVersion;displayName;formFactor;gpuCounts;...},,,,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},https://api.ngc.nvidia.com,catalog,gpus,update_by_vendor_subsystem,update,,publisher-privileged write +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},deleteGpuByPciFullKey,GpuByPci,n,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id},https://api.ngc.nvidia.com,catalog,gpus,delete_by_vendor_subsystem,delete,,publisher-privileged write +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/helm-charts/{org_name}/{artifact_name}/versions,listHelmChartVersionsInOrgAsGuest,Helm Charts,y,n,n,none-declared,,page-size+page-number,kebab,n,object{artifact;artifactVersions;paginationInfo;requestStatus},$.artifactVersions,,,/v2/helm-charts/{org_name}/{artifact_name}/versions,https://api.ngc.nvidia.com,catalog,helm_chart_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id},getHelmChartVersionInOrgAsGuest,Helm Charts,y,n,n,none-declared,,,camel,n,object{artifact;artifactVersion;requestStatus},$.artifactVersion,,,/v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,helm_chart_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions,listHelmChartVersionsInTeamAsGuest,Helm Charts,y,y,n,none-declared,,page-size+page-number,kebab,n,object{artifact;artifactVersions;paginationInfo;requestStatus},$.artifactVersions,,,/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions,https://api.ngc.nvidia.com,catalog,helm_chart_versions,list_by_team,select,,team-scoped twin of /v2/helm-charts/{org_name}/{artifact_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions/{version_id},getHelmChartVersionInTeamAsGuest,Helm Charts,y,y,n,none-declared,,,camel,n,object{artifact;artifactVersion;requestStatus},$.artifactVersion,,,/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,helm_chart_versions,get_by_team,select,,team-scoped twin of /v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/malware-scan-notification,notifyScanResult,MalwareScan,n,n,n,ssa,,,camel,y,object{status},,,,/v2/malware-scan-notification,https://api.ngc.nvidia.com,,,,,inbound-webhook-not-client-api, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models,listPublicModels,Models,n,n,n,none-declared,y,page-size+page-number,kebab,n,object{models;paginationInfo;requestStatus},$.models,,,/v2/models,https://api.ngc.nvidia.com,catalog,models,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{model_name},getModelInOrgAsGuest,Models,y,n,n,none-declared,y,,kebab,n,object{model;requestStatus},$.model,,,/v2/models/{org_name}/{model_name},https://api.ngc.nvidia.com,catalog,models,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{model_name}/versions,listModelVersionsInOrgAsGuest,Model Version,y,n,n,none-declared,y,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,,/v2/models/{org_name}/{model_name}/versions,https://api.ngc.nvidia.com,catalog,model_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{model_name}/versions/{version_id},getModelVersionInOrgAsGuest,Model Version,y,n,n,none-declared,,,camel,n,object{model;modelVersion;requestStatus},$.modelVersion,,,/v2/models/{org_name}/{model_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,model_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{model_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_2,Model Version Files,y,n,n,none-declared,,page-size+page-number,kebab,n,object{model;modelFiles;modelVersion;paginationInfo;requestStatus},$.modelFiles,,,/v2/models/{org_name}/{model_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,model_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{team_name}/{model_name},getModelInTeamAsGuest,Models,y,y,n,none-declared,,,kebab,n,object{model;requestStatus},$.model,,,/v2/models/{org_name}/{team_name}/{model_name},https://api.ngc.nvidia.com,catalog,models,get_by_team,select,,team-scoped twin of /v2/models/{org_name}/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{team_name}/{model_name}/versions,listModelVersionsInTeamAsGuest,Model Version,y,y,n,none-declared,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,,/v2/models/{org_name}/{team_name}/{model_name}/versions,https://api.ngc.nvidia.com,catalog,model_versions,list_by_team,select,,team-scoped twin of /v2/models/{org_name}/{model_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id},getModelVersionInTeamAsGuest,Model Version,y,y,n,none-declared,,,camel,n,object{model;modelVersion;requestStatus},$.modelVersion,,,/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,model_versions,get_by_team,select,,team-scoped twin of /v2/models/{org_name}/{model_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}/files,listModeFilesInTeamAsGuest_2,Model Version Files,y,y,n,none-declared,,page-size+page-number,kebab,n,object{model;modelFiles;modelVersion;paginationInfo;requestStatus},$.modelFiles,,,/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,model_files,list_by_team,select,,team-scoped twin of /v2/models/{org_name}/{model_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/nim/{team}/{nim_name}/{tag}/metadata,createNimMetadata,NIM Metadata,n,n,n,ssa,,,camel,y,object{profiles},$.profiles,,,/v2/nim/{team}/{nim_name}/{tag}/metadata,https://api.ngc.nvidia.com,catalog,nim_metadata,create,insert,,"publisher-privileged write, mapped as documented" +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/collections,listCollectionsInOrg,Collections,y,n,n,ssa,,page-size+page-number,kebab,n,object{collections;paginationInfo;requestStatus},$.collections,,/v2/org/{org_name},/collections,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/collections,createCollectionInOrg,Collections,y,n,n,ssa,,,camel,y,object{collection;requestStatus},$.collection,,/v2/org/{org_name},/collections,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/collections/{collection_name},getCollectionInOrg,Collections,y,n,n,ssa,,,kebab,n,object{collection;requestStatus},$.collection,,/v2/org/{org_name},/collections/{collection_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/collections/{collection_name},updateCollectionInOrg,Collections,y,n,n,ssa,,,camel,y,object{collection;requestStatus},$.collection,,/v2/org/{org_name},/collections/{collection_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/collections/{collection_name},deleteCollectionInOrg,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/collections/{collection_name}/artifacts,patchCollectionInOrg,Collections,y,n,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/artifacts,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,update_bulk,update,,bulk membership update +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrgFromAnotherOrgAndTeam,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,add_cross_org_team,insert,,grants-as-data membership +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,remove_cross_org_team,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,add_cross_org,insert,,grants-as-data membership +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrgFromAnotherOrg,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,remove_cross_org,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/collections/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInOrg,Collections,y,n,n,ssa,,page-size+page-number,kebab,n,object{artifacts;paginationInfo;requestStatus},$.artifacts,,/v2/org/{org_name},/collections/{collection_name}/artifacts/{artifact_type},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/collections/{collection_name}/share,publishCollection_1,Publish,y,n,y,ssa,,,kebab,n,object{requestStatus},,,,/v2/org/{org_name}/collections/{collection_name}/share,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/collections/{collection_name}/share,undoPublishCollection_1,Publish,y,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/collections/{collection_name}/share,https://api.ngc.nvidia.com,,,,,legacy-twin (PUT counterpart deprecated inline; superseded by /shares/org), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/collections/{collection_name}/share/product,publishCollectionFromRequest,Publish,y,n,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/share/product,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_product_shares,add,insert,,grants-as-data +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/collections/{collection_name}/shares/org,shareCollectionInOrgWithOrg,Collections,y,n,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/collections/{collection_name}/shares/org,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/collections/{collection_name}/shares/org,revokeShareCollectionInOrgWithOrg,Collections,y,n,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/collections/{collection_name}/shares/org,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/collections/{collection_name}/shares/team/{target_team},shareCollectionInOrgWithTeam,Collections,y,n,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/collections/{collection_name}/shares/team/{target_team},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/collections/{collection_name}/shares/team/{target_team},revokeShareCollectionInOrgWithTeam,Collections,y,n,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/collections/{collection_name}/shares/team/{target_team},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInOrg,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,add,insert,,grants-as-data membership +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInOrg,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/collections/{collection_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,remove,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/files/commit,commitArtifactFiles,ArtifactChecksum,y,n,n,ssa,,,kebab,y,object{requestStatus},,,,/v2/org/{org_name}/files/commit,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/helm-charts/{artifact_name}/versions,listHelmChartVersionsInOrg,Helm Charts,y,n,n,ssa,,page-size+page-number,kebab,n,object{artifact;artifactVersions;paginationInfo;requestStatus},$.artifactVersions,,/v2/org/{org_name},/helm-charts/{artifact_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,helm_chart_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id},getHelmChartVersionInOrg,Helm Charts,y,n,n,ssa,,,camel,n,object{artifact;artifactVersion;requestStatus},$.artifactVersion,,/v2/org/{org_name},/helm-charts/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,helm_chart_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id},updateHelmChartVersionInOrg,Helm Charts,y,n,n,ssa,,,camel,y,object{artifact;artifactVersion;requestStatus},$.artifactVersion,,/v2/org/{org_name},/helm-charts/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,helm_chart_versions,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models,listModelsInOrg,Models,y,n,n,ssa,,page-size+page-number,kebab,n,object{models;paginationInfo;requestStatus},$.models,,/v2/org/{org_name},/models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/models,createModelInOrg,Models,y,n,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInOrg,Model Version,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{artifact_name}/versions/{version_id}/stash,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,stash,exec,,action on a version +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models/{model_name},getModelInOrg,Models,y,n,n,ssa,,,kebab,n,object{model;requestStatus},$.model,,/v2/org/{org_name},/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/models/{model_name},updateModelInOrg,Models,y,n,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/org/{org_name},/models/{model_name}/encryption-key,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_encryption_keys,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/models/{model_name}/shares/org,shareModelInOrgWithOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_org,insert,,grants-as-data +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_org,delete,,grants-as-data +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/models/{model_name}/shares/team/{target_team},shareModelInOrgWithTeam,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_team,insert,,grants-as-data +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInOrgWithTeam,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_team,delete,,grants-as-data +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models/{model_name}/versions,listModelVersionsInOrg,Model Version,y,n,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/models/{model_name}/versions,createModelVersionInOrg,Model Version,y,n,n,ssa,,,camel,y,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models/{model_name}/versions/{version_id},getModelVersionInOrg,Model Version,y,n,n,ssa,,,camel,n,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/models/{model_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/models/{model_name}/versions/{version_id},updateModelVersionInOrg,Model Version,y,n,n,ssa,,,kebab,y,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/models/{model_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models/{model_name}/versions/{version_id}/files,listModeFilesInOrg,Model Version Files,y,n,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{model;modelFiles;modelVersion;paginationInfo;requestStatus},$.modelFiles,,/v2/org/{org_name},/models/{model_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/recipes,listRecipesInOrg,Resources,y,n,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipes;requestStatus},$.recipes,,/v2/org/{org_name},/recipes,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/recipes,createRecipeInOrg,Resources,y,n,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/recipes,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/recipes/{recipe_name},getRecipeInOrg,Resources,y,n,n,ssa,,,kebab,n,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/recipes/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/recipes/{recipe_name},updateRecipeInOrg,Resources,y,n,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/recipes/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/recipes/{recipe_name}/versions,listRecipeVersionsInOrg,Resource Versions,y,n,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,/v2/org/{org_name},/recipes/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/recipes/{recipe_name}/versions,createRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,camel,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/recipes/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id},getRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/recipes/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg,Resource Versions,y,n,n,ssa,,,kebab,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/recipes/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg,Resource Version Files endpoints,y,n,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,/v2/org/{org_name},/recipes/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/repositories/{container_name}/associated-models,listModelVersionsAssociatedByContainer,Model Version,y,n,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/repositories/{container_name}/associated-models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,repository_associated_models,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models,listModelVersionsAssociatedByContainer_2,Model Version,y,n,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/repositories/{container_name}/tags/{container_tag}/associated-models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,repository_associated_models,list_by_tag,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources,listRecipesInOrg_1,Resources,y,n,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipes;requestStatus},$.recipes,,/v2/org/{org_name},/resources,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/resources,createRecipeInOrg_1,Resources,y,n,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/resources,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources/{recipe_name},getRecipeInOrg_1,Resources,y,n,n,ssa,,,kebab,n,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/resources/{recipe_name},updateRecipeInOrg_1,Resources,y,n,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources/{recipe_name}/versions,listRecipeVersionsInOrg_1,Resource Versions,y,n,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,/v2/org/{org_name},/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/resources/{recipe_name}/versions,createRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,camel,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/resources/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id},updateRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,kebab,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/resources/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files,listRecipeFilesInOrg_1,Resource Version Files endpoints,y,n,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,/v2/org/{org_name},/resources/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/collections,listCollectionsInTeam,Collections,y,y,n,ssa,,page-size+page-number,kebab,n,object{collections;paginationInfo;requestStatus},$.collections,,/v2/org/{org_name},/team/{team_name}/collections,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/collections (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/collections,createCollectionInTeam,Collections,y,y,n,ssa,,,camel,y,object{collection;requestStatus},$.collection,,/v2/org/{org_name},/team/{team_name}/collections,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/collections (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/collections/{collection_name},getCollectionInTeam,Collections,y,y,n,ssa,,,kebab,n,object{collection;requestStatus},$.collection,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/collections/{collection_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/collections/{collection_name},updateCollectionInTeam,Collections,y,y,n,ssa,,,camel,y,object{collection;requestStatus},$.collection,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/collections/{collection_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/collections/{collection_name},deleteCollectionInTeam,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collections,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/collections/{collection_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts,patchCollectionInTeam,Collections,y,y,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/artifacts,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,update_bulk_by_team,update,,bulk membership update; team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/artifacts (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInTeamFromAnotherOrgAndTeam,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,add_cross_org_team_by_team,insert,,grants-as-data membership; team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,remove_cross_org_team_by_team,delete,,team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInTeamFromAnotherOrg,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,add_cross_org_by_team,insert,,grants-as-data membership; team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInTeamFromAnotherOrg,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,remove_cross_org_by_team,delete,,team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/{artifact_type},listCollectionArtifactsInTeam,Collections,y,y,n,ssa,,page-size+page-number,kebab,n,object{artifacts;paginationInfo;requestStatus},$.artifacts,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/artifacts/{artifact_type},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/artifacts/{artifact_type} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share,publishCollection,Publish,y,y,n,ssa,,,kebab,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share,https://api.ngc.nvidia.com,,,,,legacy-twin (superseded by /shares/org), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share,undoPublishCollection,Publish,y,y,n,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share,https://api.ngc.nvidia.com,,,,,legacy-twin (PUT counterpart deprecated inline; superseded by /shares/org), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share/product,publishCollectionFromRequest_1,Publish,y,y,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/share/product,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_product_shares,add_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/share/product (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/org,shareCollectionInTeamWithOrg,Collections,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/org,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/org,revokeShareCollectionInTeamWithOrg,Collections,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/org,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/team/{target_team},shareCollectionInTeamWithTeam,Collections,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/team/{target_team},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/team/{target_team},revokeShareCollectionInTeamWithTeam,Collections,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/team/{target_team},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name},addArtifactToCollectionInTeam,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,add_by_team,insert,,grants-as-data membership; team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name},removeArtifactFromCollectionInTeam,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,collection_artifacts,remove_by_team,delete,,team-scoped twin of /v2/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/files/commit,commitArtifactFiles_1,ArtifactChecksum,y,y,n,ssa,,,kebab,y,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/files/commit,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions,listHelmChartVersionsInTeam,Helm Charts,y,y,n,ssa,,page-size+page-number,kebab,n,object{artifact;artifactVersions;paginationInfo;requestStatus},$.artifactVersions,,/v2/org/{org_name},/team/{team_name}/helm-charts/{artifact_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,helm_chart_versions,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/helm-charts/{artifact_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id},getHelmChartVersionInTeam,Helm Charts,y,y,n,ssa,,,camel,n,object{artifact;artifactVersion;requestStatus},$.artifactVersion,,/v2/org/{org_name},/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,helm_chart_versions,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id},updateHelmChartVersionInTeam,Helm Charts,y,y,n,ssa,,,camel,y,object{artifact;artifactVersion;requestStatus},$.artifactVersion,,/v2/org/{org_name},/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,helm_chart_versions,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models,listModelsInTeam,Models,y,y,n,ssa,,page-size+page-number,kebab,n,object{models;paginationInfo;requestStatus},$.models,,/v2/org/{org_name},/team/{team_name}/models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/models (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/models,createModelInTeam,Models,y,y,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/team/{team_name}/models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/models (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInTeam,Model Version,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,stash_by_team,exec,,action on a version; team-scoped twin of /v2/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models/{model_name},getModelInTeam,Models,y,y,n,ssa,,,kebab,n,object{model;requestStatus},$.model,,/v2/org/{org_name},/team/{team_name}/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/models/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/models/{model_name},updateModelInTeam,Models,y,y,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/team/{team_name}/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/models/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInTeam,Models,y,y,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/encryption-key,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_encryption_keys,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/encryption-key (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org,shareModelInTeamWithOrg,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_org_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/org (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org,revokeShareModelInTeamWithOrg,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_org_by_team,delete,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/org (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/team/{target_team},shareModelInTeamWithTeam,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_team_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/team/{target_team} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInTeamWithTeam,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_team_by_team,delete,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/team/{target_team} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions,listModelVersionsInTeam,Model Version,y,y,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions,createModelVersionInTeam,Model Version,y,y,n,ssa,,,camel,y,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id},getModelVersionInTeam,Model Version,y,y,n,ssa,,,camel,n,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id},updateModelVersionInTeam,Model Version,y,y,n,ssa,,,kebab,y,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}/apps/{app_name},updateModelAppAssociation,Apps,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}/apps/{app_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}/apps/{app_name},deleteModelAppAssociation,Apps,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}/apps/{app_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}/files,listModeFilesInTeam,Model Version Files,y,y,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{model;modelFiles;modelVersion;paginationInfo;requestStatus},$.modelFiles,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_files,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/recipes,listRecipesInTeam,Resources,y,y,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipes;requestStatus},$.recipes,,/v2/org/{org_name},/team/{team_name}/recipes,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/recipes (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/recipes,createRecipeInTeam,Resources,y,y,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/recipes,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/recipes (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name},getRecipeInTeam,Resources,y,y,n,ssa,,,kebab,n,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/recipes/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/recipes/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name},updateRecipeInTeam,Resources,y,y,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/recipes/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipes,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/recipes/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions,listRecipeVersionsInTeam,Resource Versions,y,y,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,/v2/org/{org_name},/team/{team_name}/recipes/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/recipes/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions,createRecipeVersionInTeam,Resource Versions,y,y,n,ssa,,,camel,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/recipes/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/recipes/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions/{version_id},getRecipeVersionInTeam,Resource Versions,y,y,n,ssa,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/recipes/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions/{version_id},updateRecipeVersionInTeam,Resource Versions,y,y,n,ssa,,,kebab,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/recipes/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_versions,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions/{version_id}/files,listRecipeFilesInTeam,Resource Version Files endpoints,y,y,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,/v2/org/{org_name},/team/{team_name}/recipes/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,recipe_files,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/repositories/{container_name}/associated-models,listModelVersionsAssociatedByContainer_1,Model Version,y,y,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/team/{team_name}/repositories/{container_name}/associated-models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,repository_associated_models,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/repositories/{container_name}/associated-models (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/repositories/{container_name}/tags/{container_tag}/associated-models,listModelVersionsAssociatedByContainer_3,Model Version,y,y,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/team/{team_name}/repositories/{container_name}/tags/{container_tag}/associated-models,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,repository_associated_models,list_by_tag_by_team,select,,team-scoped twin of /v2/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources,listRecipesInTeam_1,Resources,y,y,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipes;requestStatus},$.recipes,,/v2/org/{org_name},/team/{team_name}/resources,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/resources,createRecipeInTeam_1,Resources,y,y,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/resources,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/resources (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name},getRecipeInTeam_1,Resources,y,y,n,ssa,,,kebab,n,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name},updateRecipeInTeam_1,Resources,y,y,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions,listRecipeVersionsInTeam_1,Resource Versions,y,y,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions,createRecipeVersionInTeam_1,Resource Versions,y,y,n,ssa,,,camel,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInTeam_1,Resource Versions,y,y,n,ssa,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions/{version_id},updateRecipeVersionInTeam_1,Resource Versions,y,y,n,ssa,,,kebab,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions/{version_id}/files,listRecipeFilesInTeam_1,Resource Version Files endpoints,y,y,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_files,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type},listArtifactsInTeam,Artifacts,y,y,n,ssa,,page-size+page-number,kebab,n,object{artifacts;paginationInfo;requestStatus},$.artifacts,,/v2/org/{org_name},/team/{team_name}/{artifact_type},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type},createArtifactInTeam,Artifacts,y,y,n,ssa,,,camel,y,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/team/{team_name}/{artifact_type},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/{artifact_type} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name},getArtifactInTeam,Artifacts,y,y,n,ssa,,,kebab,n,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name},replaceArtifactInTeam,Artifacts,y,y,n,ssa,,,camel,y,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,replace_by_team,replace,,"PUT with a PATCH twin - proposed replace, semantics unverified (keycloak rule); team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule)" +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name},updateArtifactInTeam,Artifacts,y,y,n,ssa,,,camel,y,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name},deleteArtifactInTeam,Artifacts,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/catalog/flags,getPublicFlagsInTeam,Publish,y,y,n,ssa,,,camel,n,object{canGuestDownload;isListedToPublic;isPublic},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/catalog/flags,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_catalog_flags,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/catalog/flags (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/collections,listArtifactCollectionsInTeam,Collections,y,y,n,ssa,,page-size+page-number,kebab,n,object{collections;paginationInfo;requestStatus},$.collections,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/collections,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_collections,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/collections (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact_1,Collections,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,sync_release_type_labels_by_team,exec,,action; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/params,listArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,n,ssa,,,kebab,n,object{artifact;csp;deploymentParameters;paginationInfo;requestStatus},$.deploymentParameters,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/deployments/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/params (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/parameters,createArtifactDeploymentParametersInTeam_1,Artifact deployment parameters,y,y,n,ssa,,,kebab,y,object{container;cpu;csp;gpu;memory;model;...},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/parameters,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operation as /deployments/{csp_name}/params), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,getArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,n,ssa,,,kebab,n,object{container;cpu;csp;gpu;memory;model;...},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,createArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,n,ssa,,,kebab,y,object{container;cpu;csp;gpu;memory;model;...},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,updateArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,n,ssa,,,kebab,y,object{container;cpu;csp;gpu;memory;model;...},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,deleteArtifactDeploymentParametersInTeam,Artifact deployment parameters,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/files,checkArtifactFilesExistByChecksum_1,ArtifactChecksum,y,y,n,ssa,,page-size+page-number,kebab,y,object{files;paginationInfo;requestStatus},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/files,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance,getOrgArtifactLicenseAcceptance_1,Publish,y,y,n,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance,https://api.ngc.nvidia.com,,,,,non-projectable-response (requestStatus-only envelope), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance,acceptArtifactLicense_1,Publish,y,y,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,license_acceptances,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/release-type,updateReleaseLabel_1,Publish,y,y,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/release-type,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,set_release_type_by_team,exec,,single-field action endpoint; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/release-type (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/share,publishArtifact_1,Publish,y,y,n,ssa,,,kebab,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/share,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_shares,add_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/share (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/share,undoPublishArtifact_1,Publish,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/share,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_shares,remove_by_team,delete,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/share (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/share/product,publishArtifactFromRequest_1,Publish,y,y,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/share/product,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_product_shares,add_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/share/product (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/share/product,undoPublishProduct_1,Publish,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/share/product,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_product_shares,remove_by_team,delete,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/share/product (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/terms-of-service,updateTermsOfService_1,Publish,y,y,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/terms-of-service,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,set_terms_of_service_by_team,exec,,single-field action endpoint; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/terms-of-service (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id},deleteArtifactVersionInTeam,Artifact Versions,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_versions,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs,updateTagLevelPublishConfigs_1,Publish,y,y,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_version_configs,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createArtifactDeploymentUrlInTeam,Artifact deployment parameters,y,y,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployments,create_by_team,insert,,launches a CSP deployment; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInTeam,Artifact Version Files,y,y,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{artifact;artifactFiles;artifactVersion;paginationInfo;requestStatus},$.artifactFiles,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_files,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,downloadArtifactFileInTeam,Artifact Version Files,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,deleteArtifactFileInTeam,Artifact Version Files,y,y,n,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},createArtifactVersionFileDeploymentUrlInTeam,Artifact deployment parameters,y,y,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/zip/download,downloadArtifactFileInTeamAsZip,Artifact Version Files,y,y,y,ssa,,,camel,n,object,,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/zip/download,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignature_1,ArtifactSigning,y,y,n,none-declared,,,camel,n,object,,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,https://api.ngc.nvidia.com,,,,,non-json-response (signature bytes / redirect), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,signArtifactVersion_1,ArtifactSigning,y,y,n,ssa,,,camel,n,object{filepath;requestStatus;url},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_signatures,set_by_team,exec,,write of a computed signature - action; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/zip,downloadAllFilesInTeam,Artifact Version Files,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/zip,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type},listArtifactsInOrg,Artifacts,y,n,n,ssa,,page-size+page-number,kebab,n,object{artifacts;paginationInfo;requestStatus},$.artifacts,,/v2/org/{org_name},/{artifact_type},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type},createArtifactInOrg,Artifacts,y,n,n,ssa,,,camel,y,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/{artifact_type},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name},getArtifactInOrg,Artifacts,y,n,n,ssa,,,kebab,n,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/{artifact_name},replaceArtifactInOrg,Artifacts,y,n,n,ssa,,,camel,y,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,replace,replace,,"PUT with a PATCH twin - proposed replace, semantics unverified (keycloak rule)" +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/{artifact_type}/{artifact_name},updateArtifactInOrg,Artifacts,y,n,n,ssa,,,camel,y,object{artifact;requestStatus},$.artifact,,/v2/org/{org_name},/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name},deleteArtifactInOrg,Artifacts,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/catalog/flags,getPublicFlagsInOrg,Publish,y,n,n,ssa,,,camel,n,object{canGuestDownload;isListedToPublic;isPublic},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/catalog/flags,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_catalog_flags,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/collections,listArtifactCollectionsInOrg,Collections,y,n,n,ssa,,page-size+page-number,kebab,n,object{collections;paginationInfo;requestStatus},$.collections,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/collections,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_collections,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,syncCollectionReleaseTypeLabelsForArtifact,Collections,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/collections/sync-release-type-labels,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,sync_release_type_labels,exec,,action +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/params,listArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,kebab,n,object{artifact;csp;deploymentParameters;paginationInfo;requestStatus},$.deploymentParameters,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/deployments/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,getArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,kebab,n,object{container;cpu;csp;gpu;memory;model;...},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,createArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,kebab,y,object{container;cpu;csp;gpu;memory;model;...},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,updateArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,kebab,y,object{container;cpu;csp;gpu;memory;model;...},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,deleteArtifactDeploymentParametersInOrg,Artifact deployment parameters,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/deployments/{csp_name}/params,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployment_params,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/{artifact_name}/files,checkArtifactFilesExistByChecksum,ArtifactChecksum,y,n,n,ssa,,page-size+page-number,kebab,y,object{files;paginationInfo;requestStatus},,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/files,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance,getOrgArtifactLicenseAcceptance,Publish,y,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance,https://api.ngc.nvidia.com,,,,,non-projectable-response (requestStatus-only envelope), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance,acceptArtifactLicense,Publish,y,n,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/license/acceptance,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,license_acceptances,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/{artifact_name}/release-type,updateReleaseLabel,Publish,y,n,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/release-type,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,set_release_type,exec,,single-field action endpoint +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/{artifact_name}/share,publishArtifact,Publish,y,n,n,ssa,,,kebab,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/share,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_shares,add,insert,,grants-as-data +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name}/share,undoPublishArtifact,Publish,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/share,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_shares,remove,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/{artifact_name}/share/product,publishArtifactFromRequest,Publish,y,n,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/share/product,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_product_shares,add,insert,,grants-as-data +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name}/share/product,undoPublishProduct,Publish,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/share/product,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_product_shares,remove,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/{artifact_name}/terms-of-service,updateTermsOfService,Publish,y,n,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/terms-of-service,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,set_terms_of_service,exec,,single-field action endpoint +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id},deleteArtifactVersionInOrg,Artifact Versions,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_versions,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs,updateTagLevelPublishConfigs,Publish,y,n,n,ssa,,,camel,y,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/versions/{version_id}/configs,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_version_configs,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},createArtifactDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_deployments,create,insert,,launches a CSP deployment +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrg,Artifact Version Files,y,n,n,ssa+ssa+ssa,,page-size+page-number,kebab,n,object{artifact;artifactFiles;artifactVersion;paginationInfo;requestStatus},$.artifactFiles,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/versions/{version_id}/files,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,downloadArtifactFileInOrg,Artifact Version Files,y,n,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,deleteArtifactFileInOrg,Artifact Version Files,y,n,n,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},createArtifactVerionFileDeploymentUrlInOrg,Artifact deployment parameters,y,n,n,ssa,,,camel,y,object{csp;deploymentParameters;deploymentUrl;requestStatus},,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name},https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/*/zip/download,downloadArtifactFileInOrgAsZip,Artifact Version Files,y,n,y,ssa,,,camel,n,object,,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/*/zip/download,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignature,ArtifactSigning,y,n,n,none-declared,,,camel,n,object,,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,https://api.ngc.nvidia.com,,,,,non-json-response (signature bytes / redirect), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature,signArtifactVersion,ArtifactSigning,y,n,n,ssa,,,camel,n,object{filepath;requestStatus;url},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/versions/{version_id}/signature,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_signatures,set,exec,,write of a computed signature - action +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/zip,downloadAllFilesInOrg,Artifact Version Files,y,n,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/zip,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,initiateMalwareScan_1,MalwareScan,y,y,n,ssa,,,kebab,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,malware_scan_by_team,exec,,action; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground,createModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground/{artifact_name},getModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground/{artifact_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground/{artifact_name},updateModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground/{artifact_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground/{artifact_name},deleteModelAIPlayground_1,AIPlayground,y,y,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground/{artifact_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/{artifact_type}/spec,createModelArtifactsSpec_1,AIPlayground,y,y,n,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/spec (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/purge,purgeDeletedArtifact_1,Artifacts,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/purge,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,purge_by_team,exec,,kept off DELETE: same path-param signature as artifacts.delete; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/purge (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/spec,getModelArtifactsSpec_1,AIPlayground,y,y,n,ssa,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/spec (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/spec,updateModelArtifactsSpec_1,AIPlayground,y,y,n,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,update_by_team,update,,PUT semantics unverified; team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/spec (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/spec,deleteModelArtifactsSpec_1,AIPlayground,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/{artifact_type}/{artifact_name}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/{artifact_type}/{artifact_name}/spec (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,initiateMalwareScan,MalwareScan,y,n,n,ssa,,,kebab,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,malware_scan,exec,,action +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/playground,createModelAIPlayground,AIPlayground,y,n,y,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/org/{org_name}/{artifact_type}/playground,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/playground/{artifact_name},getModelAIPlayground,AIPlayground,y,n,y,ssa,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/org/{org_name}/{artifact_type}/playground/{artifact_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/playground/{artifact_name},updateModelAIPlayground,AIPlayground,y,n,y,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/org/{org_name}/{artifact_type}/playground/{artifact_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/playground/{artifact_name},deleteModelAIPlayground,AIPlayground,y,n,y,ssa,,,camel,n,object{requestStatus},,,,/v2/org/{org_name}/{artifact_type}/playground/{artifact_name},https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/{artifact_type}/spec,createModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,/v2/org/{org_name},/{artifact_type}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,create,insert,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name}/purge,purgeDeletedArtifact,Artifacts,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/purge,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifacts,purge,exec,,kept off DELETE: same path-param signature as artifacts.delete +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/{artifact_type}/{artifact_name}/spec,getModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/{artifact_type}/{artifact_name}/spec,updateModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,camel,y,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,update,update,,PUT semantics unverified +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/{artifact_type}/{artifact_name}/spec,deleteModelArtifactsSpec,AIPlayground,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/{artifact_type}/{artifact_name}/spec,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,artifact_specs,delete,delete,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/files/clone,cloneArtifactVersionFiles,Artifact File,y,n,n,ssa,,,camel,y,object{requestStatus},,,,/v2/org/{org}/files/clone,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/files/clone/status,cloneArtifactVersionFilesStatus,Artifact File,y,n,n,ssa,,,camel,y,object{filesCopied;percentageCloned;sizeCopied;totalFiles;totalSize},,,,/v2/org/{org}/files/clone/status,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org}/files/multipart,fileUpload,Artifact File,y,n,n,ssa,,,camel,y,object{paginationInfo;partSize;requestStatus;uploadID;urls},,,,/v2/org/{org}/files/multipart,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/files/multipart,completeFileUpload,Artifact File,y,n,n,ssa,,,camel,y,object{requestStatus},,,,/v2/org/{org}/files/multipart,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org}/files/multipart,abortFileUpload,Artifact File,y,n,n,ssa,,,camel,y,object{requestStatus},,,,/v2/org/{org}/files/multipart,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/team/{team}/files/clone,cloneArtifactVersionFiles_1,Artifact File,y,y,n,ssa,,,camel,y,object{requestStatus},,,,/v2/org/{org}/team/{team}/files/clone,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/team/{team}/files/clone/status,cloneArtifactVersionFilesStatus_1,Artifact File,y,y,n,ssa,,,camel,y,object{filesCopied;percentageCloned;sizeCopied;totalFiles;totalSize},,,,/v2/org/{org}/team/{team}/files/clone/status,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org}/team/{team}/files/multipart,fileUpload_1,Artifact File,y,y,n,ssa,,,camel,y,object{paginationInfo;partSize;requestStatus;uploadID;urls},,,,/v2/org/{org}/team/{team}/files/multipart,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/team/{team}/files/multipart,completeFileUpload_1,Artifact File,y,y,n,ssa,,,camel,y,object{requestStatus},,,,/v2/org/{org}/team/{team}/files/multipart,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org}/team/{team}/files/multipart,abortFileUpload_1,Artifact File,y,y,n,ssa,,,camel,y,object{requestStatus},,,,/v2/org/{org}/team/{team}/files/multipart,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync_1,Artifact File,y,y,n,ssa,,,camel,y,object{requestStatus;statusUrl;workflowId},,,,/v2/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org}/team/{team}/{type}/{name}/{version}/files,downloadAllArtifactFiles_1,Artifact File,y,y,n,ssa,,page-size+page-number,kebab,n,object{filepath;paginationInfo;requestStatus;sha256_base64;urls},,,,/v2/org/{org}/team/{team}/{type}/{name}/{version}/files,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same listing as /versions/{version_id}/files), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org}/{type}/{name}/versions/{version}/async-clone,cloneArtifactVersionFilesAsync,Artifact File,y,n,n,ssa,,,camel,y,object{requestStatus;statusUrl;workflowId},,,,/v2/org/{org}/{type}/{name}/versions/{version}/async-clone,https://api.ngc.nvidia.com,,,,,data-plane-file-transfer, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org}/{type}/{name}/{version}/files,downloadAllArtifactFiles,Artifact File,y,n,n,ssa,,page-size+page-number,kebab,n,object{filepath;paginationInfo;requestStatus;sha256_base64;urls},,,,/v2/org/{org}/{type}/{name}/{version}/files,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same listing as /versions/{version_id}/files), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes,listPublicRecipes,Resources,n,n,n,none-declared,y,page-size+page-number,kebab,n,object{paginationInfo;recipes;requestStatus},$.recipes,,,/v2/recipes,https://api.ngc.nvidia.com,catalog,recipes,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{recipe_name},getRecipeInOrgAsGuest,Resources,y,n,n,none-declared,,,kebab,n,object{recipe;requestStatus},$.recipe,,,/v2/recipes/{org_name}/{recipe_name},https://api.ngc.nvidia.com,catalog,recipes,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest,Resource Versions,y,n,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,,/v2/recipes/{org_name}/{recipe_name}/versions,https://api.ngc.nvidia.com,catalog,recipe_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest,Resource Versions,y,n,n,none-declared,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,,/v2/recipes/{org_name}/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,recipe_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest,Resource Version Files endpoints,y,n,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,,/v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,recipe_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{team_name}/{recipe_name},getRecipeInTeamAsGuest,Resources,y,y,n,none-declared,,,kebab,n,object{recipe;requestStatus},$.recipe,,,/v2/recipes/{org_name}/{team_name}/{recipe_name},https://api.ngc.nvidia.com,catalog,recipes,get_by_team,select,,team-scoped twin of /v2/recipes/{org_name}/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions,listRecipeVersionsInTeamAsGuest,Resource Versions,y,y,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions,https://api.ngc.nvidia.com,catalog,recipe_versions,list_by_team,select,,team-scoped twin of /v2/recipes/{org_name}/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id},getRecipeVersionInTeamAsGuest,Resource Versions,y,y,n,none-declared,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,recipe_versions,get_by_team,select,,team-scoped twin of /v2/recipes/{org_name}/{recipe_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInTeamAsGuest,Resource Version Files endpoints,y,y,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,,/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,recipe_files,list_by_team,select,,team-scoped twin of /v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources,listPublicRecipes_1,Resources,n,n,n,none-declared,y,page-size+page-number,kebab,n,object{paginationInfo;recipes;requestStatus},$.recipes,,,/v2/resources,https://api.ngc.nvidia.com,catalog,resources,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{recipe_name},getRecipeInOrgAsGuest_1,Resources,y,n,n,none-declared,,,kebab,n,object{recipe;requestStatus},$.recipe,,,/v2/resources/{org_name}/{recipe_name},https://api.ngc.nvidia.com,catalog,resources,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{recipe_name}/versions,listRecipeVersionsInOrgAsGuest_1,Resource Versions,y,n,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,,/v2/resources/{org_name}/{recipe_name}/versions,https://api.ngc.nvidia.com,catalog,resource_versions,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{recipe_name}/versions/{version_id},getRecipeVersionInOrgAsGuest_1,Resource Versions,y,n,n,none-declared,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,,/v2/resources/{org_name}/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,resource_versions,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInOrgAsGuest_1,Resource Version Files endpoints,y,n,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,,/v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,resource_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{team_name}/{recipe_name},getRecipeInTeamAsGuest_1,Resources,y,y,n,none-declared,,,kebab,n,object{recipe;requestStatus},$.recipe,,,/v2/resources/{org_name}/{team_name}/{recipe_name},https://api.ngc.nvidia.com,catalog,resources,get_by_team,select,,team-scoped twin of /v2/resources/{org_name}/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions,listRecipeVersionsInTeamAsGuest_1,Resource Versions,y,y,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions,https://api.ngc.nvidia.com,catalog,resource_versions,list_by_team,select,,team-scoped twin of /v2/resources/{org_name}/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id},getRecipeVersionInTeamAsGuest_1,Resource Versions,y,y,n,none-declared,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com,catalog,resource_versions,get_by_team,select,,team-scoped twin of /v2/resources/{org_name}/{recipe_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files,listModeFilesInTeamAsGuest_1,Resource Version Files endpoints,y,y,n,none-declared,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeFiles;recipeVersion;requestStatus},$.recipeFiles,,,/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,resource_files,list_by_team,select,,team-scoped twin of /v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type},listPublicArtifacts,Artifacts,n,n,n,none-declared,y,page-size+page-number,kebab,n,object{artifacts;paginationInfo;requestStatus},$.artifacts,,,/v2/{artifact_type},https://api.ngc.nvidia.com,catalog,artifacts,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/collections,listArtifactCollectionsInTeamAsGuest,Collections,y,y,n,none-declared,,page-size+page-number,kebab,n,object{collections;paginationInfo;requestStatus},,,,/v2/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/collections,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operation under /v2/org/{org_name}/{artifact_type}/{artifact_name}/collections), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/org/{org_name}/{artifact_name}/collections,listArtifactCollectionsInOrgAsGuest,Collections,y,n,n,none-declared,,page-size+page-number,kebab,n,object{collections;paginationInfo;requestStatus},,,,/v2/{artifact_type}/org/{org_name}/{artifact_name}/collections,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (same operation under /v2/org/{org_name}/{artifact_type}/{artifact_name}/collections), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name},getArtifactInOrgAsGuest,Artifacts,y,n,n,none-declared,,,kebab,n,object{artifact;requestStatus},$.artifact,,,/v2/{artifact_type}/{org_name}/{artifact_name},https://api.ngc.nvidia.com,catalog,artifacts,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/latest-version/zip,downloadAllFilesOfLatestVersionInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,camel,n,object{requestStatus},,,,/v2/{artifact_type}/{org_name}/{artifact_name}/latest-version/zip,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInOrgAsGuest,Artifact Version Files,y,n,n,none-declared,,page-size+page-number,kebab,n,object{artifact;artifactFiles;artifactVersion;paginationInfo;requestStatus},$.artifactFiles,,,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,artifact_files,list,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files/**,downloadArtifactFileInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,camel,n,object{requestStatus},,,,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files/**,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files/**/zip/download,downloadArtifactFileInOrgAsGuestAsZip,Artifact Version Files,y,n,y,none-declared,,,camel,n,object,,,,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files/**/zip/download,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignatureAsGuest,ArtifactSigning,y,n,n,none-declared,,,camel,n,object,,,,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/signature,https://api.ngc.nvidia.com,,,,,non-json-response (signature bytes / redirect), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/zip,downloadAllFilesInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,camel,n,object{requestStatus},,,,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/zip,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/zip/download,directDownloadAllFilesInOrgAsGuest,Artifact Version Files,y,n,y,none-declared,,,camel,n,object,,,,/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/zip/download,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name},getChartInTeamAsGuest,Artifacts,y,y,n,none-declared,,,kebab,n,object{artifact;requestStatus},$.artifact,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name},https://api.ngc.nvidia.com,catalog,artifacts,get_by_team,select,,team-scoped twin of /v2/{artifact_type}/{org_name}/{artifact_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/latest-version/zip,downloadAllFilesInTeamAsGuest_1,Artifact Version Files,y,y,y,none-declared,,,camel,n,object{requestStatus},,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/latest-version/zip,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files,listArtifactFilesInTeamAsGuest,Artifact Version Files,y,y,n,none-declared,,page-size+page-number,kebab,n,object{artifact;artifactFiles;artifactVersion;paginationInfo;requestStatus},$.artifactFiles,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files,https://api.ngc.nvidia.com,catalog,artifact_files,list_by_team,select,,team-scoped twin of /v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files/**,downloadArtifactFileInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,camel,n,object{requestStatus},,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files/**,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files/**/zip/download,downloadArtifactFileInTeamAsGuestAsZip,Artifact Version Files,y,y,y,none-declared,,,camel,n,object,,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files/**/zip/download,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/signature,getArtifactVersionSignatureAsGuest_1,ArtifactSigning,y,y,n,none-declared,,,camel,n,object,,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/signature,https://api.ngc.nvidia.com,,,,,non-json-response (signature bytes / redirect), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/zip,downloadAllFilesInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,camel,n,object{requestStatus},,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/zip,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/zip/download,directDownloadAllFilesInTeamAsGuest,Artifact Version Files,y,y,y,none-declared,,,camel,n,object,,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/zip/download,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/playground,getPublicModelAIPlayground,AIPlayground,y,n,y,none-declared,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/{artifact_type}/{org_name}/{artifact_name}/playground,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{artifact_name}/spec,getPublicModelArtifactsSpec,AIPlayground,y,n,n,none-declared,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/{artifact_type}/{org_name}/{artifact_name}/spec,https://api.ngc.nvidia.com,catalog,artifact_specs,get,select,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/playground,getPublicModelAIPlayground_1,AIPlayground,y,y,y,none-declared,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/playground,https://api.ngc.nvidia.com,,,,,deprecated-inline, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/spec,getPublicModelArtifactsSpec_1,AIPlayground,y,y,n,none-declared,,,camel,n,object{artifactName;artifactType;attributes;createdDate;namespace;nvcfFunctionId;...},,,,/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/spec,https://api.ngc.nvidia.com,catalog,artifact_specs,get_by_team,select,,team-scoped twin of /v2/{artifact_type}/{org_name}/{artifact_name}/spec (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{type}/org/{org}/team/{team}/{name}/{version}/files,downloadAllArtifactFilesAsGuest_1,Artifact File,y,y,n,none-declared,,page-size+page-number,kebab,n,object,,,,/v2/{type}/org/{org}/team/{team}/{name}/{version}/files,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (typed/guest file listing twins), +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/{type}/org/{org}/{name}/{version}/files,downloadAllArtifactFilesAsGuest,Artifact File,y,n,n,none-declared,,page-size+page-number,kebab,n,object,,,,/v2/{type}/org/{org}/{name}/{version}/files,https://api.ngc.nvidia.com,,,,,duplicate-endpoint-family (typed/guest file listing twins), diff --git a/provider-dev/config/servers.json b/provider-dev/config/servers.json new file mode 100644 index 0000000..7926d92 --- /dev/null +++ b/provider-dev/config/servers.json @@ -0,0 +1,11 @@ +{ + "hosts": { + "ngc": "https://api.ngc.nvidia.com", + "nvcf": "https://api.nvcf.nvidia.com" + }, + "orgVariable": { + "name": "org_name", + "x-stackQL-envVar": "NGC_ORG", + "description": "NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment." + } +} diff --git a/provider-dev/config/service_names.json b/provider-dev/config/service_names.json index c3ebe02..e217a66 100644 --- a/provider-dev/config/service_names.json +++ b/provider-dev/config/service_names.json @@ -1,9 +1,30 @@ { - "orgs": "NGC organizations, teams, users, role grants, invitations and the current user (source: ngc_kas)", - "registry": "NGC private registry - org-scoped artifact metadata: models, resources, recipes, helm chart versions, collections, shares, encryption keys (source: ngc_models, org-scoped families)", - "catalog": "NGC public catalog - guest artifact metadata reads plus the GPU and CSP catalogs; the zero-setup surface (source: ngc_models, guest families)", - "nvcf_functions": "NVCF functions, versions, metadata, authorizations (function sharing grants), secrets and rate limits (source: nvcf)", - "nvcf_deployments": "NVCF deployments, GPU specifications, cluster groups and GPUs, registry credentials, telemetries (source: nvcf)", - "nvcf_queues": "NVCF queue details and queue position (source: nvcf)", - "nvcf_invocation": "NVCF HTTP-polling invocation (pexec + status), assets and invocation assertion tokens (source: nvcf)" + "orgs": { + "title": "NVIDIA NGC Organizations", + "description": "NGC organizations, teams, users and team members, role grants, invitations and the current user (source: the NGC API definition harvested from the API explorer)." + }, + "private_registry": { + "title": "NVIDIA NGC Private Registry", + "description": "Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes)." + }, + "catalog": { + "title": "NVIDIA NGC Catalog", + "description": "The public NGC catalog: guest reads of models, resources, recipes, helm charts, collections and generic artifacts, plus the GPU and cloud service provider catalogs (no organization scope; public artifacts read without credentials)." + }, + "nvcf_functions": { + "title": "NVIDIA Cloud Functions - Functions", + "description": "NVCF functions and versions, function metadata, authorizations (function sharing grants), secrets and rate limits (source: the published NVCF OpenAPI specification; management operations served from api.ngc.nvidia.com)." + }, + "nvcf_deployments": { + "title": "NVIDIA Cloud Functions - Deployments", + "description": "NVCF deployments and GPU specifications, cluster groups and GPU inventory, registry credentials and telemetry endpoints (source: the published NVCF OpenAPI specification; served from api.ngc.nvidia.com)." + }, + "nvcf_queues": { + "title": "NVIDIA Cloud Functions - Queues", + "description": "NVCF request queue details per function and version, and queue position per request (served from api.nvcf.nvidia.com)." + }, + "nvcf_invocation": { + "title": "NVIDIA Cloud Functions - Invocation", + "description": "NVCF HTTP-polling invocation (pexec and status), assets and invocation assertion tokens (served from api.nvcf.nvidia.com)." + } } diff --git a/provider-dev/config/spec_pin.json b/provider-dev/config/spec_pin.json index 52cab03..d814204 100644 --- a/provider-dev/config/spec_pin.json +++ b/provider-dev/config/spec_pin.json @@ -8,13 +8,13 @@ "sources": { "nvcf_openapi.json": { "url": "https://api.nvcf.nvidia.com/v3/openapi", - "fetched": "2026-07-14", - "sha256": "b79060bfb9f6ff7295286f46d7c8e422f36d4ac94588183cc623f6acf3489efd", - "bytes": 112602, + "fetched": "2026-09-25", + "sha256": "53dd383860098a19d6ddb796988fd3d3d166f71f34f82f2f849aed8c725d9eea", + "bytes": 198423, "docsPage": "https://docs.nvidia.com/nvcf/api", "openapi": "3.1.0", "title": "Cloud Functions", - "specVersion": "2.245.1", + "specVersion": "2.256.0", "decision": { "canonicalSource": "The OpenAPI Spec link on the NVCF API documentation page (docsPage) resolves to this URL, served by the NVCF API itself. A companion Postman collection is referenced from the same documentation set.", "hostSplit": "The spec declares a single server (https://api.nvcf.nvidia.com) but the NVCF documentation (cloud-functions user guide, API page) states the primary domain for function management is api.ngc.nvidia.com and the NVCF domain for function invocation and queue details is api.nvcf.nvidia.com. Hosts are carried per operation group; the per-operation assignment with evidence is recorded in endpoint_inventory.csv.", @@ -23,9 +23,9 @@ }, "ngc_models.json": { "url": "https://models.ngc.nvidia.com/v3/openapi", - "fetched": "2026-07-14", - "sha256": "7541d8f6cbd983e41fda42a171ce4fd4f6c0367eceb65c188e79202b90a73d91", - "bytes": 614601, + "fetched": "2026-09-25", + "sha256": "60e0eb9a9f7344e5f43ba3ede8dd5cab20ab41cc47bad9ae780031868e06b529", + "bytes": 1435979, "explorer": "https://docs.ngc.nvidia.com/api/", "explorerName": "Private Artifacts (Models) API", "openapi": "3.1.0", @@ -33,15 +33,25 @@ "specVersion": "0.0.1-SNAPSHOT" }, "ngc_kas.json": { - "url": "https://api-internal.ngc.nvidia.com/v3/api-docs", - "fetched": "2026-07-14", - "sha256": "dcaf78b003e94318b6e1e41ab9157f81ddc464b8455545ce16d33f378eebf987", - "bytes": 294470, + "url": "https://api.ngc.nvidia.com/v3/api-docs", + "fetched": "2026-09-25", + "sha256": "9a4550a50fed4b4a7337c5bd67d71858d13fcdbe7c72505aa1b245382e9be53c", + "bytes": 618658, "explorer": "https://docs.ngc.nvidia.com/api/", "explorerName": "KASv1 API (Deprecated)", "openapi": "3.0.1", "title": "NGC API Documentation", - "specVersion": "v3.249.6" + "specVersion": "v3.249.17" } + }, + "ngcSdk": { + "package": "ngcsdk", + "version": "4.36.6", + "url": "https://files.pythonhosted.org/packages/3c/cf/e4901fd5a50621d3f058d0ba4f732651a86d672fb76b7a404473b2b23ac1/ngcsdk-4.36.6-py3-none-any.whl", + "sha256": "8cf4ce3bd071b3d2e24d40f2c66abc2c2b49022b53d400a2eb9fe6018fe3f343", + "derived": "ngc_sdk_schemas.json", + "derivedSha256": "faa443aa2e6394370b18bab2a7368f8e85a72e56a4f9a87b5d1d41b5337ca3ea", + "classes": 149, + "fetched": "2026-09-25" } } diff --git a/provider-dev/docgen/provider-data/headerContent1.txt b/provider-dev/docgen/provider-data/headerContent1.txt new file mode 100644 index 0000000..50a928a --- /dev/null +++ b/provider-dev/docgen/provider-data/headerContent1.txt @@ -0,0 +1,24 @@ +--- +title: nvidia +hide_title: false +hide_table_of_contents: false +keywords: + - nvidia + - ngc + - nvcf + - nvidia cloud functions + - ngc private registry + - gpu inventory + - stackql + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, provision and manage the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (functions, versions, deployments, cluster groups and GPUs, sharing grants), the NGC private registry and public catalog (models, resources, helm charts, collections), and NGC organizations, teams and users +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +id: 'provider-intro' +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; + +Query, provision and operate the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (NVCF: functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, function sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, containers and helm charts as metadata, collections, shares, encryption keys), the public NGC catalog (artifact metadata, the GPU and cloud service provider catalogs - readable without an account) and NGC organizations, teams, users, roles and invitations. GPU capacity by cluster group, NVCF function fleet state by deployment specification, function sharing audits and registry estate reports are the queries this provider exists for. diff --git a/provider-dev/docgen/provider-data/headerContent2.txt b/provider-dev/docgen/provider-data/headerContent2.txt new file mode 100644 index 0000000..8df89a1 --- /dev/null +++ b/provider-dev/docgen/provider-data/headerContent2.txt @@ -0,0 +1,233 @@ +See also: +[[` SHOW `]](https://stackql.io/docs/language-spec/show) [[` DESCRIBE `]](https://stackql.io/docs/language-spec/describe) [[` REGISTRY `]](https://stackql.io/docs/language-spec/registry) +* * * + +## Installation + +To pull the latest version of the `nvidia` provider, run the following command: + +```bash +REGISTRY PULL nvidia; +``` +> To view previous provider versions or to pull a specific provider version, see [here](https://stackql.io/docs/language-spec/registry). + +## Scope + +This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (338 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. + +## Authentication + +The provider authenticates with an NGC Personal API Key as a bearer token. Generate one in the NGC console under Setup -> Generate Personal API Key, granting the service scopes you need (Private Registry for the registry service; Cloud Functions for the `nvcf_*` services - at the organization level, since a key with a team-level Cloud Functions role does not work with NVCF), export it as (the same variable the NVIDIA Terraform provider and the NGC CLI read), and StackQL picks it up with no further configuration: + +```bash +export NGC_API_KEY='nvapi-...' +export NGC_ORG='0123456789ab' # optional, see organization scope +``` + +or using PowerShell: + +```powershell +$env:NGC_API_KEY = 'nvapi-...' +$env:NGC_ORG = '0123456789ab' +``` + +The public catalog (`nvidia.catalog`) serves public artifact metadata and the GPU catalog without any credential; the variable still has to be set for the provider to run, but any value works for those reads. + +## Organization scope + +Registry and organization resources are scoped to an NGC organization, addressed by its name (`org_name` - the org id shown under Organization -> Setup, for example `0123456789ab`). `org_name` is a server variable resolved from the environment variable when it is set, so queries against one organization need no `WHERE org_name` clause: + +```sql +SELECT name, display_name, framework, latest_version_id_str, updated_date +FROM nvidia.private_registry.models; +``` + +A `WHERE org_name = '...'` value always takes precedence over the environment, which is how a single session addresses several organizations. With the variable unset, `org_name` is a required parameter on every org-scoped method (visible in `SHOW METHODS`) and must be supplied per query. To discover the organizations the key can see: + +```sql +SELECT name, display_name, type FROM nvidia.orgs.orgs; +``` + +Team-scoped registry paths are exposed as `*_by_team` methods on the same resources - add `team_name` to the `WHERE` clause and the team-scoped operation is selected: + +```sql +SELECT name, updated_date +FROM nvidia.private_registry.models +WHERE team_name = 'ml-platform'; +``` + +NVCF resources carry no organization in their paths: the key determines the organization. + +## Pagination and casing + +NGC core collections (organizations, users, teams, registry artifacts and versions) page with `page-number` and `page-size`; StackQL follows `paginationInfo.index` / `totalPages` transparently, so a `SELECT` returns every row, and `SELECT ... LIMIT n` is pushed to the wire as `page-size`. Columns are snake_case aliases of the camelCase wire properties (`displayName` -> `display_name`); query parameters are addressed in snake_case too (`resolve_labels`, `page_size`) and translated to the kebab-case wire names. + +## Deprecations + +NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those path families are excluded from the provider. Private Registry team scoping is exempt from that schedule and stays mapped (the `*_by_team` methods). Refreshes of the provider are reviewed spec diffs against content-hash pins. + +## Example queries + +### GPU capacity by cluster group + +What GPU capacity exists, and where - the NVCF cluster groups the organization can deploy to, with their GPU types and instance types: + +```sql +SELECT cg.name AS cluster_group, + json_extract(g.value, '$.name') AS gpu, + json_extract(g.value, '$.instanceTypes[0].name') AS instance_type, + json_extract(cg.clusters, '$[0].name') AS cluster +FROM nvidia.nvcf_deployments.cluster_groups cg, + json_each(cg.gpus) g +ORDER BY cluster_group, gpu; +``` + +### NVCF function fleet state + +Every function version with its status, the container or helm chart it runs and its GPU deployment specification: + +```sql +SELECT f.name, f.status, f.version_id, + f.container_image, f.helm_chart, + json_extract(d.deployment_specifications, '$[0].gpu') AS gpu, + json_extract(d.deployment_specifications, '$[0].instanceType') AS instance_type, + json_extract(d.deployment_specifications, '$[0].minInstances') AS min_instances, + json_extract(d.deployment_specifications, '$[0].maxInstances') AS max_instances +FROM nvidia.nvcf_functions.functions f +LEFT JOIN nvidia.nvcf_deployments.deployments d + ON d.function_id = f.id AND d.function_version_id = f.version_id +WHERE f.status = 'ACTIVE'; +``` + +Deployed functions with more than one minimum instance - the standing GPU spend: + +```sql +SELECT function_name, function_status, + json_extract(deployment_specifications, '$[0].gpu') AS gpu, + json_extract(deployment_specifications, '$[0].minInstances') AS min_instances +FROM nvidia.nvcf_deployments.deployments +WHERE function_id = 'fe97aa46-c8ea-4237-ba56-1212036f4d0f' + AND function_version_id = '868d2192-6819-4b53-89f5-3c7fb1df2a72'; +``` + +### Function sharing audit + +Which NVIDIA Cloud Accounts may invoke a function - the authorization grants as data: + +```sql +SELECT id AS function_id, version_id, nca_id AS owner, + json_extract(authorized_parties, '$[*].ncaId') AS authorized_accounts +FROM nvidia.nvcf_functions.authorizations +WHERE function_id = 'fe97aa46-c8ea-4237-ba56-1212036f4d0f'; +``` + +### Registry estate report + +Models in the private registry by framework, with size and update recency (with `NGC_ORG` set): + +```sql +SELECT name, framework, precision, + latest_version_id_str AS latest_version, + latest_version_size_in_bytes / 1048576 AS latest_version_mb, + updated_date +FROM nvidia.private_registry.models +ORDER BY updated_date DESC; +``` + +Containers, helm charts and resources through the generic artifacts resource: + +```sql +SELECT name, display_name, latest_version_id_str, updated_date +FROM nvidia.private_registry.artifacts +WHERE artifact_type = 'containers'; +``` + +### Public catalog, no account needed + +```sql +SELECT name, org_name, display_name, framework +FROM nvidia.catalog.models +LIMIT 20; + +SELECT display_name, pci_device_id, memory_size_gb, form_factor +FROM nvidia.catalog.gpus; +``` + +### Organization membership + +Users in the organization with their roles: + +```sql +SELECT email, name, is_active, last_login_date, + json_extract(roles, '$[0].orgRoles') AS org_roles +FROM nvidia.orgs.users; +``` + +### Provisioning + +Mutations use the same SQL grammar - `INSERT` creates, `UPDATE` patches, `DELETE` removes, and lifecycle actions are `EXEC` methods. Body columns are the snake_case spellings of the wire properties. A function with a first version, its deployment on the smallest instance, and the teardown: + +```sql +-- create the function (and its first version) +INSERT INTO nvidia.nvcf_functions.functions (name, inference_url, container_image, api_body_format) +SELECT 'echo-demo', '/echo', 'nvcr.io/0123456789ab/echo:latest', 'CUSTOM'; + +-- deploy the version (the specification is a JSON array of {gpu, backend, instanceType, minInstances, maxInstances}) +INSERT INTO nvidia.nvcf_deployments.deployments (function_id, function_version_id, deployment_specifications) +SELECT 'fe97aa46-...', '868d2192-...', + '[{"gpu": "L40", "backend": "GFN", "instanceType": "GCP.GPU.L40_1x", "minInstances": 1, "maxInstances": 1}]'; + +-- share it with another NVIDIA Cloud Account +INSERT INTO nvidia.nvcf_functions.authorizations (function_id, authorized_party) +SELECT 'fe97aa46-...', '{"ncaId": "nca-partner-id"}'; + +-- undeploy, then delete the version +DELETE FROM nvidia.nvcf_deployments.deployments +WHERE function_id = 'fe97aa46-...' AND function_version_id = '868d2192-...'; + +DELETE FROM nvidia.nvcf_functions.function_versions +WHERE function_id = 'fe97aa46-...' AND function_version_id = '868d2192-...'; +``` + +Invoke a function through the HTTP-polling form and read the result: + +```sql +EXEC nvidia.nvcf_invocation.invocations.invoke + @function_id = 'fe97aa46-...', + @body = '{"prompt": "hello"}'; + +SELECT response +FROM nvidia.nvcf_invocation.invocation_status +WHERE request_id = ''; +``` + +Registry metadata is provisioned the same way: + +```sql +INSERT INTO nvidia.private_registry.models (name, display_name, framework, precision, application, short_description) +SELECT 'resnet50-finetuned', 'ResNet-50 fine-tuned', 'PyTorch', 'FP16', 'Classification', 'fine-tuned on internal data'; + +UPDATE nvidia.private_registry.models +SET display_name = 'ResNet-50 fine-tuned v2' +WHERE model_name = 'resnet50-finetuned'; + +DELETE FROM nvidia.private_registry.artifacts +WHERE artifact_type = 'models' AND artifact_name = 'resnet50-finetuned'; +``` + +### The whole GPU estate in one statement + +NVCF cluster-group GPU types alongside the hyperscaler GPU instance inventory, using the `aws`, `google` and `azure` providers: + +```sql +SELECT 'nvcf' AS platform, cg.name AS location, json_extract(g.value, '$.name') AS gpu +FROM nvidia.nvcf_deployments.cluster_groups cg, json_each(cg.gpus) g +UNION ALL +SELECT 'aws', region, json_extract(gpu_info, '$.Gpus[0].Name') +FROM aws.ec2.instance_types +WHERE region = 'us-east-1' AND gpu_info IS NOT NULL +UNION ALL +SELECT 'google', json_extract(zone, '$'), json_extract(accelerators, '$[0].guestAcceleratorType') +FROM google.compute.machine_types +WHERE project = 'my-project' AND zone = 'us-central1-a' AND accelerators IS NOT NULL; +``` diff --git a/provider-dev/downloaded/.gitkeep b/provider-dev/downloaded/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/provider-dev/downloaded/cleaned/ngc_kas.json b/provider-dev/downloaded/cleaned/ngc_kas.json index 52d1bbd..f4884cd 100644 --- a/provider-dev/downloaded/cleaned/ngc_kas.json +++ b/provider-dev/downloaded/cleaned/ngc_kas.json @@ -1,9272 +1,7652 @@ { - "openapi": "3.0.1", - "info": { - "title": "NGC API Documentation", - "description": "The NGC Web API is an interface for querying information from and enacting change in a NGC world. \n", - "license": { - "name": "Legal Notices", - "url": "https://www.nvidia.com/en-us/legal_info" - }, - "version": "v3.249.6" - }, - "servers": [ - { - "url": "https://api.ngc.nvidia.com" - } - ], - "security": [ - { - "api-key": [] - }, - { - "bearer-token": [] - } - ], - "tags": [ - { - "name": "Services" - }, - { - "name": "Orgs" - }, - { - "name": "Super Admin User Controller" - }, - { - "name": "Super Admin Org Controller" - }, - { - "name": "Teams", - "description": "Team Operations" - }, - { - "name": "Users Management", - "description": "Operation to manager users" - } - ], - "paths": { - "/v3/orgs/{org-name}/users/nca-invitations": { - "post": { - "tags": [ - "Users Management" - ], - "summary": "Invite User to NCA (org version)", - "description": "Invites and creates a User in org", - "operationId": "inviteUserToNcaInOrg", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "components": { + "schemas": { + "AlternateContact": { + "description": "Org Owner Alternate Contact", + "properties": { + "email": { + "description": "Alternate contact's email.", + "maxLength": 128, + "minLength": 6, + "type": "string" + }, + "fullName": { + "description": "Full name of the alternate contact.", + "maxLength": 255, + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserNcaInvitationRequest" - } - } + }, + "type": "object" + }, + "Entitlement": { + "description": "Information about the entitlement for an org", + "properties": { + "entitlementExpirationTime": { + "description": "Entitlement expiration time", + "type": "string" }, - "required": true + "entitlementId": { + "description": "Unique entitlement identifier", + "type": "string" + }, + "entitlementState": { + "description": "Entitlement state", + "type": "string" + }, + "pecSfdcId": { + "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer", + "type": "string" + }, + "products": { + "items": { + "$ref": "#/components/schemas/EntitlementProduct" + }, + "type": "array" + } }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserResponse" - } - } - } + "type": "object" + }, + "EntitlementProduct": { + "description": "Information about the entitlement product", + "properties": { + "pkId": { + "description": "Unique product key identifier", + "type": "string" }, - "302": { - "description": "Found" + "productName": { + "description": "Product name. ex: FleetCommand, Batch, etc", + "type": "string" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "subscriptionType": { + "description": "Subscription type", + "type": "string" + } + }, + "type": "object" + }, + "ErrorResponse": { + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "Health": { + "description": "object that describes health of the service", + "properties": { + "healthCode": { + "description": "Enum that describes health of the service", + "enum": [ + "UNKNOWN", + "OK", + "UNDER_MAINTENANCE", + "WARNING", + "FAILED" + ], + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "healthCodeDescription": { + "description": "Human readable description", + "maxLength": 255, + "minLength": 1, + "type": "string" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "metaData": { + "items": { + "$ref": "#/components/schemas/MetaData" + }, + "type": "array" + } + }, + "type": "object" + }, + "HealthResponse": { + "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method", + "properties": { + "health": { + "$ref": "#/components/schemas/Health" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "InfinityManagerSettings": { + "description": "Infinity manager setting definition", + "properties": { + "infinityManagerEnableTeamOverride": { + "description": "Allow override settings at team level. Only used in org level object", + "type": "boolean" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "infinityManagerEnabled": { + "description": "Enable the infinity manager or not. Used both in org and team level object", + "type": "boolean" + } + }, + "type": "object" + }, + "MetaData": { + "properties": { + "key": { + "maxLength": 255, + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "value": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "OrgCreateRequest": { + "description": "Request to create new Organization", + "properties": { + "country": { + "description": "user country", + "type": "string" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "idpId": { + "description": "Identity Provider ID.", + "type": "string" + }, + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" + }, + "name": { + "description": "Organization name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "pecName": { + "description": "product end customer name for enterprise(Fleet Command) product", + "type": "string" + }, + "pecSfdcId": { + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product", + "type": "string" + }, + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" + }, + "productSubscriptions": { + "description": "This should be deprecated, use productEnablements instead", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" + }, + "salesforceAccountIndustry": { + "description": "Company or organization industry", + "type": "string" + }, + "sendEmail": { + "description": "Send email to org owner or not. Default is true", + "type": "boolean" + }, + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + "required": [ + "orgOwner" + ], + "type": "object" + }, + "OrgCreateRequestV3": { + "description": "Request to create new Organization in v3 flow", + "properties": { + "country": { + "description": "user country", + "type": "string" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" }, - "451": { - "description": "Unavailable For Legal Reasons" + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "initiator": { + "description": "Identify the initiator of the org request", + "type": "string" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "Organization name", + "maxLength": 64, + "minLength": 2, + "type": "string" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/v3/orgs/{org-name}/teams/{team-name}/users/nca-invitations": { - "post": { - "tags": [ - "Users Management" - ], - "summary": "Invite User to NCA (team version)", - "description": "Invites and creates a User in team", - "operationId": "inviteUserToNcaInTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "ncaId": { + "description": "NVIDIA Cloud Account Identifier", + "type": "string" }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserNcaInvitationRequest" - } - } + "ncaNumber": { + "description": "NVIDIA Cloud Account Number", + "type": "string" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserResponse" - } - } - } + "orgOwner": { + "$ref": "#/components/schemas/OrgOwnerV3" }, - "302": { - "description": "Found" + "pecName": { + "description": "product end customer name for enterprise(Fleet Command) product", + "type": "string" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "pecSfdcId": { + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product", + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "productSubscriptions": { + "description": "This should be deprecated, use productEnablements instead", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "protoOrgId": { + "description": "Proto org identifier", + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "salesforceAccountIndustry": { + "description": "Company or organization industry", + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "sendEmail": { + "description": "Send email to org owner or not. Default is true", + "type": "boolean" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + "type": "object" + }, + "OrgInvitation": { + "description": "Org invitation to NGC", + "properties": { + "email": { + "description": "Email address of the user.", + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "protoOrgId": { + "description": "Proto Org identifier.", + "type": "string" + } + }, + "type": "object" + }, + "OrgInvitationResponse": { + "description": "Invitation Validation Response.", + "properties": { + "orgInvitation": { + "$ref": "#/components/schemas/OrgInvitation" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgListEntitlementResponse": { + "description": "List of all organizations which have entitlement information. Only accessible by NGC admin portal", + "properties": { + "entitlements": { + "items": { + "$ref": "#/components/schemas/OrganizationEntitlement" + }, + "type": "array" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgListResponse": { + "description": "List of organizations.", + "properties": { + "organizations": { + "items": { + "$ref": "#/components/schemas/Organization" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" }, - "451": { - "description": "Unavailable For Legal Reasons" + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgNca": { + "description": "Org vs NcaId mapping", + "properties": { + "ncaId": { + "description": "NVIDIA Cloud Account Id", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "orgName": { + "description": "Organization name", + "type": "string" + } + }, + "type": "object" + }, + "OrgNcaMappingRequest": { + "description": "object to get the org and nca mapping", + "properties": { + "ncaIds": { + "description": "List of nca Ids", + "items": { + "description": "List of nca Ids", + "type": "string" + }, + "type": "array" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "orgNames": { + "description": "List of org names", + "items": { + "description": "List of org names", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "OrgNcaMappingResponse": { + "description": "org and nca mapping response", + "properties": { + "orgNcaMapping": { + "items": { + "$ref": "#/components/schemas/OrgNca" + }, + "type": "array" + } + }, + "type": "object" + }, + "OrgOwner": { + "description": "Org owner.", + "properties": { + "email": { + "description": "Email address of the org owner.", + "maxLength": 128, + "type": "string" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "fullName": { + "description": "Org owner name.", + "maxLength": 64, + "minLength": 1, + "type": "string" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "lastLoginDate": { + "description": "Last time the org owner logged in.", + "type": "string" } - } - } - }, - "/v3/orgs/proto-org": { - "post": { - "tags": [ - "Orgs" + }, + "required": [ + "email" ], - "summary": "Create Organization from ProtoOrg", - "description": "Create a new organization based on the org info retrieved from the ProtoOrg.", - "operationId": "createOrganizationFromProtoOrg", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "type": "object" + }, + "OrgOwnerV3": { + "description": "Org owner.", + "properties": { + "email": { + "description": "Email address of the org owner.", + "maxLength": 128, + "type": "string" }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "fullName": { + "description": "Org owner name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "idpId": { + "description": "Identity Provider ID of the org owner.", + "type": "string" + }, + "starfleetId": { + "description": "Starfleet ID of the org owner.", + "type": "string" } + }, + "required": [ + "email" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgCreateRequestV3" - } - } + "type": "object" + }, + "OrgProfileUpdateRequest": { + "description": "Object used to update Org profile information", + "properties": { + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" }, - "required": true + "displayName": { + "description": "Name of the organization that will be shown to users", + "maxLength": 255, + "minLength": 1, + "type": "string" + } }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgResponse" - } - } - } - }, - "302": { - "description": "Found" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "type": "object" + }, + "OrgResponse": { + "description": "info about an organizations", + "properties": { + "organizations": { + "$ref": "#/components/schemas/Organization" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgUpdateRequest": { + "description": "Object used to update Org information", + "properties": { + "alternateContact": { + "$ref": "#/components/schemas/AlternateContact" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "companyName": { + "description": "Name of the company", + "maxLength": 128, + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "idpId": { + "description": "Identity Provider ID.", + "type": "string" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isDatasetServiceEnabled": { + "description": "Dataset Service enable flag for an organization", + "type": "boolean" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isQuickStartEnabled": { + "description": "Quick Start enable flag for an organization", + "type": "boolean" }, - "451": { - "description": "Unavailable For Legal Reasons" + "isRegistrySSEEnabled": { + "description": "If a server side encryption is enabled for private registry (models, resources)", + "type": "boolean" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isSecretsManagerServiceEnabled": { + "description": "Secrets Manager Service enable flag for an organization", + "type": "boolean" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isSecureCredentialSharingServiceEnabled": { + "description": "Secure Credential Sharing Service enable flag for an organization", + "type": "boolean" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isSeparateInfluxDbUsed": { + "description": "If a separate influx db used for an organization in Base Command Platform job telemetry", + "type": "boolean" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/v3/orgs": { - "post": { - "tags": [ - "Orgs" - ], - "summary": "Create Organization from Scratch", - "description": "Create a new organization based on the org info provided in the request.", - "operationId": "createOrganizationFromScratch", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "ngcClaimID": { + "description": "NGC Reference ID for redeem subscription flow tracking purpose. Provided from RWA only.", + "type": "string" }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgCreateRequestV3" - } - } + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgResponse" - } - } - } + "orgOwners": { + "description": "Org owners", + "items": { + "$ref": "#/components/schemas/OrgOwner" + }, + "type": "array" }, - "302": { - "description": "Found" + "pecName": { + "description": "product end customer name for enterprise(Fleet Command) product", + "type": "string" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "pecSfdcId": { + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product", + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "productSubscriptions": { + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + "type": "object" + }, + "Organization": { + "description": "Information about the Organization", + "properties": { + "alternateContact": { + "$ref": "#/components/schemas/AlternateContact" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "billingAccountId": { + "description": "Billing account ID.", + "type": "string" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "canAddOn": { + "description": "Identifies if the org can be reused.", + "type": "boolean" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "country": { + "description": "ISO country code of the organization.", + "type": "string" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "description": { + "description": "Optional description of the organization.", + "type": "string" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" }, - "451": { - "description": "Unavailable For Legal Reasons" + "id": { + "description": "Unique Id of this team.", + "format": "int64", + "type": "integer" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "idpId": { + "description": "Identity Provider ID.", + "type": "string" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "industry": { + "description": "Industry of the organization.", + "type": "string" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/v3/admin/orgs": { - "post": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "Creates organization from scratch or proto organization", - "description": "OrgCreateRequest is used to create the organization or when no nca_id is provided upfront, the OrgCreateRequest is stored as proto org, and proto org flow initiates (SuperAdmin privileges required)", - "operationId": "createProtoOrganization", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "isDatasetServiceEnabled": { + "description": "Dataset Service enable flag for an organization", + "type": "boolean" }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgCreateRequestV3" - } - } + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/OrgResponse" - } - } - } + "isProto": { + "description": "Indicates when the org is a proto org", + "type": "boolean" }, - "302": { - "description": "Found" + "isQuickStartEnabled": { + "description": "Quick Start enable flag for an organization", + "type": "boolean" }, - "400": { - "description": "Bad Request", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isRegistrySSEEnabled": { + "description": "If a server side encryption is enabled for private registry (models, resources)", + "type": "boolean" }, - "401": { - "description": "Unauthorized", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isSecretsManagerServiceEnabled": { + "description": "Secrets Manager Service enable flag for an organization", + "type": "boolean" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isSecureCredentialSharingServiceEnabled": { + "description": "Secure Credential Sharing Service enable flag for an organization", + "type": "boolean" }, - "403": { - "description": "Forbidden", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isSeparateInfluxDbUsed": { + "description": "If a separate influx db used for an organization in BCP for job telemetry", + "type": "boolean" }, - "404": { - "description": "Not Found", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "Organization name.", + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "ncaAccountNumber": { + "description": "NVIDIA Cloud Account Number.", + "type": "string" }, - "409": { - "description": "Object Exists", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "orgOwners": { + "description": "Org owners", + "items": { + "$ref": "#/components/schemas/OrgOwner" + }, + "type": "array" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "pecSfdcId": { + "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer.", + "type": "string" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" }, - "451": { - "description": "Unavailable For Legal Reasons" + "productSubscriptions": { + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" }, - "500": { - "description": "Internal Error", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "usersInfo": { + "$ref": "#/components/schemas/UsersInfo" + } + }, + "type": "object" + }, + "OrganizationEntitlement": { + "description": "Information about the organization entitlements", + "properties": { + "entitlements": { + "items": { + "$ref": "#/components/schemas/Entitlement" + }, + "type": "array" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "orgName": { + "description": "Organization name", + "type": "string" } - } - } - }, - "/v3/admin/orgs/ncaIds": { - "post": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "Get Organization by NCA ID or Org Name", - "description": "Get Organization by NCA ID or Org Name. (SuperAdmin privileges required)", - "operationId": "getMapping", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgNcaMappingRequest" - } - } + }, + "type": "object" + }, + "PackageVersion": { + "description": "Latest version information for a specific package", + "properties": { + "createdAt": { + "description": "The creation date of the version", + "type": "string" + }, + "description": { + "description": "Human readable description of the package", + "type": "string" + }, + "name": { + "description": "The name of the package", + "type": "string" + }, + "version": { + "description": "The version number", + "type": "string" + } + }, + "type": "object" + }, + "PackageVersionListResponse": { + "description": "an array of versions", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" }, - "required": true + "versions": { + "items": { + "$ref": "#/components/schemas/PackageVersion" + }, + "type": "array" + } }, - "responses": { - "200": { - "description": "OK", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/OrgNcaMappingResponse" - } - } - } + "type": "object" + }, + "PaginationInfo": { + "description": "object that describes the pagination information", + "properties": { + "index": { + "description": "Page index of results", + "format": "int32", + "type": "integer" }, - "302": { - "description": "Found" + "nextPage": { + "description": "Serialized pointer to the next results page. Should be used for fetching next page. Can be empty", + "type": "string" }, - "400": { - "description": "Bad Request", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "size": { + "description": "Number of results in page", + "format": "int32", + "type": "integer" }, - "401": { - "description": "Unauthorized", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "totalPages": { + "description": "Total number of pages available", + "format": "int64", + "type": "integer" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "totalResults": { + "description": "Total number of results available", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "ProductEnablement": { + "description": "Product Enablement", + "properties": { + "expirationDate": { + "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)", + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "poDetails": { + "items": { + "$ref": "#/components/schemas/PurchaseOrder" + }, + "type": "array" }, - "404": { - "description": "Not Found", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "productName": { + "description": "Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc)", + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "type": { + "description": "Product Enablement Types", + "enum": [ + "NGC_ADMIN_EVAL", + "NGC_ADMIN_NFR", + "NGC_ADMIN_COMMERCIAL", + "EMS_EVAL", + "EMS_NFR", + "EMS_COMMERCIAL", + "NGC_ADMIN_DEVELOPER" + ], + "type": "string" + } + }, + "required": [ + "productName", + "type" + ], + "type": "object" + }, + "ProductSubscription": { + "description": "Product Subscription", + "properties": { + "emsEntitlementType": { + "description": "EMS Subscription type. (options: EMS_EVAL, EMS_NFR and EMS_COMMERCIAL)", + "enum": [ + "EMS_EVAL", + "EMS_NFR", + "EMS_COMMERICAL", + "EMS_COMMERCIAL" + ], + "type": "string" }, - "409": { - "description": "Object Exists", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "expirationDate": { + "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)", + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "id": { + "description": "Unique entitlement identifier", + "type": "string" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "productName": { + "description": "Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc).", + "type": "string" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "startDate": { + "description": "Date on which the subscription becomes active. (yyyy-MM-dd)", + "type": "string" }, - "451": { - "description": "Unavailable For Legal Reasons" + "type": { + "description": "Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, NGC_ADMIN_COMMERCIAL)", + "enum": [ + "NGC_ADMIN_EVAL", + "NGC_ADMIN_NFR", + "NGC_ADMIN_COMMERCIAL" + ], + "type": "string" + } + }, + "required": [ + "productName" + ], + "type": "object" + }, + "PurchaseOrder": { + "description": "Purchase Order.", + "properties": { + "entitlementId": { + "description": "Entitlement identifier.", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "pkId": { + "description": "PAK (Product Activation Key) identifier.", + "type": "string" + } + }, + "type": "object" + }, + "RepoScanSettings": { + "description": "Repo scan setting definition", + "properties": { + "repoScanAllowOverride": { + "description": "Allow org admin to override the org level repo scan settings", + "type": "boolean" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "repoScanByDefault": { + "description": "Allow repository scanning by default", + "type": "boolean" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "repoScanEnableNotifications": { + "description": "Sends notification to end user after scanning is done", + "type": "boolean" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "repoScanEnableTeamOverride": { + "description": "Allow override settings at team level. Only used in org level object", + "type": "boolean" + }, + "repoScanEnabled": { + "description": "Enable the repository scan or not. Only used in org level object", + "type": "boolean" + }, + "repoScanShowResults": { + "description": "Allow showing scan results to CLI or UI", + "type": "boolean" } - } - } - }, - "/v2/users/me/api-key": { - "post": { - "tags": [ - "Users Management" - ], - "summary": "Generate API Key", - "description": "Generate API Key", - "operationId": "generateUserApiKey", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserKeyResponse" - } - } - } + }, + "type": "object" + }, + "RequestStatus": { + "properties": { + "requestId": { + "type": "string" }, - "302": { - "description": "Found" + "serverId": { + "type": "string" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "statusCode": { + "description": "Describes response status reported by the server.", + "enum": [ + "UNKNOWN", + "SUCCESS", + "UNAUTHORIZED", + "PAYMENT_REQUIRED", + "FORBIDDEN", + "TIMEOUT", + "EXISTS", + "NOT_FOUND", + "INTERNAL_ERROR", + "INVALID_REQUEST", + "INVALID_REQUEST_VERSION", + "INVALID_REQUEST_DATA", + "METHOD_NOT_ALLOWED", + "CONFLICT", + "UNPROCESSABLE_ENTITY", + "TOO_MANY_REQUESTS", + "INSUFFICIENT_STORAGE", + "SERVICE_UNAVAILABLE", + "PAYLOAD_TOO_LARGE", + "NOT_ACCEPTABLE", + "UNAVAILABLE_FOR_LEGAL_REASONS", + "BAD_GATEWAY", + "PRECONDITION_FAILED" + ], + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "statusDescription": { + "type": "string" + } + }, + "type": "object" + }, + "Response": { + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "RoleProduct": { + "description": "Product information of the role", + "properties": { + "displayName": { + "description": "Display Name of the product from the product catalog to which this role is associated with", + "type": "string" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "Name of the product from the product catalog to which this role is associated with", + "type": "string" + } + }, + "type": "object" + }, + "SearchParamFilter": { + "properties": { + "field": { + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "value": { + "type": "string" + } + }, + "type": "object" + }, + "SearchParamOrderBy": { + "properties": { + "field": { + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "value": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + "SearchParams": { + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "filters": { + "items": { + "$ref": "#/components/schemas/SearchParamFilter" + }, + "type": "array" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "groupBy": { + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "orderBy": { + "items": { + "$ref": "#/components/schemas/SearchParamOrderBy" + }, + "type": "array" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "page": { + "format": "int64", + "type": "integer" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "pageSize": { + "format": "int64", + "type": "integer" }, - "451": { - "description": "Unavailable For Legal Reasons" + "query": { + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "queryFields": { + "items": { + "type": "string" + }, + "type": "array" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "scoredSize": { + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "SecurityConfiguration": { + "properties": { + "additionalQueryStringParams": { + "additionalProperties": { + "type": "object" + }, + "type": "object" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "apiKey": { + "deprecated": true, + "type": "string" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/v2/org/{org-name}/users": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "List users In org", - "description": "Get list of users in organization. (User Admin in org privileges required)", - "operationId": "listUsersInOrg", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "apiKeyName": { + "deprecated": true, + "type": "string" }, - { - "name": "exclude-from-team", - "in": "query", - "description": "Name of team to exclude members from", - "required": false, - "schema": { - "type": "string" - } + "apiKeyVehicle": { + "deprecated": true, + "type": "string" }, - { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } + "appName": { + "type": "string" }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } + "clientId": { + "type": "string" }, - { - "name": "q", - "in": "query", - "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", - "required": false, - "schema": { - "$ref": "#/components/schemas/SearchParams" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserListResponse" - } - } - } + "clientSecret": { + "type": "string" }, - "302": { - "description": "Found" + "realm": { + "type": "string" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "scopeSeparator": { + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "useBasicAuthenticationWithAccessCodeGrant": { + "type": "boolean" + } + }, + "type": "object" + }, + "ServiceAccess": { + "description": "List of actions that this role allows", + "properties": { + "accessLevels": { + "description": "List of access levels that this role allows", + "items": { + "description": "List of access levels that this role allows", + "type": "string" + }, + "type": "array" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "service": { + "description": "Service that this role allows", + "type": "string" + } + }, + "type": "object" + }, + "SwaggerResource": { + "properties": { + "location": { + "deprecated": true, + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "swaggerVersion": { + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "url": { + "type": "string" + } + }, + "type": "object" + }, + "TargetSystemUserIdentifier": { + "description": "Information about the user who is attempting to run the job", + "properties": { + "gid": { + "description": "gid of the user on this team", + "format": "int64", + "type": "integer" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "orgName": { + "description": "Org context for the job", + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "starfleetId": { + "description": "Starfleet ID of the user creating the job.", + "type": "string" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "teamName": { + "description": "Team context for the job", + "type": "string" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "uid": { + "description": "uid of the user on this team", + "format": "int64", + "type": "integer" }, - "451": { - "description": "Unavailable For Legal Reasons" + "userId": { + "description": "Unique ID of the user who submitted the job", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "Team": { + "description": "Information about the team", + "properties": { + "description": { + "description": "description of the team", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "id": { + "description": "unique Id of this team.", + "format": "int64", + "type": "integer" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isDeleted": { + "description": "indicates if the team is deleted or not", + "type": "boolean" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "team name", + "type": "string" + }, + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" } - } + }, + "type": "object" }, - "post": { - "tags": [ - "Users Management" - ], - "summary": "Creates a User in org", - "description": "Creates a User", - "operationId": "createUserInOrg", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "TeamCreateRequest": { + "description": "Request to create new Team", + "properties": { + "description": { + "description": "description of the team", + "maxLength": 255, + "type": "string" }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "name": { + "description": "team name", + "maxLength": 19, + "minLength": 2, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "TeamCreateResponse": { + "description": "response to an team creation request, includes unique team id", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "team": { + "$ref": "#/components/schemas/Team" + } + }, + "type": "object" + }, + "TeamListResponse": { + "description": "listing of all teams", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" }, - { - "name": "send-email", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": true - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" }, - { - "name": "idp-id", - "in": "query", - "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", - "required": false, - "schema": { - "type": "string" - } + "teams": { + "items": { + "$ref": "#/components/schemas/Team" + }, + "type": "array" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserCreateRequest" - } - } + }, + "type": "object" + }, + "TeamResponse": { + "description": "details about one team", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" }, - "required": true + "team": { + "$ref": "#/components/schemas/Team" + } }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserResponse" - } - } - } + "type": "object" + }, + "TeamUpdateRequest": { + "description": "object used to update information about existing team", + "properties": { + "description": { + "description": "description of the team", + "maxLength": 255, + "type": "string" }, - "302": { - "description": "Found" + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + } + }, + "type": "object" + }, + "UiConfiguration": { + "properties": { + "apisSorter": { + "deprecated": true, + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "deepLinking": { + "type": "boolean" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "defaultModelExpandDepth": { + "format": "int32", + "type": "integer" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "defaultModelRendering": { + "enum": [ + "example", + "model" + ], + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "defaultModelsExpandDepth": { + "format": "int32", + "type": "integer" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "displayOperationId": { + "type": "boolean" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "displayRequestDuration": { + "type": "boolean" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "docExpansion": { + "enum": [ + "none", + "list", + "full" + ], + "type": "string" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "filter": { + "type": "object" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "jsonEditor": { + "deprecated": true, + "type": "boolean" }, - "451": { - "description": "Unavailable For Legal Reasons" + "maxDisplayedTags": { + "format": "int32", + "type": "integer" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "operationsSorter": { + "enum": [ + "alpha", + "method" + ], + "type": "string" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "showExtensions": { + "type": "boolean" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "showRequestHeaders": { + "deprecated": true, + "type": "boolean" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/v2/org/{org-name}/teams": { - "get": { - "tags": [ - "Teams" - ], - "summary": "List Teams", - "description": "List all Teams", - "operationId": "listTeams", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { + "supportedSubmitMethods": { + "items": { "type": "string" - } + }, + "type": "array" }, - { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } + "tagsSorter": { + "enum": [ + "alpha" + ], + "type": "string" + }, + "validatorUrl": { + "type": "string" } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamListResponse" - } - } - } + }, + "type": "object" + }, + "User": { + "description": "information about the user", + "properties": { + "clientId": { + "description": "unique auth client id of this user.", + "type": "string" }, - "302": { - "description": "Found" + "createdDate": { + "description": "Created date for this user", + "type": "string" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "email": { + "description": "Email address of the user. This should be unique.", + "maxLength": 128, + "minLength": 7, + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "firstLoginDate": { + "description": "Last time the user logged in", + "type": "string" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasBetaAccess": { + "description": "Determines if the user has beta access", + "type": "boolean" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasProfile": { + "description": "indicate if user profile has been completed.", + "type": "boolean" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedAODTEULA": { + "description": "indicates if user has accepted AODT End User License Agreement.", + "type": "boolean" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedAiFoundryPartnershipsEULA": { + "description": "indicates if user has accepted AI Foundry Partnerships eula", + "type": "boolean" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedBaseCommandEULA": { + "description": "indicates if user has accepted Base Command End User License Agreement.", + "type": "boolean" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedBaseCommandManagerEULA": { + "description": "indicates if user has accepted Base Command Manager End User License Agreement.", + "type": "boolean" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedBioNeMoEULA": { + "description": "indicates if user has accepted BioNeMo End User License Agreement.", + "type": "boolean" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedContainerPublishingEULA": { + "description": "indicates if user has accepted container publishing eula", + "type": "boolean" }, - "451": { - "description": "Unavailable For Legal Reasons" + "hasSignedCuOptEULA": { + "description": "indicates if user has accepted CuOpt eula", + "type": "boolean" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedEULA": { + "description": "Determines if the user has signed the NGC End User License Agreement.", + "type": "boolean" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedEarth2EULA": { + "description": "indicates if user has accepted Earth-2 eula", + "type": "boolean" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedEgxEULA": { + "description": "[Deprecated] indicates if user has accepted EGX End User License Agreement.", + "type": "boolean" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "Teams" - ], - "summary": "Create Team", - "description": "Create team in org. (Org Admin Privileges Required)", - "operationId": "createTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamCreateRequest" - } - } + "hasSignedFleetCommandEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamCreateResponse" - } - } - } + "hasSignedLlmEULA": { + "description": "indicates if user has accepted LLM End User License Agreement.", + "type": "boolean" }, - "302": { - "description": "Found" + "hasSignedNVAIEEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedNVQCEULA": { + "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement.", + "type": "boolean" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedNvidiaEULA": { + "description": "Determines if the user has signed the NVIDIA End User License Agreement.", + "type": "boolean" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedOmniverseEULA": { + "description": "indicates if user has accepted Omniverse End User License Agreement.", + "type": "boolean" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedPrivacyPolicy": { + "description": "Determines if the user has signed the Privacy Policy.", + "type": "boolean" + }, + "hasSignedThirdPartyRegistryShareEULA": { + "description": "indicates if user has consented to share their registration info with other parties", + "type": "boolean" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSubscribedToEmail": { + "description": "Determines if the user has opted in email subscription.", + "type": "boolean" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "id": { + "description": "unique Id of this user.", + "format": "int64", + "type": "integer" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "idpType": { + "description": "Type of IDP, Identity Provider. Used for login.", + "enum": [ + "NVIDIA", + "ENTERPRISE" + ], + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isActive": { + "description": "Determines if the user is active or not.", + "type": "boolean" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isDeleted": { + "description": "Indicates if user was deleted from the system.", + "type": "boolean" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isSAML": { + "description": "Determines if the user is a SAML account or not.", + "type": "boolean" }, - "451": { - "description": "Unavailable For Legal Reasons" + "jobPositionTitle": { + "description": "Title of user's job position.", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "lastLoginDate": { + "description": "Last time the user logged in", + "type": "string" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "roles": { + "description": "List of roles that the user have", + "items": { + "$ref": "#/components/schemas/UserRole" + }, + "type": "array" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/v2/org/{org-name}/team/{team-name}/users/{id}": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "Get User in team", - "description": "Get User details within team context", - "operationId": "getUserInTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "starfleetId": { + "description": "unique starfleet id of this user.", + "type": "string" }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "storageQuota": { + "description": "Storage quota for this user.", + "items": { + "$ref": "#/components/schemas/UserStorageQuota" + }, + "type": "array" }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "updatedDate": { + "description": "Updated date for this user", + "type": "string" }, - { - "name": "idp-id", - "in": "query", - "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", - "required": false, - "schema": { - "type": "string" - } + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + }, + "verified": { + "description": "Is user's email or phone number is verified", + "type": "boolean" } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserResponse" - } - } - } + }, + "type": "object" + }, + "UserCreateRequest": { + "description": "object used request user creation in an existing org", + "properties": { + "email": { + "description": "Email address of the user. This should be unique.", + "maxLength": 128, + "minLength": 6, + "type": "string" }, - "302": { - "description": "Found" + "emailOptIn": { + "description": "indicates if user has opt in to nvidia emails", + "type": "boolean" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "eulaAccepted": { + "description": "indicates if user has accepted EULA", + "type": "boolean" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "roleType": { + "description": "DEPRECATED - use roleTypes which allows multiple roles", + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "roleTypes": { + "description": "feature roles to give to the user", + "items": { + "description": "feature roles to give to the user", + "type": "string" + }, + "type": "array" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "salesforceContactJobRole": { + "description": "user job role", + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + } + }, + "required": [ + "email" + ], + "type": "object" + }, + "UserInvitation": { + "description": "User invitation to an NGC org or team", + "properties": { + "createdDate": { + "description": "Date on which the invitation was created. (ISO-8601 format)", + "type": "string" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "email": { + "description": "Email address of the user.", + "maxLength": 128, + "minLength": 7, + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "id": { + "description": "Unique invitation ID", + "type": "string" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "isProcessed": { + "description": "Flag indicating if the invitation has already been accepted by the user.", + "type": "boolean" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" }, - "451": { - "description": "Unavailable For Legal Reasons" + "org": { + "description": "Org to which a user was invited.", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "roles": { + "description": "List of roles that the user have.", + "items": { + "description": "List of roles that the user have.", + "type": "string" + }, + "type": "array" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "team": { + "description": "Team to which a user was invited.", + "type": "string" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "type": { + "description": "Type of invitation. The invitation is either to an organization or to a team within organization.", + "enum": [ + "ORGANIZATION", + "TEAM" + ], + "type": "string" + } + }, + "type": "object" + }, + "UserInvitationListResponse": { + "description": "Response for a list of user invitations.", + "properties": { + "invitations": { + "description": "List of invitations.", + "items": { + "$ref": "#/components/schemas/UserInvitation" + }, + "type": "array" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" } - } + }, + "type": "object" }, - "post": { - "tags": [ - "Users Management" - ], - "summary": "Add a User to team", - "description": "Add a User to team", - "operationId": "addUserToTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "UserKeyResponse": { + "description": "response to a request to access key such as docker token", + "properties": { + "cloudNfsKey": { + "type": "string" }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "cloudNfsKeyPwd": { + "type": "string" }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "cloudNfsUserName": { + "type": "string" }, - { - "name": "user role", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } + "key": { + "maxLength": 255, + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" } + }, + "required": [ + "key" ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "type": "object" + }, + "UserListResponse": { + "description": "Response for List User reponse", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" }, - "302": { - "description": "Found" + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "users": { + "description": "information about the user", + "items": { + "$ref": "#/components/schemas/User" + }, + "type": "array" + } + }, + "type": "object" + }, + "UserMetadata": { + "description": "Metadata information about the user.", + "properties": { + "company": { + "description": "Name of the company", + "maxLength": 128, + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "companyUrl": { + "description": "Company URL", + "type": "string" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "country": { + "description": "Country of the user", + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "firstName": { + "description": "User's first name", + "maxLength": 255, + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "industry": { + "description": "Industry segment", + "type": "string" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "interest": { + "description": "List of development areas that user has interest", + "items": { + "description": "List of development areas that user has interest", + "type": "string" + }, + "type": "array" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "lastName": { + "description": "User's last name", + "maxLength": 255, + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "role": { + "description": "Role of the user in the company", + "type": "string" + } + }, + "type": "object" + }, + "UserNcaInvitationRequest": { + "description": "NCA User invitation request", + "properties": { + "email": { + "description": "Is the user email", + "maxLength": 128, + "minLength": 7, + "type": "string" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "invitationExpirationIn": { + "description": "Is the numbers of days the invitation will expire", + "format": "int32", + "type": "integer" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "inviteAs": { + "description": "Nca allow users to be invited as Admin and as Member", + "enum": [ + "ADMIN", + "MEMBER" + ], + "type": "string" }, - "451": { - "description": "Unavailable For Legal Reasons" + "message": { + "description": "Is a message to the new user", + "type": "string" + } + }, + "type": "object" + }, + "UserResponse": { + "description": " about one user", + "properties": { + "activationToken": { + "description": "token needed to activate the user to enable login and other features", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "ncaRole": { + "description": "NCA role", + "enum": [ + "UNKNOWN", + "ADMINISTRATOR", + "MEMBER", + "OWNER", + "PENDING" + ], + "type": "string" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "user": { + "$ref": "#/components/schemas/User" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "userRoles": { + "description": "DEPRECATED - Please use roles inside user", + "items": { + "$ref": "#/components/schemas/UserRole" + }, + "type": "array" } - } + }, + "type": "object" }, - "delete": { - "tags": [ - "Users Management" - ], - "summary": "Removes User from team", - "description": "Removes User from team. (Org Admin or Team Admin Privileges Required).", - "operationId": "removeUserFromTeam_1", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "UserRole": { + "description": "List of roles that the user have", + "properties": { + "org": { + "$ref": "#/components/schemas/Organization" }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { + "orgRoles": { + "description": "List of org role types that the user have", + "items": { + "description": "List of org role types that the user have", "type": "string" - } + }, + "type": "array" }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { + "roleTypes": { + "description": "DEPRECATED - List of role types that the user have", + "items": { + "description": "DEPRECATED - List of role types that the user have", "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + }, + "type": "array" }, - "302": { - "description": "Found" + "targetSystemUserIdentifier": { + "$ref": "#/components/schemas/TargetSystemUserIdentifier" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "team": { + "$ref": "#/components/schemas/Team" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "teamRoles": { + "description": "List of team role types that the user have", + "items": { + "description": "List of team role types that the user have", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "UserRoleDefinition": { + "description": "List of roles", + "properties": { + "allowedActions": { + "description": "List of actions that this role allows", + "items": { + "$ref": "#/components/schemas/ServiceAccess" + }, + "type": "array" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "displayName": { + "description": "Display Name of the role", + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "name": { + "description": "Name of the role", + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "product": { + "$ref": "#/components/schemas/RoleProduct" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "shortDisplayName": { + "description": "Short Display Name of the role", + "type": "string" + } + }, + "type": "object" + }, + "UserRoleDefinitionsResponse": { + "description": "Response containing all the roles defined in NGC and their allowed actions", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "roles": { + "description": "List of roles", + "items": { + "$ref": "#/components/schemas/UserRoleDefinition" + }, + "type": "array" + } + }, + "type": "object" + }, + "UserStorageQuota": { + "description": "represents user storage quota for a given ace and available unused storage", + "properties": { + "aceId": { + "description": "id of the ace", + "format": "int64", + "type": "integer" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "aceName": { + "description": "name of the ace", + "type": "string" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "available": { + "description": "Available space in bytes", + "format": "int64", + "type": "integer" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "datasetCount": { + "description": "Number of datasets that are a part of user's used storage", + "format": "int64", + "type": "integer" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "datasetsUsage": { + "description": "Space used by datasets in bytes", + "format": "int64", + "type": "integer" }, - "451": { - "description": "Unavailable For Legal Reasons" + "orgName": { + "description": "The org name that this user quota tied to. This is needed for analytics", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "quota": { + "description": "Assigned quota in bytes", + "format": "int64", + "type": "integer" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "resultsetCount": { + "description": "Number of resultsets that are a part of user's used storage", + "format": "int64", + "type": "integer" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "resultsetsUsage": { + "description": "Space used by resultsets in bytes", + "format": "int64", + "type": "integer" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/v2/org/{org-name}/team/{team-name}/users": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "List users in team", - "description": "Get list of users in team. (User Admin in team privileges required)", - "operationId": "listUsersInTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "storageClusterDescription": { + "description": "Description of this storage cluster", + "type": "string" }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "storageClusterName": { + "description": "Name of storage cluster", + "type": "string" }, - { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } + "storageClusterUuid": { + "description": "Identifier to this storage cluster", + "type": "string" }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } + "workspacesCount": { + "description": "Number of workspaces that are a part of user's used storage", + "format": "int64", + "type": "integer" }, - { - "name": "q", - "in": "query", - "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", - "required": false, - "schema": { - "$ref": "#/components/schemas/SearchParams" - } + "workspacesUsage": { + "description": "Space used by workspaces in bytes", + "format": "int64", + "type": "integer" } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserListResponse" - } - } - } - }, - "302": { - "description": "Found" + }, + "type": "object" + }, + "UserUpdateRequest": { + "description": "object used to request user update", + "properties": { + "hasEmailOptIn": { + "description": "indicates if user has opt in to nvidia emails", + "type": "boolean" }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedAODTEULA": { + "description": "indicates if user has accepted AODT End User License Agreement.", + "type": "boolean" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedAiFoundryPartnershipsEULA": { + "description": "indicates if user has accepted AI Foundry Partnerships End User License Agreement.", + "type": "boolean" }, - "402": { - "description": "Payment Required", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedBaseCommandEULA": { + "description": "indicates if user has accepted Base Command EULA", + "type": "boolean" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedBaseCommandManagerEULA": { + "description": "indicates if user has accepted Base Command Manager End User License Agreement.", + "type": "boolean" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedBioNeMoEULA": { + "description": "indicates if user has accepted BioNeMo End User License Agreement.", + "type": "boolean" }, - "405": { - "description": "Method Not Allowed", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedContainerPublishingEULA": { + "description": "indicates if user has accepted container publishing eula", + "type": "boolean" }, - "409": { - "description": "Object Exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedCuOptEULA": { + "description": "indicates if user has accepted CuOpt End User License Agreement.", + "type": "boolean" }, - "415": { - "description": "Unsupported Media Type", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedEULA": { + "description": "indicates if user has accepted NGC EULA", + "type": "boolean" }, - "422": { - "description": "Unprocessable Entity", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedEarth2EULA": { + "description": "indicates if user has accepted Earth-2 End User License Agreement.", + "type": "boolean" }, - "429": { - "description": "Too Many Requests", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedEgxEULA": { + "description": "indicates if user has accepted EGX EULA", + "type": "boolean" }, - "451": { - "description": "Unavailable For Legal Reasons" + "hasSignedFleetCommandEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedLlmEULA": { + "description": "indicates if user has accepted LLM End User License Agreement.", + "type": "boolean" }, - "501": { - "description": "Not Implemented", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedNVAIEEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" }, - "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } + "hasSignedNVQCEULA": { + "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement.", + "type": "boolean" }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "Users Management" - ], - "summary": "Creates a User in team", - "description": "Creates a User and add them to a team within the org.", - "operationId": "createUserInTeam", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "hasSignedNvidiaEULA": { + "description": "indicates if user has accepted NVIDIA EULA", + "type": "boolean" }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } + "hasSignedOmniverseEULA": { + "description": "indicates if user has accepted Omniverse End User License Agreement.", + "type": "boolean" }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "hasSignedPrivacyPolicy": { + "description": "indicates if the user has signed the Privacy Policy", + "type": "boolean" }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "hasSignedThirdPartyRegistryShareEULA": { + "description": "indicates if user has consented to share their registration info with other parties", + "type": "boolean" }, - { - "name": "send-email", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": true - } + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" }, - { - "name": "idp-id", - "in": "query", - "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", - "required": false, - "schema": { - "type": "string" - } + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserCreateRequest" - } - } + }, + "type": "object" + }, + "UsersInfo": { + "description": "Users information.", + "properties": { + "totalUsers": { + "description": "Total number of users.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "ValidateOrgQueryParams": { + "description": "Object for defining params to validate org.", + "properties": { + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" }, - "required": true + "pecSfdcId": { + "description": "Product end customer salesforce.com id (external customer id) for enterprise product.", + "type": "string" + }, + "productSubscriptions": { + "description": "Product Subscriptions.", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" + } }, + "required": [ + "orgOwner", + "pecSfdcId", + "productSubscriptions" + ], + "type": "object" + } + }, + "securitySchemes": { + "api-key": { + "description": "Authenticate your API requests by adding the API key from https://ngc.nvidia.com/setup/api-key", + "in": "header", + "name": "Authorization", + "type": "apiKey" + }, + "bearer-token": { + "bearerFormat": "JWT", + "description": "Users can issue API tokens by calling GET https://ngc.authn.nvidia.com/token?scope=group/ngc[:[/]].\nWhenever the user wants to access a protected route or resource, the user must get the token for that particular organization / team", + "scheme": "bearer", + "type": "http" + } + } + }, + "info": { + "description": "The NGC Web API is an interface for querying information from and enacting change in a NGC world. \n", + "license": { + "name": "Legal Notices", + "url": "https://www.nvidia.com/en-us/legal_info" + }, + "title": "NGC API Documentation", + "version": "v3.249.17" + }, + "openapi": "3.0.1", + "paths": { + "/health": { + "get": { + "description": "Used to check the health status of the web service only", + "operationId": "status", "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/HealthResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Web Service Health Status", + "tags": [ + "Services" + ] } }, - "/v2/admin/users/{user-id}/org-owner-backfill": { - "post": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Backfill the org owner for individual users", - "description": "Backfill the org owner for individual users", - "operationId": "backfillOrgOwnerByUser", + "/health/all": { + "get": { + "description": "Used to get health status of all services", + "operationId": "statusDetails", "parameters": [ { - "name": "User ID of the user", - "in": "path", - "required": true, + "description": "boolean value to indicating to show details or not", + "in": "query", + "name": "showDetails", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + }, + { + "description": "secret value that validates the call in order to show details", + "in": "query", + "name": "secret", + "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/HealthResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "All Service Health Status", + "tags": [ + "Services" + ] } }, - "/v2/admin/users/{id}/migrate-deprecated-roles": { - "post": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Migrate User Deprecated Roles", - "description": "Migrate User Deprecated Roles.", - "operationId": "migrateUserDeprecatedRoles", - "parameters": [ - { - "name": "user id (not email)", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "/public-keys": { + "get": { + "description": "Used to check the health status of the web service only", + "operationId": "getPublicKey", "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "items": { + "type": "string" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Web Service Health Status", + "tags": [ + "Services" + ] } }, - "/v2/admin/users/{id}/crm-sync": { - "post": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Sync crm id with user email", - "description": "Sync crm id with user email (Super Admin privileges required)", - "operationId": "syncCrmUser", + "/roles": { + "get": { + "description": "List of roles in NGC and their scopes", + "operationId": "getRoles", "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "description": "flag indicate if hidden roles should be included", + "in": "query", + "name": "show-hidden", + "required": false, "schema": { - "type": "integer", - "format": "int64" + "default": false, + "type": "boolean" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/UserRoleDefinitionsResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "NGC Roles", + "tags": [ + "Services" + ] } }, - "/v2/admin/orgs": { - "post": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "Create Organization", - "description": "Create a new organization. (SuperAdmin privileges required)", - "operationId": "createOrganization", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgCreateRequest" - } - } - }, - "required": true - }, + "/swagger-resources": { + "delete": { + "operationId": "swaggerResources_6", "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/OrgResponse" + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/admin/org/{org-name}/users/{id}": { - "post": { + }, "tags": [ - "Super Admin User Controller" - ], - "summary": "Add existing User to an Org", - "description": "Add existing User to an Org", - "operationId": "addUserToOrg", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user role, defaults to REGISTRY_READ", - "in": "query", - "required": false, - "schema": { - "type": "string", - "default": "REGISTRY_READ" - } - } - ], + "api-resource-controller" + ] + }, + "get": { + "operationId": "swaggerResources_4", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - }, - "delete": { "tags": [ - "Super Admin User Controller" - ], - "summary": "Remove User from org", - "description": "Remove User from org.", - "operationId": "removeUserFromOrg_2", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "api-resource-controller" + ] + }, + "head": { + "operationId": "swaggerResources_1", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/Response" + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } - } - } - } - }, - "/v2/admin/org/{org-name}/users": { - "post": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Create User", - "description": "Create an user in an Organization (Super Admin privileges required)", - "operationId": "createUserInOrg_1", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "send-email", - "in": "query", - "description": "Boolean to send email notification, default is true", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "idp-id", - "in": "query", - "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", - "required": false, - "schema": { - "type": "string" - } + }, + "description": "Service Unavailable" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserCreateRequest" - } - } - }, - "required": true }, + "tags": [ + "api-resource-controller" + ] + }, + "options": { + "operationId": "swaggerResources", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/admin/org/{org-name}/team/{team-name}/users/{id}": { - "post": { + }, "tags": [ - "Super Admin User Controller" - ], - "summary": "Add existing User to an Team", - "description": "Add existing User to an Team", - "operationId": "addUserToTeam_1", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user role, defaults to REGISTRY_READ", - "in": "query", - "required": false, - "schema": { - "type": "string", - "default": "REGISTRY_READ" - } - } - ], + "api-resource-controller" + ] + }, + "patch": { + "operationId": "swaggerResources_2", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/v2/admin/org/{org-name}/team/{team-name}/users": { - "post": { "tags": [ - "Super Admin User Controller" - ], - "summary": "Create User", - "description": "Create an Org-Admin User (Super Admin privileges required)", - "operationId": "createUserInTeam_1", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "send-email", - "in": "query", - "description": "Boolean to send email notification, default is true", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "idp-id", - "in": "query", - "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", - "required": false, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserCreateRequest" - } - } - }, - "required": true - }, + "api-resource-controller" + ] + }, + "post": { + "operationId": "swaggerResources_3", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/admin/org/{org-name}/org-owner-backfill": { - "post": { + }, "tags": [ - "Super Admin User Controller" - ], - "summary": "Backfill the org owner for users", - "description": "Backfill the org owner for users", - "operationId": "backfillOrgOwnerByOrg", - "parameters": [ - { - "name": "Org Name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "api-resource-controller" + ] + }, + "put": { + "operationId": "swaggerResources_5", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/Response" + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "tags": [ + "api-resource-controller" + ] } }, - "/v2/admin/backfill-orgs-to-kratos": { - "post": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "Backfill Orgs to Kratos", - "description": "Backfill Orgs to Kratos", - "operationId": "backfillOrgsToKratos", + "/swagger-resources/configuration/security": { + "delete": { + "operationId": "securityConfiguration_6", "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/SecurityConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v3/orgs/{org-name}/users/{user-email-or-id}/add-role": { - "patch": { + }, "tags": [ - "Users Management" - ], - "summary": "Invite user or add role in org", - "description": "Invite if user does not exist, otherwise add role in org", - "operationId": "addRoleOrInviteUserToOrg", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user-email-or-id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "roles", - "in": "query", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], + "api-resource-controller" + ] + }, + "get": { + "operationId": "securityConfiguration_4", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/SecurityConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } - } - } - } - }, - "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/add-role": { - "patch": { - "tags": [ - "Users Management" - ], - "summary": "Invite user or add role in team", - "description": "Invite if user does not exist, otherwise add role in team", - "operationId": "addRoleOrInviteUserToTeam", - "parameters": [ - { - "name": "ncid", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "VisitorID", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user-email-or-id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + }, + "description": "Bad Gateway" }, - { - "name": "roles", - "in": "query", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } - } + }, + "description": "Service Unavailable" } - ], + }, + "tags": [ + "api-resource-controller" + ] + }, + "head": { + "operationId": "securityConfiguration_1", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/SecurityConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v3/admin/org/{org-name}": { - "get": { + }, "tags": [ - "Super Admin Org Controller" - ], - "summary": "Get Organization or Proto Organization", - "description": "Get organization or proto organization info. (SuperAdmin privileges required)", - "operationId": "getOrg", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude-fields", - "in": "query", - "description": "The list of fields to hide from the response", - "required": false, - "schema": { - "uniqueItems": true, - "type": "array", - "items": { - "type": "string" - } - } - } - ], + "api-resource-controller" + ] + }, + "options": { + "operationId": "securityConfiguration", "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/OrgResponse" + "$ref": "#/components/schemas/SecurityConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "tags": [ + "api-resource-controller" + ] }, "patch": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "Update Organization", - "description": "Update org information and settings. Superadmin privileges required", - "operationId": "updateOrg", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgUpdateRequest" - } - } - }, - "required": true - }, + "operationId": "securityConfiguration_2", "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/OrgResponse" + "$ref": "#/components/schemas/SecurityConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/users/me": { - "get": { + }, "tags": [ - "Users Management" - ], - "summary": "Who am I?", - "description": "What am I?", - "operationId": "whoAmI", - "parameters": [ - { - "name": "org-name", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - } - ], + "api-resource-controller" + ] + }, + "post": { + "operationId": "securityConfiguration_3", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/SecurityConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "patch": { - "tags": [ - "Users Management" - ], - "summary": "Edit current user profile", - "description": "Edit current user profile", - "operationId": "editUserProfile", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserUpdateRequest" - } - } - }, - "required": true }, + "tags": [ + "api-resource-controller" + ] + }, + "put": { + "operationId": "securityConfiguration_5", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/SecurityConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "tags": [ + "api-resource-controller" + ] } }, - "/v2/orgs/{org-name}": { - "get": { - "tags": [ - "Orgs" - ], - "summary": "Get Organization", - "description": "Get organization information", - "operationId": "getOrganization", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "/swagger-resources/configuration/ui": { + "delete": { + "operationId": "uiConfiguration_6", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/OrgResponse" + "$ref": "#/components/schemas/UiConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } - } - } - }, - "patch": { - "tags": [ - "Orgs" - ], - "summary": "Update Organization", - "description": "Update organization information", - "operationId": "updateOrganization", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + }, + "description": "Service Unavailable" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgProfileUpdateRequest" - } - } - }, - "required": true }, + "tags": [ + "api-resource-controller" + ] + }, + "get": { + "operationId": "uiConfiguration_4", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/OrgResponse" + "$ref": "#/components/schemas/UiConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/org/{org-name}/users/{id}/update-role": { - "patch": { + }, "tags": [ - "Users Management" - ], - "summary": "Update User Role in org", - "description": "Update User Role in org", - "operationId": "updateUserRole", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "roles", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], + "api-resource-controller" + ] + }, + "head": { + "operationId": "uiConfiguration_1", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/UiConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/v2/org/{org-name}/users/{id}/add-role": { - "patch": { "tags": [ - "Users Management" - ], - "summary": "Add User Role in org", - "description": "Add User Role in org.", - "operationId": "addUserRole", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "roles", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], + "api-resource-controller" + ] + }, + "options": { + "operationId": "uiConfiguration", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/UiConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/v2/org/{org-name}/teams/{team-name}": { - "get": { "tags": [ - "Teams" - ], - "summary": "Get Team", - "description": "Get Team by name", - "operationId": "getTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "api-resource-controller" + ] + }, + "patch": { + "operationId": "uiConfiguration_2", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/UiConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "delete": { + }, "tags": [ - "Teams" - ], - "summary": "Delete Team", - "description": "Delete a Team", - "operationId": "deleteTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "api-resource-controller" + ] + }, + "post": { + "operationId": "uiConfiguration_3", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/UiConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } - } - } - }, - "patch": { - "tags": [ - "Teams" - ], - "summary": "Edit Team", - "description": "Edit a Team", - "operationId": "editTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + }, + "description": "Service Unavailable" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamUpdateRequest" - } - } - }, - "required": true }, + "tags": [ + "api-resource-controller" + ] + }, + "put": { + "operationId": "uiConfiguration_5", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/UiConfiguration" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Conflict" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Server Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } - } - } - } - }, - "/v2/org/{org-name}/team/{team-name}/users/{id}/update-role": { - "patch": { - "tags": [ - "Users Management" - ], - "summary": "Update User Role in team", - "description": "Update User Role in team", - "operationId": "updateUserRole_1", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "roles", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } - ], + }, + "tags": [ + "api-resource-controller" + ] + } + }, + "/v2/admin/backfill-orgs-to-kratos": { + "post": { + "description": "Backfill Orgs to Kratos", + "operationId": "backfillOrgsToKratos", "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true + "summary": "Backfill Orgs to Kratos", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/v2/org/{org-name}/team/{team-name}/users/{id}/add-role": { - "patch": { - "tags": [ - "Users Management" - ], - "summary": "Add User Role in team", - "description": "Add User Role in team.", - "operationId": "addUserRole_1", + "/v2/admin/entitlements": { + "get": { + "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", + "operationId": "listOrganizationsWithEntitlement_1", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, + "description": "filter by product-name", + "in": "query", + "name": "product-name", + "required": false, "schema": { "type": "string" } }, { - "name": "roles", + "description": "get is paid subscription entitlements", "in": "query", + "name": "is-paid-subscription", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "boolean" } } ], "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/OrgListEntitlementResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true + "summary": "List Organizations with Entitlements", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/v2/admin/users/invite": { - "patch": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Re invite user", - "description": "Invite an existing user again (Super Admin privileges required)", - "operationId": "emailInviteToUser", + "/v2/admin/org": { + "get": { + "description": "List all organizations. (SuperAdmin privileges required)", + "operationId": "listOrganizations_2", "parameters": [ { - "name": "email", + "description": "The page number of result", "in": "query", - "required": true, + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "Org name to search", + "in": "query", + "name": "org-name", + "required": false, "schema": { "type": "string" } }, { - "name": "send-email", + "description": "Org description to search", "in": "query", - "description": "Boolean to send email notification, default is true", + "name": "org-desc", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Org Type to search", + "in": "query", + "name": "org-type", "required": false, "schema": { - "type": "boolean", - "default": true + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + { + "description": "PEC ID to search", + "in": "query", + "name": "pec-id", + "required": false, + "schema": { + "type": "string" } } ], "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/OrgListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true + "summary": "List Organizations", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/v2/admin/org/{org-name}": { + "/v2/admin/org/validate": { "get": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "Get Organization", - "description": "Get organization info. (SuperAdmin privileges required)", - "operationId": "getOrg_1", + "description": "List all organizations that match the validate org params", + "operationId": "listValidatedOrganizations", "parameters": [ { - "name": "org-name", - "in": "path", + "description": "Validate Organization Parameters", + "in": "query", + "name": "q", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/ValidateOrgQueryParams" } } ], "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/OrgResponse" + "$ref": "#/components/schemas/OrgListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "patch": { + }, + "summary": "List Validated Organizations", "tags": [ "Super Admin Org Controller" - ], - "summary": "Update Organization", - "description": "Update org information and settings. Superadmin privileges required", - "operationId": "updateOrg_1", + ] + } + }, + "/v2/admin/org/{org_name}": { + "get": { + "description": "Get organization info. (SuperAdmin privileges required)", + "operationId": "getOrg_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgUpdateRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/v2/admin/org/{org-name}/users/{id}/update-role": { - "patch": { + "summary": "Get Organization", "tags": [ - "Super Admin User Controller" - ], - "summary": "Update User Role in org", - "description": "Update User Role in org", - "operationId": "updateUserRole_2", + "Super Admin Org Controller" + ] + }, + "patch": { + "deprecated": true, + "description": "Update org information and settings. Superadmin privileges required", + "operationId": "updateOrg_1", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } - }, - { - "name": "roles", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true + "summary": "Update Organization", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/v2/admin/org/{org-name}/users/{id}/add-role": { - "patch": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Add user role in org", - "description": "Add user role in org.", - "operationId": "addUserRole_2", + "/v2/admin/org/{org_name}/entitlements": { + "get": { + "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", + "operationId": "listOrganizationsWithEntitlement", "parameters": [ { - "name": "org-name", + "description": "filter by org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", - "in": "path", - "required": true, + "description": "filter by product-name", + "in": "query", + "name": "product-name", + "required": false, "schema": { "type": "string" } }, { - "name": "roles", + "description": "get is paid subscription entitlements", "in": "query", + "name": "is-paid-subscription", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "boolean" } } ], "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/OrgListEntitlementResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/v2/admin/org/{org-name}/teams/{team-name}": { - "get": { + "summary": "List Organizations with Entitlements", "tags": [ "Super Admin Org Controller" - ], - "summary": "Get Team", - "description": "Get one team", - "operationId": "getTeam_1", + ] + } + }, + "/v2/admin/org/{org_name}/org-owner-backfill": { + "post": { + "description": "Backfill the org owner for users", + "operationId": "backfillOrgOwnerByOrg", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" @@ -9275,183 +7655,204 @@ ], "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "patch": { + }, + "summary": "Backfill the org owner for users", "tags": [ - "Super Admin Org Controller" - ], - "summary": "Edit Team", - "description": "Edit a Team", - "operationId": "editTeam_1", + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org_name}/team/{team_name}/users": { + "post": { + "description": "Create an Org-Admin User (Super Admin privileges required)", + "operationId": "createUserInTeam_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } }, { - "name": "team-name", - "in": "path", - "required": true, + "description": "Boolean to send email notification, default is true", + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "in": "query", + "name": "idp-id", + "required": false, "schema": { "type": "string" } @@ -9461,7 +7862,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamUpdateRequest" + "$ref": "#/components/schemas/UserCreateRequest" } } }, @@ -9469,777 +7870,839 @@ }, "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/admin/org/{org-name}/team/{team-name}/users/{id}/add-role": { - "patch": { + }, + "summary": "Create User", "tags": [ "Super Admin User Controller" - ], - "summary": "Add user role in team", - "description": "Add user role in team.", - "operationId": "addUserRole_3", + ] + } + }, + "/v2/admin/org/{org_name}/team/{team_name}/users/{id}": { + "post": { + "deprecated": true, + "description": "Add existing User to an Team", + "operationId": "addUserToTeam_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "team-name", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", "in": "path", + "name": "id", "required": true, "schema": { "type": "string" } - }, - { - "name": "roles", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true + "summary": "Add existing User to an Team", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/ping": { - "head": { - "tags": [ - "Users Management" - ], - "summary": "Head ping (heartbeat)", - "description": "A lightweight ping call (heartbeat). This would allow UI to show different overlays in case there is any problem with the subscription or if the user has not accepted TOU", - "operationId": "headPing", + "/v2/admin/org/{org_name}/team/{team_name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add user role in team.", + "operationId": "addUserRole_3", "parameters": [ { - "name": "Org name", - "in": "query", - "required": false, + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, "schema": { "type": "string" } }, { - "name": "Product name", "in": "query", + "name": "roles", "required": false, "schema": { - "type": "string" + "items": { + "type": "string" + }, + "type": "array" } } ], "responses": { "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Add user role in team", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/admin/org/{org-name}/entitlements": { - "get": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "List Organizations with Entitlements", - "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", - "operationId": "listOrganizationsWithEntitlement", + "/v2/admin/org/{org_name}/team/{team_name}/users/{id}/remove-role": { + "delete": { + "deprecated": true, + "description": "Remove user role in team (if the last role is removed, the user is removed from the team).", + "operationId": "removeUserRole_3", "parameters": [ { - "name": "org-name", "in": "path", - "description": "filter by org-name", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "product-name", - "in": "query", - "description": "filter by product-name", - "required": false, + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, "schema": { "type": "string" } }, { - "name": "is-paid-subscription", "in": "query", - "description": "get is paid subscription entitlements", + "name": "roles", "required": false, "schema": { - "type": "boolean" + "items": { + "type": "string" + }, + "type": "array" } } ], "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/OrgListEntitlementResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Remove user role in team", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/admin/entitlements": { + "/v2/admin/org/{org_name}/teams": { "get": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "List Organizations with Entitlements", - "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", - "operationId": "listOrganizationsWithEntitlement_1", + "description": "List all Teams", + "operationId": "listTeams_1", "parameters": [ { - "name": "org-name", "in": "path", - "description": "filter by org-name", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "product-name", + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "Team name to search", + "in": "query", + "name": "team-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Get all team that has scan by default only", "in": "query", - "description": "filter by product-name", + "name": "scan-by-default", "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "name": "is-paid-subscription", + "description": "Get all team that has scan allow override only", "in": "query", - "description": "get is paid subscription entitlements", + "name": "scan-allow-override", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Get all team that has scan show results only", + "in": "query", + "name": "scan-show-results", "required": false, "schema": { "type": "boolean" @@ -10248,187 +8711,185 @@ ], "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/OrgListEntitlementResponse" + "$ref": "#/components/schemas/TeamListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "List Teams", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/version": { + "/v2/admin/org/{org_name}/teams/{team_name}": { "get": { - "tags": [ - "Services" - ], - "summary": "Version Number", - "description": "Used to get the latest version number of a given package.", - "operationId": "getLatestPackageVersion", + "description": "Get one team", + "operationId": "getTeam_1", "parameters": [ { - "name": "repo", - "in": "query", - "description": "repository of package", - "required": false, + "in": "path", + "name": "org_name", + "required": true, "schema": { "type": "string" } }, { - "name": "package", - "in": "query", - "description": "name of package", - "required": false, + "in": "path", + "name": "team_name", + "required": true, "schema": { "type": "string" } @@ -10436,557 +8897,585 @@ ], "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/PackageVersionListResponse" + "$ref": "#/components/schemas/TeamResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v3/orgs/{org-name}/users/{user-email-or-id}": { - "get": { + }, + "summary": "Get Team", "tags": [ - "Users Management" - ], - "summary": "Get user in an org by email or id.", - "description": "Get info and role/invitation in an org by email or id", - "operationId": "listUserRolesInOrg", + "Super Admin Org Controller" + ] + }, + "patch": { + "description": "Edit a Team", + "operationId": "editTeam_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user-email-or-id", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/TeamResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Edit Team", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "Get user in a team by email or id.", - "description": "Get info and role/invitation in a team by email or id", - "operationId": "listUserRolesInOrgTeam", + "/v2/admin/org/{org_name}/users": { + "post": { + "description": "Create an user in an Organization (Super Admin privileges required)", + "operationId": "createUserInOrg_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "team-name", - "in": "path", - "required": true, + "description": "Boolean to send email notification, default is true", + "in": "query", + "name": "send-email", + "required": false, "schema": { - "type": "string" + "default": true, + "type": "boolean" } }, { - "name": "user-email-or-id", - "in": "path", - "required": true, + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "in": "query", + "name": "idp-id", + "required": false, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Create User", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v3/orgs/proto-org/validate": { - "get": { - "tags": [ - "Orgs" - ], - "summary": "Validate org creation invite", - "description": "Validate org creation from proto org", - "operationId": "protoOrgInvitationValidate", + "/v2/admin/org/{org_name}/users/{id}": { + "delete": { + "description": "Remove User from org.", + "operationId": "removeUserFromOrg_2", "parameters": [ { - "name": "invitation_token", - "in": "query", - "description": "JWT that contains org owner email and proto org identifier", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, "schema": { "type": "string" @@ -10995,255 +9484,184 @@ ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrgInvitationResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v3/admin/org": { - "get": { + }, + "summary": "Remove User from org", "tags": [ - "Super Admin Org Controller" - ], - "summary": "List Organizations and Proto Organizations", - "description": "List all organizations. (SuperAdmin privileges required)", - "operationId": "listOrganizations", + "Super Admin User Controller" + ] + }, + "post": { + "deprecated": true, + "description": "Add existing User to an Org", + "operationId": "addUserToOrg", "parameters": [ { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "org-name", - "in": "query", - "description": "Org name to search", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "org-desc", - "in": "query", - "description": "Org description to search", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org display name", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org owner name", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org owner email. Email should be base-64-encoded.", - "in": "query", - "required": false, + "in": "path", + "name": "org_name", + "required": true, "schema": { "type": "string" } }, { - "name": "org-type", - "in": "query", - "description": "Org Type to search", - "required": false, - "schema": { - "type": "string", - "enum": [ - "UNKNOWN", - "CLOUD", - "ENTERPRISE", - "INDIVIDUAL" - ] - } - }, - { - "name": "pec-id", - "in": "query", - "description": "PEC ID to search", - "required": false, + "in": "path", + "name": "id", + "required": true, "schema": { "type": "string" } @@ -11251,1413 +9669,1329 @@ ], "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/OrgListResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Add existing User to an Org", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/orgs": { - "get": { - "tags": [ - "Orgs" - ], - "summary": "List Organizations", - "description": "List all organizations of the user", - "operationId": "listOrganizations_1", + "/v2/admin/org/{org_name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add user role in org.", + "operationId": "addUserRole_2", "parameters": [ { - "name": "Filter using PEC ID", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org name", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org display name", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org owner name", - "in": "query", - "required": false, + "in": "path", + "name": "org_name", + "required": true, "schema": { "type": "string" } }, { - "name": "Filter using org owner email", - "in": "query", - "required": false, + "in": "path", + "name": "id", + "required": true, "schema": { "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page-size", "in": "query", - "description": "The page size of result", + "name": "roles", "required": false, "schema": { - "type": "integer", - "format": "int32" + "items": { + "type": "string" + }, + "type": "array" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrgListResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Add user role in org", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/org/{org-name}/users/{id}/invite": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "Create a new Invitation and send Email to User", - "description": "Create a new invitation and send email to a user. This is used when a previously sent invite email expired. (Org Admin privileges required)", - "operationId": "emailInviteToUser_1", + "/v2/admin/org/{org_name}/users/{id}/remove-role": { + "delete": { + "deprecated": true, + "description": "Remove user role in org (if the last role is removed, the user is removed from the org and org teams).", + "operationId": "removeUserRole_2", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", "in": "path", + "name": "id", "required": true, "schema": { "type": "string" } }, { - "name": "send-email", "in": "query", + "name": "roles", "required": false, "schema": { - "type": "boolean", - "default": true + "items": { + "type": "string" + }, + "type": "array" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true + "summary": "Remove user role in org", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/org/{org-name}/users/{id}": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "Get User in org", - "description": "Get User details in org context", - "operationId": "getUserInOrg", + "/v2/admin/org/{org_name}/users/{id}/update-role": { + "patch": { + "deprecated": true, + "description": "Update User Role in org", + "operationId": "updateUserRole_2", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", "in": "path", + "name": "id", "required": true, "schema": { "type": "string" } }, { - "name": "idp-id", "in": "query", - "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", + "name": "roles", "required": false, "schema": { - "type": "string" + "items": { + "type": "string" + }, + "type": "array" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "delete": { + }, + "summary": "Update User Role in org", "tags": [ - "Users Management" - ], - "summary": "Remove User from org", - "description": "Remove User from org. (User Admin Privileges Required)", - "operationId": "removeUserFromOrg_1", - "parameters": [ - { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "user id or b64encoded email", - "in": "path", - "required": true, - "schema": { - "type": "string" + "Super Admin User Controller" + ] + } + }, + "/v2/admin/orgs": { + "post": { + "description": "Create a new organization. (SuperAdmin privileges required)", + "operationId": "createOrganization", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequest" + } } }, - { - "name": "anonymize", - "in": "query", - "description": "If anonymize is true, then org owner permission is required.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - } - ], + "required": true + }, "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Create Organization", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/v2/org/{org-name}/users/invitations/{id}/resend-invitation-email": { + "/v2/admin/orgs/offboarded": { "get": { - "tags": [ - "Users Management" - ], - "summary": "Resend email of a specific invitation in an org.", - "description": "Resend email of a specific invitation in an org (Org User Admin privileges required).", - "operationId": "resendUserInvitationEmailInOrg", + "description": "List all Offboarded organizations.", + "operationId": "listOffboardedOrgs", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string" + "format": "int32", + "type": "integer" } }, { - "name": "invitation ID", - "in": "path", - "required": true, + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string" + "format": "int32", + "type": "integer" } } ], "responses": { "200": { - "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/OrgListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "application/json": { + "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "List Offboarded Organizations", + "tags": [ + "Super Admin Org Controller" + ] } }, - "/v2/org/{org-name}/users/invitations": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "List user invitations in an org.", - "description": "List invitations in an org. (Org User Admin privileges required)", - "operationId": "listInvitationsForUserInOrg", + "/v2/admin/users/invite": { + "patch": { + "deprecated": true, + "description": "Invite an existing user again (Super Admin privileges required)", + "operationId": "emailInviteToUser", "parameters": [ { - "name": "org-name", - "in": "path", + "in": "query", + "name": "email", "required": true, "schema": { "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "orderBy", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "NAME_ASC", - "NAME_DESC" - ] - } - }, - { - "name": "q", + "description": "Boolean to send email notification, default is true", "in": "query", - "description": "User Search Parameters", + "name": "send-email", "required": false, "schema": { - "$ref": "#/components/schemas/SearchParams" + "default": true, + "type": "boolean" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserInvitationListResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Re invite user", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/org/{org-name}/team/{team-name}/users/invitations/{id}/resend-invitation-email": { + "/v2/admin/users/me": { "get": { - "tags": [ - "Users Management" - ], - "summary": "Resend email of a specific invitation in a team.", - "description": "Resend email of a specific invitation in a team (Org or Team User Admin privileges required).", - "operationId": "resendUserInvitationEmailInTeam", + "description": "What am I? Admin version, shows more info than regular endpoint", + "operationId": "whoAmI_1", "parameters": [ { + "in": "query", "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "invitation ID", - "in": "path", - "required": true, + "required": false, "schema": { "type": "string" } @@ -12665,605 +10999,533 @@ ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Who am I? Admin version", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/org/{org-name}/team/{team-name}/users/invitations": { + "/v2/admin/users/{id}": { "get": { - "tags": [ - "Users Management" - ], - "summary": "List user invitations in a team.", - "description": "List invitations in a team. (Team User Admin privileges required)", - "operationId": "listInvitationsForUserInTeam", + "description": "Get User details", + "operationId": "getUserDetails", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "orderBy", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "NAME_ASC", - "NAME_DESC" - ] - } - }, - { - "name": "team-name", "in": "path", + "name": "id", "required": true, "schema": { "type": "string" } - }, - { - "name": "q", - "in": "query", - "description": "User Search Parameters", - "required": false, - "schema": { - "$ref": "#/components/schemas/SearchParams" - } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserInvitationListResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Get User Information", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/org/{org-name}/team/{team-name}/starfleetIds/{starfleet-id}": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "Get User in team", - "description": "Get User details in team by starfleet Id", - "operationId": "getUserInTeamByStarfleetId", + "/v2/admin/users/{id}/crm-sync": { + "post": { + "description": "Sync crm id with user email (Super Admin privileges required)", + "operationId": "syncCrmUser", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "starfleet-id", "in": "path", + "name": "id", "required": true, "schema": { - "type": "string" + "format": "int64", + "type": "integer" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Sync crm id with user email", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/org/{org-name}/starfleetIds/{starfleet-id}": { - "get": { - "tags": [ - "Users Management" - ], - "summary": "Get User in org", - "description": "Get User details in org by starfleet Id", - "operationId": "getUserInOrg_1", + "/v2/admin/users/{id}/migrate-deprecated-roles": { + "post": { + "description": "Migrate User Deprecated Roles.", + "operationId": "migrateUserDeprecatedRoles", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "starfleet-id", "in": "path", + "name": "id", "required": true, "schema": { "type": "string" @@ -13272,355 +11534,364 @@ ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/admin/users/{id}": { - "get": { + }, + "summary": "Migrate User Deprecated Roles", "tags": [ "Super Admin User Controller" - ], - "summary": "Get User Information", - "description": "Get User details", - "operationId": "getUserDetails", + ] + } + }, + "/v2/admin/users/{user_id}/org-owner-backfill": { + "post": { + "description": "Backfill the org owner for individual users", + "operationId": "backfillOrgOwnerByUser", "parameters": [ { - "name": "user id or b64encoded email", "in": "path", + "name": "user_id", "required": true, "schema": { - "type": "string" + "format": "int64", + "type": "integer" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Backfill the org owner for individual users", + "tags": [ + "Super Admin User Controller" + ] } }, - "/v2/admin/users/me": { + "/v2/org/{org_name}/starfleetIds/{starfleet_id}": { "get": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Who am I? Admin version", - "description": "What am I? Admin version, shows more info than regular endpoint", - "operationId": "whoAmI_1", + "description": "Get User details in org by starfleet Id", + "operationId": "getUserInOrg_1", "parameters": [ { - "name": "org-name", - "in": "query", - "required": false, + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "starfleet_id", + "required": true, "schema": { "type": "string" } @@ -13628,255 +11899,193 @@ ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Get User in org", + "tags": [ + "Users Management" + ] } }, - "/v2/admin/org": { + "/v2/org/{org_name}/team/{team_name}/starfleetIds/{starfleet_id}": { "get": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "List Organizations", - "description": "List all organizations. (SuperAdmin privileges required)", - "operationId": "listOrganizations_2", + "description": "Get User details in team by starfleet Id", + "operationId": "getUserInTeamByStarfleetId", "parameters": [ { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "org-name", - "in": "query", - "description": "Org name to search", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "org-desc", - "in": "query", - "description": "Org description to search", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org display name", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Filter using org owner name", - "in": "query", - "required": false, + "in": "path", + "name": "org_name", + "required": true, "schema": { "type": "string" } }, { - "name": "Filter using org owner email. Email should be base-64-encoded.", - "in": "query", - "required": false, + "in": "path", + "name": "team_name", + "required": true, "schema": { "type": "string" } }, { - "name": "org-type", - "in": "query", - "description": "Org Type to search", - "required": false, - "schema": { - "type": "string", - "enum": [ - "UNKNOWN", - "CLOUD", - "ENTERPRISE", - "INDIVIDUAL" - ] - } - }, - { - "name": "pec-id", - "in": "query", - "description": "PEC ID to search", - "required": false, + "in": "path", + "name": "starfleet_id", + "required": true, "schema": { "type": "string" } @@ -13884,1142 +12093,1235 @@ ], "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/OrgListResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Get User in team", + "tags": [ + "Users Management" + ] } }, - "/v2/admin/orgs/offboarded": { + "/v2/org/{org_name}/team/{team_name}/users": { "get": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "List Offboarded Organizations", - "description": "List all Offboarded organizations.", - "operationId": "listOffboardedOrgs", + "description": "Get list of users in team. (User Admin in team privileges required)", + "operationId": "listUsersInTeam", "parameters": [ { - "name": "page-number", - "in": "query", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + }, + { "description": "The page number of result", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "integer", - "format": "int32" + "format": "int32", + "type": "integer" } }, { + "description": "The page size of result", + "in": "query", "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", "in": "query", - "description": "The page size of result", + "name": "q", "required": false, "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/SearchParams" } } ], "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/OrgListResponse" + "$ref": "#/components/schemas/UserListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/admin/org/{org-name}/teams": { - "get": { + }, + "summary": "List users in team", "tags": [ - "Super Admin Org Controller" - ], - "summary": "List Teams", - "description": "List all Teams", - "operationId": "listTeams_1", + "Users Management" + ] + }, + "post": { + "description": "Creates a User and add them to a team within the org.", + "operationId": "createUserInTeam", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "The page number of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page-size", - "in": "query", - "description": "The page size of result", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "team-name", - "in": "query", - "description": "Team name to search", - "required": false, + "in": "path", + "name": "team_name", + "required": true, "schema": { "type": "string" } }, { - "name": "scan-by-default", - "in": "query", - "description": "Get all team that has scan by default only", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "scan-allow-override", "in": "query", - "description": "Get all team that has scan allow override only", + "name": "send-email", "required": false, "schema": { + "default": true, "type": "boolean" } }, { - "name": "scan-show-results", + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", "in": "query", - "description": "Get all team that has scan show results only", + "name": "idp-id", "required": false, "schema": { - "type": "boolean" + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/TeamListResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Creates a User in team", + "tags": [ + "Users Management" + ] } }, - "/v2/admin/org/validate": { + "/v2/org/{org_name}/team/{team_name}/users/invitations": { "get": { - "tags": [ - "Super Admin Org Controller" - ], - "summary": "List Validated Organizations", - "description": "List all organizations that match the validate org params", - "operationId": "listValidatedOrganizations", + "description": "List invitations in a team. (Team User Admin privileges required)", + "operationId": "listInvitationsForUserInTeam", "parameters": [ { - "name": "q", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", "in": "query", - "description": "Validate Organization Parameters", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "in": "query", + "name": "orderBy", + "required": false, + "schema": { + "enum": [ + "NAME_ASC", + "NAME_DESC" + ], + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", "required": true, "schema": { - "$ref": "#/components/schemas/ValidateOrgQueryParams" + "type": "string" + } + }, + { + "description": "User Search Parameters", + "in": "query", + "name": "q", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" } } ], "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/OrgListResponse" + "$ref": "#/components/schemas/UserInvitationListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "List user invitations in a team.", + "tags": [ + "Users Management" + ] } }, - "/roles": { - "get": { - "tags": [ - "Services" - ], - "summary": "NGC Roles", - "description": "List of roles in NGC and their scopes", - "operationId": "getRoles", + "/v2/org/{org_name}/team/{team_name}/users/invitations/{id}": { + "delete": { + "description": "Delete a specific invitation in an team. (Org Admin or Team User Admin privileges required)", + "operationId": "deleteUserInvitationInTeam", "parameters": [ { - "name": "show-hidden", - "in": "query", - "description": "flag indicate if hidden roles should be included", - "required": false, + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserRoleDefinitionsResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Delete a specific invitation in a team.", + "tags": [ + "Users Management" + ] } }, - "/public-keys": { + "/v2/org/{org_name}/team/{team_name}/users/invitations/{id}/resend-invitation-email": { "get": { - "tags": [ - "Services" + "description": "Resend email of a specific invitation in a team (Org or Team User Admin privileges required).", + "operationId": "resendUserInvitationEmailInTeam", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Web Service Health Status", - "description": "Used to check the health status of the web service only", - "operationId": "getPublicKey", "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Resend email of a specific invitation in a team.", + "tags": [ + "Users Management" + ] } }, - "/health/all": { - "get": { - "tags": [ - "Services" - ], - "summary": "All Service Health Status", - "description": "Used to get health status of all services", - "operationId": "statusDetails", + "/v2/org/{org_name}/team/{team_name}/users/{id}": { + "delete": { + "description": "Removes User from team. (Org Admin or Team Admin Privileges Required).", + "operationId": "removeUserFromTeam_1", "parameters": [ { - "name": "showDetails", - "in": "query", - "description": "boolean value to indicating to show details or not", - "required": false, + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string" } }, { - "name": "secret", - "in": "query", - "description": "secret value that validates the call in order to show details", - "required": false, + "in": "path", + "name": "id", + "required": true, "schema": { "type": "string" } @@ -15027,1752 +13329,1763 @@ ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HealthResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/health": { - "get": { + }, + "summary": "Removes User from team", "tags": [ - "Services" + "Users Management" + ] + }, + "get": { + "description": "Get User details within team context", + "operationId": "getUserInTeam", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } ], - "summary": "Web Service Health Status", - "description": "Used to check the health status of the web service only", - "operationId": "status", "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HealthResponse" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v3/orgs/{org-name}/users/{user-email-or-id}/remove-role": { - "delete": { + }, + "summary": "Get User in team", "tags": [ "Users Management" - ], - "summary": "Remove role or invitation in org", - "description": "Remove role in org if user exists, otherwise remove invitation", - "operationId": "removeRoleOrInvitationInOrg", + ] + }, + "post": { + "description": "Add a User to team", + "operationId": "addUserToTeam", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user-email-or-id", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } }, { - "name": "roles", - "in": "query", - "required": false, + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v3/orgs/{org-name}/users/{id}": { - "delete": { + }, + "summary": "Add a User to team", "tags": [ "Users Management" - ], - "summary": "Remove User from org", - "description": "Remove User from org.", - "operationId": "removeUserFromOrg", + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add User Role in team.", + "operationId": "addUserRole_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, "schema": { "type": "string" } }, { - "name": "anonymize", "in": "query", - "description": "If anonymize is true, then org owner permission is required.", + "name": "roles", "required": false, "schema": { - "type": "boolean", - "default": false + "items": { + "type": "string" + }, + "type": "array" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Add User Role in team", + "tags": [ + "Users Management" + ] } }, - "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/remove-role": { + "/v2/org/{org_name}/team/{team_name}/users/{id}/remove-role": { "delete": { - "tags": [ - "Users Management" - ], - "summary": "Remove role or invitation in team", - "description": "Remove role in team if user exists, otherwise remove invitation", - "operationId": "removeRoleOrInvitationInTeam", + "deprecated": true, + "description": "Remove User Role in team (if the last role is removed, the user is removed from the team).", + "operationId": "removeUserRole_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "team-name", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } }, { - "name": "user-email-or-id", "in": "path", + "name": "id", "required": true, "schema": { "type": "string" } }, { - "name": "roles", "in": "query", + "name": "roles", "required": false, "schema": { - "type": "array", "items": { "type": "string" - } + }, + "type": "array" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v3/orgs/{org-name}/teams/{team-name}/users/{id}": { - "delete": { + }, + "summary": "Remove User Role in team", "tags": [ "Users Management" - ], - "summary": "Remove User from team", - "description": "Remove User from team.", - "operationId": "removeUserFromTeam", + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/users/{id}/update-role": { + "patch": { + "deprecated": true, + "description": "Update User Role in team", + "operationId": "updateUserRole_1", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "team-name", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", "in": "path", + "name": "id", "required": true, "schema": { "type": "string" } }, { - "name": "anonymize", "in": "query", - "description": "If anonymize is true, then org owner permission is required.", + "name": "roles", "required": false, "schema": { - "type": "boolean", - "default": false + "items": { + "type": "string" + }, + "type": "array" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/org/{org-name}/users/{id}/remove-role": { - "delete": { + }, + "summary": "Update User Role in team", "tags": [ "Users Management" - ], - "summary": "Remove User Role in org", - "description": "Remove User Role in org (if the last role is removed, the user is removed from the org and org teams).", - "operationId": "removeUserRole", + ] + } + }, + "/v2/org/{org_name}/teams": { + "get": { + "description": "List all Teams", + "operationId": "listTeams", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", - "in": "path", - "required": true, + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string" + "format": "int32", + "type": "integer" } }, { - "name": "roles", + "description": "The page size of result", "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "format": "int32", + "type": "integer" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/TeamListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/v2/org/{org-name}/users/invitations/{id}": { - "delete": { + "summary": "List Teams", "tags": [ - "Users Management" - ], - "summary": "Delete a specific invitation in an org.", - "description": "Delete a specific invitation in an org. (Org User Admin privileges required)", - "operationId": "deleteUserInvitationInOrg", + "Teams" + ] + }, + "post": { + "description": "Create team in org. (Org Admin Privileges Required)", + "operationId": "createTeam", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "invitation ID", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/TeamCreateResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Create Team", + "tags": [ + "Teams" + ] } }, - "/v2/org/{org-name}/team/{team-name}/users/{id}/remove-role": { + "/v2/org/{org_name}/teams/{team_name}": { "delete": { - "tags": [ - "Users Management" - ], - "summary": "Remove User Role in team", - "description": "Remove User Role in team (if the last role is removed, the user is removed from the team).", - "operationId": "removeUserRole_1", + "description": "Delete a Team", + "operationId": "deleteTeam", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } - }, - { - "name": "roles", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/v2/org/{org-name}/team/{team-name}/users/invitations/{id}": { - "delete": { + "summary": "Delete Team", "tags": [ - "Users Management" - ], - "summary": "Delete a specific invitation in a team.", - "description": "Delete a specific invitation in an team. (Org Admin or Team User Admin privileges required)", - "operationId": "deleteUserInvitationInTeam", + "Teams" + ] + }, + "get": { + "description": "Get Team by name", + "operationId": "getTeam", "parameters": [ { - "name": "org-name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "team-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "invitation ID", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" @@ -16781,6159 +15094,7483 @@ ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/TeamResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - } - }, - "/v2/admin/org/{org-name}/users/{id}/remove-role": { - "delete": { + }, + "summary": "Get Team", "tags": [ - "Super Admin User Controller" - ], - "summary": "Remove user role in org", - "description": "Remove user role in org (if the last role is removed, the user is removed from the org and org teams).", - "operationId": "removeUserRole_2", + "Teams" + ] + }, + "patch": { + "description": "Edit a Team", + "operationId": "editTeam", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", "in": "path", + "name": "team_name", "required": true, "schema": { "type": "string" } - }, - { - "name": "roles", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/TeamResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true + "summary": "Edit Team", + "tags": [ + "Teams" + ] } }, - "/v2/admin/org/{org-name}/team/{team-name}/users/{id}/remove-role": { - "delete": { - "tags": [ - "Super Admin User Controller" - ], - "summary": "Remove user role in team", - "description": "Remove user role in team (if the last role is removed, the user is removed from the team).", - "operationId": "removeUserRole_3", + "/v2/org/{org_name}/users": { + "get": { + "description": "Get list of users in organization. (User Admin in org privileges required)", + "operationId": "listUsersInOrg", "parameters": [ { - "name": "org-name", "in": "path", + "name": "org_name", "required": true, "schema": { "type": "string" } }, { - "name": "team-name", - "in": "path", - "required": true, + "description": "Name of team to exclude members from", + "in": "query", + "name": "exclude-from-team", + "required": false, "schema": { "type": "string" } }, { - "name": "user id or b64encoded email", - "in": "path", - "required": true, + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string" + "format": "int32", + "type": "integer" } }, { - "name": "roles", + "description": "The page size of result", "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "format": "int32", + "type": "integer" + } + }, + { + "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", + "in": "query", + "name": "q", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponse" + "$ref": "#/components/schemas/UserListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Object Exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } }, - "deprecated": true - } - }, - "/swagger-resources": { - "get": { + "summary": "List users In org", "tags": [ - "api-resource-controller" + "Users Management" + ] + }, + "post": { + "description": "Creates a User", + "operationId": "createUserInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } ], - "operationId": "swaggerResources_4", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwaggerResource" - } + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "put": { + }, + "summary": "Creates a User in org", "tags": [ - "api-resource-controller" + "Users Management" + ] + } + }, + "/v2/org/{org_name}/users/invitations": { + "get": { + "description": "List invitations in an org. (Org User Admin privileges required)", + "operationId": "listInvitationsForUserInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "in": "query", + "name": "orderBy", + "required": false, + "schema": { + "enum": [ + "NAME_ASC", + "NAME_DESC" + ], + "type": "string" + } + }, + { + "description": "User Search Parameters", + "in": "query", + "name": "q", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } ], - "operationId": "swaggerResources_5", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwaggerResource" - } + "$ref": "#/components/schemas/UserInvitationListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "post": { + }, + "summary": "List user invitations in an org.", "tags": [ - "api-resource-controller" + "Users Management" + ] + } + }, + "/v2/org/{org_name}/users/invitations/{id}": { + "delete": { + "description": "Delete a specific invitation in an org. (Org User Admin privileges required)", + "operationId": "deleteUserInvitationInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } ], - "operationId": "swaggerResources", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwaggerResource" - } + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "delete": { + }, + "summary": "Delete a specific invitation in an org.", "tags": [ - "api-resource-controller" + "Users Management" + ] + } + }, + "/v2/org/{org_name}/users/invitations/{id}/resend-invitation-email": { + "get": { + "description": "Resend email of a specific invitation in an org (Org User Admin privileges required).", + "operationId": "resendUserInvitationEmailInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } ], - "operationId": "swaggerResources_6", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwaggerResource" - } + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "options": { + }, + "summary": "Resend email of a specific invitation in an org.", "tags": [ - "api-resource-controller" + "Users Management" + ] + } + }, + "/v2/org/{org_name}/users/{id}": { + "delete": { + "description": "Remove User from org. (User Admin Privileges Required)", + "operationId": "removeUserFromOrg_1", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If anonymize is true, then org owner permission is required.", + "in": "query", + "name": "anonymize", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + } ], - "operationId": "swaggerResources_3", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwaggerResource" - } + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "head": { + }, + "summary": "Remove User from org", "tags": [ - "api-resource-controller" + "Users Management" + ] + }, + "get": { + "description": "Get User details in org context", + "operationId": "getUserInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } ], - "operationId": "swaggerResources_1", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwaggerResource" - } + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get User in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org_name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add User Role in org.", + "operationId": "addUserRole", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" } } - } - }, - "patch": { - "tags": [ - "api-resource-controller" ], - "operationId": "swaggerResources_2", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwaggerResource" - } + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Add User Role in org", + "tags": [ + "Users Management" + ] } }, - "/swagger-resources/configuration/ui": { + "/v2/org/{org_name}/users/{id}/invite": { "get": { - "tags": [ - "api-resource-controller" + "deprecated": true, + "description": "Create a new invitation and send email to a user. This is used when a previously sent invite email expired. (Org Admin privileges required)", + "operationId": "emailInviteToUser_1", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + } ], - "operationId": "uiConfiguration_4", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UiConfiguration" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "put": { + }, + "summary": "Create a new Invitation and send Email to User", "tags": [ - "api-resource-controller" + "Users Management" + ] + } + }, + "/v2/org/{org_name}/users/{id}/remove-role": { + "delete": { + "deprecated": true, + "description": "Remove User Role in org (if the last role is removed, the user is removed from the org and org teams).", + "operationId": "removeUserRole", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } ], - "operationId": "uiConfiguration_5", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UiConfiguration" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "post": { + }, + "summary": "Remove User Role in org", "tags": [ - "api-resource-controller" + "Users Management" + ] + } + }, + "/v2/org/{org_name}/users/{id}/update-role": { + "patch": { + "deprecated": true, + "description": "Update User Role in org", + "operationId": "updateUserRole", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } ], - "operationId": "uiConfiguration", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UiConfiguration" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Update User Role in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/orgs": { + "get": { + "description": "List all organizations of the user", + "operationId": "listOrganizations_1", + "parameters": [ + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" } }, - "503": { - "description": "Service Unavailable", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" } } - } - }, - "delete": { - "tags": [ - "api-resource-controller" ], - "operationId": "uiConfiguration_6", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UiConfiguration" + "$ref": "#/components/schemas/OrgListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "options": { + }, + "summary": "List Organizations", "tags": [ - "api-resource-controller" + "Orgs" + ] + } + }, + "/v2/orgs/{org_name}": { + "get": { + "description": "Get organization information", + "operationId": "getOrganization", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + } ], - "operationId": "uiConfiguration_3", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UiConfiguration" + "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "head": { + }, + "summary": "Get Organization", "tags": [ - "api-resource-controller" + "Orgs" + ] + }, + "patch": { + "description": "Update organization information", + "operationId": "updateOrganization", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + } ], - "operationId": "uiConfiguration_1", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgProfileUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UiConfiguration" + "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "patch": { + }, + "summary": "Update Organization", "tags": [ - "api-resource-controller" - ], - "operationId": "uiConfiguration_2", + "Orgs" + ] + } + }, + "/v2/ping": { + "head": { + "description": "A lightweight ping call (heartbeat). This would allow UI to show different overlays in case there is any problem with the subscription or if the user has not accepted TOU", + "operationId": "headPing", + "parameters": [], "responses": { "200": { - "description": "OK", - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/UiConfiguration" - } - } - } + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Head ping (heartbeat)", + "tags": [ + "Users Management" + ] } }, - "/swagger-resources/configuration/security": { + "/v2/users/me": { "get": { - "tags": [ - "api-resource-controller" + "description": "What am I?", + "operationId": "whoAmI", + "parameters": [ + { + "in": "query", + "name": "org-name", + "required": false, + "schema": { + "type": "string" + } + } ], - "operationId": "securityConfiguration_4", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/SecurityConfiguration" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "put": { + }, + "summary": "Who am I?", "tags": [ - "api-resource-controller" - ], - "operationId": "securityConfiguration_5", + "Users Management" + ] + }, + "patch": { + "description": "Edit current user profile", + "operationId": "editUserProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/SecurityConfiguration" + "$ref": "#/components/schemas/UserResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "post": { + }, + "summary": "Edit current user profile", "tags": [ - "api-resource-controller" - ], - "operationId": "securityConfiguration", + "Users Management" + ] + } + }, + "/v2/users/me/api-key": { + "post": { + "description": "Generate API Key", + "operationId": "generateUserApiKey", "responses": { "200": { - "description": "OK", "content": { - "*/*": { + "application/json": { "schema": { - "$ref": "#/components/schemas/SecurityConfiguration" + "$ref": "#/components/schemas/UserKeyResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { - "*/*": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "delete": { + }, + "summary": "Generate API Key", "tags": [ - "api-resource-controller" + "Users Management" + ] + } + }, + "/v3/admin/org": { + "get": { + "description": "List all organizations. (SuperAdmin privileges required)", + "operationId": "listOrganizations", + "parameters": [ + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "Org name to search", + "in": "query", + "name": "org-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Org description to search", + "in": "query", + "name": "org-desc", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Org Type to search", + "in": "query", + "name": "org-type", + "required": false, + "schema": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + { + "description": "PEC ID to search", + "in": "query", + "name": "pec-id", + "required": false, + "schema": { + "type": "string" + } + } ], - "operationId": "securityConfiguration_6", "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/SecurityConfiguration" + "$ref": "#/components/schemas/OrgListResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "options": { + }, + "summary": "List Organizations and Proto Organizations", "tags": [ - "api-resource-controller" + "Super Admin Org Controller" + ] + } + }, + "/v3/admin/org/{org_name}": { + "get": { + "description": "Get organization or proto organization info. (SuperAdmin privileges required)", + "operationId": "getOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The list of fields to hide from the response", + "in": "query", + "name": "exclude-fields", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } ], - "operationId": "securityConfiguration_3", "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/SecurityConfiguration" + "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get Organization or Proto Organization", + "tags": [ + "Super Admin Org Controller" + ] + }, + "patch": { + "description": "Update org information and settings. Superadmin privileges required", + "operationId": "updateOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" } } - } - }, - "head": { - "tags": [ - "api-resource-controller" ], - "operationId": "securityConfiguration_1", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/SecurityConfiguration" + "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Service Unavailable" } - } - }, - "patch": { + }, + "summary": "Update Organization", "tags": [ - "api-resource-controller" - ], - "operationId": "securityConfiguration_2", + "Super Admin Org Controller" + ] + } + }, + "/v3/admin/orgs": { + "post": { + "description": "OrgCreateRequest is used to create the organization or when no nca_id is provided upfront, the OrgCreateRequest is stored as proto org, and proto org flow initiates (SuperAdmin privileges required)", + "operationId": "createProtoOrganization", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { "*/*": { "schema": { - "$ref": "#/components/schemas/SecurityConfiguration" + "$ref": "#/components/schemas/OrgResponse" } } - } + }, + "description": "OK" }, "302": { "description": "Found" }, "400": { - "description": "Bad Request", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Request" }, "401": { - "description": "Unauthorized", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unauthorized" }, "402": { - "description": "Payment Required", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Payment Required" }, "403": { - "description": "Forbidden", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Found" }, "405": { - "description": "Method Not Allowed", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Method Not Allowed" }, "409": { - "description": "Conflict", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Object Exists" }, "415": { - "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unsupported Media Type" }, "422": { - "description": "Unprocessable Entity", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Unprocessable Entity" }, "429": { - "description": "Too Many Requests", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Too Many Requests" }, "451": { "description": "Unavailable For Legal Reasons" }, "500": { - "description": "Internal Server Error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Internal Error" }, "501": { - "description": "Not Implemented", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Not Implemented" }, "502": { - "description": "Bad Gateway", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } + }, + "description": "Bad Gateway" }, "503": { - "description": "Service Unavailable", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } - } - } - } - } - } - }, - "components": { - "schemas": { - "ErrorResponse": { - "type": "object", - "properties": { - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" - } - } - }, - "RequestStatus": { - "type": "object", - "properties": { - "serverId": { - "type": "string" - }, - "statusCode": { - "type": "string", - "description": "Describes response status reported by the server.", - "enum": [ - "UNKNOWN", - "SUCCESS", - "UNAUTHORIZED", - "PAYMENT_REQUIRED", - "FORBIDDEN", - "TIMEOUT", - "EXISTS", - "NOT_FOUND", - "INTERNAL_ERROR", - "INVALID_REQUEST", - "INVALID_REQUEST_VERSION", - "INVALID_REQUEST_DATA", - "METHOD_NOT_ALLOWED", - "CONFLICT", - "UNPROCESSABLE_ENTITY", - "TOO_MANY_REQUESTS", - "INSUFFICIENT_STORAGE", - "SERVICE_UNAVAILABLE", - "PAYLOAD_TOO_LARGE", - "NOT_ACCEPTABLE", - "UNAVAILABLE_FOR_LEGAL_REASONS", - "BAD_GATEWAY", - "PRECONDITION_FAILED" - ] - }, - "statusDescription": { - "type": "string" - }, - "requestId": { - "type": "string" - } - } - }, - "UserNcaInvitationRequest": { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "Is a message to the new user" - }, - "inviteAs": { - "type": "string", - "description": "Nca allow users to be invited as Admin and as Member", - "enum": [ - "ADMIN", - "MEMBER" - ] - }, - "email": { - "maxLength": 128, - "minLength": 7, - "type": "string", - "description": "Is the user email" - }, - "invitationExpirationIn": { - "type": "integer", - "description": "Is the numbers of days the invitation will expire", - "format": "int32" - } - }, - "description": "NCA User invitation request" - }, - "AlternateContact": { - "type": "object", - "properties": { - "fullName": { - "maxLength": 255, - "type": "string", - "description": "Full name of the alternate contact." - }, - "email": { - "maxLength": 128, - "minLength": 6, - "type": "string", - "description": "Alternate contact's email." - } - }, - "description": "Org Owner Alternate Contact" - }, - "InfinityManagerSettings": { - "type": "object", - "properties": { - "infinityManagerEnabled": { - "type": "boolean", - "description": "Enable the infinity manager or not. Used both in org and team level object" - }, - "infinityManagerEnableTeamOverride": { - "type": "boolean", - "description": "Allow override settings at team level. Only used in org level object" + }, + "description": "Service Unavailable" } }, - "description": "Infinity manager setting definition" - }, - "OrgOwner": { - "required": [ - "email" - ], - "type": "object", - "properties": { - "fullName": { - "maxLength": 64, - "minLength": 1, - "type": "string", - "description": "Org owner name." - }, - "email": { - "maxLength": 128, - "type": "string", - "description": "Email address of the org owner." + "summary": "Creates organization from scratch or proto organization", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v3/admin/orgs/ncaIds": { + "post": { + "description": "Get Organization by NCA ID or Org Name. (SuperAdmin privileges required)", + "operationId": "getMapping", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgNcaMappingRequest" + } + } }, - "lastLoginDate": { - "type": "string", - "description": "Last time the org owner logged in." - } + "required": true }, - "description": "Org owner." - }, - "Organization": { - "type": "object", - "properties": { - "isSecureCredentialSharingServiceEnabled": { - "type": "boolean", - "description": "Secure Credential Sharing Service enable flag for an organization" - }, - "isInternal": { - "type": "boolean", - "description": "Is NVIDIA internal org or not" - }, - "idpId": { - "type": "string", - "description": "Identity Provider ID." - }, - "usersInfo": { - "$ref": "#/components/schemas/UsersInfo" - }, - "pecSfdcId": { - "type": "string", - "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer." - }, - "id": { - "type": "integer", - "description": "Unique Id of this team.", - "format": "int64" - }, - "isRegistrySSEEnabled": { - "type": "boolean", - "description": "If a server side encryption is enabled for private registry (models, resources)" - }, - "alternateContact": { - "$ref": "#/components/schemas/AlternateContact" - }, - "canAddOn": { - "type": "boolean", - "description": "Identifies if the org can be reused." - }, - "infinityManagerSettings": { - "$ref": "#/components/schemas/InfinityManagerSettings" - }, - "billingAccountId": { - "type": "string", - "description": "Billing account ID." - }, - "type": { - "type": "string", - "enum": [ - "UNKNOWN", - "CLOUD", - "ENTERPRISE", - "INDIVIDUAL" - ] + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgNcaMappingResponse" + } + } + }, + "description": "OK" }, - "isProto": { - "type": "boolean", - "description": "Indicates when the org is a proto org" + "302": { + "description": "Found" }, - "repoScanSettings": { - "$ref": "#/components/schemas/RepoScanSettings" + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "ncaAccountNumber": { - "type": "string", - "description": "NVIDIA Cloud Account Number." + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "description": { - "type": "string", - "description": "Optional description of the organization." + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "productEnablements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductEnablement" - } + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "name": { - "type": "string", - "description": "Organization name." + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "orgOwner": { - "$ref": "#/components/schemas/OrgOwner" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "displayName": { - "maxLength": 255, - "minLength": 1, - "type": "string", - "description": "Name of the organization that will be shown to users." + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "productSubscriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductSubscription" - } + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "country": { - "type": "string", - "description": "ISO country code of the organization." + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "industry": { - "type": "string", - "description": "Industry of the organization." + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "isSeparateInfluxDbUsed": { - "type": "boolean", - "description": "If a separate influx db used for an organization in BCP for job telemetry" + "451": { + "description": "Unavailable For Legal Reasons" }, - "isDatasetServiceEnabled": { - "type": "boolean", - "description": "Dataset Service enable flag for an organization" + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "isSecretsManagerServiceEnabled": { - "type": "boolean", - "description": "Secrets Manager Service enable flag for an organization" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "isQuickStartEnabled": { - "type": "boolean", - "description": "Quick Start enable flag for an organization" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "orgOwners": { - "type": "array", - "description": "Org owners", - "items": { - "$ref": "#/components/schemas/OrgOwner" - } + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": "Information about the Organization" - }, - "ProductEnablement": { - "required": [ - "productName", - "type" - ], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Product Enablement Types", - "enum": [ - "NGC_ADMIN_EVAL", - "NGC_ADMIN_NFR", - "NGC_ADMIN_COMMERCIAL", - "EMS_EVAL", - "EMS_NFR", - "EMS_COMMERCIAL", - "NGC_ADMIN_DEVELOPER" - ] - }, - "expirationDate": { - "type": "string", - "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)" - }, - "poDetails": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PurchaseOrder" + "summary": "Get Organization by NCA ID or Org Name", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v3/orgs": { + "post": { + "description": "Create a new organization based on the org info provided in the request.", + "operationId": "createOrganizationFromScratch", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } } }, - "productName": { - "type": "string", - "description": "Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc)" - } + "required": true }, - "description": "Product Enablement" - }, - "ProductSubscription": { - "required": [ - "productName" - ], - "type": "object", - "properties": { - "startDate": { - "type": "string", - "description": "Date on which the subscription becomes active. (yyyy-MM-dd)" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" }, - "productName": { - "type": "string", - "description": "Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc)." + "302": { + "description": "Found" }, - "emsEntitlementType": { - "type": "string", - "description": "EMS Subscription type. (options: EMS_EVAL, EMS_NFR and EMS_COMMERCIAL)", - "enum": [ - "EMS_EVAL", - "EMS_NFR", - "EMS_COMMERICAL", - "EMS_COMMERCIAL" - ] + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "expirationDate": { - "type": "string", - "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "type": { - "type": "string", - "description": "Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, NGC_ADMIN_COMMERCIAL)", - "enum": [ - "NGC_ADMIN_EVAL", - "NGC_ADMIN_NFR", - "NGC_ADMIN_COMMERCIAL" - ] + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "id": { - "type": "string", - "description": "Unique entitlement identifier" - } - }, - "description": "Product Subscription" - }, - "PurchaseOrder": { - "type": "object", - "properties": { - "pkId": { - "type": "string", - "description": "PAK (Product Activation Key) identifier." + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "entitlementId": { - "type": "string", - "description": "Entitlement identifier." - } - }, - "description": "Purchase Order." - }, - "RepoScanSettings": { - "type": "object", - "properties": { - "repoScanAllowOverride": { - "type": "boolean", - "description": "Allow org admin to override the org level repo scan settings" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "repoScanShowResults": { - "type": "boolean", - "description": "Allow showing scan results to CLI or UI" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "repoScanEnabled": { - "type": "boolean", - "description": "Enable the repository scan or not. Only used in org level object" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "repoScanEnableNotifications": { - "type": "boolean", - "description": "Sends notification to end user after scanning is done" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "repoScanByDefault": { - "type": "boolean", - "description": "Allow repository scanning by default" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "repoScanEnableTeamOverride": { - "type": "boolean", - "description": "Allow override settings at team level. Only used in org level object" - } - }, - "description": "Repo scan setting definition" - }, - "TargetSystemUserIdentifier": { - "type": "object", - "properties": { - "uid": { - "type": "integer", - "description": "uid of the user on this team", - "format": "int64" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "orgName": { - "type": "string", - "description": "Org context for the job" + "451": { + "description": "Unavailable For Legal Reasons" }, - "userId": { - "type": "integer", - "description": "Unique ID of the user who submitted the job", - "format": "int64" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "teamName": { - "type": "string", - "description": "Team context for the job" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "gid": { - "type": "integer", - "description": "gid of the user on this team", - "format": "int64" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "starfleetId": { - "type": "string", - "description": "Starfleet ID of the user creating the job." + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": "Information about the user who is attempting to run the job" - }, - "Team": { - "type": "object", - "properties": { - "repoScanSettings": { - "$ref": "#/components/schemas/RepoScanSettings" + "summary": "Create Organization from Scratch", + "tags": [ + "Orgs" + ] + } + }, + "/v3/orgs/proto-org": { + "post": { + "description": "Create a new organization based on the org info retrieved from the ProtoOrg.", + "operationId": "createOrganizationFromProtoOrg", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } }, - "name": { - "type": "string", - "description": "team name" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" }, - "infinityManagerSettings": { - "$ref": "#/components/schemas/InfinityManagerSettings" + "302": { + "description": "Found" }, - "id": { - "type": "integer", - "description": "unique Id of this team.", - "format": "int64" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "isDeleted": { - "type": "boolean", - "description": "indicates if the team is deleted or not" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "description": { - "type": "string", - "description": "description of the team" - } - }, - "description": "Information about the team" - }, - "User": { - "type": "object", - "properties": { - "hasSignedContainerPublishingEULA": { - "type": "boolean", - "description": "indicates if user has accepted container publishing eula" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "hasSignedLlmEULA": { - "type": "boolean", - "description": "indicates if user has accepted LLM End User License Agreement." + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "hasSignedBaseCommandEULA": { - "type": "boolean", - "description": "indicates if user has accepted Base Command End User License Agreement." + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "storageQuota": { - "type": "array", - "description": "Storage quota for this user.", - "items": { - "$ref": "#/components/schemas/UserStorageQuota" - } + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "lastLoginDate": { - "type": "string", - "description": "Last time the user logged in" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "hasSignedEgxEULA": { - "type": "boolean", - "description": "[Deprecated] indicates if user has accepted EGX End User License Agreement." + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "hasBetaAccess": { - "type": "boolean", - "description": "Determines if the user has beta access" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "id": { - "type": "integer", - "description": "unique Id of this user.", - "format": "int64" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "isDeleted": { - "type": "boolean", - "description": "Indicates if user was deleted from the system." + "451": { + "description": "Unavailable For Legal Reasons" }, - "hasSignedAiFoundryPartnershipsEULA": { - "type": "boolean", - "description": "indicates if user has accepted AI Foundry Partnerships eula" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "jobPositionTitle": { - "type": "string", - "description": "Title of user's job position." + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "verified": { - "type": "boolean", - "description": "Is user's email or phone number is verified" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "hasSignedEarth2EULA": { - "type": "boolean", - "description": "indicates if user has accepted Earth-2 eula" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create Organization from ProtoOrg", + "tags": [ + "Orgs" + ] + } + }, + "/v3/orgs/proto-org/validate": { + "get": { + "description": "Validate org creation from proto org", + "operationId": "protoOrgInvitationValidate", + "parameters": [ + { + "description": "JWT that contains org owner email and proto org identifier", + "in": "query", + "name": "invitation_token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgInvitationResponse" + } + } + }, + "description": "OK" }, - "hasSignedNvidiaEULA": { - "type": "boolean", - "description": "Determines if the user has signed the NVIDIA End User License Agreement." + "302": { + "description": "Found" }, - "updatedDate": { - "type": "string", - "description": "Updated date for this user" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "firstLoginDate": { - "type": "string", - "description": "Last time the user logged in" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "email": { - "maxLength": 128, - "minLength": 7, - "type": "string", - "description": "Email address of the user. This should be unique." + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "hasSignedBioNeMoEULA": { - "type": "boolean", - "description": "indicates if user has accepted BioNeMo End User License Agreement." + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "hasSignedBaseCommandManagerEULA": { - "type": "boolean", - "description": "indicates if user has accepted Base Command Manager End User License Agreement." + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "hasSignedPrivacyPolicy": { - "type": "boolean", - "description": "Determines if the user has signed the Privacy Policy." + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "hasSignedEULA": { - "type": "boolean", - "description": "Determines if the user has signed the NGC End User License Agreement." + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "isSAML": { - "type": "boolean", - "description": "Determines if the user is a SAML account or not." + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "hasSignedAODTEULA": { - "type": "boolean", - "description": "indicates if user has accepted AODT End User License Agreement." + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "createdDate": { - "type": "string", - "description": "Created date for this user" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "starfleetId": { - "type": "string", - "description": "unique starfleet id of this user." + "451": { + "description": "Unavailable For Legal Reasons" }, - "hasSignedNVQCEULA": { - "type": "boolean", - "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement." + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "isActive": { - "type": "boolean", - "description": "Determines if the user is active or not." + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "name": { - "maxLength": 64, - "minLength": 1, - "type": "string", - "description": "user name" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "roles": { - "type": "array", - "description": "List of roles that the user have", - "items": { - "$ref": "#/components/schemas/UserRole" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Validate org creation invite", + "tags": [ + "Orgs" + ] + } + }, + "/v3/orgs/{org_name}/teams/{team_name}/users/nca-invitations": { + "post": { + "description": "Invites and creates a User in team", + "operationId": "inviteUserToNcaInTeam", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" } }, - "userMetadata": { - "$ref": "#/components/schemas/UserMetadata" - }, - "hasSubscribedToEmail": { - "type": "boolean", - "description": "Determines if the user has opted in email subscription." - }, - "hasSignedCuOptEULA": { - "type": "boolean", - "description": "indicates if user has accepted CuOpt eula" - }, - "clientId": { - "type": "string", - "description": "unique auth client id of this user." - }, - "hasSignedOmniverseEULA": { - "type": "boolean", - "description": "indicates if user has accepted Omniverse End User License Agreement." + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserNcaInvitationRequest" + } + } }, - "idpType": { - "type": "string", - "description": "Type of IDP, Identity Provider. Used for login.", - "enum": [ - "NVIDIA", - "ENTERPRISE" - ] + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" }, - "hasProfile": { - "type": "boolean", - "description": "indicate if user profile has been completed." + "302": { + "description": "Found" }, - "hasSignedFleetCommandEULA": { - "type": "boolean", - "description": "indicates if user has accepted Fleet Command End User License Agreement." + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "hasSignedNVAIEEULA": { - "type": "boolean", - "description": "indicates if user has accepted Fleet Command End User License Agreement." + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "hasSignedThirdPartyRegistryShareEULA": { - "type": "boolean", - "description": "indicates if user has consented to share their registration info with other parties" - } - }, - "description": "information about the user" - }, - "UserMetadata": { - "type": "object", - "properties": { - "companyUrl": { - "type": "string", - "description": "Company URL" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "firstName": { - "maxLength": 255, - "type": "string", - "description": "User's first name" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "country": { - "type": "string", - "description": "Country of the user" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "company": { - "maxLength": 128, - "type": "string", - "description": "Name of the company" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "role": { - "type": "string", - "description": "Role of the user in the company" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "interest": { - "type": "array", - "description": "List of development areas that user has interest", - "items": { - "type": "string", - "description": "List of development areas that user has interest" - } + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "lastName": { - "maxLength": 255, - "type": "string", - "description": "User's last name" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "industry": { - "type": "string", - "description": "Industry segment" - } - }, - "description": "Metadata information about the user." - }, - "UserResponse": { - "type": "object", - "properties": { - "activationToken": { - "type": "string", - "description": "token needed to activate the user to enable login and other features" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "userRoles": { - "type": "array", - "description": "DEPRECATED - Please use roles inside user", - "items": { - "$ref": "#/components/schemas/UserRole" - } + "451": { + "description": "Unavailable For Legal Reasons" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "ncaRole": { - "type": "string", - "description": "NCA role", - "enum": [ - "UNKNOWN", - "ADMINISTRATOR", - "MEMBER", - "OWNER", - "PENDING" - ] + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "user": { - "$ref": "#/components/schemas/User" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": " about one user" - }, - "UserRole": { - "type": "object", - "properties": { - "roleTypes": { - "type": "array", - "description": "DEPRECATED - List of role types that the user have", - "items": { - "type": "string", - "description": "DEPRECATED - List of role types that the user have" + "summary": "Invite User to NCA (team version)", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/teams/{team_name}/users/{id}": { + "delete": { + "description": "Remove User from team.", + "operationId": "removeUserFromTeam", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" } }, - "targetSystemUserIdentifier": { - "$ref": "#/components/schemas/TargetSystemUserIdentifier" - }, - "orgRoles": { - "type": "array", - "description": "List of org role types that the user have", - "items": { - "type": "string", - "description": "List of org role types that the user have" + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" } }, - "team": { - "$ref": "#/components/schemas/Team" - }, - "org": { - "$ref": "#/components/schemas/Organization" + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } }, - "teamRoles": { - "type": "array", - "description": "List of team role types that the user have", - "items": { - "type": "string", - "description": "List of team role types that the user have" + { + "description": "If anonymize is true, then org owner permission is required.", + "in": "query", + "name": "anonymize", + "required": false, + "schema": { + "default": false, + "type": "boolean" } } - }, - "description": "List of roles that the user have" - }, - "UserStorageQuota": { - "type": "object", - "properties": { - "available": { - "type": "integer", - "description": "Available space in bytes", - "format": "int64" - }, - "datasetsUsage": { - "type": "integer", - "description": "Space used by datasets in bytes", - "format": "int64" - }, - "aceName": { - "type": "string", - "description": "name of the ace" - }, - "workspacesCount": { - "type": "integer", - "description": "Number of workspaces that are a part of user's used storage", - "format": "int64" - }, - "orgName": { - "type": "string", - "description": "The org name that this user quota tied to. This is needed for analytics" - }, - "resultsetCount": { - "type": "integer", - "description": "Number of resultsets that are a part of user's used storage", - "format": "int64" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "quota": { - "type": "integer", - "description": "Assigned quota in bytes", - "format": "int64" + "302": { + "description": "Found" }, - "storageClusterDescription": { - "type": "string", - "description": "Description of this storage cluster" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "storageClusterUuid": { - "type": "string", - "description": "Identifier to this storage cluster" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "datasetCount": { - "type": "integer", - "description": "Number of datasets that are a part of user's used storage", - "format": "int64" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "aceId": { - "type": "integer", - "description": "id of the ace", - "format": "int64" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "resultsetsUsage": { - "type": "integer", - "description": "Space used by resultsets in bytes", - "format": "int64" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "workspacesUsage": { - "type": "integer", - "description": "Space used by workspaces in bytes", - "format": "int64" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "storageClusterName": { - "type": "string", - "description": "Name of storage cluster" - } - }, - "description": "represents user storage quota for a given ace and available unused storage" - }, - "UsersInfo": { - "type": "object", - "properties": { - "totalUsers": { - "type": "integer", - "description": "Total number of users.", - "format": "int64" - } - }, - "description": "Users information." - }, - "OrgCreateRequestV3": { - "type": "object", - "properties": { - "salesforceAccountIndustry": { - "type": "string", - "description": "Company or organization industry" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "pecName": { - "type": "string", - "description": "product end customer name for enterprise(Fleet Command) product" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "orgOwner": { - "$ref": "#/components/schemas/OrgOwnerV3" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "displayName": { - "maxLength": 255, - "minLength": 1, - "type": "string", - "description": "Name of the organization that will be shown to users." + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "name": { - "maxLength": 64, - "minLength": 2, - "type": "string", - "description": "Organization name" + "451": { + "description": "Unavailable For Legal Reasons" }, - "sendEmail": { - "type": "boolean", - "description": "Send email to org owner or not. Default is true" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "country": { - "type": "string", - "description": "user country" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "description": { - "maxLength": 128, - "type": "string", - "description": "optional description of the organization" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "initiator": { - "type": "string", - "description": "Identify the initiator of the org request" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove User from team", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id}": { + "get": { + "description": "Get info and role/invitation in a team by email or id", + "operationId": "listUserRolesInOrgTeam", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } }, - "productEnablements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductEnablement" + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" } }, - "ncaNumber": { - "type": "string", - "description": "NVIDIA Cloud Account Number" + { + "in": "path", + "name": "user_email_or_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" }, - "pecSfdcId": { - "type": "string", - "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product" + "302": { + "description": "Found" }, - "ncaId": { - "type": "string", - "description": "NVIDIA Cloud Account Identifier" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "isInternal": { - "type": "boolean", - "description": "Is NVIDIA internal org or not" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "protoOrgId": { - "type": "string", - "description": "Proto org identifier" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "type": { - "type": "string", - "enum": [ - "UNKNOWN", - "CLOUD", - "ENTERPRISE", - "INDIVIDUAL" - ] + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "productSubscriptions": { - "type": "array", - "description": "This should be deprecated, use productEnablements instead", - "items": { - "$ref": "#/components/schemas/ProductSubscription" - } - } - }, - "description": "Request to create new Organization in v3 flow" - }, - "OrgOwnerV3": { - "required": [ - "email" - ], - "type": "object", - "properties": { - "starfleetId": { - "type": "string", - "description": "Starfleet ID of the org owner." + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "fullName": { - "maxLength": 64, - "minLength": 1, - "type": "string", - "description": "Org owner name." + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "idpId": { - "type": "string", - "description": "Identity Provider ID of the org owner." + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "email": { - "maxLength": 128, - "type": "string", - "description": "Email address of the org owner." - } - }, - "description": "Org owner." - }, - "OrgResponse": { - "type": "object", - "properties": { - "organizations": { - "$ref": "#/components/schemas/Organization" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" - } - }, - "description": "info about an organizations" - }, - "OrgNcaMappingRequest": { - "type": "object", - "properties": { - "orgNames": { - "type": "array", - "description": "List of org names", - "items": { - "type": "string", - "description": "List of org names" - } + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "ncaIds": { - "type": "array", - "description": "List of nca Ids", - "items": { - "type": "string", - "description": "List of nca Ids" - } - } - }, - "description": "object to get the org and nca mapping" - }, - "OrgNca": { - "type": "object", - "properties": { - "orgName": { - "type": "string", - "description": "Organization name" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "ncaId": { - "type": "string", - "description": "NVIDIA Cloud Account Id" - } - }, - "description": "Org vs NcaId mapping" - }, - "OrgNcaMappingResponse": { - "type": "object", - "properties": { - "orgNcaMapping": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgNca" - } - } - }, - "description": "org and nca mapping response" - }, - "UserKeyResponse": { - "required": [ - "key" - ], - "type": "object", - "properties": { - "cloudNfsKey": { - "type": "string" + "451": { + "description": "Unavailable For Legal Reasons" }, - "cloudNfsKeyPwd": { - "type": "string" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "key": { - "maxLength": 255, - "type": "string" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "cloudNfsUserName": { - "type": "string" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": "response to a request to access key such as docker token" - }, - "UserCreateRequest": { - "required": [ - "email" - ], - "type": "object", - "properties": { - "roleType": { - "type": "string", - "description": "DEPRECATED - use roleTypes which allows multiple roles" - }, - "roleTypes": { - "type": "array", - "description": "feature roles to give to the user", - "items": { - "type": "string", - "description": "feature roles to give to the user" + "summary": "Get user in a team by email or id.", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id}/add-role": { + "patch": { + "description": "Invite if user does not exist, otherwise add role in team", + "operationId": "addRoleOrInviteUserToTeam", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" } }, - "name": { - "maxLength": 64, - "minLength": 1, - "type": "string", - "description": "user name" - }, - "eulaAccepted": { - "type": "boolean", - "description": "indicates if user has accepted EULA" - }, - "emailOptIn": { - "type": "boolean", - "description": "indicates if user has opt in to nvidia emails" - }, - "userMetadata": { - "$ref": "#/components/schemas/UserMetadata" + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" + } }, - "salesforceContactJobRole": { - "type": "string", - "description": "user job role" + { + "in": "path", + "name": "user_email_or_id", + "required": true, + "schema": { + "type": "string" + } }, - "email": { - "maxLength": 128, - "minLength": 6, - "type": "string", - "description": "Email address of the user. This should be unique." + { + "in": "query", + "name": "roles", + "required": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } } - }, - "description": "object used request user creation in an existing org" - }, - "TeamCreateRequest": { - "required": [ - "name" ], - "type": "object", - "properties": { - "name": { - "maxLength": 19, - "minLength": 2, - "type": "string", - "description": "team name" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" }, - "description": { - "maxLength": 255, - "type": "string", - "description": "description of the team" - } - }, - "description": "Request to create new Team" - }, - "TeamCreateResponse": { - "type": "object", - "properties": { - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "302": { + "description": "Found" }, - "team": { - "$ref": "#/components/schemas/Team" - } - }, - "description": "response to an team creation request, includes unique team id" - }, - "Response": { - "type": "object", - "properties": { - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" - } - } - }, - "OrgCreateRequest": { - "required": [ - "orgOwner" - ], - "type": "object", - "properties": { - "salesforceAccountIndustry": { - "type": "string", - "description": "Company or organization industry" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "pecName": { - "type": "string", - "description": "product end customer name for enterprise(Fleet Command) product" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "orgOwner": { - "$ref": "#/components/schemas/OrgOwner" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "displayName": { - "maxLength": 255, - "minLength": 1, - "type": "string", - "description": "Name of the organization that will be shown to users." + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "name": { - "maxLength": 64, - "minLength": 2, - "type": "string", - "description": "Organization name" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "sendEmail": { - "type": "boolean", - "description": "Send email to org owner or not. Default is true" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "country": { - "type": "string", - "description": "user country" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "description": { - "maxLength": 128, - "type": "string", - "description": "optional description of the organization" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "idpId": { - "type": "string", - "description": "Identity Provider ID." + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "productEnablements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductEnablement" - } + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "pecSfdcId": { - "type": "string", - "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product" + "451": { + "description": "Unavailable For Legal Reasons" }, - "isInternal": { - "type": "boolean", - "description": "Is NVIDIA internal org or not" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "type": { - "type": "string", - "enum": [ - "UNKNOWN", - "CLOUD", - "ENTERPRISE", - "INDIVIDUAL" - ] + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "productSubscriptions": { - "type": "array", - "description": "This should be deprecated, use productEnablements instead", - "items": { - "$ref": "#/components/schemas/ProductSubscription" - } + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": "Request to create new Organization" - }, - "OrgUpdateRequest": { - "type": "object", - "properties": { - "isSecureCredentialSharingServiceEnabled": { - "type": "boolean", - "description": "Secure Credential Sharing Service enable flag for an organization" - }, - "isInternal": { - "type": "boolean", - "description": "Is NVIDIA internal org or not" - }, - "idpId": { - "type": "string", - "description": "Identity Provider ID." + "summary": "Invite user or add role in team", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id}/remove-role": { + "delete": { + "description": "Remove role in team if user exists, otherwise remove invitation", + "operationId": "removeRoleOrInvitationInTeam", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } }, - "productEnablements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductEnablement" + { + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "type": "string" } }, - "pecSfdcId": { - "type": "string", - "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product" + { + "in": "path", + "name": "user_email_or_id", + "required": true, + "schema": { + "type": "string" + } }, - "isRegistrySSEEnabled": { - "type": "boolean", - "description": "If a server side encryption is enabled for private registry (models, resources)" + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" }, - "alternateContact": { - "$ref": "#/components/schemas/AlternateContact" + "302": { + "description": "Found" }, - "isSeparateInfluxDbUsed": { - "type": "boolean", - "description": "If a separate influx db used for an organization in Base Command Platform job telemetry" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "infinityManagerSettings": { - "$ref": "#/components/schemas/InfinityManagerSettings" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "type": { - "type": "string", - "enum": [ - "UNKNOWN", - "CLOUD", - "ENTERPRISE", - "INDIVIDUAL" - ] + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "repoScanSettings": { - "$ref": "#/components/schemas/RepoScanSettings" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "description": { - "maxLength": 128, - "type": "string", - "description": "optional description of the organization" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "companyName": { - "maxLength": 128, - "type": "string", - "description": "Name of the company" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "pecName": { - "type": "string", - "description": "product end customer name for enterprise(Fleet Command) product" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "orgOwner": { - "$ref": "#/components/schemas/OrgOwner" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "displayName": { - "maxLength": 255, - "minLength": 1, - "type": "string", - "description": "Name of the organization that will be shown to users." + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "productSubscriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductSubscription" - } + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "isQuickStartEnabled": { - "type": "boolean", - "description": "Quick Start enable flag for an organization" + "451": { + "description": "Unavailable For Legal Reasons" }, - "isDatasetServiceEnabled": { - "type": "boolean", - "description": "Dataset Service enable flag for an organization" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "isSecretsManagerServiceEnabled": { - "type": "boolean", - "description": "Secrets Manager Service enable flag for an organization" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "ngcClaimID": { - "type": "string", - "description": "NGC Reference ID for redeem subscription flow tracking purpose. Provided from RWA only." + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "orgOwners": { - "type": "array", - "description": "Org owners", - "items": { - "$ref": "#/components/schemas/OrgOwner" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove role or invitation in team", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/users/nca-invitations": { + "post": { + "description": "Invites and creates a User in org", + "operationId": "inviteUserToNcaInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserNcaInvitationRequest" + } + } + }, + "required": true }, - "description": "Object used to update Org information" - }, - "UserUpdateRequest": { - "type": "object", - "properties": { - "hasSignedBaseCommandManagerEULA": { - "type": "boolean", - "description": "indicates if user has accepted Base Command Manager End User License Agreement." + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "hasSignedContainerPublishingEULA": { - "type": "boolean", - "description": "indicates if user has accepted container publishing eula" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "name": { - "maxLength": 64, - "minLength": 1, - "type": "string", - "description": "user name" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "hasSignedLlmEULA": { - "type": "boolean", - "description": "indicates if user has accepted LLM End User License Agreement." + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "hasSignedPrivacyPolicy": { - "type": "boolean", - "description": "indicates if the user has signed the Privacy Policy" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "hasSignedNvidiaEULA": { - "type": "boolean", - "description": "indicates if user has accepted NVIDIA EULA" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "hasSignedCuOptEULA": { - "type": "boolean", - "description": "indicates if user has accepted CuOpt End User License Agreement." + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "hasSignedEarth2EULA": { - "type": "boolean", - "description": "indicates if user has accepted Earth-2 End User License Agreement." + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "hasSignedBaseCommandEULA": { - "type": "boolean", - "description": "indicates if user has accepted Base Command EULA" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "hasSignedOmniverseEULA": { - "type": "boolean", - "description": "indicates if user has accepted Omniverse End User License Agreement." + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "hasSignedNVAIEEULA": { - "type": "boolean", - "description": "indicates if user has accepted Fleet Command End User License Agreement." + "451": { + "description": "Unavailable For Legal Reasons" }, - "hasSignedAODTEULA": { - "type": "boolean", - "description": "indicates if user has accepted AODT End User License Agreement." + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "hasEmailOptIn": { - "type": "boolean", - "description": "indicates if user has opt in to nvidia emails" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "hasSignedThirdPartyRegistryShareEULA": { - "type": "boolean", - "description": "indicates if user has consented to share their registration info with other parties" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "userMetadata": { - "$ref": "#/components/schemas/UserMetadata" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Invite User to NCA (org version)", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/users/{id}": { + "delete": { + "description": "Remove User from org.", + "operationId": "removeUserFromOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } }, - "hasSignedEgxEULA": { - "type": "boolean", - "description": "indicates if user has accepted EGX EULA" + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } }, - "hasSignedFleetCommandEULA": { - "type": "boolean", - "description": "indicates if user has accepted Fleet Command End User License Agreement." + { + "description": "If anonymize is true, then org owner permission is required.", + "in": "query", + "name": "anonymize", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "hasSignedNVQCEULA": { - "type": "boolean", - "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement." + "302": { + "description": "Found" }, - "hasSignedEULA": { - "type": "boolean", - "description": "indicates if user has accepted NGC EULA" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "hasSignedBioNeMoEULA": { - "type": "boolean", - "description": "indicates if user has accepted BioNeMo End User License Agreement." + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "hasSignedAiFoundryPartnershipsEULA": { - "type": "boolean", - "description": "indicates if user has accepted AI Foundry Partnerships End User License Agreement." - } - }, - "description": "object used to request user update" - }, - "OrgProfileUpdateRequest": { - "type": "object", - "properties": { - "displayName": { - "maxLength": 255, - "minLength": 1, - "type": "string", - "description": "Name of the organization that will be shown to users" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "description": { - "maxLength": 128, - "type": "string", - "description": "optional description of the organization" - } - }, - "description": "Object used to update Org profile information" - }, - "TeamUpdateRequest": { - "type": "object", - "properties": { - "repoScanSettings": { - "$ref": "#/components/schemas/RepoScanSettings" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "description": { - "maxLength": 255, - "type": "string", - "description": "description of the team" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "infinityManagerSettings": { - "$ref": "#/components/schemas/InfinityManagerSettings" - } - }, - "description": "object used to update information about existing team" - }, - "TeamResponse": { - "type": "object", - "properties": { - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "team": { - "$ref": "#/components/schemas/Team" - } - }, - "description": "details about one team" - }, - "Entitlement": { - "type": "object", - "properties": { - "entitlementState": { - "type": "string", - "description": "Entitlement state" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "entitlementExpirationTime": { - "type": "string", - "description": "Entitlement expiration time" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "pecSfdcId": { - "type": "string", - "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "entitlementId": { - "type": "string", - "description": "Unique entitlement identifier" + "451": { + "description": "Unavailable For Legal Reasons" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitlementProduct" - } - } - }, - "description": "Information about the entitlement for an org" - }, - "EntitlementProduct": { - "type": "object", - "properties": { - "pkId": { - "type": "string", - "description": "Unique product key identifier" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "subscriptionType": { - "type": "string", - "description": "Subscription type" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "productName": { - "type": "string", - "description": "Product name. ex: FleetCommand, Batch, etc" - } - }, - "description": "Information about the entitlement product" - }, - "OrgListEntitlementResponse": { - "type": "object", - "properties": { - "entitlements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganizationEntitlement" - } + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": "List of all organizations which have entitlement information. Only accessible by NGC admin portal" - }, - "OrganizationEntitlement": { - "type": "object", - "properties": { - "orgName": { - "type": "string", - "description": "Organization name" + "summary": "Remove User from org", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/users/{user_email_or_id}": { + "get": { + "description": "Get info and role/invitation in an org by email or id", + "operationId": "listUserRolesInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" + } }, - "entitlements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Entitlement" + { + "in": "path", + "name": "user_email_or_id", + "required": true, + "schema": { + "type": "string" } } - }, - "description": "Information about the organization entitlements" - }, - "PackageVersion": { - "type": "object", - "properties": { - "version": { - "type": "string", - "description": "The version number" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" }, - "name": { - "type": "string", - "description": "The name of the package" + "302": { + "description": "Found" }, - "createdAt": { - "type": "string", - "description": "The creation date of the version" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "description": { - "type": "string", - "description": "Human readable description of the package" - } - }, - "description": "Latest version information for a specific package" - }, - "PackageVersionListResponse": { - "type": "object", - "properties": { - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "versions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PackageVersion" - } - } - }, - "description": "an array of versions" - }, - "OrgInvitation": { - "type": "object", - "properties": { - "protoOrgId": { - "type": "string", - "description": "Proto Org identifier." + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "email": { - "type": "string", - "description": "Email address of the user." - } - }, - "description": "Org invitation to NGC" - }, - "OrgInvitationResponse": { - "type": "object", - "properties": { - "orgInvitation": { - "$ref": "#/components/schemas/OrgInvitation" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" - } - }, - "description": "Invitation Validation Response." - }, - "OrgListResponse": { - "type": "object", - "properties": { - "organizations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Organization" - } + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "paginationInfo": { - "$ref": "#/components/schemas/PaginationInfo" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" - } - }, - "description": "List of organizations." - }, - "PaginationInfo": { - "type": "object", - "properties": { - "totalPages": { - "type": "integer", - "description": "Total number of pages available", - "format": "int64" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "index": { - "type": "integer", - "description": "Page index of results", - "format": "int32" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "totalResults": { - "type": "integer", - "description": "Total number of results available", - "format": "int64" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "nextPage": { - "type": "string", - "description": "Serialized pointer to the next results page. Should be used for fetching next page. Can be empty" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "size": { - "type": "integer", - "description": "Number of results in page", - "format": "int32" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": "object that describes the pagination information" - }, - "SearchParamFilter": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "SearchParamOrderBy": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "value": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } - }, - "SearchParams": { - "type": "object", - "properties": { - "orderBy": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SearchParamOrderBy" - } - }, - "queryFields": { - "type": "array", - "items": { + "summary": "Get user in an org by email or id.", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/users/{user_email_or_id}/add-role": { + "patch": { + "description": "Invite if user does not exist, otherwise add role in org", + "operationId": "addRoleOrInviteUserToOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { "type": "string" } }, - "scoredSize": { - "type": "integer", - "format": "int64" - }, - "pageSize": { - "type": "integer", - "format": "int64" - }, - "fields": { - "type": "array", - "items": { + { + "in": "path", + "name": "user_email_or_id", + "required": true, + "schema": { "type": "string" } }, - "page": { - "type": "integer", - "format": "int64" - }, - "filters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SearchParamFilter" + { + "in": "query", + "name": "roles", + "required": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array" } - }, - "query": { - "type": "string" - }, - "groupBy": { - "type": "string" } - } - }, - "UserInvitation": { - "type": "object", - "properties": { - "name": { - "maxLength": 64, - "minLength": 1, - "type": "string", - "description": "user name" - }, - "roles": { - "type": "array", - "description": "List of roles that the user have.", - "items": { - "type": "string", - "description": "List of roles that the user have." - } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" }, - "createdDate": { - "type": "string", - "description": "Date on which the invitation was created. (ISO-8601 format)" + "302": { + "description": "Found" }, - "isProcessed": { - "type": "boolean", - "description": "Flag indicating if the invitation has already been accepted by the user." + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "team": { - "type": "string", - "description": "Team to which a user was invited." + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "id": { - "type": "string", - "description": "Unique invitation ID" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "org": { - "type": "string", - "description": "Org to which a user was invited." + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "type": { - "type": "string", - "description": "Type of invitation. The invitation is either to an organization or to a team within organization.", - "enum": [ - "ORGANIZATION", - "TEAM" - ] + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "email": { - "maxLength": 128, - "minLength": 7, - "type": "string", - "description": "Email address of the user." - } - }, - "description": "User invitation to an NGC org or team" - }, - "UserInvitationListResponse": { - "type": "object", - "properties": { - "paginationInfo": { - "$ref": "#/components/schemas/PaginationInfo" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "invitations": { - "type": "array", - "description": "List of invitations.", - "items": { - "$ref": "#/components/schemas/UserInvitation" - } - } - }, - "description": "Response for a list of user invitations." - }, - "UserListResponse": { - "type": "object", - "properties": { - "paginationInfo": { - "$ref": "#/components/schemas/PaginationInfo" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "users": { - "type": "array", - "description": "information about the user", - "items": { - "$ref": "#/components/schemas/User" - } - } - }, - "description": "Response for List User reponse" - }, - "TeamListResponse": { - "type": "object", - "properties": { - "paginationInfo": { - "$ref": "#/components/schemas/PaginationInfo" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" + "451": { + "description": "Unavailable For Legal Reasons" }, - "teams": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Team" - } - } - }, - "description": "listing of all teams" - }, - "ValidateOrgQueryParams": { - "required": [ - "orgOwner", - "pecSfdcId", - "productSubscriptions" - ], - "type": "object", - "properties": { - "pecSfdcId": { - "type": "string", - "description": "Product end customer salesforce.com id (external customer id) for enterprise product." + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "orgOwner": { - "$ref": "#/components/schemas/OrgOwner" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "productSubscriptions": { - "type": "array", - "description": "Product Subscriptions.", - "items": { - "$ref": "#/components/schemas/ProductSubscription" - } - } - }, - "description": "Object for defining params to validate org." - }, - "RoleProduct": { - "type": "object", - "properties": { - "displayName": { - "type": "string", - "description": "Display Name of the product from the product catalog to which this role is associated with" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "name": { - "type": "string", - "description": "Name of the product from the product catalog to which this role is associated with" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } }, - "description": "Product information of the role" - }, - "ServiceAccess": { - "type": "object", - "properties": { - "service": { - "type": "string", - "description": "Service that this role allows" - }, - "accessLevels": { - "type": "array", - "description": "List of access levels that this role allows", - "items": { - "type": "string", - "description": "List of access levels that this role allows" + "summary": "Invite user or add role in org", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org_name}/users/{user_email_or_id}/remove-role": { + "delete": { + "description": "Remove role in org if user exists, otherwise remove invitation", + "operationId": "removeRoleOrInvitationInOrg", + "parameters": [ + { + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "type": "string" } - } - }, - "description": "List of actions that this role allows" - }, - "UserRoleDefinition": { - "type": "object", - "properties": { - "shortDisplayName": { - "type": "string", - "description": "Short Display Name of the role" - }, - "product": { - "$ref": "#/components/schemas/RoleProduct" - }, - "displayName": { - "type": "string", - "description": "Display Name of the role" - }, - "name": { - "type": "string", - "description": "Name of the role" }, - "allowedActions": { - "type": "array", - "description": "List of actions that this role allows", - "items": { - "$ref": "#/components/schemas/ServiceAccess" + { + "in": "path", + "name": "user_email_or_id", + "required": true, + "schema": { + "type": "string" } - } - }, - "description": "List of roles" - }, - "UserRoleDefinitionsResponse": { - "type": "object", - "properties": { - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" }, - "roles": { - "type": "array", - "description": "List of roles", - "items": { - "$ref": "#/components/schemas/UserRoleDefinition" + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" } } - }, - "description": "Response containing all the roles defined in NGC and their allowed actions" - }, - "Health": { - "type": "object", - "properties": { - "healthCodeDescription": { - "maxLength": 255, - "minLength": 1, - "type": "string", - "description": "Human readable description" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" }, - "healthCode": { - "type": "string", - "description": "Enum that describes health of the service", - "enum": [ - "UNKNOWN", - "OK", - "UNDER_MAINTENANCE", - "WARNING", - "FAILED" - ] + "302": { + "description": "Found" }, - "metaData": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MetaData" - } - } - }, - "description": "object that describes health of the service" - }, - "HealthResponse": { - "type": "object", - "properties": { - "health": { - "$ref": "#/components/schemas/Health" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus" - } - }, - "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method" - }, - "MetaData": { - "type": "object", - "properties": { - "key": { - "maxLength": 255, - "type": "string" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "value": { - "maxLength": 255, - "type": "string" - } - } - }, - "SwaggerResource": { - "type": "object", - "properties": { - "name": { - "type": "string" + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "url": { - "type": "string" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "swaggerVersion": { - "type": "string" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "location": { - "type": "string", - "deprecated": true - } - } - }, - "UiConfiguration": { - "type": "object", - "properties": { - "deepLinking": { - "type": "boolean" + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "displayOperationId": { - "type": "boolean" + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "defaultModelsExpandDepth": { - "type": "integer", - "format": "int32" + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "defaultModelExpandDepth": { - "type": "integer", - "format": "int32" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "defaultModelRendering": { - "type": "string", - "enum": [ - "example", - "model" - ] + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "displayRequestDuration": { - "type": "boolean" + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "docExpansion": { - "type": "string", - "enum": [ - "none", - "list", - "full" - ] + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "filter": { - "type": "object" + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "maxDisplayedTags": { - "type": "integer", - "format": "int32" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove role or invitation in org", + "tags": [ + "Users Management" + ] + } + }, + "/version": { + "get": { + "description": "Used to get the latest version number of a given package.", + "operationId": "getLatestPackageVersion", + "parameters": [ + { + "description": "repository of package", + "in": "query", + "name": "repo", + "required": false, + "schema": { + "type": "string" + } }, - "operationsSorter": { - "type": "string", - "enum": [ - "alpha", - "method" - ] + { + "description": "name of package", + "in": "query", + "name": "package", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PackageVersionListResponse" + } + } + }, + "description": "OK" }, - "showExtensions": { - "type": "boolean" + "302": { + "description": "Found" }, - "tagsSorter": { - "type": "string", - "enum": [ - "alpha" - ] + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - "validatorUrl": { - "type": "string" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" }, - "apisSorter": { - "type": "string", - "deprecated": true + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" }, - "jsonEditor": { - "type": "boolean", - "deprecated": true + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - "showRequestHeaders": { - "type": "boolean", - "deprecated": true + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" }, - "supportedSubmitMethods": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "SecurityConfiguration": { - "type": "object", - "properties": { - "apiKey": { - "type": "string", - "deprecated": true + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" }, - "apiKeyVehicle": { - "type": "string", - "deprecated": true + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" }, - "apiKeyName": { - "type": "string", - "deprecated": true + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" }, - "clientId": { - "type": "string" + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" }, - "clientSecret": { - "type": "string" + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" }, - "realm": { - "type": "string" + "451": { + "description": "Unavailable For Legal Reasons" }, - "appName": { - "type": "string" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" }, - "scopeSeparator": { - "type": "string" + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" }, - "additionalQueryStringParams": { - "type": "object", - "additionalProperties": { - "type": "object" - } + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" }, - "useBasicAuthenticationWithAccessCodeGrant": { - "type": "boolean" + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" } - } + }, + "summary": "Version Number", + "tags": [ + "Services" + ] } + } + }, + "security": [ + { + "api-key": [] }, - "securitySchemes": { - "api-key": { - "type": "apiKey", - "description": "Authenticate your API requests by adding the API key from https://ngc.nvidia.com/setup/api-key", - "name": "Authorization", - "in": "header" - }, - "bearer-token": { - "type": "http", - "description": "Users can issue API tokens by calling GET https://ngc.authn.nvidia.com/token?scope=group/ngc[:[/]].\nWhenever the user wants to access a protected route or resource, the user must get the token for that particular organization / team", - "scheme": "bearer", - "bearerFormat": "JWT" - } + { + "bearer-token": [] + } + ], + "servers": [ + { + "url": "https://api.ngc.nvidia.com" + } + ], + "tags": [ + { + "name": "Services" + }, + { + "name": "Orgs" + }, + { + "name": "Super Admin User Controller" + }, + { + "name": "Super Admin Org Controller" + }, + { + "description": "Team Operations", + "name": "Teams" + }, + { + "description": "Operation to manager users", + "name": "Users Management" } - } + ] } diff --git a/provider-dev/downloaded/cleaned/ngc_models.json b/provider-dev/downloaded/cleaned/ngc_models.json index 0147d74..a8dd8c8 100644 --- a/provider-dev/downloaded/cleaned/ngc_models.json +++ b/provider-dev/downloaded/cleaned/ngc_models.json @@ -1,2704 +1,6630 @@ { - "openapi": "3.1.0", - "info": { - "title": "Models API", - "termsOfService": "https://www.nvidia.com/en-us/legal_info", - "contact": { - "name": "NVIDIA", - "url": "https://www.nvidia.com/" - }, - "version": "0.0.1-SNAPSHOT" - }, - "servers": [ - { - "url": "https://models.ngc.nvidia.com", - "description": "Generated server url - production", - "x-internal": true - } - ], - "tags": [ - { - "name": "ArtifactChecksum", - "description": "Artifact file checksum verification and commit endpoints" - }, - { - "name": "Artifact deployment parameters", - "description": "Artifact-level overrides for cloud deployment parameters" - }, - { - "name": "ArtifactSigning", - "description": "Artifact signing and signature verification" - }, - { - "name": "Publish", - "description": "Publish artifacts to the NGC catalog" - }, - { - "name": "Artifact Versions", - "description": "Artifact (resource, model, helm chart) Version endpoints" - }, - { - "name": "Apps", - "description": "App-to-artifact associations" - }, - { - "name": "Deployment parameters meta", - "description": "Metadata describing cloud deployment parameter schemas" - }, - { - "name": "AIPlayground", - "description": "AI Playground demo metadata endpoints" - }, - { - "name": "Collections", - "description": "Collections endpoints" - }, - { - "name": "Models", - "description": "Model endpoints" - }, - { - "name": "Cloud service provider deployment parameters", - "description": "Default CSP-level cloud deployment parameters" - }, - { - "name": "Health", - "description": "Service health checks" - }, - { - "name": "Model Version Files", - "description": "Model endpoints" - }, - { - "name": "Artifacts", - "description": "Artifact (resource, model, helm chart) endpoints" - }, - { - "name": "Resources", - "description": "Resources endpoints, previously known as 'recipes'" - }, - { - "name": "MalwareScan", - "description": "Malware scan status for artifact files" - }, - { - "name": "Workflows", - "description": "Asynchronous artifact-registry workflow status endpoints" - }, - { - "name": "GpuByPci", - "description": "GPU metadata lookup by PCI identifier" - }, - { - "name": "Helm Charts", - "description": "Helm chart version management" - }, - { - "name": "Cloud service providers", - "description": "Cloud service provider registry entries" - }, - { - "name": "Artifact Version Files", - "description": "Artifact (resource, model, helm chart) Version File endpoints" - }, - { - "name": "Encryption Keys", - "description": "Customer-managed encryption keys for artifact storage" - }, - { - "name": "Artifact File", - "description": "Resource and Model File endpoints" - }, - { - "name": "Resource Versions", - "description": "Resource Versions endpoints, previously known as 'recipes'" - }, - { - "name": "Resource Version Files endpoints", - "description": "Resource Version File endpoints, previously known as 'recipes'" - }, - { - "name": "Model Version", - "description": "Model endpoints" - }, - { - "name": "nspect_id", - "description": "NSPECT-LOEJ-50BP" - } - ], - "paths": { - "/v1/org/{org}/{type}/{name}/versions/{version}/async-clone": { - "put": { - "tags": [ - "Artifact File" - ], - "summary": "Clone Artifact files asynchronously", - "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", - "operationId": "cloneArtifactVersionFilesAsync", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "components": { + "schemas": { + "AIPlaygroundCreateRequest": { + "description": "Request to create a new AI Playground config", + "properties": { + "artifactName": { + "description": "Unique name of the model", + "type": "string" }, - { - "name": "type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } + "attributes": { + "description": "Metadata json string", + "type": "string" }, - { - "name": "name", - "in": "path", - "description": "Target artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } + "nvcfFunctionId": { + "description": "NVCF function id for the model playground", + "type": "string" }, - { - "name": "version", - "in": "path", - "description": "Target version ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "nvcfInferencePath": { + "description": "NVCF inference path (invocation route) for the model playground", + "type": "string" + }, + "openAPISpec": { + "description": "OpenAPI specification for this model", + "type": "string" } + }, + "required": [ + "artifactName", + "nvcfFunctionId" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" - } - } + "type": "object" + }, + "AIPlaygroundResponse": { + "description": "Request to fetch an AI Playground config", + "properties": { + "artifactName": { + "description": "Unique name of the model", + "type": "string" }, - "required": true - }, - "responses": { - "202": { - "description": "Accepted", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" - } - } - } + "artifactType": { + "description": "ArtifactTypeEnum of the artifact", + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "attributes": { + "description": "Metadata json string", + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "namespace": { + "description": "org/team of the model", + "type": "string" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "nvcfFunctionId": { + "description": "NVCF function id for the model playground", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "nvcfInferencePath": { + "description": "NVCF inference path (invocation route) for the model playground", + "type": "string" + }, + "openAPISpec": { + "description": "OpenAPI specification for this model", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" } }, - "security": [ - { - "ssa": [ - "cloneArtifact" - ] - } - ], - "x-ssa-scopes": [ - "cloneArtifact" - ] - } - }, - "/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone": { - "put": { - "tags": [ - "Artifact File" - ], - "summary": "Clone Artifact files asynchronously", - "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", - "operationId": "cloneArtifactVersionFilesAsync_1", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "type": "object" + }, + "AIPlaygroundUpdateRequest": { + "description": "Request to update an AI Playground config", + "properties": { + "attributes": { + "description": "Metadata json string", + "type": "string" }, - { - "name": "team", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "nvcfFunctionId": { + "description": "NVCF function id for the model playground", + "type": "string" }, - { - "name": "type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } + "nvcfInferencePath": { + "description": "NVCF inference path (invocation route) for the model playground", + "type": "string" }, - { - "name": "name", - "in": "path", - "description": "Target artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } + "openAPISpec": { + "description": "OpenAPI specification for this model", + "type": "string" + } + }, + "type": "object" + }, + "AcceptArtifactLicenseRequest": { + "description": "Request body to accept an org-scoped artifact license.", + "properties": { + "licenseId": { + "description": "License identifier to accept (must match a licenseId from the artifact's published licenseTerms).", + "example": "NVIDIA Proprietary", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$", + "type": "string" }, - { - "name": "version", - "in": "path", - "description": "Target version ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "licenseVersion": { + "description": "License version to accept (must match licenseVersion for that license on the artifact).", + "example": 1, + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$", + "type": "string" } + }, + "required": [ + "licenseId", + "licenseVersion" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" - } - } + "type": "object" + }, + "Artifact": { + "description": "Artifact object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" }, - "required": true - }, - "responses": { - "202": { - "description": "Accepted", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" - } - } - } + "artifactType": { + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "bias": { + "description": "Text describing bias in the artifact", + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "builtBy": { + "description": "Organization that built the helm chart", + "type": "string" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "security": [ - { - "ssa": [ - "cloneArtifact" - ] - } - ], - "x-ssa-scopes": [ - "cloneArtifact" - ] - } - }, - "/v1/org/{org}/files/multipart": { - "put": { - "tags": [ - "Artifact File" - ], - "summary": "Complete a multipart upload for an artifact file.", - "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", - "operationId": "completeFileUpload", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipartUploadCompleteRequest" - } - } + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" }, - "required": true - }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "description": { + "description": "Description of the helm chart", + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "displayName": { + "description": "Display name", + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "encryptionKeyId": { + "description": "ID of the customer managed encryption key associated with this artifact", + "type": "string" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "explainability": { + "description": "Text describing the explainability for this artifact", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "post": { - "tags": [ - "Artifact File" - ], - "summary": "Initiate a multipart upload for an artifact file.", - "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", - "operationId": "fileUpload", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipartUploadCreateRequest" - } - } + "hasSignedVersion": { + "description": "Indicates if the artifact has any signed versions", + "type": "boolean" }, - "required": true - }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "isFavourite": { + "description": "Flag indicating if helm chart is user's favorite", + "type": "boolean" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "isPublic": { + "description": "Determines if this helm chart is publicly accessible", + "type": "boolean" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "latestVersionId": { + "description": "ID of the latest version", + "type": "string" + }, + "latestVersionSizeInBytes": { + "description": "Size of the latest version in bytes", + "format": "int64", + "type": "integer" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the helm chart", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the helm chart belongs to", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "privacy": { + "description": "Text describing the privacy for this artifact", + "type": "string" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publisher": { + "description": "Organization that published this helm chart", + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the artifact", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the helm chart", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the helm chart belongs to", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] + "type": "object" }, - "delete": { - "tags": [ - "Artifact File" - ], - "summary": "Abort a multipart upload for an artifact file.", - "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", - "operationId": "abortFileUpload", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "ArtifactAttribute": { + "description": "Attribute on the artifact", + "properties": { + "key": { + "maxLength": 255, + "pattern": "[a-zA-Z0-9]+", + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipartUploadAbortRequest" - } - } + }, + "type": "object" + }, + "ArtifactCatalogFlags": { + "description": "Artifact Catalog Flags object", + "properties": { + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" }, - "required": true + "isListedToPublic": { + "description": "Flag indicating if artifact is listed and searchable", + "type": "boolean" + }, + "isPublic": { + "description": "Determines if this artifact is publicly accessible", + "type": "boolean" + } }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "type": "object" + }, + "ArtifactCreateRequest": { + "description": "Properties for the artifact to create", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "bias": { + "description": "Text describing bias in the model", + "maxLength": 128000, + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "builtBy": { + "description": "organization that built the artifact", + "maxLength": 255, + "type": "string" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "description": { + "description": "Description of the artifact", + "maxLength": 128000, + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - } - }, - "/v1/org/{org}/team/{team}/files/multipart": { - "put": { - "tags": [ - "Artifact File" - ], - "summary": "Complete a multipart upload for an artifact file.", - "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", - "operationId": "completeFileUpload_1", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "displayName": { + "description": "Display name", + "maxLength": 128, + "minLength": 2, + "type": "string" }, - { - "name": "team", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipartUploadCompleteRequest" - } - } + "explainability": { + "description": "Text describing explainability for this model", + "maxLength": 128000, + "type": "string" }, - "required": true - }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "labels": { + "items": { + "maxLength": 255, + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "name": { + "description": "Unique name of the artifact", + "maxLength": 250, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "maxLength": 128000, + "type": "string" + }, + "publisher": { + "description": "organization that published the artifact", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "maxLength": 128000, + "type": "string" + }, + "shortDescription": { + "description": "Short description of the artifact", + "maxLength": 255, + "type": "string" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] + "type": "object" }, - "post": { - "tags": [ - "Artifact File" - ], - "summary": "Initiate a multipart upload for an artifact file.", - "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", - "operationId": "fileUpload_1", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "ArtifactDownloadAllResponse": { + "description": "Response body to download all files of an artifact", + "properties": { + "filepath": { + "items": { + "type": "string" + }, + "type": "array" }, - { - "name": "team", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipartUploadCreateRequest" - } - } + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" }, - "required": true - }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "sha256_base64": { + "items": { + "type": "string" + }, + "type": "array" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ArtifactDownloadResponse": { + "description": "Response body to download a single file of an artifact", + "properties": { + "filepath": { + "description": "The filepath of the artifact", + "type": "string" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "url": { + "description": "Presigned url for single file download", + "type": "string" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "required": [ + "url" ], - "x-ssa-scopes": [ - "kas" - ] + "type": "object" }, - "delete": { - "tags": [ - "Artifact File" + "ArtifactFileChecksumToValidate": { + "description": "Artifact file checksum object in request to validate artifact file checksum exists or not", + "properties": { + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" + } + }, + "required": [ + "sha256" ], - "summary": "Abort a multipart upload for an artifact file.", - "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", - "operationId": "abortFileUpload_1", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "type": "object" + }, + "ArtifactFileChecksumValidated": { + "properties": { + "exists": { + "description": "Boolean to indicate whether sha256 exists or not", + "type": "boolean" }, - { - "name": "team", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipartUploadAbortRequest" - } - } + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" }, - "required": true + "size": { + "description": "Size of the artifact file", + "format": "int64", + "type": "integer" + } }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "required": [ + "exists", + "sha256" + ], + "type": "object" + }, + "ArtifactFileCommitMetadata": { + "properties": { + "commitType": { + "enum": [ + "ADDITION", + "DELETION" + ], + "type": "string" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "filePath": { + "description": "Artifact file path", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file. Required for addition and not required for deletion", + "type": "string" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - } - }, - "/v1/org/{org}/files/clone/status": { - "put": { - "tags": [ - "Artifact File" + "required": [ + "commitType", + "filePath" ], - "summary": "Clone Artifact files Status", - "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", - "operationId": "cloneArtifactVersionFilesStatus", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "type": "object" + }, + "ArtifactFilesChecksumExistsRequest": { + "description": "File checksums", + "properties": { + "files": { + "items": { + "$ref": "#/components/schemas/ArtifactFileChecksumToValidate" + }, + "type": "array" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" - } - } + }, + "type": "object" + }, + "ArtifactFilesChecksumExistsResponse": { + "description": "Request to check if file exists by checksum", + "properties": { + "files": { + "items": { + "$ref": "#/components/schemas/ArtifactFileChecksumValidated" + }, + "type": "array" }, - "required": true + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "type": "object" + }, + "ArtifactFilesCommitRequest": { + "description": "Artifact files to be committed", + "properties": { + "artifactType": { + "description": "Artifact type - could be either model or resource", + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "baseVersion": { + "description": "Artifact version that the commit is based on", + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "files": { + "items": { + "$ref": "#/components/schemas/ArtifactFileCommitMetadata" + }, + "type": "array" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "name": { + "description": "Artifact name", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "version": { + "description": "Artifact version", + "type": "string" } }, - "security": [ - { - "ssa": [ - "kas", - "cloneArtifact" - ] - } - ], - "x-ssa-scopes": [ - "kas", - "cloneArtifact" - ] - } - }, - "/v1/org/{org}/team/{team}/files/clone/status": { - "put": { - "tags": [ - "Artifact File" + "required": [ + "artifactType", + "name", + "version" ], - "summary": "Clone Artifact files Status", - "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", - "operationId": "cloneArtifactVersionFilesStatus_1", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "type": "object" + }, + "ArtifactItem": { + "description": "Artifact item with name and description", + "properties": { + "artifactType": { + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" }, - { - "name": "team", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "description": { + "description": "Description of the artifact", + "type": "string" + }, + "displayName": { + "description": "Display name of the artifact", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" } + }, + "required": [ + "description", + "name" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" - } - } + "type": "object" + }, + "ArtifactListResponse": { + "description": "Response to list artifacts request", + "properties": { + "artifacts": { + "items": { + "$ref": "#/components/schemas/Artifact" + }, + "type": "array" }, - "required": true + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "type": "object" + }, + "ArtifactPublishRequest": { + "description": "Request to publish an artifact", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "canGuestPull": { + "type": "boolean" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "canPublicList": { + "type": "boolean" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "isPublic": { + "type": "boolean" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" } }, - "security": [ - { - "ssa": [ - "kas", - "cloneArtifact" - ] - } - ], - "x-ssa-scopes": [ - "kas", - "cloneArtifact" - ] - } - }, - "/v1/org/{org}/files/clone": { - "put": { - "tags": [ - "Artifact File" - ], - "summary": "Clone Artifact files", - "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", - "operationId": "cloneArtifactVersionFiles", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" - } - } + "type": "object" + }, + "ArtifactResponse": { + "description": "Response to artifact request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" }, - "required": true + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "type": "object" + }, + "ArtifactUpdateRequest": { + "description": "Properties for the artifact to update", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "bias": { + "description": "Text describing bias in the model", + "type": "string" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "builtBy": { + "description": "organization that built the artifact", + "maxLength": 255, + "type": "string" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "description": { + "description": "Description of the artifact", + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "security": [ - { - "ssa": [ - "kas", - "cloneArtifact" - ] - } - ], - "x-ssa-scopes": [ - "kas", - "cloneArtifact" - ] - } - }, - "/v1/org/{org}/team/{team}/files/clone": { - "put": { - "tags": [ - "Artifact File" - ], - "summary": "Clone Artifact files", - "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", - "operationId": "cloneArtifactVersionFiles_1", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "displayName": { + "description": "Display name", + "maxLength": 128, + "minLength": 2, + "type": "string" }, - { - "name": "team", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" - } - } + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" }, - "required": true - }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "publisher": { + "description": "organization that published the artifact", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the artifact", + "maxLength": 255, + "type": "string" } }, - "security": [ - { - "ssa": [ - "kas", - "cloneArtifact" - ] - } - ], - "x-ssa-scopes": [ - "kas", - "cloneArtifact" - ] - } - }, - "/v1/org/{orgName}/{artifactType}/playground/{artifactName}": { - "get": { - "tags": [ - "AIPlayground" - ], - "description": "Get AI Playground for model", - "operationId": "getModelAIPlayground", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "type": "object" + }, + "ArtifactVersion": { + "description": "Artifact version object", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "createdByUser": { + "description": "Id of the user who created this version", + "type": "string" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" - } - } - } + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the version", + "type": "string" + }, + "id": { + "description": "Unique ID of the version", + "type": "string" + }, + "isSigned": { + "description": "Indicates if the version is signed", + "type": "boolean" + }, + "malwareScanDate": { + "description": "Scan date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "malwareScanStatus": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + }, + "policy": { + "items": { + "type": "string" + }, + "type": "array" + }, + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + }, + "storageVersion": { + "description": "The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files.", + "type": "string" + }, + "totalFileCount": { + "description": "Total file count", + "format": "int64", + "type": "integer" + }, + "totalSizeInBytes": { + "description": "Total size of the version in bytes", + "format": "int64", + "type": "integer" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" } }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "getArtifact" - ] + "type": "object" + }, + "ArtifactVersionFileListResponse": { + "description": "Response to list files for artifact version request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" + }, + "artifactFiles": { + "items": { + "$ref": "#/components/schemas/File" + }, + "type": "array" + }, + "artifactVersion": { + "$ref": "#/components/schemas/ArtifactVersion", + "description": "Artifact version object" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" } - ], - "x-ssa-scopes": [ - "getArtifact", - "kas" - ] + }, + "type": "object" }, - "put": { - "tags": [ - "AIPlayground" - ], - "description": "Update AI Playground for model", - "operationId": "updateModelAIPlayground", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "ArtifactVersionListResponse": { + "description": "Response to list artifact versions request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "artifactVersions": { + "items": { + "$ref": "#/components/schemas/ArtifactVersion" + }, + "type": "array" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" - } - } + }, + "type": "object" + }, + "ArtifactVersionResponse": { + "description": "Response to artifact version request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" }, - "required": true + "artifactVersion": { + "$ref": "#/components/schemas/ArtifactVersion", + "description": "Artifact version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" - } - } - } + "type": "object" + }, + "ArtifactVersionUpdateRequest": { + "description": "Version properties to update", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "description": { + "description": "Description of the artifact version", + "maxLength": 255, + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" } }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "writeArtifacts" - ] + "type": "object" + }, + "AsyncCloneArtifactVersionFilesRequest": { + "description": "Request to asynchronously clone artifact version files. Artifact type, target artifact name, version, org, and team are provided via URL path parameters.", + "properties": { + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'.", + "type": "boolean" } + }, + "required": [ + "sourceArtifact" ], - "x-ssa-scopes": [ - "writeArtifacts", - "kas" - ] + "type": "object" }, - "delete": { - "tags": [ - "AIPlayground" - ], - "description": "Delete AI Playground for model", - "operationId": "deleteModelAIPlayground", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "CloneArtifactFilesStatusResponse": { + "description": "Progress of cloning artifact version files", + "properties": { + "filesCopied": { + "description": "Number of files copied", + "format": "int64", + "type": "integer" }, - { - "name": "artifactType", - "in": "path", + "percentageCloned": { + "description": "Percentage of files cloned", + "format": "double", + "type": "number" + }, + "sizeCopied": { + "description": "Combined file size copied", + "format": "int64", + "type": "integer" + }, + "totalFiles": { + "description": "Total files at source", + "format": "int64", + "type": "integer" + }, + "totalSize": { + "description": "Combined file size at source", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "CloneArtifactVersionFilesRequest": { + "description": "Request to clone artifact version files", + "properties": { + "artifactType": { "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "targetArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'.", + "type": "boolean" } + }, + "required": [ + "artifactType", + "sourceArtifact", + "targetArtifact" ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "type": "object" + }, + "CloneStatus": { + "description": "Progress of cloning artifact version files", + "properties": { + "filesCopied": { + "description": "Number of files copied", + "format": "int64", + "type": "integer" + }, + "internalCheckpointStateCleanup": { + "description": "Internal-only: When the async clone workflow is completed, this field shows if the internal checkpoint files were successfully cleaned up in the storage - CLEAN if no objects remain (cleanup succeeded or unused), NOT_EMPTY if objects remain, ERROR if verification could not be performed. Omitted when not applicable.", + "enum": [ + "CLEAN", + "NOT_EMPTY", + "ERROR" + ], + "type": "string" + }, + "percentageFilesCloned": { + "description": "Percentage of files cloned", + "format": "double", + "type": "number" + }, + "sizeCopied": { + "description": "Combined file size copied", + "format": "int64", + "type": "integer" + }, + "totalFiles": { + "description": "Total files at source", + "format": "int64", + "type": "integer" + }, + "totalSize": { + "description": "Combined file size at source", + "format": "int64", + "type": "integer" } }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "deleteArtifacts" - ] + "type": "object" + }, + "CloneableArtifact": { + "description": "Cloneable Artifact Parameters object", + "properties": { + "name": { + "description": "Unique name of the artifact", + "type": "string" + }, + "org": { + "description": "Name of the org that the artifact belongs to", + "type": "string" + }, + "team": { + "description": "Name of the team that the artifact belongs to", + "type": "string" + }, + "version": { + "description": "ID of the version or tag", + "type": "string" } + }, + "required": [ + "name", + "org", + "version" ], - "x-ssa-scopes": [ - "deleteArtifacts", - "kas" - ] - } - }, - "/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName}": { - "get": { - "tags": [ - "AIPlayground" - ], - "description": "Get AI Playground for model", - "operationId": "getModelAIPlayground_1", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "type": "object" + }, + "CloudServiceProvider": { + "description": "Cloud Service Provider object", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - { - "name": "teamName", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "description": { + "description": "Description of the Cloud Service Provider", + "type": "string" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" - } - } - } - } - }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "getArtifact" - ] - } - ], - "x-ssa-scopes": [ - "getArtifact", - "kas" - ] - }, - "put": { - "tags": [ - "AIPlayground" - ], - "description": "Update AI Playground for model", - "operationId": "updateModelAIPlayground_1", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "displayName": { + "description": "Display name of the Cloud Service Provider", + "type": "string" }, - { - "name": "teamName", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "isDeployable": { + "description": "Determines if this Cloud Service Provider can be used to deploy artifacts", + "type": "boolean" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "isEnabled": { + "description": "Determines if this Cloud Service Provider is enabled", + "type": "boolean" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" - } - } + "labels": { + "items": { + "type": "string" + }, + "type": "array" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" - } - } - } + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the Cloud Service Provider", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" } }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "writeArtifacts" - ] - } + "required": [ + "name" ], - "x-ssa-scopes": [ - "writeArtifacts", - "kas" - ] + "type": "object" }, - "delete": { - "tags": [ - "AIPlayground" - ], - "description": "Delete AI Playground for model", - "operationId": "deleteModelAIPlayground_1", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "CloudServiceProviderCreateRequest": { + "description": "Request to create a new Cloud Service Provider", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - { - "name": "teamName", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "description": { + "description": "Description of the Cloud Service Provider", + "type": "string" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "displayName": { + "description": "Display name of the Cloud Service Provider", + "type": "string" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + "isEnabled": { + "description": "Determines if this Cloud Service Provider is enabled", + "type": "boolean" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the Cloud Service Provider", + "type": "string" } }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "deleteArtifacts" - ] - } - ], - "x-ssa-scopes": [ - "deleteArtifacts", - "kas" - ] - } - }, - "/v1/org/{orgName}/{artifactType}/{artifactName}/spec": { - "get": { - "tags": [ - "AIPlayground" + "required": [ + "name" ], - "summary": "Get AI Playground for artifactType", - "description": "Get AI Playground for artifactType", - "operationId": "getModelArtifactsSpec", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "type": "object" + }, + "CloudServiceProviderListResponse": { + "description": "Response to list Cloud Service Providers request", + "properties": { + "cloudServiceProviders": { + "items": { + "$ref": "#/components/schemas/CloudServiceProvider" + }, + "type": "array" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" - } - } - } + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" } }, - "security": [ - { - "ssa": [ - "kas", - "getArtifact" - ] - } - ], - "x-ssa-scopes": [ - "getArtifact", - "kas" - ] + "type": "object" }, - "put": { - "tags": [ - "AIPlayground" - ], - "summary": "Update AI Playground for artifactType", - "description": "Update AI Playground for artifactType", - "operationId": "updateModelArtifactsSpec", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "CloudServiceProviderUpdateRequest": { + "description": "Request to update existing Cloud Service Provider", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "description": { + "description": "Description of the Cloud Service Provider", + "type": "string" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" - } - } + "displayName": { + "description": "Display name of the Cloud Service Provider", + "type": "string" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" - } - } - } + "isEnabled": { + "description": "Determines if this Cloud Service Provider is enabled", + "type": "boolean" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" } }, - "security": [ - { - "ssa": [ - "kas", - "writeArtifacts" - ] - } - ], - "x-ssa-scopes": [ - "writeArtifacts", - "kas" - ] + "type": "object" }, - "delete": { - "tags": [ - "AIPlayground" - ], - "summary": "Delete AI Playground for artifactType", - "description": "Delete AI Playground for artifactType", - "operationId": "deleteModelArtifactsSpec", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "Collection": { + "description": "Collection object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "builtBy": { + "description": "Organization that built the collection", + "type": "string" + }, + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "category": { + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ], + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the collection", + "type": "string" + }, + "displayName": { + "description": "Display name", + "type": "string" + }, + "isPublic": { + "description": "Determines if this collection is publicly accessible", + "type": "boolean" + }, + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the collection", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the collection belongs to", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publisher": { + "description": "Organization that published this collection", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the collection", + "type": "string" + }, + "size": { + "description": "Total count of collection items", + "format": "int64", + "type": "integer" + }, + "teamName": { + "description": "Name of the team that the collection belongs to", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "required": [ + "category" + ], + "type": "object" + }, + "CollectionCreateRequest": { + "description": "Properties for the collections to be created", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "builtBy": { + "description": "organization that built the collection", + "type": "string" + }, + "category": { + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ], + "type": "string" + }, + "description": { + "description": "Description of the collection", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Unique name of the collection", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this collection", + "maxLength": 255, + "type": "string" + }, + "publisher": { + "description": "organization that published the collection", + "maxLength": 255, + "type": "string" + }, + "shortDescription": { + "description": "Short description of the collection", + "maxLength": 255, + "type": "string" + } + }, + "required": [ + "category", + "name", + "shortDescription" + ], + "type": "object" + }, + "CollectionListResponse": { + "description": "Response to list collections request", + "properties": { + "collections": { + "items": { + "$ref": "#/components/schemas/Collection" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "CollectionOperation": { + "description": "Collection operation object", + "properties": { + "operation": { + "description": "Collection operation", + "maxLength": 255, + "type": "string" + }, + "path": { + "description": "Path to a collection item in a scoped format", + "maxLength": 255, + "pattern": "^(/(?!/)([\\w- %\\.(?!\\.)])+)+$", + "type": "string" + } + }, + "type": "object" + }, + "CollectionPatchRequest": { + "description": "Properties for the collection to patch", + "properties": { + "operations": { + "items": { + "$ref": "#/components/schemas/CollectionOperation", + "maxItems": 100 + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "CollectionPublishRequest": { + "description": "Request to publish a collection", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "canGuestPull": { + "type": "boolean" + }, + "canPublicList": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CollectionResponse": { + "description": "Response to create collection request", + "properties": { + "collection": { + "$ref": "#/components/schemas/Collection", + "description": "Collection object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "CollectionUpdateRequest": { + "description": "Properties for the collection to update", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "builtBy": { + "description": "organization that built the collection", + "type": "string" + }, + "category": { + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ], + "type": "string" + }, + "description": { + "description": "Description of the collection", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this collection", + "maxLength": 255, + "type": "string" + }, + "publisher": { + "description": "organization that published the collection", + "maxLength": 255, + "type": "string" + }, + "shortDescription": { + "description": "Short description of the collection", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ConfiguredLicenseTerm": { + "description": "License information for the artifact", + "properties": { + "artifactType": { + "description": "Artifact type", + "example": "model", + "maxLength": 15, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "generatedHtml": { + "description": "Generated html", + "example": "

GOVERNING HOSTING TERMS: ...

", + "maxLength": 9999, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "tags": { + "items": { + "$ref": "#/components/schemas/LicenseTag" + }, + "type": "array" + } + }, + "type": "object" + }, + "ConfiguredLicenseTerms": { + "description": "License information for the artifact", + "properties": { + "download": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "description": "License information for the artifact" + }, + "hosting": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "description": "License information for the artifact" + } + }, + "type": "object" + }, + "CountableResource": { + "description": "Countable Resource object", + "properties": { + "defaultValue": { + "description": "Deprecated: Default value. Please use actual CloudServiceProvider values instead", + "format": "int64", + "type": "integer" + }, + "maxValue": { + "description": "Maximum value", + "format": "int64", + "type": "integer" + }, + "minValue": { + "description": "Minimum value", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "CustomMetric": { + "description": "Custom metrics", + "properties": { + "key": { + "maxLength": 255, + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "CustomMetricGroup": { + "description": "Defines the group of custom metrics.", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/CustomMetric" + }, + "type": "array" + }, + "name": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "Dataset": { + "properties": { + "license": { + "description": "License of the dataset", + "maxLength": 255, + "type": "string" + }, + "link": { + "description": "Link to the dataset", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Name of the dataset", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "DeploymentArtifactParameters": { + "description": "Deployment Artifact Parameters object", + "properties": { + "artifactType": { + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" + }, + "displayName": { + "description": "Display name of the artifact", + "type": "string" + }, + "filePath": { + "description": "Path to a file in an artifact version", + "type": "string" + }, + "name": { + "description": "Unique name of the artifact", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the artifact belongs to", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the artifact belongs to", + "type": "string" + }, + "versionId": { + "description": "ID of the version or tag", + "type": "string" + } + }, + "required": [ + "name", + "orgName" + ], + "type": "object" + }, + "DeploymentCpuParameters": { + "description": "Deployment CPU Parameters object", + "properties": { + "count": { + "description": "Total count of CPUs", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentCpuParametersMeta": { + "description": "Cloud Service Provider Deployment CPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "count" + ], + "type": "object" + }, + "DeploymentGpuParameters": { + "description": "Deployment GPU Parameters object", + "properties": { + "count": { + "description": "Total count of GPUs", + "format": "int64", + "type": "integer" + }, + "type": { + "description": "GPU Type", + "type": "string" + } + }, + "type": "object" + }, + "DeploymentGpuParametersMeta": { + "description": "Cloud Service Provider Deployment GPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + }, + "type": { + "$ref": "#/components/schemas/EnumerableResource", + "description": "Enumerable Resource object" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "DeploymentMemoryParameters": { + "description": "Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "description": "Capacity in GB", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentMemoryParametersMeta": { + "description": "Cloud Service Provider Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "capacityInGB" + ], + "type": "object" + }, + "DeploymentParameters": { + "description": "Deployment Artifact Parameters object", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersCreateRequest": { + "description": "Request to create a new deployment parameters", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersListResponse": { + "description": "Response to list deployment parameters request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "deploymentParameters": { + "items": { + "$ref": "#/components/schemas/DeploymentParameters" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "DeploymentParametersMeta": { + "description": "Cloud Service Provider Deployment Parameters object", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersMetaCreateRequest": { + "description": "Properties for the cloud service provider deployment parameters meta to create", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + }, + "required": [ + "gpu", + "storage" + ], + "type": "object" + }, + "DeploymentParametersMetaUpdateRequest": { + "description": "Properties for the cloud service provider deployment parameters meta to create", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersUpdateRequest": { + "description": "Request to update existing deployment parameters", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentStorageParameters": { + "description": "Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "description": "Capacity in GB", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentStorageParametersMeta": { + "description": "Cloud Service Provider Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "capacityInGB" + ], + "type": "object" + }, + "DeploymentUrlCreateRequest": { + "description": "Request to create a new deployment url", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentUrlResponse": { + "description": "Response to create a new deployment url", + "properties": { + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "deploymentParameters": { + "$ref": "#/components/schemas/DeploymentParameters", + "description": "Deployment Artifact Parameters object" + }, + "deploymentUrl": { + "description": "Deployment URL", + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "EncryptionKey": { + "description": "Customer Managed Key shard configuration for the model", + "properties": { + "description": { + "description": "Description for a new customer key shard", + "type": "string" + }, + "encryptionKeyId": { + "description": "ID of the existing customer key shard to use", + "type": "string" + }, + "useExistingKey": { + "description": "Whether to use an existing customer key shard or should a new one be created", + "type": "boolean" + } + }, + "required": [ + "useExistingKey" + ], + "type": "object" + }, + "EnumerableResource": { + "description": "Enumerable Resource object", + "properties": { + "defaultItemName": { + "description": "Deprecated: Default item name. Please use actual CloudServiceProvider values instead", + "type": "string" + }, + "items": { + "items": { + "$ref": "#/components/schemas/EnumerableResourceItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "EnumerableResourceItem": { + "description": "Enumerable Resource Item object", + "properties": { + "displayName": { + "description": "Display name", + "type": "string" + }, + "logo": { + "description": "Logo URL", + "type": "string" + }, + "name": { + "description": "Name", + "type": "string" + } + }, + "type": "object" + }, + "File": { + "description": "File object", + "properties": { + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the file", + "type": "string" + }, + "path": { + "description": "Relative file path from the root of the object", + "maxLength": 1023, + "minLength": 1, + "type": "string" + }, + "sizeInBytes": { + "description": "Size of the file in bytes", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "type": "object" + }, + "GpuByPciCreateRequest": { + "description": "GPU by PCI properties", + "properties": { + "cudaMajorVersion": { + "description": "CUDA major version", + "type": "string" + }, + "cudaMinorVersion": { + "description": "CUDA minor version", + "type": "string" + }, + "displayName": { + "description": "Display name for the GPU", + "type": "string" + }, + "formFactor": { + "description": "GPU form factor", + "type": "string" + }, + "gpuCounts": { + "items": { + "format": "int32", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "type": "array", + "uniqueItems": true + }, + "labelName": { + "description": "Label name for the GPU", + "type": "string" + }, + "memorySizeGb": { + "description": "Memory size in GB (smallint range)", + "format": "int32", + "maximum": 32767, + "minimum": 0, + "type": "integer" + }, + "pciDeviceId": { + "description": "PCI Device ID", + "type": "string" + }, + "pciSubsystemDeviceId": { + "description": "PCI Subsystem Device ID", + "type": "string" + }, + "pciVendorId": { + "description": "PCI Vendor ID", + "type": "string" + } + }, + "required": [ + "displayName", + "pciDeviceId" + ], + "type": "object" + }, + "GpuByPciResponse": { + "description": "Response for GPU by PCI ID lookup", + "properties": { + "createdAt": { + "description": "Creation timestamp", + "format": "date-time", + "type": "string" + }, + "cudaMajorVersion": { + "description": "CUDA major version", + "type": "string" + }, + "cudaMinorVersion": { + "description": "CUDA minor version", + "type": "string" + }, + "displayName": { + "description": "Display name for the GPU", + "type": "string" + }, + "formFactor": { + "description": "GPU form factor", + "type": "string" + }, + "gpuCounts": { + "items": { + "format": "int32", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "type": "array", + "uniqueItems": true + }, + "labelName": { + "description": "Label name for the GPU", + "type": "string" + }, + "memorySizeGb": { + "description": "Memory size in GB (smallint range)", + "format": "int32", + "maximum": 32767, + "minimum": 0, + "type": "integer" + }, + "pciDeviceId": { + "description": "PCI Device ID", + "type": "string" + }, + "pciSubsystemDeviceId": { + "description": "PCI Subsystem Device ID", + "type": "string" + }, + "pciVendorId": { + "description": "PCI Vendor ID", + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "updatedAt": { + "description": "Last update timestamp", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "displayName", + "pciDeviceId" + ], + "type": "object" + }, + "GpuByPciUpdateRequest": { + "description": "GPU by PCI update properties", + "properties": { + "cudaMajorVersion": { + "description": "CUDA major version", + "type": "string" + }, + "cudaMinorVersion": { + "description": "CUDA minor version", + "type": "string" + }, + "displayName": { + "description": "Display name for the GPU", + "type": "string" + }, + "formFactor": { + "description": "GPU form factor", + "type": "string" + }, + "gpuCounts": { + "items": { + "format": "int32", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "type": "array", + "uniqueItems": true + }, + "labelName": { + "description": "Label name for the GPU", + "type": "string" + }, + "memorySizeGb": { + "description": "Memory size in GB (smallint range)", + "format": "int32", + "maximum": 32767, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "Health": { + "description": "object that describes health of the service", + "properties": { + "healthCode": { + "description": "Enum that describes health of the service", + "enum": [ + "UNKNOWN", + "OK", + "UNDER_MAINTENANCE", + "WARNING", + "FAILED" + ], + "type": "string" + }, + "healthCodeDescription": { + "description": "Human readable description", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "metaData": { + "items": { + "$ref": "#/components/schemas/MetaData" + }, + "type": "array" + } + }, + "type": "object" + }, + "HealthComponent": { + "properties": { + "description": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "HealthResponse": { + "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method", + "properties": { + "health": { + "$ref": "#/components/schemas/Health", + "description": "object that describes health of the service" + } + }, + "type": "object" + }, + "KeyArtifactListResponse": { + "description": "Response containing a list of artifacts associated with a key", + "properties": { + "artifacts": { + "items": { + "$ref": "#/components/schemas/ArtifactItem" + }, + "type": "array" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "KeyItem": { + "description": "Key item with ID and create timestamp string", + "properties": { + "created": { + "description": "The creation timestamp of the key item in ISO-8601 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ.", + "example": "2025-04-19T22:30:00.123Z", + "format": "regex", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the encryption key", + "maxLength": 255, + "type": "string" + }, + "encryptionKeyId": { + "description": "The encryption key identifier in UUID format.", + "example": "196afcf4-d6c8-4116-aa25-34a718a14f43", + "format": "regex", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + } + }, + "required": [ + "created", + "encryptionKeyId" + ], + "type": "object" + }, + "KeyListResponse": { + "description": "Response to list keys request", + "properties": { + "encryptionKeys": { + "items": { + "$ref": "#/components/schemas/KeyItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "LicenseMetadata": { + "description": "License information for the artifact", + "properties": { + "configuredLicenseTerms": { + "$ref": "#/components/schemas/ConfiguredLicenseTerms", + "description": "License information for the artifact" + }, + "governingTerms": { + "description": "Comprehensive terms and links related to the license", + "example": "

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

", + "maxLength": 1000, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "licenseId": { + "description": "License ID", + "example": "NVIDIA proprietary", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "licenseVersion": { + "description": "License version ID", + "example": "v1.0", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "needsAcceptance": { + "description": "Indicator if user needs to accept this license", + "type": "boolean" + } + }, + "type": "object" + }, + "LicenseTag": { + "description": "License tag information for individual term", + "properties": { + "category": { + "description": "Category of the tag", + "example": "terms", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "key": { + "description": "Key identifier for the tag", + "example": "nv-open-model", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "label": { + "description": "License Label", + "example": "NVIDIA Open Model Agreement", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "tag": { + "description": "License tag name", + "example": "Model Agreement", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "url": { + "description": "Link to the hosted license", + "example": "https://www.nvidia.com/.../nvidia-open-model-agreement/", + "maxLength": 1000, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "MalwareScanNotification": { + "properties": { + "contact": { + "type": "string" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "nspect_id": { + "type": "string" + }, + "tenant": { + "type": "string" + }, + "uuid": { + "type": "string" + } + }, + "type": "object" + }, + "MetaData": { + "properties": { + "key": { + "maxLength": 255, + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "Model": { + "description": "Model object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "application": { + "description": "Application of the model", + "type": "string" + }, + "bias": { + "description": "Text describing bias in the model", + "type": "string" + }, + "builtBy": { + "description": "organization that built the repository", + "type": "string" + }, + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the model", + "type": "string" + }, + "displayName": { + "description": "Display name", + "type": "string" + }, + "encryptionKeyId": { + "description": "ID of the customer managed encryption key associated with this artifact", + "type": "string" + }, + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" + }, + "framework": { + "description": "Framework used to train this model", + "type": "string" + }, + "hasPlayground": { + "description": "indicate if the Model has AI Playground configured", + "type": "boolean" + }, + "hasSignedVersion": { + "description": "Indicates if the model has any signed versions", + "type": "boolean" + }, + "isFavourite": { + "description": "Flag indicating if model is user's favorite", + "type": "boolean" + }, + "isPlaygroundEnabled": { + "description": "indicate if AI Playground is enabled in the catalog", + "type": "boolean" + }, + "isPublic": { + "description": "Determines if model is publicly accessible", + "type": "boolean" + }, + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "latestVersionGpuModel": { + "description": "GPU model and memory used for the latest version", + "type": "string" + }, + "latestVersionId": { + "description": "Deprecated: Please use latestVersionIdStr instead. ID of the latest version", + "format": "int64", + "type": "integer" + }, + "latestVersionIdStr": { + "description": "ID of the latest version", + "type": "string" + }, + "latestVersionSizeInBytes": { + "description": "Size of the latest version in bytes", + "format": "int64", + "type": "integer" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "modelFormat": { + "description": "Format of the model", + "type": "string" + }, + "name": { + "description": "Unique name of the model", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the model belongs to", + "type": "string" + }, + "ownerName": { + "description": "Name of model's owner", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "precision": { + "description": "Precision this model was trained with", + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the repository", + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the model", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the model belongs to", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "versions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ModelCreateRequest": { + "description": "Properties for the models to be created", + "properties": { + "application": { + "description": "Application of the model", + "maxLength": 255, + "type": "string" + }, + "bias": { + "description": "Text describing bias in the model", + "type": "string" + }, + "builtBy": { + "description": "organization that built the repository", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the model", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "encryptionKey": { + "$ref": "#/components/schemas/EncryptionKey", + "description": "Customer Managed Key shard configuration for the model" + }, + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" + }, + "framework": { + "description": "Framework used to train this model", + "maxLength": 255, + "type": "string" + }, + "hasPlayground": { + "description": "indicate if the Model has AI Playground configured", + "type": "boolean" + }, + "isPlaygroundEnabled": { + "description": "indicate if AI Playground is enabled in the catalog", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Unique name of the model", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this model", + "maxLength": 255, + "type": "string" + }, + "precision": { + "description": "Precision this model was trained with", + "maxLength": 255, + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the repository", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the model", + "maxLength": 255, + "type": "string" + } + }, + "required": [ + "framework", + "name", + "precision" + ], + "type": "object" + }, + "ModelFile": { + "description": "Model file object", + "properties": { + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the file", + "type": "string" + }, + "path": { + "description": "Relative file path from the root of the model", + "maxLength": 1023, + "minLength": 1, + "type": "string" + }, + "sha256_base64": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" + }, + "sizeInBytes": { + "description": "Size of the file in bytes", + "format": "int64", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "ModelListResponse": { + "description": "Response to list models request", + "properties": { + "models": { + "items": { + "$ref": "#/components/schemas/Model" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelResponse": { + "description": "Response to create model request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelSimplified": { + "description": "Model object", + "properties": { + "name": { + "description": "Unique name of the model", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the model belongs to", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the model belongs to", + "type": "string" + } + }, + "required": [ + "name", + "orgName" + ], + "type": "object" + }, + "ModelUpdateRequest": { + "description": "Properties for the model to update", + "properties": { + "application": { + "description": "Application of the model", + "maxLength": 255, + "type": "string" + }, + "bias": { + "description": "Text describing bias in the model", + "type": "string" + }, + "builtBy": { + "description": "organization that built the repository", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the model", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" + }, + "framework": { + "description": "Framework used to train this model", + "maxLength": 255, + "type": "string" + }, + "hasPlayground": { + "description": "indicate if the Model has AI Playground configured", + "type": "boolean" + }, + "isPlaygroundEnabled": { + "description": "indicate if AI Playground is enabled in the catalog", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model", + "maxLength": 255, + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this model", + "maxLength": 255, + "type": "string" + }, + "precision": { + "description": "Precision this model was trained with", + "maxLength": 255, + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the repository", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the model", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ModelVersion": { + "description": "Model version object", + "properties": { + "accuracyReached": { + "description": "Accuracy this model reached", + "format": "float", + "type": "number" + }, + "batchSize": { + "description": "Batch size this model was trained with", + "format": "int64", + "type": "integer" + }, + "createdByUser": { + "description": "Id of the user who created this model", + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the model version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "type": "string" + }, + "id": { + "description": "Deprecated: Please use versionId instead. Unique ID of the version", + "format": "int64", + "type": "integer" + }, + "isSigned": { + "description": "Indicates if the version is signed", + "type": "boolean" + }, + "malwareScanDate": { + "description": "Scan date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "malwareScanStatus": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + }, + "memoryFootprint": { + "description": "Model size/memory footprint for inference", + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this model trained", + "format": "int64", + "type": "integer" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "type": "string" + }, + "policy": { + "items": { + "type": "string" + }, + "type": "array" + }, + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + }, + "storageVersion": { + "description": "The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files.", + "type": "string" + }, + "totalFileCount": { + "description": "Total file count", + "format": "int64", + "type": "integer" + }, + "totalSizeInBytes": { + "description": "Total size of the model in bytes", + "format": "int64", + "type": "integer" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ModelVersionCreateRequest": { + "description": "Properties for the model version to be created", + "properties": { + "accuracyReached": { + "description": "Accuracy this model reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this model was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the model version", + "maxLength": 255, + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "id": { + "description": "Deprecated: Please use version instead. Unique ID of the version", + "format": "int64", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "memoryFootprint": { + "description": "Model size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this model trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "maxLength": 255, + "type": "string" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "pattern": "[^/]+", + "type": "string" + } + }, + "type": "object" + }, + "ModelVersionFileListResponse": { + "description": "Response to list files for model version request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "modelFiles": { + "items": { + "$ref": "#/components/schemas/ModelFile" + }, + "type": "array" + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "description": "Model version object" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelVersionListResponse": { + "description": "Response to list model versions request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "modelVersions": { + "items": { + "$ref": "#/components/schemas/ModelVersion" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelVersionResponse": { + "description": "Response to create a model version request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "description": "Model version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelVersionUpdateRequest": { + "description": "Version properties to update", + "properties": { + "accuracyReached": { + "description": "Accuracy this model reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this model was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the model version", + "maxLength": 255, + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "memoryFootprint": { + "description": "Model size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this model trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "maxLength": 255, + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + } + }, + "type": "object" + }, + "MultipartUploadAbortRequest": { + "description": "Request body for aborting a multipart upload for artifacts", + "properties": { + "artifactType": { + "description": "Type of artifact", + "type": "string" + }, + "filePath": { + "description": "The file path for the artifact upload", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" + }, + "uploadID": { + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema", + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "uploadID", + "version" + ], + "type": "object" + }, + "MultipartUploadCompleteRequest": { + "description": "Request body for completing a multipart upload for artifacts", + "properties": { + "artifactType": { + "description": "Type of artifact", + "type": "string" + }, + "filePath": { + "description": "The file path for the artifact upload", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" + }, + "sha256": { + "description": "Base64 encoded sha256 hash of the entire file", + "type": "string" + }, + "uploadID": { + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema", + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "sha256", + "uploadID", + "version" + ], + "type": "object" + }, + "MultipartUploadCreateRequest": { + "description": "Request body for creating a multipart upload for artifacts", + "properties": { + "artifactType": { + "description": "Type of artifact", + "type": "string" + }, + "customPartSize": { + "description": "Custom chunk size of the file to be uploaded, in bytes. should be >= 5MB and <= 500MB. default is 500 in MB.", + "format": "int64", + "type": "integer" + }, + "filePath": { + "description": "The file path for the artifact upload", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" + }, + "partNumberList": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file to be uploaded", + "type": "string" + }, + "size": { + "description": "total size of the artifact, in bytes", + "format": "int64", + "type": "integer" + }, + "uploadID": { + "description": "Upload id of an already initiated Multipart upload", + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "size", + "version" + ], + "type": "object" + }, + "MultipartUploadCreateResponse": { + "description": "Response body for creating a multipart upload for artifacts", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "partSize": { + "description": "The size of each part upload in bytes", + "format": "int64", + "type": "integer" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "uploadID": { + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema", + "type": "string" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "partSize", + "uploadID" + ], + "type": "object" + }, + "NimManifestMetadataRequest": { + "description": "NIM profile metadata", + "properties": { + "profiles": { + "items": { + "$ref": "#/components/schemas/NimProfile" + }, + "type": "array" + } + }, + "type": "object" + }, + "NimManifestMetadataResponse": { + "properties": { + "profiles": { + "items": { + "$ref": "#/components/schemas/NimProfile" + }, + "type": "array" + } + }, + "type": "object" + }, + "NimProfile": { + "properties": { + "buildable_profile": { + "type": "boolean" + }, + "checksum": { + "type": "string" + }, + "feat_lora": { + "type": "boolean" + }, + "form_factor": { + "type": "string" + }, + "gpu": { + "type": "string" + }, + "gpu_device": { + "type": "string" + }, + "inference_backend": { + "type": "string" + }, + "latency": { + "additionalProperties": {}, + "type": "object" + }, + "min_vram_per_device_gb": { + "format": "double", + "type": "number" + }, + "pipeline_parallel_size": { + "format": "int32", + "type": "integer" + }, + "precision": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "tensor_parallel_size": { + "format": "int32", + "type": "integer" + }, + "workspace_hash": { + "type": "string" + } + }, + "type": "object" + }, + "NotifyMalwareScanResultResponse": { + "description": "Notify malware scan result response", + "properties": { + "status": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + } + }, + "type": "object" + }, + "NvcfContainerConfiguration": { + "description": "NVCF container configuration parameters", + "properties": { + "apiBodyFormat": { + "description": "API body format", + "type": "string" + }, + "containerArgs": { + "description": "Container arguments", + "type": "string" + }, + "containerEnvironment": { + "items": { + "$ref": "#/components/schemas/MetaData" + }, + "type": "array" + }, + "containerImage": { + "description": "Container Image", + "type": "string" + }, + "healthUri": { + "description": "Health URI", + "type": "string" + }, + "inferencePort": { + "description": "Inference port", + "type": "string" + }, + "inferenceUrl": { + "description": "Inference url", + "type": "string" + }, + "models": { + "items": { + "$ref": "#/components/schemas/NvcfContainerModel" + }, + "type": "array" + } + }, + "type": "object" + }, + "NvcfContainerModel": { + "description": "Models version object metadata", + "properties": { + "name": { + "description": "Model name", + "type": "string" + }, + "uri": { + "description": "Model URI", + "type": "string" + }, + "version": { + "description": "Model version", + "type": "string" + } + }, + "type": "object" + }, + "NvcfDeploymentSpecification": { + "description": "NVCF deployment specification", + "properties": { + "gpuCount": { + "description": "GPU count", + "format": "int32", + "type": "integer" + }, + "gpuType": { + "description": "GPU type", + "type": "string" + }, + "instanceType": { + "description": "Instance type", + "type": "string" + }, + "maxConcurrency": { + "description": "Maximum concurrency", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "PaginationInfo": { + "description": "Pagination Information", + "properties": { + "index": { + "description": "Page index of results", + "format": "int32", + "type": "integer" + }, + "nextPage": { + "description": "Serialized pointer to the next results page. Should be used for fetching next page. Can be empty", + "type": "string" + }, + "size": { + "description": "Number of results in page", + "format": "int32", + "type": "integer" + }, + "totalPages": { + "description": "Total number of pages available", + "format": "int64", + "type": "integer" + }, + "totalResults": { + "description": "Total number of results available", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "Recipe": { + "description": "Recipe object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "advanced": { + "description": "Text for describing advanced information", + "type": "string" + }, + "application": { + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ], + "type": "string" + }, + "builtBy": { + "description": "Organization that built the recipe", + "type": "string" + }, + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the recipe", + "type": "string" + }, + "displayName": { + "description": "Display name", + "type": "string" + }, + "hasSignedVersion": { + "description": "Indicates if the recipe has any signed versions", + "type": "boolean" + }, + "isFavourite": { + "description": "Flag indicating if recipe is user's favorite", + "type": "boolean" + }, + "isPublic": { + "description": "Determines if this recipe is publicly accessible", + "type": "boolean" + }, + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "latestVersionId": { + "description": "Deprecated: Please use latestVersionIdStr instead. ID of the latest version", + "format": "int64", + "type": "integer" + }, + "latestVersionIdStr": { + "description": "ID of the latest version", + "type": "string" + }, + "latestVersionSizeInBytes": { + "description": "Size of the latest version in bytes", + "format": "int64", + "type": "integer" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "modelFormat": { + "description": "Format of the model this recipe produces", + "type": "string" + }, + "name": { + "description": "Unique name of the recipe", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the recipe belongs to", + "type": "string" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "precision": { + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ], + "type": "string" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "Organization that published this recipe", + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "relatedModels": { + "items": { + "$ref": "#/components/schemas/Model" + }, + "type": "array" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the recipe", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the recipe belongs to", + "type": "string" + }, + "trainingFramework": { + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ], + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "type": "object" + }, + "RecipeCreateRequest": { + "description": "Properties for the recipe to create", + "properties": { + "advanced": { + "description": "Text for describing advanced information", + "type": "string" + }, + "application": { + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ], + "type": "string" + }, + "builtBy": { + "description": "organization that built the recipe", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the recipe", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model this recipe produces", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Unique name of the recipe", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "precision": { + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ], + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the recipe", + "maxLength": 255, + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the recipe", + "maxLength": 255, + "type": "string" + }, + "trainingFramework": { + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ], + "type": "string" + } + }, + "required": [ + "application", + "modelFormat", + "name", + "precision", + "publicDatasetUsed", + "shortDescription", + "trainingFramework" + ], + "type": "object" + }, + "RecipeFile": { + "description": "Recipe file object", + "properties": { + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the file", + "type": "string" + }, + "path": { + "description": "Relative file path from the root of the recipe", + "maxLength": 1023, + "minLength": 1, + "type": "string" + }, + "sha256_base64": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" + }, + "sizeInBytes": { + "description": "Size of the file in bytes", + "format": "int64", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RecipeListResponse": { + "description": "Response to list recipes request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "recipes": { + "items": { + "$ref": "#/components/schemas/Recipe" + }, + "type": "array" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeResponse": { + "description": "Response to recipe request", + "properties": { + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeUpdateRequest": { + "description": "Properties for the recipe to update", + "properties": { + "advanced": { + "description": "Text for describing advanced information", + "type": "string" + }, + "application": { + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ], + "type": "string" + }, + "builtBy": { + "description": "organization that built the recipe", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the recipe", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model this recipe produces", + "maxLength": 255, + "type": "string" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "precision": { + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ], + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the recipe", + "maxLength": 255, + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "relatedModels": { + "items": { + "$ref": "#/components/schemas/ModelSimplified" + }, + "type": "array" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the recipe", + "maxLength": 255, + "type": "string" + }, + "trainingFramework": { + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ], + "type": "string" + } + }, + "type": "object" + }, + "RecipeVersion": { + "description": "Recipe version object", + "properties": { + "accuracyReached": { + "description": "Accuracy this recipe reached", + "format": "float", + "type": "number" + }, + "batchSize": { + "description": "Batch size this recipe was trained with", + "format": "int64", + "type": "integer" + }, + "createdByUser": { + "description": "Id of the user who created this recipe", + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the recipe version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "type": "string" + }, + "id": { + "description": "Deprecated: Please use versionId instead. Unique ID of the version", + "format": "int64", + "type": "integer" + }, + "isSigned": { + "description": "Indicates if the version is signed", + "type": "boolean" + }, + "malwareScanDate": { + "description": "Scan date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "malwareScanStatus": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + }, + "memoryFootprint": { + "description": "recipe size/memory footprint for inference", + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this recipe trained", + "format": "int64", + "type": "integer" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "policy": { + "items": { + "type": "string" + }, + "type": "array" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "releaseNotes": { + "description": "Text describing this release", + "type": "string" + }, + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + }, + "storageVersion": { + "description": "The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files.", + "type": "string" + }, + "totalFileCount": { + "description": "Total file count", + "format": "int64", + "type": "integer" + }, + "totalSizeInBytes": { + "description": "Total size of the recipe in bytes", + "format": "int64", + "type": "integer" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "RecipeVersionCreateRequest": { + "description": "Properties for the recipe version to be created", + "properties": { + "accuracyReached": { + "description": "Accuracy this recipe reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this recipe was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the recipe version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "id": { + "description": "Deprecated: Please use version instead. Unique ID of the version", + "format": "int64", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "memoryFootprint": { + "description": "Recipe size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this recipe trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "releaseNotes": { + "description": "Text describing this release", + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "pattern": "[^/]+", + "type": "string" + } + }, + "type": "object" + }, + "RecipeVersionFileListResponse": { + "description": "Response to list files for recipe version request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "recipeFiles": { + "items": { + "$ref": "#/components/schemas/RecipeFile" + }, + "type": "array" + }, + "recipeVersion": { + "$ref": "#/components/schemas/RecipeVersion", + "description": "Recipe version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeVersionListResponse": { + "description": "Response to list recipe versions request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "recipeVersions": { + "items": { + "$ref": "#/components/schemas/RecipeVersion" + }, + "type": "array" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeVersionResponse": { + "description": "Response to recipe version request", + "properties": { + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "recipeVersion": { + "$ref": "#/components/schemas/RecipeVersion", + "description": "Recipe version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeVersionUpdateRequest": { + "description": "Version properties to update", + "properties": { + "accuracyReached": { + "description": "Accuracy this recipe reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this recipe was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the recipe version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "memoryFootprint": { + "description": "Recipe size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this recipe trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "releaseNotes": { + "description": "Text describing this release", + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + } + }, + "type": "object" + }, + "RequestStatus": { + "description": "Request status information", + "properties": { + "requestId": { + "description": "Request ID", + "type": "string" + }, + "serverId": { + "description": "Server ID", + "type": "string" + }, + "statusCode": { + "description": "Describes response status reported by the server.", + "enum": [ + "UNKNOWN", + "SUCCESS", + "UNAUTHORIZED", + "PAYMENT_REQUIRED", + "FORBIDDEN", + "TIMEOUT", + "EXISTS", + "NOT_FOUND", + "INTERNAL_ERROR", + "INVALID_REQUEST", + "INVALID_REQUEST_VERSION", + "INVALID_REQUEST_DATA", + "METHOD_NOT_ALLOWED", + "CONFLICT", + "UNPROCESSABLE_ENTITY", + "TOO_MANY_REQUESTS", + "INSUFFICIENT_STORAGE", + "SERVICE_UNAVAILABLE" + ], + "type": "string" + }, + "statusDescription": { + "description": "Status description", + "type": "string" + } + }, + "type": "object" + }, + "Response": { + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "UpdateArtifactVersionConfigs": { + "description": "Request to publish an artifact", + "properties": { + "policy": { + "items": { + "enum": [ + "GOV_READY", + "FedRAMP" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "UpdateReleaseTypeRequest": { + "description": "Request to update release type of an artifact version", + "properties": { + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "version" + ], + "type": "object" + }, + "WorkflowStatusResponse": { + "description": "Response containing workflow status information", + "properties": { + "cloneStatus": { + "$ref": "#/components/schemas/CloneStatus", + "description": "Progress of cloning artifact version files" + }, + "duration": { + "description": "Wall-clock execution duration as an ISO-8601 duration (e.g. PT1H30M5S, PT0.001S); Omitted while IN_PROGRESS.", + "type": "string" + }, + "endTime": { + "description": "UTC instant when the workflow reached a closed state; omitted while IN_PROGRESS.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "Human-readable message about the workflow status", + "maxLength": 255, + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "startTime": { + "description": "UTC instant when the workflow execution started.", + "format": "date-time", + "type": "string" + }, + "status": { + "description": "Current status of the workflow", + "enum": [ + "IN_PROGRESS", + "COMPLETED", + "FAILED", + "CANCELED", + "TERMINATED", + "CONTINUED_AS_NEW", + "TIMED_OUT", + "UNKNOWN" + ], + "type": "string" + }, + "workflowType": { + "description": "Workflow type.", + "enum": [ + "CLONE", + "CUSTOMER_MANAGED_KEY" + ], + "type": "string" + } + }, + "required": [ + "message", + "requestStatus", + "status" + ], + "type": "object" + }, + "WorkflowStatusUrlResponse": { + "description": "Response containing workflow status URL and ID", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "statusUrl": { + "description": "URL to check the workflow status", + "type": "string" + }, + "workflowId": { + "description": "ID of the workflow", + "type": "string" + } + }, + "type": "object" + }, + "AIFoundationModel": { + "type": "object", + "description": "Get AI Playground Response", + "properties": { + "artifactName": { + "type": "string", + "description": "Unique name of the model" + }, + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "namespace": { + "type": "string", + "description": "org/team of the model" + }, + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "ArtifactDeploymentParameters": { + "type": "object", + "description": "Artifact Deployment Parameters object", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "x-description": "Deployment CPU Parameters object" + }, + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "x-description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "x-description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "x-description": "Deployment Storage Parameters object" + } + } + }, + "ArtifactDownloadAllRequest": { + "type": "object", + "description": "Request to download all files of an artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "ArtifactDownloadRequest": { + "type": "object", + "description": "Request to download a single file of an artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "filePath": { + "type": "string", + "description": "The file path of the artifact" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "ArtifactEvent": { + "type": "object", + "description": "This event in the topic means that some change happened to the artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "eventType": { + "type": "string", + "description": "Artifact event type" + }, + "name": { + "type": "string", + "description": "Artifact name" + }, + "namespace": { + "type": "string", + "description": "Artifact namespace" + } + } + }, + "ArtifactOwnerDetails": { + "type": "object", + "properties": { + "createdDate": { + "type": "string", + "description": "Version pushed date in ISO-8601 format" + }, + "creatorUserEmail": { + "type": "string", + "description": "Email address of account used to create" + }, + "orgAlternateContact": { + "type": "string", + "description": "Email address of alternate contact for organization the image \n was pushed to" + }, + "orgOwnersEmails": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Email addresses of all owners of organization the image was p\n ushed to" + }, + "pushedByUserEmail": { + "type": "string", + "description": "Email address of account used to create the Version" + }, + "repositoryName": { + "type": "string", + "description": "The repository name" + }, + "updatedDate": { + "type": "string", + "description": "Version update date in ISO-8601 format" + }, + "version": { + "type": "string", + "description": "Version" + } + } + }, + "ArtifactVersionCreateRequest": { + "type": "object", + "description": "Request to create a new artifact version", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the artifact version" + }, + "id": { + "type": "string", + "description": "Unique ID of the version" + } + } + }, + "Asset": { + "type": "object", + "description": "Asset object", + "properties": { + "artifactName": { + "type": "string", + "description": "Artifact name that asset belongs to" + }, + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "cdnProvider": { + "type": "string", + "description": "Asset content delivery network provider t\n ype" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "fileName": { + "type": "string", + "description": "Asset file name" + }, + "hostedAt": { + "type": "array", + "items": { + "type": "string" + }, + "description": "URLs where the asset is hosted" + }, + "mimeType": { + "type": "string", + "description": "Asset mime type" + }, + "name": { + "type": "string", + "description": "Unique name of the asset" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the collection belongs to" + }, + "originUrl": { + "type": "string", + "description": "Asset origin URL" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version" + }, + "sizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size in bytes" + }, + "status": { + "type": "string", + "description": "Asset status type" + }, + "storageProvider": { + "type": "string", + "description": "Asset storage provider type" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the collection belongs to" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + }, + "uploadUrl": { + "type": "string", + "description": "Asset upload URL" + } + } + }, + "AssetResponse": { + "type": "object", + "description": "Response to asset request", + "properties": { + "asset": { + "$ref": "#/components/schemas/Asset", + "x-description": "Asset object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "AssetSimplified": { + "type": "object", + "description": "Asset object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the asset" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the asset belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the asset belongs to" + } + } + }, + "AssetStorageEvent": { + "type": "object", + "description": "This event in the topic means that some change happened to the asset st\n orage object", + "properties": { + "asset": { + "$ref": "#/components/schemas/Asset", + "x-description": "Asset object" + }, + "eventType": { + "type": "string", + "description": "Asset storage event type" + }, + "timestamp": { + "type": "string", + "description": "Timestamp in ISO-8601 format" + } + } + }, + "AssetUpdateRequest": { + "type": "object", + "description": "Request to update an asset", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "fileName": { + "type": "string", + "description": "Asset file name" + }, + "mimeType": { + "type": "string", + "description": "MIME type" + }, + "originUrl": { + "type": "string", + "description": "Asset origin URL" + }, + "owner": { + "type": "string", + "description": "Owner of asset" + }, + "sizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size in bytes" + } + } + }, + "BlobMetadata": { + "type": "object", + "description": "Blob metadata - its size, dek-metadata (if applicable)", + "properties": { + "blobSize": { + "type": "integer", + "format": "int64", + "description": "BLOB size" + }, + "dekMetadata": { + "type": "string", + "description": "DEK metadata of the blob" + } + } + }, + "CatalogArtifactMetadata": { + "type": "object", + "properties": { + "accessType": { + "type": "string" + }, + "canGuestPull": { + "type": "boolean", + "description": "Guest users can download from the Catalog registry" + }, + "canPublicList": { + "type": "boolean", + "description": "Publicly listed/searchable in the Catalog registry" + }, + "isPublic": { + "type": "boolean", + "description": "Publicly available in the Catalog registry" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CatalogLicenseMetadata" + }, + "description": "License information for the model" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + } + } + }, + "CatalogArtifactVersionMetadata": { + "type": "object", + "properties": { + "accessType": { + "type": "string" + }, + "canGuestPull": { + "type": "boolean", + "description": "Guest users can download from the Catalog registry" + }, + "canPublicList": { + "type": "boolean", + "description": "Publicly listed/searchable in the Catalog registry" + }, + "isPublic": { + "type": "boolean", + "description": "Publicly available in the Catalog registry" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + } + } + }, + "CatalogLicenseMetadata": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "licenseId": { + "type": "string", + "description": "License ID" + }, + "licenseVersion": { + "type": "string", + "description": "License version ID" + }, + "needsAcceptance": { + "type": "boolean", + "description": "Indicator if user needs to accept this license" + } + } + }, + "CollectionSimplified": { + "type": "object", + "description": "Collection object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the collection" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the collection belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the collection belongs to" + } + } + }, + "DeploymentParametersMetaListResponse": { + "type": "object", + "description": "Response to list deployment parameters metadata request", + "properties": { + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "deploymentParametersMetas": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "HelmApiErrorResponse": { + "type": "object", + "description": "Helm API error response", + "properties": { + "error": { + "type": "string" + } + } + }, + "HelmChartDependency": { + "type": "object", + "description": "Helm chart dependency object", + "properties": { + "name": { + "type": "string", + "description": "The name of the chart (example: nginx)" + }, + "repository": { + "type": "string", + "description": "The repository URL (example: https://example.com/charts)" + }, + "version": { + "type": "string", + "description": "The version of the chart (example: 1.2.3)" + } + } + }, + "HelmChartMaintainer": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "The maintainer's email (optional for each maintainer)" + }, + "name": { + "type": "string", + "description": "The maintainer's name (required for each maintainer)" + }, + "url": { + "type": "string", + "description": "A URL for the maintainer (optional for each maintainer)" + } + } + }, + "HelmChartVersion": { + "type": "object", + "description": "Helm chart version object", + "properties": { + "apiVersion": { + "type": "string", + "description": "The chart API version (required)" + }, + "appVersion": { + "type": "string", + "description": "The version of the app that this contains (optional). This nee\n dn't be SemVer." + }, + "dependencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HelmChartDependency" + }, + "description": "A list of the chart requirements (optional)" + }, + "deprecated": { + "type": "boolean", + "description": "Whether this chart is deprecated (optional, boolean)" + }, + "description": { + "type": "string", + "description": "A single-sentence description of this project (optional)" + }, + "home": { + "type": "string", + "description": "The URL of this project's home page (optional)" + }, + "icon": { + "type": "string", + "description": "A URL to an SVG or PNG image to be used as an icon (optional)." + }, + "keywords": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of keywords about this project (optional)" + }, + "kubeVersion": { + "type": "string", + "description": "A SemVer range of compatible Kubernetes versions (optional)" + }, + "maintainers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HelmChartMaintainer" + } + }, + "name": { + "type": "string", + "description": "The name of the chart (required)" + }, + "sources": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of URLs to source code for this project (optional)" + }, + "type": { + "type": "string", + "description": "It is the type of chart (optional)" + }, + "version": { + "type": "string", + "description": "A SemVer 2 version (required)" + } + } + }, + "HelmChartVersionCreateResponse": { + "type": "object", + "description": "Helm chart version creation response", + "properties": { + "saved": { + "type": "boolean" + } + } + }, + "ModelCreateResponse": { + "type": "object", + "description": "DEPRECATED - use ModelResponse schema", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelVersionCreateResponse": { + "type": "object", + "description": "DEPRECATED - use ModelVersionResponse", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "x-description": "Model version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "MultipartUploadIDSchema": { + "type": "object", + "description": "Schema for base64 encoded stringified Upload ID that is relayed during \n multipart upload of artifacts", + "properties": { + "dekMeta": { + "type": "string", + "description": "DEK metadata for encrypted enabled orgs" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the entire file" + }, + "uploadID": { + "type": "string", + "description": "CSP upload ID" + } + } + }, + "VersionsOwnersListResponse": { + "type": "object", + "description": "Response to list versions owners", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "versionsOwnersList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactOwnerDetails" } } - ], + } + } + }, + "securitySchemes": { + "authn": { + "flows": { + "clientCredentials": { + "scopes": {}, + "tokenUrl": "authn.nvidia.com/token" + } + }, + "type": "oauth2" + }, + "ssa": { + "description": "A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725", + "flows": { + "clientCredentials": { + "scopes": { + "cloneArtifact": "{scope}", + "getPublicFlags": "{scope}", + "helmProxy": "{scope}", + "kas": "{scope}", + "publishArtifact": "{scope}", + "publishCollection": "{scope}", + "recreateArtifactVersionZip": "{scope}", + "undoPublishArtifact": "{scope}", + "undoPublishCollection": "{scope}" + }, + "tokenUrl": "https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token" + } + }, + "type": "oauth2" + } + } + }, + "info": { + "contact": { + "name": "NVIDIA", + "url": "https://www.nvidia.com/" + }, + "termsOfService": "https://www.nvidia.com/en-us/legal_info", + "title": "Models API", + "version": "0.0.1-SNAPSHOT" + }, + "openapi": "3.1.0", + "paths": { + "/health": { + "get": { + "description": "Used to check the health status of the web service only", + "operationId": "status", "responses": { "200": { - "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + }, + "description": "OK" + }, + "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "deleteArtifacts" - ] - } + "summary": "Web Service Health Status", + "tags": [ + "Health" ], - "x-ssa-scopes": [ - "deleteArtifacts", - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec": { + "/health/**": { "get": { + "description": "Get Health Information about this service", + "operationId": "getHealth", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthComponent" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get Health Information", "tags": [ - "AIPlayground" + "Health" ], - "summary": "Get AI Playground for artifactType", - "description": "Get AI Playground for artifactType", - "operationId": "getModelArtifactsSpec_1", + "x-ssa-scopes": [] + } + }, + "/health/all": { + "get": { + "description": "Used to get health status of all services", + "operationId": "statusDetails", "parameters": [ { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, + "description": "boolean value to indicating to show details or not", + "in": "query", + "name": "showDetails", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "secret value that validates the call in order to show details", + "in": "query", + "name": "secret", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 512, + "minLength": 0, + "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "All Service Health Status", + "tags": [ + "Health" + ], + "x-ssa-scopes": [] + } + }, + "/v2/artifact-registry/org/{org_name}/encryption-keys": { + "get": { + "description": "List encryption keys in org", + "operationId": "listKeysInOrg", + "parameters": [ { - "name": "teamName", + "description": "Organization name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ { - "name": "artifactType", + "ssa": [ + "kas" + ] + } + ], + "summary": "List encryption keys in org", + "tags": [ + "Encryption Keys" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/artifact-registry/org/{org_name}/encryption-keys/{key_id}": { + "delete": { + "description": "Revoke encryption key and disassociate from all artifacts in org", + "operationId": "deleteKeyFromOrg", + "parameters": [ + { + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactName", + "description": "Key ID", "in": "path", - "description": "Model name", + "name": "key_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], "responses": { - "200": { - "description": "OK", + "202": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" } } - } + }, + "description": "Accepted" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "getArtifact" + "kas" ] } ], + "summary": "Revoke encryption key in org", + "tags": [ + "Encryption Keys" + ], "x-ssa-scopes": [ - "getArtifact", "kas" ] }, - "put": { - "tags": [ - "AIPlayground" - ], - "summary": "Update AI Playground for artifactType", - "description": "Update AI Playground for artifactType", - "operationId": "updateModelArtifactsSpec_1", + "get": { + "description": "List artifacts for encryption key in org", + "operationId": "listArtifactsForKeyInOrg", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "teamName", + "description": "Key ID", "in": "path", - "description": "Team name", + "name": "key_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactType", - "in": "path", "description": "Artifact type", - "required": true, + "in": "query", + "name": "artifact-type", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", + "default": "MODEL", "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "Not Found" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", + "429": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "writeArtifacts" + "kas" ] } ], + "summary": "List artifacts for encryption key in org", + "tags": [ + "Encryption Keys" + ], "x-ssa-scopes": [ - "writeArtifacts", "kas" ] - }, - "delete": { - "tags": [ - "AIPlayground" - ], - "summary": "Delete AI Playground for artifactType", - "description": "Delete AI Playground for artifactType", - "operationId": "deleteModelArtifactsSpec_1", + } + }, + "/v2/artifact-registry/org/{org_name}/team/{team_name}/encryption-keys": { + "get": { + "description": "List encryption keys in org/team", + "operationId": "listKeysInTeam", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "teamName", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifactType", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactName", + "description": "Team name", "in": "path", - "description": "Model name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], "responses": { "200": { - "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyListResponse" + } + } + }, + "description": "OK" + }, + "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "deleteArtifacts" + "kas" ] } ], + "summary": "List encryption keys in org/team", + "tags": [ + "Encryption Keys" + ], "x-ssa-scopes": [ - "deleteArtifacts", "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/terms-of-service": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Update artifact terms of service", - "description": "Update artifact terms of service", - "operationId": "updateTermsOfService", + "/v2/artifact-registry/org/{org_name}/team/{team_name}/encryption-keys/{key_id}": { + "delete": { + "description": "Revoke encryption key and disassociate from all artifacts in org/team", + "operationId": "deleteKeyFromTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Key ID", "in": "path", - "description": "Artifact name", + "name": "key_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactPublishRequest" + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } } - } + }, + "description": "Accepted" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "publishArtifact", "kas" ] } ], + "summary": "Revoke encryption key in org/team", + "tags": [ + "Encryption Keys" + ], "x-ssa-scopes": [ - "publishArtifact", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Update artifact terms of service", - "description": "Update artifact terms of service", - "operationId": "updateTermsOfService_1", + }, + "get": { + "description": "List artifacts for encryption key in org/team", + "operationId": "listArtifactsForKeyInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Key ID", "in": "path", - "description": "Artifact type", + "name": "key_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "query", + "name": "artifactType", + "required": false, + "schema": { + "default": "MODEL", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -2712,521 +6638,578 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactPublishRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyArtifactListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "publishArtifact", "kas" ] } ], + "summary": "List artifacts for encryption key in org/team", + "tags": [ + "Encryption Keys" + ], "x-ssa-scopes": [ - "publishArtifact", "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/share": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish artifact to public", - "description": "Publish artifact to public", - "operationId": "publishArtifact", + "/v2/artifact-registry/org/{org}/team/{team}/workflows/{workflow_id}": { + "get": { + "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team.", + "operationId": "getWorkflowStatusForTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Workflow identifier", "in": "path", - "description": "Artifact name", + "name": "workflow_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "guest-can-download", - "in": "query", - "description": "Indicates if guest users can download this artifact", - "required": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "public-can-list", - "in": "query", - "description": "Indicates if artifact is listed publicly", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 512, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "publishArtifact" + "kas", + "cloneArtifact" ] } ], - "x-ssa-scopes": [ - "publishArtifact" - ] - }, - "delete": { + "summary": "Get team-scoped workflow status", "tags": [ - "Publish" + "Workflows" ], - "summary": "Undo publishing of artifact to public", - "description": "Undo publishing of artifact to public", - "operationId": "undoPublishArtifact", + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v2/artifact-registry/org/{org}/workflows/{workflow_id}": { + "get": { + "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization.", + "operationId": "getWorkflowStatus", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Workflow identifier", "in": "path", - "description": "Artifact type", + "name": "workflow_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Get workflow status", + "tags": [ + "Workflows" + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v2/collections": { + "get": { + "description": "List public collections", + "operationId": "listPublicCollections", + "parameters": [ + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "undoPublishArtifact" - ] - } + "summary": "List public collections", + "tags": [ + "Collections" ], - "x-ssa-scopes": [ - "undoPublishArtifact" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish artifact to product", - "description": "Publish artifact to product", - "operationId": "publishArtifactFromRequest", + "/v2/collections/{org_name}/{collection_name}": { + "get": { + "description": "Get collection details in org as guest", + "operationId": "getCollectionInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactPublishRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "publishArtifact" - ] - } - ], - "x-ssa-scopes": [ - "publishArtifact" - ] - }, - "delete": { + "summary": "Get collection in org as guest", "tags": [ - "Publish" + "Collections" ], - "summary": "Undo publishing of product artifacts", - "description": "Undo publishing of product artifacts", - "operationId": "undoPublishProduct", + "x-ssa-scopes": [] + } + }, + "/v2/collections/{org_name}/{collection_name}/artifacts/{artifact_type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org as guest", + "operationId": "listCollectionArtifactsInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ "MODEL", "MODEL_SCRIPT", @@ -3240,160 +7223,212 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, "schema": { - "type": "string", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "undoPublishArtifact" - ] - } + "summary": "List collection artifacts in org as guest", + "tags": [ + "Collections" ], - "x-ssa-scopes": [ - "undoPublishArtifact" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature": { + "/v2/collections/{org_name}/{team_name}/{collection_name}": { "get": { - "tags": [ - "ArtifactSigning" - ], - "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", - "operationId": "getArtifactVersionSignature", + "description": "Get collection details in team as guest", + "operationId": "getCollectionInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } }, { - "name": "redirect", + "description": "Remove unresolved labels", "in": "query", - "description": "Get redirect URL", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" @@ -3401,86 +7436,121 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - }, - "put": { + "summary": "Get collection in team as guest", "tags": [ - "ArtifactSigning" + "Collections" ], - "description": "Request to sign artifact version", - "operationId": "signArtifactVersion", + "x-ssa-scopes": [] + } + }, + "/v2/collections/{org_name}/{team_name}/{collection_name}/artifacts/{artifact_type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org and team as guest", + "operationId": "listCollectionArtifactsInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ "MODEL", "MODEL_SCRIPT", @@ -3494,186 +7564,189 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, "schema": { - "type": "string", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "signArtifactVersion" - ] - } + "summary": "List collection artifacts in org and team as guest", + "tags": [ + "Collections" ], - "x-ssa-scopes": [ - "signArtifactVersion", - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature": { - "get": { - "tags": [ - "ArtifactSigning" - ], - "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", - "operationId": "getArtifactVersionSignature_1", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, + "/v2/csps": { + "get": { + "description": "List cloud service providers", + "operationId": "listCloudServiceProviders", + "parameters": [ { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minimum": 1, + "type": "integer" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minimum": 0, + "type": "integer" } }, { - "name": "redirect", + "description": "Include disabled", "in": "query", - "description": "Get redirect URL", + "name": "include-disabled", "required": false, "schema": { "type": "boolean" @@ -3681,262 +7754,244 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - }, - "put": { + "summary": "List cloud service providers", "tags": [ - "ArtifactSigning" + "Cloud service providers" ], - "description": "Request to sign artifact version", - "operationId": "signArtifactVersion_1", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "x-ssa-scopes": [] + }, + "post": { + "description": "Create cloud service provider", + "operationId": "createCloudServiceProvider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderCreateRequest" + } } }, - { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "signArtifactVersion" + "kas" ] } ], + "summary": "Create cloud service provider", + "tags": [ + "Cloud service providers" + ], "x-ssa-scopes": [ - "signArtifactVersion", "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/release-type": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Update artifact version release type", - "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", - "operationId": "updateReleaseLabel", + "/v2/csps/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/versions/{version_id}/deployments/{csp_name}": { + "post": { + "description": "Create public artifact version deployment url in team", + "operationId": "createPublicArtifactDeploymentUrlInTeam", "parameters": [ { - "name": "org-name", + "description": "Artifact type", "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -3944,146 +7999,188 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "publishArtifact" + "kas" ] } ], - "x-ssa-scopes": [ - "publishArtifact", - "kas" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/release-type": { - "put": { + "summary": "Create public artifact version deployment url in team", "tags": [ - "Publish" + "Artifact deployment parameters" ], - "summary": "Update artifact version release type", - "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", - "operationId": "updateReleaseLabel_1", + "x-ssa-scopes": [] + } + }, + "/v2/csps/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name}": { + "post": { + "description": "Create public artifact version file deployment url in team", + "operationId": "createPublicArtifactVersionFileDeploymentUrlInTeam", "parameters": [ { - "name": "org-name", + "description": "Artifact type", "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact name", "in": "path", - "description": "Artifact type", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Version ID", "in": "path", - "description": "Artifact name", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -4091,267 +8188,353 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "publishArtifact" + "kas" ] } ], - "x-ssa-scopes": [ - "publishArtifact", - "kas" - ] - } - }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}": { - "get": { + "summary": "Create public artifact version file deployment url in team", "tags": [ - "Artifacts" + "Artifact deployment parameters" ], - "summary": "Get artifact in org", - "description": "Get artifact details in org", - "operationId": "getArtifactInOrg", + "x-ssa-scopes": [] + } + }, + "/v2/csps/{artifact_type}/org/{org_name}/{artifact_name}/versions/{version_id}/deployments/{csp_name}": { + "post": { + "description": "Create public artifact version deployment url in org", + "operationId": "createPublicArtifactDeploymentUrlInOrg", "parameters": [ { - "name": "org-name", + "description": "Artifact type", "in": "path", - "description": "Organization name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "getArtifact" + "kas" ] } ], - "x-ssa-scopes": [ - "getArtifact", - "kas" - ] - }, - "put": { + "summary": "Create public artifact version deployment url in org", "tags": [ - "Artifacts" + "Artifact deployment parameters" ], - "summary": "Replace artifact in org", - "description": "Replace artifact details in org", - "operationId": "replaceArtifactInOrg", + "x-ssa-scopes": [] + } + }, + "/v2/csps/{artifact_type}/org/{org_name}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name}": { + "post": { + "description": "Create public artifact version file deployment url in org", + "operationId": "createPublicArtifactVersionFileDeploymentUrlInOrg", "parameters": [ { - "name": "org-name", + "description": "Artifact type", "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact name", "in": "path", - "description": "Artifact type", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Version ID", "in": "path", - "description": "Artifact name", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -4359,409 +8542,432 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactUpdateRequest" + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateArtifact" + "kas" ] } ], - "x-ssa-scopes": [ - "updateArtifact", - "kas" - ] - }, - "delete": { + "summary": "Create public artifact version file deployment url in org", "tags": [ - "Artifacts" + "Artifact deployment parameters" ], - "summary": "Delete artifact in org", - "description": "Delete artifact in org", - "operationId": "deleteArtifactInOrg", + "x-ssa-scopes": [] + } + }, + "/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in org", + "operationId": "listPublicArtifactDeploymentParametersInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "deleteArtifact" - ] - } - ], - "x-ssa-scopes": [ - "deleteArtifact", - "kas" - ] - }, - "patch": { + "summary": "List public artifact deployment parameters in org", "tags": [ - "Artifacts" + "Artifact deployment parameters" ], - "summary": "Update artifact in org", - "description": "Update artifact details in org", - "operationId": "updateArtifactInOrg", + "x-ssa-scopes": [] + } + }, + "/v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in org", + "operationId": "getPublicArtifactDeploymentParametersInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "updateArtifact" - ] - } + "summary": "Get public artifact deployment parameters details in org", + "tags": [ + "Artifact deployment parameters" ], - "x-ssa-scopes": [ - "updateArtifact", - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish artifact to public", - "description": "Publish artifact to public", - "operationId": "publishArtifact_1", + "/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in team", + "operationId": "listPublicArtifactDeploymentParametersInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "guest-can-download", - "in": "query", - "description": "Indicates if guest users can download this artifact", - "required": true, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } }, { - "name": "public-can-list", + "description": "Inherit CSP parameters", "in": "query", - "description": "Indicates if artifact is listed publicly", + "name": "inherit-csp-parameters", "required": false, "schema": { "type": "boolean" @@ -4769,965 +8975,806 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "publishArtifact" - ] - } - ], - "x-ssa-scopes": [ - "publishArtifact" - ] - }, - "delete": { + "summary": "List public artifact deployment parameters in team", "tags": [ - "Publish" + "Artifact deployment parameters" ], - "summary": "Undo publishing of artifact to public", - "description": "Undo publishing of artifact to public", - "operationId": "undoPublishArtifact_1", + "x-ssa-scopes": [] + } + }, + "/v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in team", + "operationId": "getPublicArtifactDeploymentParametersInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { - "401": { - "description": "Unauthorized", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/DeploymentParameters" } } - } + }, + "description": "OK" }, - "403": { - "description": "Forbidden", + "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, - "404": { - "description": "Not Found", + "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, - "429": { - "description": "Too many requests", + "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, - "500": { - "description": "Internal Error", + "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } - } - }, - "security": [ - { - "ssa": [ - "undoPublishArtifact" - ] - } - ], - "x-ssa-scopes": [ - "undoPublishArtifact" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish artifact to product", - "description": "Publish artifact to product", - "operationId": "publishArtifactFromRequest_1", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } + }, + "description": "Too many requests" }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get public artifact deployment parameters details in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v2/csps/{csp_name}": { + "delete": { + "description": "Delete cloud service provider", + "operationId": "deleteCloudServiceProvider", + "parameters": [ { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactPublishRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "publishArtifact" + "kas" ] } ], + "summary": "Delete cloud service provider", + "tags": [ + "Cloud service providers" + ], "x-ssa-scopes": [ - "publishArtifact" + "kas" ] }, - "delete": { - "tags": [ - "Publish" - ], - "summary": "Undo publishing of product artifacts", - "description": "Undo publishing of product artifacts", - "operationId": "undoPublishProduct_1", + "get": { + "description": "Get cloud service provider details", + "operationId": "getCloudServiceProviderDetails", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "undoPublishArtifact" - ] - } - ], - "x-ssa-scopes": [ - "undoPublishArtifact" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}": { - "get": { + "summary": "Get cloud service provider details", "tags": [ - "Artifacts" + "Cloud service providers" ], - "summary": "Get artifact in team", - "description": "Get artifact details in team", - "operationId": "getArtifactInTeam", + "x-ssa-scopes": [] + }, + "patch": { + "description": "Update cloud service provider", + "operationId": "updateCloudServiceProvider", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "getArtifact" + "kas" ] } ], + "summary": "Update cloud service provider", + "tags": [ + "Cloud service providers" + ], "x-ssa-scopes": [ - "getArtifact", "kas" ] - }, - "put": { - "tags": [ - "Artifacts" - ], - "summary": "Replace artifact in team", - "description": "Replace artifact details in team", - "operationId": "replaceArtifactInTeam", + } + }, + "/v2/csps/{csp_name}/deployments/params": { + "delete": { + "description": "Delete cloud service provider deployment parameters", + "operationId": "deleteCloudServiceProviderDeploymentParameters", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateArtifact" + "kas" ] } ], + "summary": "Delete cloud service provider deployment parameters", + "tags": [ + "Cloud service provider deployment parameters" + ], "x-ssa-scopes": [ - "updateArtifact", "kas" ] }, - "delete": { - "tags": [ - "Artifacts" - ], - "summary": "Delete artifact in team", - "description": "Delete artifact in team", - "operationId": "deleteArtifactInTeam", + "get": { + "description": "Get cloud service provider deployment parameters details", + "operationId": "getCloudServiceProviderDeploymentParametersDetails", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "deleteArtifact" - ] - } + "summary": "Get cloud service provider deployment parameters details", + "tags": [ + "Cloud service provider deployment parameters" ], - "x-ssa-scopes": [ - "deleteArtifact", - "kas" - ] + "x-ssa-scopes": [] }, "patch": { - "tags": [ - "Artifacts" - ], - "summary": "Update artifact in team", - "description": "Update artifact details in team", - "operationId": "updateArtifactInTeam", + "description": "Update cloud service provider deployment parameters", + "operationId": "updateCloudServiceProviderDeploymentParameters", "parameters": [ { - "name": "org-name", + "description": "Cloud service provider name", "in": "path", - "description": "Organization name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } } }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update cloud service provider deployment parameters", + "tags": [ + "Cloud service provider deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create cloud service provider deployment parameters", + "operationId": "createCloudServiceProviderDeploymentParameters", + "parameters": [ { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -5735,201 +9782,170 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactUpdateRequest" + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateArtifact" + "kas" ] } ], + "summary": "Create cloud service provider deployment parameters", + "tags": [ + "Cloud service provider deployment parameters" + ], "x-ssa-scopes": [ - "updateArtifact", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name}": { - "put": { - "tags": [ - "Apps" - ], - "summary": "Update model app association", - "description": "Update model app association", - "operationId": "updateModelAppAssociation", + "/v2/csps/{csp_name}/deployments/params/meta": { + "delete": { + "description": "Delete cloud service provider deployment parameters meta", + "operationId": "deleteCloudServiceProviderDeploymentParametersMeta", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 512, - "minLength": 0 - } - }, - { - "name": "app-name", + "description": "Cloud service provider name", "in": "path", - "description": "App Name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, "security": [ { "ssa": [ @@ -5937,252 +9953,186 @@ ] } ], + "summary": "Delete cloud service provider deployment parameters meta", + "tags": [ + "Deployment parameters meta" + ], "x-ssa-scopes": [ "kas" ] }, - "delete": { - "tags": [ - "Apps" - ], - "summary": "Delete model app association", - "description": "Delete model app association", - "operationId": "deleteModelAppAssociation", + "get": { + "description": "Get cloud service provider deployment parameters meta details", + "operationId": "getCloudServiceProviderDeploymentParametersMetaDetails", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 512, - "minLength": 0 - } - }, - { - "name": "app-name", + "description": "Cloud service provider name", "in": "path", - "description": "App Name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team}": { - "put": { + "summary": "Get cloud service provider deployment parameters meta details", "tags": [ - "Models" + "Deployment parameters meta" ], - "summary": "Share team model with the specified team", - "description": "This operation shares a team model with the team.", - "operationId": "shareModelInTeamWithTeam", + "x-ssa-scopes": [] + }, + "patch": { + "description": "Update cloud service provider deployment parameters meta", + "operationId": "updateCloudServiceProviderDeploymentParametersMeta", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "target-team", + "description": "Cloud service provider name", "in": "path", - "description": "Target team name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMetaUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -6192,117 +10142,101 @@ ] } ], + "summary": "Update cloud service provider deployment parameters meta", + "tags": [ + "Deployment parameters meta" + ], "x-ssa-scopes": [ "kas" ] }, - "delete": { - "tags": [ - "Models" - ], - "summary": "Revoke shared team model with the specified team", - "description": "This operation revokes a shared team model with the team.", - "operationId": "revokeShareModelInTeamWithTeam", + "post": { + "description": "Create cloud service provider deployment parameters meta", + "operationId": "createCloudServiceProviderDeploymentParametersMeta", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "target-team", + "description": "Cloud service provider name", "in": "path", - "description": "Target team name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMetaCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -6312,4008 +10246,4113 @@ ] } ], + "summary": "Create cloud service provider deployment parameters meta", + "tags": [ + "Deployment parameters meta" + ], "x-ssa-scopes": [ "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org": { - "put": { - "tags": [ - "Models" - ], - "summary": "Share team model with the org", - "description": "This operation shares a team model with the org.", - "operationId": "shareModelInTeamWithOrg", + "/v2/deploy/csps": { + "get": { + "description": "List cloud service providers", + "operationId": "listCloudServiceProviders_1", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maximum": 5000, + "minimum": 1, + "type": "integer" } }, { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maximum": 10000, + "minimum": 0, + "type": "integer" } }, { - "name": "model-name", - "in": "path", - "description": "Model name", - "required": true, + "description": "Include disabled", + "in": "query", + "name": "include-disabled", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + "summary": "List cloud service providers", "tags": [ - "Models" + "Cloud service providers" ], - "summary": "Revoke shared team model with the org", - "description": "This operation revokes a shared team model with the org.", - "operationId": "revokeShareModelInTeamWithOrg", + "x-ssa-scopes": [] + } + }, + "/v2/deploy/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in org as guest", + "operationId": "listPublicArtifactDeploymentParametersInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact name", "in": "path", - "description": "Model name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "List public artifact deployment parameters in org as guest", + "tags": [ + "Artifact deployment parameters" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Add artifact to collection in org and team", - "description": "Add artifact to the specified collection in the specified org and team", - "operationId": "addArtifactToCollectionInTeam", + "/v2/deploy/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in org as guest", + "operationId": "getPublicArtifactDeploymentParametersInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Artifact name", "in": "path", - "description": "Collection name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact type", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + "summary": "Get public artifact deployment parameters details in org as guest", "tags": [ - "Collections" + "Artifact deployment parameters" ], - "summary": "Remove artifact from collection in org and team", - "description": "Remove artifact from the specified collection in the specified org and team", - "operationId": "removeArtifactFromCollectionInTeam", + "x-ssa-scopes": [] + } + }, + "/v2/deploy/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in team as guest", + "operationId": "listPublicArtifactDeploymentParametersInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Artifact type", "in": "path", - "description": "Collection name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact name", "in": "path", - "description": "Artifact type", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "List public artifact deployment parameters in team as guest", + "tags": [ + "Artifact deployment parameters" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team}": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Share team collection with the specified team", - "description": "Share team collection with the specified team", - "operationId": "shareCollectionInTeamWithTeam", + "/v2/deploy/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in team as guest", + "operationId": "getPublicArtifactDeploymentParametersInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Artifact type", "in": "path", - "description": "Collection name", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "target-team", + "description": "Cloud service provider name", "in": "path", - "description": "Target team name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + "summary": "Get public artifact deployment parameters details in team as guest", "tags": [ - "Collections" + "Artifact deployment parameters" ], - "summary": "Revoke shared team collection with the specified team", - "description": "Revoke shared team collection with the specified team", - "operationId": "revokeShareCollectionInTeamWithTeam", + "x-ssa-scopes": [] + } + }, + "/v2/deploy/csps/{csp_name}": { + "get": { + "description": "Get cloud service provider details", + "operationId": "getCloudServiceProviderDetails_1", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "target-team", + "description": "Cloud service provider name", "in": "path", - "description": "Target team name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "Get cloud service provider details", + "tags": [ + "Cloud service providers" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Share team collection with the org", - "description": "Share team collection with the org", - "operationId": "shareCollectionInTeamWithOrg", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], + "/v2/gpus": { + "get": { + "description": "Get all GPU by PCI records", + "operationId": "getGpus", "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GpuByPciResponse" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": "array" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "readGpuByPci" ] } ], + "summary": "Get all GPUs", + "tags": [ + "GpuByPci" + ], "x-ssa-scopes": [ - "kas" + "kas", + "readGpuByPci" ] - }, + } + }, + "/v2/gpus/pci-device-id/{pci_device_id}": { "delete": { - "tags": [ - "Collections" - ], - "summary": "Revoke shared team collection with the org", - "description": "Revoke shared team collection with the org", - "operationId": "revokeShareCollectionInTeamWithOrg", + "description": "Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", + "operationId": "deleteGpuByPciDeviceId", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", + "description": "PCI Device ID", "in": "path", - "description": "Collection name", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "deleteGpuByPci" ] } ], + "summary": "Delete GPU by PCI Device ID only", + "tags": [ + "GpuByPci" + ], "x-ssa-scopes": [ + "deleteGpuByPci", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish collection to public", - "description": "Publish collection to public", - "operationId": "publishCollection", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "guest-can-download", - "in": "query", - "description": "Indicates if guest users can download this collection", - "required": true, - "schema": { - "type": "boolean" - } - }, + }, + "get": { + "description": "Get all GPU records matching the given PCI Device ID", + "operationId": "getGpuByPciDeviceId", + "parameters": [ { - "name": "public-can-list", - "in": "query", - "description": "Indicates if collection is listed publicly", - "required": false, + "description": "PCI Device ID", + "in": "path", + "name": "pci_device_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GpuByPciResponse" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": "array" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "publishCollection" + "kas", + "readGpuByPci" ] } ], + "summary": "Get GPU by PCI Device ID", + "tags": [ + "GpuByPci" + ], "x-ssa-scopes": [ - "publishCollection" + "kas", + "readGpuByPci" ] }, - "delete": { - "tags": [ - "Publish" - ], - "summary": "Undo publishing of collection to public", - "description": "Undo publishing of collection to public", - "operationId": "undoPublishCollection", + "patch": { + "description": "Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated.", + "operationId": "updateGpuByPciDeviceId", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", + "description": "PCI Device ID", "in": "path", - "description": "Collection name", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "undoPublishCollection" + "kas", + "updateGpuByPci" ] } ], - "x-ssa-scopes": [ - "undoPublishCollection" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { - "put": { + "summary": "Partially update GPU by PCI Device ID only", "tags": [ - "Collections" + "GpuByPci" ], - "summary": "Add artifact to collection in org and team from another org", - "description": "Add artifact to the specified collection in the specified org and team from another org", - "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", + "x-ssa-scopes": [ + "kas", + "updateGpuByPci" + ] + }, + "post": { + "description": "Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", + "operationId": "createGpuByPciDeviceId", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-org-name", - "in": "path", - "description": "Artifact organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", + "description": "PCI Device ID", "in": "path", - "description": "Artifact name", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" + "createGpuByPci" ] } ], - "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", - "kas" - ] - }, - "delete": { + "summary": "Create GPU by PCI Device ID only", "tags": [ - "Collections" + "GpuByPci" ], - "summary": "Remove artifact from collection in org and team from another org", - "description": "Remove artifact from the specified collection in the specified org and team from another org", - "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", + "x-ssa-scopes": [ + "kas", + "createGpuByPci" + ] + } + }, + "/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}": { + "get": { + "description": "Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID", + "operationId": "getGpuByPciDeviceIdVendorId", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-org-name", - "in": "path", - "description": "Artifact organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-type", + "description": "PCI Device ID", "in": "path", - "description": "Artifact type", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "PCI Vendor ID", "in": "path", - "description": "Artifact name", + "name": "pci_vendor_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GpuByPciResponse" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": "array" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "readGpuByPci" ] } ], + "summary": "Get GPUs by PCI Device ID and Vendor ID", + "tags": [ + "GpuByPci" + ], "x-ssa-scopes": [ - "kas" + "kas", + "readGpuByPci" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Add artifact to collection in org and team from another org and team", - "description": "Add artifact to the specified collection in the specified org and team from another org and team", - "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", + "/v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id}": { + "delete": { + "description": "Delete a GPU record matching the full PCI composite key", + "operationId": "deleteGpuByPciFullKey", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-org-name", - "in": "path", - "description": "Artifact organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-team-name", + "description": "PCI Device ID", "in": "path", - "description": "Artifact team name", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "PCI Vendor ID", "in": "path", - "description": "Artifact type", + "name": "pci_vendor_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "PCI Subsystem Device ID", "in": "path", - "description": "Artifact name", + "name": "pci_subsystem_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" + "deleteGpuByPci" ] } ], + "summary": "Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "tags": [ + "GpuByPci" + ], "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", + "deleteGpuByPci", "kas" ] }, - "delete": { - "tags": [ - "Collections" - ], - "summary": "Remove artifact from collection in org and team from another org and team", - "description": "Remove artifact from the specified collection in the specified org and team from another org and team", - "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", + "get": { + "description": "Get a single GPU record matching the full PCI composite key", + "operationId": "getGpuByPciDeviceIdVendorIdSubsystemDeviceId", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-org-name", - "in": "path", - "description": "Artifact organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-team-name", - "in": "path", - "description": "Artifact team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-type", + "description": "PCI Device ID", "in": "path", - "description": "Artifact type", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "PCI Vendor ID", "in": "path", - "description": "Artifact name", + "name": "pci_vendor_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Subsystem Device ID", + "in": "path", + "name": "pci_subsystem_device_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "readGpuByPci" ] } ], - "x-ssa-scopes": [ - "kas" - ] - } - }, - "/v1/org/{org-name}/models/{model-name}/shares/team/{target-team}": { - "put": { + "summary": "Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", "tags": [ - "Models" + "GpuByPci" ], - "summary": "Share org model with the specified team", - "description": "This operation shares an org model with the team.", - "operationId": "shareModelInOrgWithTeam", + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + }, + "patch": { + "description": "Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated.", + "operationId": "updateGpuByPciFullKey", "parameters": [ { - "name": "org-name", + "description": "PCI Device ID", "in": "path", - "description": "Organization name", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "PCI Vendor ID", "in": "path", - "description": "Model name", + "name": "pci_vendor_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "target-team", + "description": "PCI Subsystem Device ID", "in": "path", - "description": "Target team name", + "name": "pci_subsystem_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "updateGpuByPci" ] } ], + "summary": "Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "tags": [ + "GpuByPci" + ], "x-ssa-scopes": [ - "kas" + "kas", + "updateGpuByPci" ] }, - "delete": { - "tags": [ - "Models" - ], - "summary": "Revoke shared org model with the specified team", - "description": "This operation revokes a shared org model with the team.", - "operationId": "revokeShareModelInOrgWithTeam", + "post": { + "description": "Create a new GPU record using the full PCI composite key", + "operationId": "createGpuByPciFullKey", "parameters": [ { - "name": "org-name", + "description": "PCI Device ID", "in": "path", - "description": "Organization name", + "name": "pci_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "PCI Vendor ID", "in": "path", - "description": "Model name", + "name": "pci_vendor_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } }, { - "name": "target-team", + "description": "PCI Subsystem Device ID", "in": "path", - "description": "Target team name", + "name": "pci_subsystem_device_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 32, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "createGpuByPci" ] } ], + "summary": "Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "tags": [ + "GpuByPci" + ], "x-ssa-scopes": [ - "kas" + "kas", + "createGpuByPci" ] } }, - "/v1/org/{org-name}/models/{model-name}/shares/org": { - "put": { - "tags": [ - "Models" - ], - "summary": "Share org model with the org", - "description": "This operation shares an org model with the org.", - "operationId": "shareModelInOrgWithOrg", + "/v2/helm-charts/{org_name}/{artifact_name}/versions": { + "get": { + "description": "List chart versions in org as guest", + "operationId": "listHelmChartVersionsInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact name", "in": "path", - "description": "Model name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + "summary": "List chart versions in org as guest", "tags": [ - "Models" + "Helm Charts" ], - "summary": "Revoke shared org model with the org", - "description": "This operation revokes a shared org model with the org.", - "operationId": "revokeShareModelInOrgWithOrg", + "x-ssa-scopes": [] + } + }, + "/v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id}": { + "get": { + "description": "Get chart version in org as guest", + "operationId": "getHelmChartVersionInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact name", "in": "path", - "description": "Model name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "Get chart version in org as guest", + "tags": [ + "Helm Charts" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Add artifact to collection in org", - "description": "Add artifact to the specified collection in the specified org", - "operationId": "addArtifactToCollectionInOrg", + "/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions": { + "get": { + "description": "List chart versions in team as guest", + "operationId": "listHelmChartVersionsInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Team name", "in": "path", - "description": "Collection name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact name", "in": "path", - "description": "Artifact type", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, "schema": { - "type": "string", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + }, + "description": "Internal Error" + } + }, + "summary": "List chart versions in team as guest", "tags": [ - "Collections" + "Helm Charts" ], - "summary": "Remove artifact from collection in org", - "description": "Remove artifact from the specified collection in the specified org", - "operationId": "removeArtifactFromCollectionInOrg", + "x-ssa-scopes": [] + } + }, + "/v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions/{version_id}": { + "get": { + "description": "Get chart version in team as guest", + "operationId": "getHelmChartVersionInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Team name", "in": "path", - "description": "Collection name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact name", "in": "path", - "description": "Artifact type", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Version ID", "in": "path", - "description": "Artifact name", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "Get chart version in team as guest", + "tags": [ + "Helm Charts" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team}": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Share org collection with the specified team", - "description": "Share org collection with the specified team", - "operationId": "shareCollectionInOrgWithTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "/v2/malware-scan-notification": { + "post": { + "description": "Update artifact's malware scan result with MalwareScanNotification", + "operationId": "notifyScanResult", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MalwareScanNotification" + } } }, - { - "name": "target-team", - "in": "path", - "description": "Target team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - } - ], + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotifyMalwareScanResultResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "notifyScanResult" ] } ], + "summary": "Update artifact's malware scan result with MalwareScanNotification", + "tags": [ + "MalwareScan" + ], "x-ssa-scopes": [ + "notifyScanResult", "kas" ] - }, - "delete": { - "tags": [ - "Collections" - ], - "summary": "Revoke shared org collection with the specified team", - "description": "Revoke shared org collection with the specified team", - "operationId": "revokeShareCollectionInOrgWithTeam", + } + }, + "/v2/models": { + "get": { + "description": "This operation lists public models.", + "operationId": "listPublicModels", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 1024, + "minLength": 0, + "type": "string" } }, { - "name": "target-team", - "in": "path", - "description": "Target team name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "List public models", + "tags": [ + "Models" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/collections/{collection-name}/shares/org": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Share org collection with the org", - "description": "Share org collection with the org", - "operationId": "shareCollectionInOrgWithOrg", + "/v2/models/{org_name}/{model_name}": { + "get": { + "description": "This operation gets info of a model in the org as guest.", + "operationId": "getModelInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + "summary": "Get model in org as guest", "tags": [ - "Collections" + "Models" ], - "summary": "Revoke shared org collection with the org", - "description": "Revoke shared org collection with the org", - "operationId": "revokeShareCollectionInOrgWithOrg", + "x-ssa-scopes": [] + } + }, + "/v2/models/{org_name}/{model_name}/versions": { + "get": { + "description": "List model versions in org as guest", + "operationId": "listModelVersionsInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "List model versions in org as guest", + "tags": [ + "Model Version" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/collections/{collection-name}/share": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish collection to public", - "description": "Publish collection to public", - "operationId": "publishCollection_1", + "/v2/models/{org_name}/{model_name}/versions/{version_id}": { + "get": { + "description": "Get model version in org as guest", + "operationId": "getModelVersionInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "guest-can-download", - "in": "query", - "description": "Indicates if guest users can download this collection", + "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "boolean" - } - }, - { - "name": "public-can-list", - "in": "query", - "description": "Indicates if collection is listed publicly", - "required": false, - "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "security": [ - { - "ssa": [ - "publishCollection" - ] - } - ], - "x-ssa-scopes": [ - "publishCollection" - ] - }, - "delete": { + "summary": "Get model version in org as guest", "tags": [ - "Publish" + "Model Version" ], - "summary": "Undo publishing of collection to public", - "description": "Undo publishing of collection to public", - "operationId": "undoPublishCollection_1", + "x-ssa-scopes": [] + } + }, + "/v2/models/{org_name}/{model_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the model version in org as guest", + "operationId": "listModeFilesInOrgAsGuest_2", "parameters": [ { - "name": "org-name", + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", "in": "path", - "description": "Organization name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Version ID", "in": "path", - "description": "Collection name", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "undoPublishCollection" - ] - } + "summary": "List model files in org as guest", + "tags": [ + "Model Version Files" ], - "x-ssa-scopes": [ - "undoPublishCollection" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/collections/{collection-name}/share/product": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish collection to product", - "description": "Publish collection to product", - "operationId": "publishCollectionFromRequest", + "/v2/models/{org_name}/{team_name}/{model_name}": { + "get": { + "description": "This operation gets info of a model in the org/team as guest.", + "operationId": "getModelInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionPublishRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "publishCollection" - ] - } + "summary": "Get model in team as guest", + "tags": [ + "Models" ], - "x-ssa-scopes": [ - "publishCollection" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product": { - "put": { - "tags": [ - "Publish" - ], - "summary": "Publish collection to product", - "description": "Publish collection to product", - "operationId": "publishCollectionFromRequest_1", + "/v2/models/{org_name}/{team_name}/{model_name}/versions": { + "get": { + "description": "List model versions in team as guest", + "operationId": "listModelVersionsInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionPublishRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "publishCollection" - ] - } + "summary": "List model versions in team as guest", + "tags": [ + "Model Version" ], - "x-ssa-scopes": [ - "publishCollection" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Add artifact to collection in org from another org", - "description": "Add artifact to the specified collection in the specified org from another org", - "operationId": "addArtifactToCollectionInOrgFromAnotherOrg", + "/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}": { + "get": { + "description": "Get model version in team as guest", + "operationId": "getModelVersionInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", "in": "path", - "description": "Collection name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-org-name", + "description": "Team name", "in": "path", - "description": "Artifact organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Model name", "in": "path", - "description": "Artifact type", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Version ID", "in": "path", - "description": "Artifact name", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 512, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" - ] - } - ], - "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", - "kas" - ] - }, - "delete": { + "summary": "Get model version in team as guest", "tags": [ - "Collections" + "Model Version" ], - "summary": "Remove artifact from collection in org from another org", - "description": "Remove artifact from the specified collection in the specified org from another org", - "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrg", + "x-ssa-scopes": [] + } + }, + "/v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the model version in team as guest", + "operationId": "listModeFilesInTeamAsGuest_2", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Team name", "in": "path", - "description": "Collection name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-org-name", + "description": "Model name", "in": "path", - "description": "Artifact organization name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Version ID", "in": "path", - "description": "Artifact type", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "List model files in team as guest", + "tags": [ + "Model Version Files" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { - "put": { - "tags": [ - "Collections" - ], - "summary": "Add artifact to collection in org from another org and team", - "description": "Add artifact to the specified collection in the specified org from another org and team", - "operationId": "addArtifactToCollectionInOrgFromAnotherOrgAndTeam", + "/v2/nim/{team}/{nim_name}/{tag}/metadata": { + "post": { + "description": "Registers NIM profile metadata for the given team, NIM name, and tag. This is a placeholder that validates the supplied profiles and echoes the provided fields back to the caller.\nSSA: requires the following scope `createNimMetadata`\n", + "operationId": "createNimMetadata", "parameters": [ { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-org-name", - "in": "path", - "description": "Artifact organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-team-name", - "in": "path", - "description": "Artifact team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" } }, { - "name": "artifact-type", + "description": "NIM name", "in": "path", - "description": "Artifact type", + "name": "nim_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" } }, { - "name": "artifact-name", + "description": "NIM tag", "in": "path", - "description": "Artifact name", + "name": "tag", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NimManifestMetadataRequest" + } + } + }, + "required": true + }, "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NimManifestMetadataResponse" + } + } + }, + "description": "Created" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" + "createNimMetadata" ] } ], + "summary": "Create NIM metadata", + "tags": [ + "NIM Metadata" + ], "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", + "createNimMetadata", "kas" ] - }, - "delete": { - "tags": [ - "Collections" - ], - "summary": "Remove artifact from collection in org from another org", - "description": "Remove artifact from the specified collection in the specified org from another org", - "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam", + } + }, + "/v2/org/{org_name}/collections": { + "get": { + "description": "List collections the user can access in the specified org", + "operationId": "listCollectionsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", "in": "path", - "description": "Collection name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-org-name", - "in": "path", - "description": "Artifact organization name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "artifact-team-name", - "in": "path", - "description": "Artifact team name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -10323,51 +14362,28 @@ ] } ], + "summary": "List collections in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{orgName}/{artifactType}/playground": { + }, "post": { - "tags": [ - "AIPlayground" - ], - "description": "Create AI Playground for model", - "operationId": "createModelAIPlayground", + "description": "Create collection in org", + "operationId": "createCollectionInOrg", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifactType", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], @@ -10375,7 +14391,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + "$ref": "#/components/schemas/CollectionCreateRequest" } } }, @@ -10383,617 +14399,463 @@ }, "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/CollectionResponse" } } - } - } - }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "writeArtifacts" - ] - } - ], - "x-ssa-scopes": [ - "writeArtifacts", - "kas" - ] - } - }, - "/v1/org/{orgName}/team/{teamName}/{artifactType}/playground": { - "post": { - "tags": [ - "AIPlayground" - ], - "description": "Create AI Playground for model", - "operationId": "createModelAIPlayground_1", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + }, + "description": "OK" }, - { - "name": "teamName", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "Forbidden" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", + "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/Response" } } - } - } - }, - "deprecated": true, - "security": [ - { - "ssa": [ - "kas", - "writeArtifacts" - ] - } - ], - "x-ssa-scopes": [ - "writeArtifacts", - "kas" - ] - } - }, - "/v1/org/{orgName}/{artifactType}/spec": { - "post": { - "tags": [ - "AIPlayground" - ], - "summary": "Create AI Playground for artifactType", - "description": "Create AI Playground for artifactType", - "operationId": "createModelArtifactsSpec", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + }, + "description": "Not Found" }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "Too many requests" }, - "required": true - }, - "responses": { - "200": { - "description": "OK", + "500": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "writeArtifacts" + "createCollection" ] } ], + "summary": "Create collection in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "writeArtifacts", - "kas" + "kas", + "createCollection" ] } }, - "/v1/org/{orgName}/team/{teamName}/{artifactType}/spec": { - "post": { - "tags": [ - "AIPlayground" - ], - "summary": "Create AI Playground for artifactType", - "description": "Create AI Playground for artifactType", - "operationId": "createModelArtifactsSpec_1", + "/v2/org/{org_name}/collections/{collection_name}": { + "delete": { + "description": "Delete collection in the specified org", + "operationId": "deleteCollectionInOrg", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "teamName", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactType", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundCreateRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "writeArtifacts" + "kas" ] } ], + "summary": "Delete collection in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "writeArtifacts", "kas" ] - } - }, - "/v1/org/{orgName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan": { - "post": { - "tags": [ - "MalwareScan" - ], - "summary": "Initiates malwares can for the artifact", - "description": "Initiates malwares can for the artifact", - "operationId": "initiateMalwareScan", + }, + "get": { + "description": "Get collection details in org", + "operationId": "getCollectionInOrg", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", "in": "path", - "description": "Artifact name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Collection name", "in": "path", - "description": "Version ID", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "contact-email", + "description": "Resolve labels", "in": "query", - "description": "Contact email", + "name": "resolve-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 320, - "minLength": 0 + "type": "boolean" } }, { - "name": "nspect-id", + "description": "Remove unresolved labels", "in": "query", - "description": "Nspect identifier", + "name": "remove-unresolved-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 64, - "minLength": 0 + "type": "boolean" } } ], "responses": { "200": { - "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "getCollection" ] } ], + "summary": "Get collection in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ + "getCollection", "kas" ] - } - }, - "/v1/org/{orgName}/team/{teamName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan": { - "post": { - "tags": [ - "MalwareScan" - ], - "summary": "Initiates malwares can for the artifact", - "description": "Initiates malwares can for the artifact", - "operationId": "initiateMalwareScan_1", + }, + "patch": { + "description": "Update collection details in org", + "operationId": "updateCollectionInOrg", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "teamName", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 512, - "minLength": 0 - } - }, - { - "name": "contact-email", - "in": "query", - "description": "Contact email", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 320, - "minLength": 0 - } - }, - { - "name": "nspect-id", - "in": "query", - "description": "Nspect identifier", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 64, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "updateCollection" ] } ], + "summary": "Update collection in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ + "updateCollection", "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create artifact version file deployment url in org", - "description": "Create artifact version file deployment url in org", - "operationId": "createArtifactVerionFileDeploymentUrlInOrg", + "/v2/org/{org_name}/collections/{collection_name}/artifacts": { + "patch": { + "description": "Patch collection in the specified org", + "operationId": "patchCollectionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "version-id", "in": "path", - "description": "Version ID", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Collection name", "in": "path", - "description": "Cloud service provider name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -11001,251 +14863,243 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + "$ref": "#/components/schemas/CollectionPatchRequest" } } }, "required": true }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "patchCollectionArtifacts" ] } ], + "summary": "Patch collection in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ + "patchCollectionArtifacts", "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create artifact version deployment url in org", - "description": "Create artifact version deployment url in org", - "operationId": "createArtifactDeploymentUrlInOrg", + "/v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org from another org", + "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact organization name", "in": "path", - "description": "Artifact name", + "name": "artifact_org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact team name", "in": "path", - "description": "Version ID", + "name": "artifact_team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Artifact type", "in": "path", - "description": "Cloud service provider name", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -11255,306 +15109,323 @@ ] } ], + "summary": "Remove artifact from collection in org from another org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params": { - "get": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Get artifact deployment parameters details in org", - "description": "Get artifact deployment parameters details in org", - "operationId": "getArtifactDeploymentParametersInOrg", + }, + "put": { + "description": "Add artifact to the specified collection in the specified org from another org and team", + "operationId": "addArtifactToCollectionInOrgFromAnotherOrgAndTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact organization name", "in": "path", - "description": "Artifact name", + "name": "artifact_org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact_team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Artifact name", "in": "path", - "description": "Cloud service provider name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], + "summary": "Add artifact to collection in org from another org and team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", "kas" ] - }, - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create artifact deployment parameters in org", - "description": "Create artifact deployment parameters in org", - "operationId": "createArtifactDeploymentParametersInOrg", + } + }, + "/v2/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org from another org", + "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact organization name", "in": "path", - "description": "Artifact name", + "name": "artifact_org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Artifact type", "in": "path", - "description": "Cloud service provider name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "no-auto-labels", - "in": "query", - "description": "No auto labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } }, { - "name": "merge-csp-parameters", - "in": "query", - "description": "Merge CSP parameters in response", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -11564,822 +15435,825 @@ ] } ], + "summary": "Remove artifact from collection in org from another org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] }, - "delete": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Delete artifact deployment parameters in org", - "description": "Delete artifact deployment parameters in org", - "operationId": "deleteArtifactDeploymentParametersInOrg", + "put": { + "description": "Add artifact to the specified collection in the specified org from another org", + "operationId": "addArtifactToCollectionInOrgFromAnotherOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact organization name", "in": "path", - "description": "Artifact name", + "name": "artifact_org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Artifact type", "in": "path", - "description": "Cloud service provider name", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], + "summary": "Add artifact to collection in org from another org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", "kas" ] - }, - "patch": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Update artifact deployment parameters in org", - "description": "Update artifact deployment parameters in org", - "operationId": "updateArtifactDeploymentParametersInOrg", + } + }, + "/v2/org/{org_name}/collections/{collection_name}/artifacts/{artifact_type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org", + "operationId": "listCollectionArtifactsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", - "in": "path", - "description": "Cloud service provider name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "merge-csp-parameters", + "description": "Page number - zero based index", "in": "query", - "description": "Merge CSP parameters in response", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ArtifactListResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "listCollectionArtifacts" ] } ], + "summary": "List collection artifacts in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "kas" + "kas", + "listCollectionArtifacts" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels": { - "post": { - "tags": [ - "Collections" - ], - "summary": "Sync collection release type labels for artifact", - "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", - "operationId": "syncCollectionReleaseTypeLabelsForArtifact", + "/v2/org/{org_name}/collections/{collection_name}/share": { + "delete": { + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "syncReleaseTypeLabels" + "undoPublishCollection" ] } ], - "x-ssa-scopes": [ - "kas", - "syncReleaseTypeLabels" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels": { - "post": { + "summary": "Undo publishing of collection to public", "tags": [ - "Collections" + "Publish" ], - "summary": "Sync collection release type labels for artifact", - "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", - "operationId": "syncCollectionReleaseTypeLabelsForArtifact_1", + "x-ssa-scopes": [ + "undoPublishCollection" + ] + }, + "put": { + "deprecated": true, + "description": "Publish collection to public", + "operationId": "publishCollection_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Indicates if guest users can download this collection", + "in": "query", + "name": "guest-can-download", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "description": "Indicates if collection is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "syncReleaseTypeLabels" + "publishCollection" ] } ], + "summary": "Publish collection to public", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "kas", - "syncReleaseTypeLabels" + "publishCollection" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance": { - "get": { - "tags": [ - "Publish" - ], - "summary": "Check if user needs to accept license", - "description": "Check if user needs to accept license. Checks against uam", - "operationId": "getOrgArtifactLicenseAcceptance", + "/v2/org/{org_name}/collections/{collection_name}/share/product": { + "put": { + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPublishRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "publishCollection" ] } ], - "x-ssa-scopes": [ - "kas" - ] - }, - "post": { + "summary": "Publish collection to product", "tags": [ "Publish" ], - "summary": "Accept artifact license", - "description": "Record license acceptance for an org artifact.", - "operationId": "acceptArtifactLicense", + "x-ssa-scopes": [ + "publishCollection" + ] + } + }, + "/v2/org/{org_name}/collections/{collection_name}/shares/org": { + "delete": { + "deprecated": true, + "description": "Revoke shared org collection with the org", + "operationId": "revokeShareCollectionInOrgWithOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -12389,132 +16263,104 @@ ] } ], + "summary": "Revoke shared org collection with the org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance": { - "get": { - "tags": [ - "Publish" - ], - "summary": "Check if user needs to accept license", - "description": "Check if user needs to accept license. Checks against uam", - "operationId": "getOrgArtifactLicenseAcceptance_1", + }, + "put": { + "deprecated": true, + "description": "Share org collection with the org", + "operationId": "shareCollectionInOrgWithOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -12524,140 +16370,118 @@ ] } ], + "summary": "Share org collection with the org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] - }, - "post": { - "tags": [ - "Publish" - ], - "summary": "Accept artifact license", - "description": "Record license acceptance for an org artifact.", - "operationId": "acceptArtifactLicense_1", + } + }, + "/v2/org/{org_name}/collections/{collection_name}/shares/team/{target_team}": { + "delete": { + "deprecated": true, + "description": "Revoke shared org collection with the specified team", + "operationId": "revokeShareCollectionInOrgWithTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Target team name", "in": "path", - "description": "Artifact name", + "name": "target_team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -12667,158 +16491,116 @@ ] } ], + "summary": "Revoke shared org collection with the specified team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/files": { - "post": { - "tags": [ - "ArtifactChecksum" - ], - "summary": "Check if file exists based on checksum", - "description": "Check if file exists based on checksum provided in request", - "operationId": "checkArtifactFilesExistByChecksum", + }, + "put": { + "deprecated": true, + "description": "Share org collection with the specified team", + "operationId": "shareCollectionInOrgWithTeam", "parameters": [ { - "name": "org-name", + "description": "Organization name", "in": "path", - "description": "Org Name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact Type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Target team name", "in": "path", - "description": "Artifact Name", + "name": "target_team", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 1000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -12828,52 +16610,50 @@ ] } ], + "summary": "Share org collection with the specified team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/files": { - "post": { - "tags": [ - "ArtifactChecksum" - ], - "summary": "Check if file exists based on checksum", - "description": "Check if file exists based on checksum provided in request", - "operationId": "checkArtifactFilesExistByChecksum_1", + "/v2/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org", + "operationId": "removeArtifactFromCollectionInOrg", "parameters": [ { - "name": "org-name", + "description": "Organization name", "in": "path", - "description": "Org Name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Collection name", "in": "path", - "description": "Team Name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact type", "in": "path", - "description": "Artifact Type", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -12887,111 +16667,85 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact Name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -13001,204 +16755,191 @@ ] } ], + "summary": "Remove artifact from collection in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/{artifact-type}": { - "get": { - "tags": [ - "Artifacts" - ], - "summary": "List artifacts in org", - "description": "List artifacts the user can access in the specified org", - "operationId": "listArtifactsInOrg", + }, + "put": { + "description": "Add artifact to the specified collection in the specified org", + "operationId": "addArtifactToCollectionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Collection name", "in": "path", - "description": "Artifact type", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listArtifacts" + "kas" ] } ], + "summary": "Add artifact to collection in org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "listArtifacts", "kas" ] - }, + } + }, + "/v2/org/{org_name}/files/commit": { "post": { - "tags": [ - "Artifacts" - ], - "summary": "Create artifact in org", - "description": "Create artifact in org", - "operationId": "createArtifactInOrg", + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles", "parameters": [ { - "name": "org-name", + "description": "Org Name", "in": "path", - "description": "Organization name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "in": "query", + "name": "upload-pending", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -13206,2396 +16947,1947 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactCreateRequest" + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "createArtifact" + "kas" ] } ], + "summary": "Commit artifact files metadata to database", + "tags": [ + "ArtifactChecksum" + ], "x-ssa-scopes": [ - "createArtifact", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create artifact version file deployment url in team", - "description": "Create artifact version file deployment url in team", - "operationId": "createArtifactVersionFileDeploymentUrlInTeam", + "/v2/org/{org_name}/helm-charts/{artifact_name}/versions": { + "get": { + "description": "List chart versions in org", + "operationId": "listHelmChartVersionsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact name", "in": "path", - "description": "Team name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, "schema": { - "type": "string", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", - "in": "path", - "description": "Cloud service provider name", - "required": true, + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, "schema": { - "type": "string", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ArtifactVersionListResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "listArtifactVersions" ] } ], + "summary": "List chart versions in org", + "tags": [ + "Helm Charts" + ], "x-ssa-scopes": [ - "kas" + "kas", + "listArtifactVersions" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create artifact version deployment url in team", - "description": "Create artifact version deployment url in team", - "operationId": "createArtifactDeploymentUrlInTeam", + "/v2/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id}": { + "get": { + "description": "Get chart version in org", + "operationId": "getHelmChartVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "version-id", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Version ID", "in": "path", - "description": "Cloud service provider name", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ArtifactVersionResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "getArtifactVersion" ] } ], + "summary": "Get chart version in org", + "tags": [ + "Helm Charts" + ], "x-ssa-scopes": [ + "getArtifactVersion", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params": { - "get": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Get artifact deployment parameters details in team", - "description": "Get artifact deployment parameters details in team", - "operationId": "getArtifactDeploymentParametersInTeam", + }, + "patch": { + "description": "Update chart version information in org e.g. upload status", + "operationId": "updateHelmChartVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Version ID", "in": "path", - "description": "Cloud service provider name", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "updateArtifactVersion" ] } ], + "summary": "Update chart version in org", + "tags": [ + "Helm Charts" + ], "x-ssa-scopes": [ + "updateArtifactVersion", "kas" ] - }, - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create artifact deployment parameters in team", - "description": "Create artifact deployment parameters in team", - "operationId": "createArtifactDeploymentParametersInTeam", + } + }, + "/v2/org/{org_name}/models": { + "get": { + "description": "This operation lists models the user can access in the org.", + "operationId": "listModelsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, + "deprecated": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "deprecated": true, + "description": "[Deprecated] Page reference, Use page-number instead", + "in": "query", + "name": "page-reference", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 1024, + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", - "in": "path", - "description": "Cloud service provider name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } }, { - "name": "no-auto-labels", + "description": "Resolve labels", "in": "query", - "description": "No auto labels", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "merge-csp-parameters", + "description": "Remove unresolved labels", "in": "query", - "description": "Merge CSP parameters in response", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelListResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "listModels" ] } ], + "summary": "List models in org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "kas" + "kas", + "listModels" ] }, - "delete": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Delete artifact deployment parameters in team", - "description": "Delete artifact deployment parameters in team", - "operationId": "deleteArtifactDeploymentParametersInTeam", + "post": { + "description": "This operation creates a model in the org.", + "operationId": "createModelInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "csp-name", - "in": "path", - "description": "Cloud service provider name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelCreateRequest" + } + } + }, + "required": true + }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "createModel" ] } ], + "summary": "Create model in org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ + "createModel", "kas" ] - }, + } + }, + "/v2/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash": { "patch": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Update artifact deployment parameters in team", - "description": "Update artifact deployment parameters in team", - "operationId": "updateArtifactDeploymentParametersInTeam", + "description": "Stash artifact version information in org during upload paused state", + "operationId": "stashArtifactVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Version ID", "in": "path", - "description": "Cloud service provider name", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "merge-csp-parameters", - "in": "query", - "description": "Merge CSP parameters in response", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 512, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "updateModelVersion" ] } ], + "summary": "Stash artifact version in org", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ + "updateModelVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/parameters": { - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create artifact deployment parameters in team", - "description": "Create artifact deployment parameters in team", - "operationId": "createArtifactDeploymentParametersInTeam_1", + "/v2/org/{org_name}/models/{model_name}": { + "get": { + "description": "This operation gets info of a model in the org.", + "operationId": "getModelInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Model name", "in": "path", - "description": "Cloud service provider name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "no-auto-labels", + "description": "Resolve labels", "in": "query", - "description": "No auto labels", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "merge-csp-parameters", + "description": "Remove unresolved labels", "in": "query", - "description": "Merge CSP parameters in response", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "getModel" ] } ], + "summary": "Get model details in org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ + "getModel", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}": { - "get": { - "tags": [ - "Artifacts" - ], - "summary": "List artifacts in team", - "description": "List artifacts the user can access in the specified org and team", - "operationId": "listArtifactsInTeam", + }, + "patch": { + "description": "This operation updates details of a model in the org.", + "operationId": "updateModelInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Model name", "in": "path", - "description": "Artifact type", + "name": "model_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 255, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listArtifacts" + "updateModel" ] } ], + "summary": "Update model in org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "listArtifacts", + "updateModel", "kas" ] - }, - "post": { - "tags": [ - "Artifacts" - ], - "summary": "Create artifact in team", - "description": "Create artifact in team", - "operationId": "createArtifactInTeam", + } + }, + "/v2/org/{org_name}/models/{model_name}/encryption-key": { + "delete": { + "description": "Disassociate encryption key from model in org and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Model name", "in": "path", - "description": "Artifact type", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactCreateRequest" + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } } - } + }, + "description": "Accepted" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "createArtifact" + "kas" ] } ], + "summary": "Disassociate encryption key from model in org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "createArtifact", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions": { - "get": { - "tags": [ - "Resource Versions" - ], - "summary": "List recipe versions in team", - "description": "List recipe versions in team", - "operationId": "listRecipeVersionsInTeam", + "/v2/org/{org_name}/models/{model_name}/shares/org": { + "delete": { + "description": "This operation revokes a shared org model with the org.", + "operationId": "revokeShareModelInOrgWithOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Model name", "in": "path", - "description": "Recipe name", + "name": "model_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 255, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], - "maxLength": 262144, - "minLength": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listRecipeVersions" + "kas" ] } ], + "summary": "Revoke shared org model with the org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "listRecipeVersions", "kas" ] }, - "post": { - "tags": [ - "Resource Versions" - ], - "summary": "Create recipe version in team", - "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createRecipeVersionInTeam", + "put": { + "description": "This operation shares an org model with the org.", + "operationId": "shareModelInOrgWithOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Model name", "in": "path", - "description": "Recipe name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionCreateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "createRecipeVersion" + "kas" ] } ], + "summary": "Share org model with the org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "createRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions": { - "get": { - "tags": [ - "Resource Versions" - ], - "summary": "List recipe versions in team", - "description": "List recipe versions in team", - "operationId": "listRecipeVersionsInTeam_1", + "/v2/org/{org_name}/models/{model_name}/shares/team/{target_team}": { + "delete": { + "description": "This operation revokes a shared org model with the team.", + "operationId": "revokeShareModelInOrgWithTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Model name", "in": "path", - "description": "Team name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Target team name", "in": "path", - "description": "Recipe name", + "name": "target_team", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 255, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], - "maxLength": 262144, - "minLength": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listRecipeVersions" + "kas" ] } ], + "summary": "Revoke shared org model with the specified team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "listRecipeVersions", "kas" ] }, - "post": { - "tags": [ - "Resource Versions" - ], - "summary": "Create recipe version in team", - "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createRecipeVersionInTeam_1", + "put": { + "description": "This operation shares an org model with the team.", + "operationId": "shareModelInOrgWithTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Model name", "in": "path", - "description": "Team name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Target team name", "in": "path", - "description": "Recipe name", + "name": "target_team", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionCreateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "createRecipeVersion" + "kas" ] } ], + "summary": "Share org model with the specified team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "createRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/recipes": { + "/v2/org/{org_name}/models/{model_name}/versions": { "get": { - "tags": [ - "Resources" - ], - "summary": "List recipes in team", - "description": "List recipes the user can access in the specified org and team", - "operationId": "listRecipesInTeam", + "description": "List model versions in org", + "operationId": "listModelVersionsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Model name", "in": "path", - "description": "Team name", + "name": "model_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "app-name", - "in": "query", - "description": "Application name", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", + "description": "Release Type", "in": "query", - "description": "Page size", + "name": "release-type", "required": false, "schema": { - "type": "string", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", + "description": "Page size", "in": "query", - "description": "Page number - zero based index", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, + "maximum": 1000, "minLength": 0, - "minimum": 0 + "minimum": 1, + "type": "string" } }, { - "name": "resolve-labels", + "description": "Page number - zero based index", "in": "query", - "description": "Resolve labels", + "name": "page-number", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Sort order", "in": "query", - "description": "Remove unresolved labels", + "name": "sort-order", "required": false, "schema": { - "type": "boolean" + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listRecipes" + "listModelVersions" ] } ], + "summary": "List model versions in org", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "listRecipes", + "listModelVersions", "kas" ] }, "post": { - "tags": [ - "Resources" - ], - "summary": "Create recipe in team", - "description": "Create recipe in team", - "operationId": "createRecipeInTeam", + "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Model name", "in": "path", - "description": "Team name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -15603,265 +18895,271 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeCreateRequest" + "$ref": "#/components/schemas/ModelVersionCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "createRecipe" + "createModelVersion" ] } ], + "summary": "Create model version in org", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "createRecipe", - "kas" + "kas", + "createModelVersion" ] } }, - "/v1/org/{org-name}/team/{team-name}/resources": { + "/v2/org/{org_name}/models/{model_name}/versions/{version_id}": { "get": { - "tags": [ - "Resources" - ], - "summary": "List recipes in team", - "description": "List recipes the user can access in the specified org and team", - "operationId": "listRecipesInTeam_1", + "description": "Get model version in org", + "operationId": "getModelVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Model name", "in": "path", - "description": "Team name", + "name": "model_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "app-name", - "in": "query", - "description": "Application name", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 512, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listRecipes" + "getModelVersion", + "getModelVersionFilterByOrgEnablement" ] } ], + "summary": "Get model version in org", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "listRecipes", + "getModelVersionFilterByOrgEnablement", + "getModelVersion", "kas" ] }, - "post": { - "tags": [ - "Resources" - ], - "summary": "Create recipe in team", - "description": "Create recipe in team", - "operationId": "createRecipeInTeam_1", + "patch": { + "description": "Update model version information in org e.g. upload status", + "operationId": "updateModelVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Model name", "in": "path", - "description": "Team name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -15869,589 +19167,433 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeCreateRequest" + "$ref": "#/components/schemas/ModelVersionUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "createRecipe" + "updateModelVersion" ] } ], + "summary": "Update model version in org", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "createRecipe", + "updateModelVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models": { + "/v2/org/{org_name}/models/{model_name}/versions/{version_id}/files": { "get": { - "tags": [ - "Models" - ], - "summary": "List models in team", - "description": "This operation lists models the user can access in the org/team.", - "operationId": "listModelsInTeam", + "description": "List files of the model version in org", + "operationId": "listModeFilesInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Model name", "in": "path", - "description": "Team name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "app-name", - "in": "query", - "description": "Application name", - "required": false, - "deprecated": true, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, + "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-reference", + "description": "Page reference", "in": "query", - "description": "[Deprecated] Page reference, Use page-number instead", + "name": "page-reference", "required": false, - "deprecated": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 1024, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "minimum": 0, + "type": "string" } } ], "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "500": { - "description": "Internal Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionFileListResponse" } } - } - } - }, - "security": [ - { - "ssa": [ - "kas", - "listModels" - ] - } - ], - "x-ssa-scopes": [ - "kas", - "listModels" - ] - }, - "post": { - "tags": [ - "Models" - ], - "summary": "Create model in team", - "description": "This operation creates a model in the org/team.", - "operationId": "createModelInTeam", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelCreateRequest" - } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "createModel" + "kas" + ] + }, + { + "ssa": [ + "listModelVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "listModelVersionFiles" ] } ], + "summary": "List model files in org", + "tags": [ + "Model Version Files" + ], "x-ssa-scopes": [ - "createModel", + "listModelVersionFiles", + "listModelVersionFilesFilterByOrgEnablement", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions": { + "/v2/org/{org_name}/recipes": { "get": { - "tags": [ - "Model Version" - ], - "summary": "List model versions in team", - "description": "List model versions in team", - "operationId": "listModelVersionsInTeam", + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", - "in": "path", - "description": "Model name", - "required": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "release-type", + "description": "Page size", "in": "query", - "description": "Release Type", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "page-size", + "description": "Page number - zero based index", "in": "query", - "description": "Page size", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, + "maximum": 10000, "minLength": 0, - "minimum": 1 + "minimum": 0, + "type": "string" } }, { - "name": "page-number", + "description": "Resolve labels", "in": "query", - "description": "Page number - zero based index", + "name": "resolve-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0 + "type": "boolean" } }, { - "name": "sort-order", + "description": "Remove unresolved labels", "in": "query", - "description": "Sort order", + "name": "remove-unresolved-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listModelVersions" + "listRecipes" ] } ], + "summary": "List recipes in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "listModelVersions", + "listRecipes", "kas" ] }, "post": { - "tags": [ - "Model Version" - ], - "summary": "Create model version in team.", - "description": "Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createModelVersionInTeam", + "description": "Create recipe in org", + "operationId": "createRecipeInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", "in": "path", - "description": "Model name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -16459,182 +19601,134 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionCreateRequest" + "$ref": "#/components/schemas/RecipeCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "createModelVersion" + "createRecipe" ] } ], + "summary": "Create recipe in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "kas", - "createModelVersion" + "createRecipe", + "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections": { + "/v2/org/{org_name}/recipes/{recipe_name}": { "get": { - "tags": [ - "Collections" - ], - "summary": "List collections in team", - "description": "List collections the user can access in the specified org and team", - "operationId": "listCollectionsInTeam", + "description": "Get recipe in org", + "operationId": "getRecipeInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "order-by", + "description": "Resolve labels", "in": "query", - "description": "Order by", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "remove-unresolved-labels", - "in": "query", "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" @@ -16642,98 +19736,110 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "getRecipe" ] } ], + "summary": "Get recipe in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ + "getRecipe", "kas" ] }, - "post": { - "tags": [ - "Collections" - ], - "summary": "Create collection in org and team", - "description": "Create collection in org and team", - "operationId": "createCollectionInTeam", + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Recipe name", "in": "path", - "description": "Team name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -16741,147 +19847,155 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CollectionCreateRequest" + "$ref": "#/components/schemas/RecipeUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "createCollection" + "updateRecipe" ] } ], + "summary": "Update recipe in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "kas", - "createCollection" + "updateRecipe", + "kas" ] } }, - "/v1/org/{org-name}/recipes/{recipe-name}/versions": { + "/v2/org/{org_name}/recipes/{recipe_name}/versions": { "get": { - "tags": [ - "Resource Versions" - ], - "summary": "List recipe versions in org", "description": "List recipe versions in org", "operationId": "listRecipeVersionsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", - "in": "path", "description": "Recipe name", + "in": "path", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } }, { - "name": "sort-order", - "in": "query", "description": "Sort order", + "in": "query", + "name": "sort-order", "required": false, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "ALPHABETIC_ASC", "ALPHABETIC_DESC", @@ -16900,18 +20014,18 @@ "RESOURCE_ID_ASC", "RESOURCE_ID_DESC" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "release-type", - "in": "query", "description": "Release Type", + "in": "query", + "name": "release-type", "required": false, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "BETA", "GA", @@ -16920,61 +20034,73 @@ "PRODUCTION", "LTSB" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -16985,41 +20111,41 @@ ] } ], + "summary": "List recipe versions in org", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ "listRecipeVersions", "kas" ] }, "post": { - "tags": [ - "Resource Versions" - ], - "summary": "Create recipe version in org", "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", "operationId": "createRecipeVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", - "in": "path", "description": "Recipe name", + "in": "path", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -17034,55 +20160,65 @@ "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -17093,614 +20229,878 @@ ] } ], + "summary": "Create recipe version in org", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ "createRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/resources/{recipe-name}/versions": { + "/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}": { "get": { - "tags": [ - "Resource Versions" - ], - "summary": "List recipe versions in org", - "description": "List recipe versions in org", - "operationId": "listRecipeVersionsInOrg_1", + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", - "in": "path", "description": "Recipe name", + "in": "path", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get recipe version in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 255, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "release-type", + "description": "Create zip of version content", "in": "query", - "description": "Release Type", + "name": "create-zip", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], - "maxLength": 262144, - "minLength": 0 + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listRecipeVersions" + "updateRecipeVersion" ] } ], - "x-ssa-scopes": [ - "listRecipeVersions", - "kas" - ] - }, - "post": { + "summary": "Update recipe version in org", "tags": [ "Resource Versions" ], - "summary": "Create recipe version in org", - "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createRecipeVersionInOrg_1", + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files": { + "get": { + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", - "in": "path", "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionCreateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "createRecipeVersion" + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" ] } ], + "summary": "List recipe files in org", + "tags": [ + "Resource Version Files endpoints" + ], "x-ssa-scopes": [ - "createRecipeVersion", + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", "kas" ] } }, - "/v1/org/{org-name}/recipes": { + "/v2/org/{org_name}/repositories/{container_name}/associated-models": { "get": { - "tags": [ - "Resources" - ], - "summary": "List recipes in org", - "description": "List recipes the user can access in the specified org", - "operationId": "listRecipesInOrg", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "app-name", - "in": "query", - "description": "Application name", - "required": false, + "description": "Container name", + "in": "path", + "name": "container_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, + "maximum": 1000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "minimum": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Sort order", "in": "query", - "description": "Remove unresolved labels", + "name": "sort-order", "required": false, "schema": { - "type": "boolean" + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listRecipes" + "listModelVersions" ] } ], + "summary": "List associated model versions by container", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "listRecipes", + "listModelVersions", "kas" ] - }, - "post": { - "tags": [ - "Resources" - ], - "summary": "Create recipe in org", - "description": "Create recipe in org", - "operationId": "createRecipeInOrg", + } + }, + "/v2/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_2", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container name", + "in": "path", + "name": "container_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container tag", + "in": "path", + "name": "container_tag", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeCreateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "createRecipe" + "listModelVersions" ] } ], + "summary": "List associated model versions by container", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "createRecipe", + "listModelVersions", "kas" ] } }, - "/v1/org/{org-name}/resources": { + "/v2/org/{org_name}/resources": { "get": { - "tags": [ - "Resources" - ], - "summary": "List recipes in org", "description": "List recipes the user can access in the specified org", "operationId": "listRecipesInOrg_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "app-name", - "in": "query", "description": "Application name", + "in": "query", + "name": "app-name", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "remove-unresolved-labels", - "in": "query", "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" @@ -17708,55 +21108,65 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -17767,29 +21177,29 @@ ] } ], + "summary": "List recipes in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ "listRecipes", "kas" ] }, "post": { - "tags": [ - "Resources" - ], - "summary": "Create recipe in org", "description": "Create recipe in org", "operationId": "createRecipeInOrg_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -17804,55 +21214,65 @@ "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -17863,100 +21283,58 @@ ] } ], + "summary": "Create recipe in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ "createRecipe", "kas" ] } }, - "/v1/org/{org-name}/models": { + "/v2/org/{org_name}/resources/{recipe_name}": { "get": { - "tags": [ - "Models" - ], - "summary": "List models in org", - "description": "This operation lists models the user can access in the org.", - "operationId": "listModelsInOrg", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "app-name", - "in": "query", - "description": "Application name", - "required": false, - "deprecated": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, + "description": "Get recipe in org", + "operationId": "getRecipeInOrg_1", + "parameters": [ { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 1000, + "maxLength": 255, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "[Deprecated] Page reference, Use page-number instead", - "required": false, - "deprecated": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "remove-unresolved-labels", - "in": "query", "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" @@ -17964,88 +21342,110 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listModels" + "getRecipe" ] } ], + "summary": "Get recipe in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "kas", - "listModels" + "getRecipe", + "kas" ] }, - "post": { - "tags": [ - "Models" - ], - "summary": "Create model in org", - "description": "This operation creates a model in the org.", - "operationId": "createModelInOrg", + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -18053,167 +21453,155 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelCreateRequest" + "$ref": "#/components/schemas/RecipeUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "createModel" + "updateRecipe" ] } ], + "summary": "Update recipe in org", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "createModel", + "updateRecipe", "kas" ] } }, - "/v1/org/{org-name}/models/{model-name}/versions": { + "/v2/org/{org_name}/resources/{recipe_name}/versions": { "get": { - "tags": [ - "Model Version" - ], - "summary": "List model versions in org", - "description": "List model versions in org", - "operationId": "listModelVersionsInOrg", + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Recipe name", "in": "path", - "description": "Model name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, + "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } }, { - "name": "sort-order", - "in": "query", "description": "Sort order", + "in": "query", + "name": "sort-order", "required": false, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "ALPHABETIC_ASC", "ALPHABETIC_DESC", @@ -18232,106 +21620,138 @@ "RESOURCE_ID_ASC", "RESOURCE_ID_DESC" ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listModelVersions" + "listRecipeVersions" ] } ], + "summary": "List recipe versions in org", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "listModelVersions", + "listRecipeVersions", "kas" ] }, "post": { - "tags": [ - "Model Version" - ], - "summary": "Create model version in org", - "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createModelVersionInOrg", + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Recipe name", "in": "path", - "description": "Model name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -18339,112 +21759,268 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionCreateRequest" + "$ref": "#/components/schemas/RecipeVersionCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "createModelVersion" + "createRecipeVersion" ] } ], + "summary": "Create recipe version in org", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "kas", - "createModelVersion" + "createRecipeVersion", + "kas" ] } }, - "/v1/org/{org-name}/files/commit": { - "post": { + "/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}": { + "get": { + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get recipe version in org", "tags": [ - "ArtifactChecksum" + "Resource Versions" ], - "summary": "Commit artifact files metadata to database", - "description": "Commit artifact files metadata to database given request", - "operationId": "commitArtifactFiles", + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg_1", "parameters": [ { - "name": "org-name", + "description": "Organization name", "in": "path", - "description": "Org Name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "upload-pending", + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", "in": "query", - "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "name": "create-zip", "required": false, "schema": { "type": "boolean" } }, { - "name": "set-latest", - "in": "query", "description": "Set version to latest", + "in": "query", + "name": "set-latest", "required": false, "schema": { "type": "boolean" @@ -18455,259 +22031,327 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactFilesCommitRequest" + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "updateRecipeVersion" ] } ], + "summary": "Update recipe version in org", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ + "updateRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/files/commit": { - "post": { - "tags": [ - "ArtifactChecksum" - ], - "summary": "Commit artifact files metadata to database", - "description": "Commit artifact files metadata to database given request", - "operationId": "commitArtifactFiles_1", + "/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files": { + "get": { + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg_1", "parameters": [ { - "name": "org-name", + "description": "Organization name", "in": "path", - "description": "Org Name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Recipe name", "in": "path", - "description": "Team Name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "upload-pending", + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", "in": "query", - "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "name": "page-size", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "set-latest", + "description": "Page reference", "in": "query", - "description": "Set version to latest", + "name": "page-reference", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactFilesCommitRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ + { + "ssa": [ + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, { "ssa": [ "kas" ] + }, + { + "ssa": [ + "listRecipeVersionFiles" + ] } ], + "summary": "List recipe files in org", + "tags": [ + "Resource Version Files endpoints" + ], "x-ssa-scopes": [ + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", "kas" ] } }, - "/v1/org/{org-name}/collections": { + "/v2/org/{org_name}/team/{team_name}/collections": { "get": { - "tags": [ - "Collections" - ], - "summary": "List collections in org", - "description": "List collections the user can access in the specified org", - "operationId": "listCollectionsInOrg", + "description": "List collections the user can access in the specified org and team", + "operationId": "listCollectionsInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } }, { - "name": "order-by", - "in": "query", "description": "Order by", + "in": "query", + "name": "order-by", "required": false, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "ALPHABETIC_ASC", "ALPHABETIC_DESC", @@ -18726,61 +22370,91 @@ "RESOURCE_ID_ASC", "RESOURCE_ID_DESC" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -18790,28 +22464,40 @@ ] } ], + "summary": "List collections in team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] }, "post": { - "tags": [ - "Collections" - ], - "summary": "Create collection in org", - "description": "Create collection in org", - "operationId": "createCollectionInOrg", + "description": "Create collection in org and team", + "operationId": "createCollectionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -18826,55 +22512,65 @@ "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -18885,343 +22581,311 @@ ] } ], + "summary": "Create collection in org and team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas", "createCollection" ] } }, - "/v1/malware-scan-notification": { - "post": { - "tags": [ - "MalwareScan" - ], - "summary": "Update artifact's malware scan result with MalwareScanNotification", - "description": "Update artifact's malware scan result with MalwareScanNotification", - "operationId": "notifyScanResult", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MalwareScanNotification" - } + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}": { + "delete": { + "description": "Delete collection in the specified org and team", + "operationId": "deleteCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotifyMalwareScanResultResponse" - } - } - } - } - }, - "security": [ { - "ssa": [ - "kas", - "notifyScanResult" - ] - } - ], - "x-ssa-scopes": [ - "notifyScanResult", - "kas" - ] - } - }, - "/v1/gpus/pci-device-id/{pci-device-id}": { - "get": { - "tags": [ - "GpuByPci" - ], - "summary": "Get GPU by PCI Device ID", - "description": "Get all GPU records matching the given PCI Device ID", - "operationId": "getGpuByPciDeviceId", - "parameters": [ + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, { - "name": "pci-device-id", + "description": "Collection name", "in": "path", - "description": "PCI Device ID", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "readGpuByPci" + "kas" ] } ], + "summary": "Delete collection in org and team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "kas", - "readGpuByPci" + "kas" ] }, - "post": { - "tags": [ - "GpuByPci" - ], - "summary": "Create GPU by PCI Device ID only", - "description": "Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", - "operationId": "createGpuByPciDeviceId", + "get": { + "description": "Get collection details in team", + "operationId": "getCollectionInTeam", "parameters": [ { - "name": "pci-device-id", + "description": "Organization name", "in": "path", - "description": "PCI Device ID", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GpuByPciCreateRequest" - } - } - }, - "required": true - }, - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" } }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "security": [ - { - "ssa": [ - "kas", - "createGpuByPci" - ] - } - ], - "x-ssa-scopes": [ - "kas", - "createGpuByPci" - ] - }, - "delete": { - "tags": [ - "GpuByPci" - ], - "summary": "Delete GPU by PCI Device ID only", - "description": "Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", - "operationId": "deleteGpuByPciDeviceId", - "parameters": [ { - "name": "pci-device-id", - "in": "path", - "description": "PCI Device ID", - "required": true, + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "deleteGpuByPci" + "getCollection" ] } ], + "summary": "Get collection in team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "deleteGpuByPci", + "getCollection", "kas" ] }, "patch": { - "tags": [ - "GpuByPci" - ], - "summary": "Partially update GPU by PCI Device ID only", - "description": "Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated.", - "operationId": "updateGpuByPciDeviceId", + "description": "Update collection details in team", + "operationId": "updateCollectionInTeam", "parameters": [ { - "name": "pci-device-id", + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", "in": "path", - "description": "PCI Device ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -19229,1159 +22893,1442 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GpuByPciUpdateRequest" + "$ref": "#/components/schemas/CollectionUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateGpuByPci" + "updateCollection" ] } ], + "summary": "Update collection in team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "kas", - "updateGpuByPci" + "updateCollection", + "kas" ] } }, - "/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id}": { - "get": { - "tags": [ - "GpuByPci" - ], - "summary": "Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", - "description": "Get a single GPU record matching the full PCI composite key", - "operationId": "getGpuByPciDeviceIdVendorIdSubsystemDeviceId", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts": { + "patch": { + "description": "Patch collection in the specified org and team", + "operationId": "patchCollectionInTeam", "parameters": [ { - "name": "pci-device-id", + "description": "Organization name", "in": "path", - "description": "PCI Device ID", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "pci-vendor-id", + "description": "Team name", "in": "path", - "description": "PCI Vendor ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "pci-subsystem-device-id", + "description": "Collection name", "in": "path", - "description": "PCI Subsystem Device ID", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPatchRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "readGpuByPci" + "patchCollectionArtifacts" ] } ], - "x-ssa-scopes": [ - "kas", - "readGpuByPci" - ] - }, - "post": { + "summary": "Patch collection in org and team", "tags": [ - "GpuByPci" + "Collections" ], - "summary": "Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", - "description": "Create a new GPU record using the full PCI composite key", - "operationId": "createGpuByPciFullKey", + "x-ssa-scopes": [ + "patchCollectionArtifacts", + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team from another org and team", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", "parameters": [ { - "name": "pci-device-id", + "description": "Organization name", "in": "path", - "description": "PCI Device ID", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "pci-vendor-id", + "description": "Collection name", "in": "path", - "description": "PCI Vendor ID", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "pci-subsystem-device-id", + "description": "Artifact organization name", "in": "path", - "description": "PCI Subsystem Device ID", + "name": "artifact_org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact_team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GpuByPciCreateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "createGpuByPci" + "kas" ] } ], + "summary": "Remove artifact from collection in org and team from another org and team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "kas", - "createGpuByPci" + "kas" ] }, - "delete": { - "tags": [ - "GpuByPci" - ], - "summary": "Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", - "description": "Delete a GPU record matching the full PCI composite key", - "operationId": "deleteGpuByPciFullKey", + "put": { + "description": "Add artifact to the specified collection in the specified org and team from another org and team", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", "parameters": [ { - "name": "pci-device-id", + "description": "Organization name", "in": "path", - "description": "PCI Device ID", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "pci-vendor-id", + "description": "Team name", "in": "path", - "description": "PCI Vendor ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "pci-subsystem-device-id", + "description": "Artifact organization name", "in": "path", - "description": "PCI Subsystem Device ID", + "name": "artifact_org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact_team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "deleteGpuByPci" + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], + "summary": "Add artifact to collection in org and team from another org and team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "deleteGpuByPci", + "addArtifactToCollectionFromAnotherOrgOrTeam", "kas" ] - }, - "patch": { - "tags": [ - "GpuByPci" - ], - "summary": "Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", - "description": "Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated.", - "operationId": "updateGpuByPciFullKey", + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team from another org", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", "parameters": [ { - "name": "pci-device-id", + "description": "Organization name", "in": "path", - "description": "PCI Device ID", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "pci-vendor-id", + "description": "Team name", "in": "path", - "description": "PCI Vendor ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "pci-subsystem-device-id", + "description": "Collection name", "in": "path", - "description": "PCI Subsystem Device ID", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact_org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GpuByPciUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateGpuByPci" + "kas" ] } ], - "x-ssa-scopes": [ - "kas", - "updateGpuByPci" - ] - } - }, - "/v1/csps": { - "get": { + "summary": "Remove artifact from collection in org and team from another org", "tags": [ - "Cloud service providers" + "Collections" ], - "summary": "List cloud service providers", - "description": "List cloud service providers", - "operationId": "listCloudServiceProviders", + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team from another org", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", "parameters": [ { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, "schema": { - "type": "integer", - "maximum": 5000, - "minimum": 1 + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, "schema": { - "type": "integer", - "maximum": 10000, - "minimum": 0 + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "include-disabled", - "in": "query", - "description": "Include disabled", - "required": false, + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, "schema": { - "type": "boolean" - } - } - ], - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact_org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } - }, - "500": { - "description": "Internal Error", + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } - } - }, - "x-ssa-scopes": [] - }, - "post": { - "tags": [ - "Cloud service providers" - ], - "summary": "Create cloud service provider", - "description": "Create cloud service provider", - "operationId": "createCloudServiceProvider", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CloudServiceProviderCreateRequest" - } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], + "summary": "Add artifact to collection in org and team from another org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", "kas" ] } }, - "/v1/csps/{csp-name}/deployments/params": { + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/{artifact_type}": { "get": { - "tags": [ - "Cloud service provider deployment parameters" - ], - "summary": "Get cloud service provider deployment parameters details", - "description": "Get cloud service provider deployment parameters details", - "operationId": "getCloudServiceProviderDeploymentParametersDetails", + "description": "List collection artifacts the user can access in the specified org and team", + "operationId": "listCollectionArtifactsInTeam", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } - } - ], - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } - } - }, - "x-ssa-scopes": [] - }, - "post": { - "tags": [ - "Cloud service provider deployment parameters" - ], - "summary": "Create cloud service provider deployment parameters", - "description": "Create cloud service provider deployment parameters", - "operationId": "createCloudServiceProviderDeploymentParameters", - "parameters": [ + }, { - "name": "csp-name", - "in": "path", - "description": "Cloud service provider name", - "required": true, + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, "schema": { - "type": "string", + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "listCollectionArtifacts" ] } ], + "summary": "List collection artifacts in org and team", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ - "kas" + "kas", + "listCollectionArtifacts" ] - }, + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share": { "delete": { - "tags": [ - "Cloud service provider deployment parameters" - ], - "summary": "Delete cloud service provider deployment parameters", - "description": "Delete cloud service provider deployment parameters", - "operationId": "deleteCloudServiceProviderDeploymentParameters", + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection", "parameters": [ { - "name": "csp-name", + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", "in": "path", - "description": "Cloud service provider name", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "undoPublishCollection" ] } ], + "summary": "Undo publishing of collection to public", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "kas" + "undoPublishCollection" ] }, - "patch": { - "tags": [ - "Cloud service provider deployment parameters" - ], - "summary": "Update cloud service provider deployment parameters", - "description": "Update cloud service provider deployment parameters", - "operationId": "updateCloudServiceProviderDeploymentParameters", + "put": { + "description": "Publish collection to public", + "operationId": "publishCollection", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Indicates if guest users can download this collection", + "in": "query", + "name": "guest-can-download", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "description": "Indicates if collection is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "publishCollection" ] } ], + "summary": "Publish collection to public", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "kas" + "publishCollection" ] } }, - "/v1/csps/{csp-name}/deployments/params/meta": { - "get": { - "tags": [ - "Deployment parameters meta" - ], - "summary": "Get cloud service provider deployment parameters meta details", - "description": "Get cloud service provider deployment parameters meta details", - "operationId": "getCloudServiceProviderDeploymentParametersMetaDetails", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share/product": { + "put": { + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest_1", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - } - ], - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + "minLength": 0, + "type": "string" } }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "x-ssa-scopes": [] - }, - "post": { - "tags": [ - "Deployment parameters meta" - ], - "summary": "Create cloud service provider deployment parameters meta", - "description": "Create cloud service provider deployment parameters meta", - "operationId": "createCloudServiceProviderDeploymentParametersMeta", - "parameters": [ { - "name": "csp-name", + "description": "Collection name", "in": "path", - "description": "Cloud service provider name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -20389,146 +24336,193 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeploymentParametersMetaCreateRequest" + "$ref": "#/components/schemas/CollectionPublishRequest" } } }, - "required": true - }, - "responses": { + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "publishCollection" ] } ], + "summary": "Publish collection to product", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "kas" + "publishCollection" ] - }, + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/org": { "delete": { - "tags": [ - "Deployment parameters meta" - ], - "summary": "Delete cloud service provider deployment parameters meta", - "description": "Delete cloud service provider deployment parameters meta", - "operationId": "deleteCloudServiceProviderDeploymentParametersMeta", + "deprecated": true, + "description": "Revoke shared team collection with the org", + "operationId": "revokeShareCollectionInTeamWithOrg", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -20538,91 +24532,116 @@ ] } ], + "summary": "Revoke shared team collection with the org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] }, - "patch": { - "tags": [ - "Deployment parameters meta" - ], - "summary": "Update cloud service provider deployment parameters meta", - "description": "Update cloud service provider deployment parameters meta", - "operationId": "updateCloudServiceProviderDeploymentParametersMeta", + "put": { + "deprecated": true, + "description": "Share team collection with the org", + "operationId": "shareCollectionInTeamWithOrg", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentParametersMetaUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -20632,166 +24651,130 @@ ] } ], + "summary": "Share team collection with the org", + "tags": [ + "Collections" + ], "x-ssa-scopes": [ "kas" ] } }, - "/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { - "post": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Create public artifact version file deployment url in org", - "description": "Create public artifact version file deployment url in org", - "operationId": "createPublicArtifactVersionFileDeploymentUrlInOrg", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/team/{target_team}": { + "delete": { + "deprecated": true, + "description": "Revoke shared team collection with the specified team", + "operationId": "revokeShareCollectionInTeamWithTeam", "parameters": [ { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Collection name", "in": "path", - "description": "Version ID", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Target team name", "in": "path", - "description": "Cloud service provider name", + "name": "target_team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -20801,164 +24784,128 @@ ] } ], - "x-ssa-scopes": [] - } - }, - "/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { - "post": { + "summary": "Revoke shared team collection with the specified team", "tags": [ - "Artifact deployment parameters" + "Collections" ], - "summary": "Create public artifact version deployment url in org", - "description": "Create public artifact version deployment url in org", - "operationId": "createPublicArtifactDeploymentUrlInOrg", + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Share team collection with the specified team", + "operationId": "shareCollectionInTeamWithTeam", "parameters": [ { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Collection name", "in": "path", - "description": "Version ID", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Target team name", "in": "path", - "description": "Cloud service provider name", + "name": "target_team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -20968,176 +24915,154 @@ ] } ], - "x-ssa-scopes": [] - } - }, - "/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { - "post": { + "summary": "Share team collection with the specified team", "tags": [ - "Artifact deployment parameters" + "Collections" ], - "summary": "Create public artifact version file deployment url in team", - "description": "Create public artifact version file deployment url in team", - "operationId": "createPublicArtifactVersionFileDeploymentUrlInTeam", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team", + "operationId": "removeArtifactFromCollectionInTeam", "parameters": [ { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact type", "in": "path", - "description": "Version ID", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Artifact name", "in": "path", - "description": "Cloud service provider name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -21147,176 +25072,152 @@ ] } ], - "x-ssa-scopes": [] - } - }, - "/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { - "post": { + "summary": "Remove artifact from collection in org and team", "tags": [ - "Artifact deployment parameters" + "Collections" ], - "summary": "Create public artifact version deployment url in team", - "description": "Create public artifact version deployment url in team", - "operationId": "createPublicArtifactDeploymentUrlInTeam", + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team", + "operationId": "addArtifactToCollectionInTeam", "parameters": [ { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Collection name", "in": "path", - "description": "Artifact name", + "name": "collection_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact type", "in": "path", - "description": "Version ID", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Artifact name", "in": "path", - "description": "Cloud service provider name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeploymentUrlCreateRequest" - } - } - }, - "required": true - }, "responses": { - "400": { - "description": "Bad Request", + "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "409": { - "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -21326,77 +25227,60 @@ ] } ], - "x-ssa-scopes": [] + "summary": "Add artifact to collection in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs": { - "patch": { - "tags": [ - "Publish" - ], - "summary": "Publish artifact version with configs like policy badge", - "description": "Update artifact version with configs like policy badge", - "operationId": "updateTagLevelPublishConfigs", + "/v2/org/{org_name}/team/{team_name}/files/commit": { + "post": { + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles_1", "parameters": [ { - "name": "org-name", + "description": "Org Name", "in": "path", - "description": "Organization name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team Name", "in": "path", - "description": "Artifact type", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "in": "query", + "name": "upload-pending", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } } ], @@ -21404,430 +25288,473 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "publishArtifact" + "kas" ] } ], + "summary": "Commit artifact files metadata to database", + "tags": [ + "ArtifactChecksum" + ], "x-ssa-scopes": [ - "publishArtifact" + "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs": { - "patch": { - "tags": [ - "Publish" - ], - "summary": "Publish artifact version with configs like policy badge", - "description": "Update artifact version with configs like policy badge", - "operationId": "updateTagLevelPublishConfigs_1", + "/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions": { + "get": { + "description": "List chart versions in team", + "operationId": "listHelmChartVersionsInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact name", "in": "path", - "description": "Artifact type", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, "schema": { - "type": "string", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "publishArtifact" + "kas", + "listArtifactVersions" ] } ], + "summary": "List chart versions in team", + "tags": [ + "Helm Charts" + ], "x-ssa-scopes": [ - "publishArtifact" + "kas", + "listArtifactVersions" ] } }, - "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}": { + "/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id}": { "get": { - "tags": [ - "Resource Versions" - ], - "summary": "Get recipe version in team", - "description": "Get recipe version in team", - "operationId": "getRecipeVersionInTeam", + "description": "Get chart version in team", + "operationId": "getHelmChartVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact name", "in": "path", - "description": "Recipe name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" + "getArtifactVersion" ] } ], + "summary": "Get chart version in team", + "tags": [ + "Helm Charts" + ], "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", + "getArtifactVersion", "kas" ] }, "patch": { - "tags": [ - "Resource Versions" - ], - "summary": "Update recipe version in team", - "description": "Update recipe version information in team e.g. upload status", - "operationId": "updateRecipeVersionInTeam", + "description": "Update chart version information in team e.g. upload status", + "operationId": "updateHelmChartVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact name", "in": "path", - "description": "Recipe name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "create-zip", - "in": "query", - "description": "Create zip of version content", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "set-latest", - "in": "query", - "description": "Set version to latest", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], @@ -21835,275 +25762,299 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateRecipeVersion" + "updateArtifactVersion" ] } ], + "summary": "Update chart version in team", + "tags": [ + "Helm Charts" + ], "x-ssa-scopes": [ - "updateRecipeVersion", + "updateArtifactVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}": { + "/v2/org/{org_name}/team/{team_name}/models": { "get": { - "tags": [ - "Resource Versions" - ], - "summary": "Get recipe version in team", - "description": "Get recipe version in team", - "operationId": "getRecipeVersionInTeam_1", + "description": "This operation lists models the user can access in the org/team.", + "operationId": "listModelsInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", - "in": "path", - "description": "Recipe name", - "required": true, + "deprecated": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "deprecated": true, + "description": "[Deprecated] Page reference, Use page-number instead", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" + "listModels" ] } ], + "summary": "List models in team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", - "kas" + "kas", + "listModels" ] }, - "patch": { - "tags": [ - "Resource Versions" - ], - "summary": "Update recipe version in team", - "description": "Update recipe version information in team e.g. upload status", - "operationId": "updateRecipeVersionInTeam_1", + "post": { + "description": "This operation creates a model in the org/team.", + "operationId": "createModelInTeam", "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "recipe-name", - "in": "path", - "description": "Recipe name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "create-zip", - "in": "query", - "description": "Create zip of version content", - "required": false, + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "set-latest", - "in": "query", - "description": "Set version to latest", - "required": false, + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], @@ -22111,1708 +26062,1869 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + "$ref": "#/components/schemas/ModelCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateRecipeVersion" + "createModel" ] } ], + "summary": "Create model in team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "updateRecipeVersion", + "createModel", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}": { - "get": { - "tags": [ - "Resources" - ], - "summary": "Get recipe in team", - "description": "Get recipe details in team", - "operationId": "getRecipeInTeam", + "/v2/org/{org_name}/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash": { + "patch": { + "description": "Stash artifact version information in team in model version upload paused state", + "operationId": "stashArtifactVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact name", "in": "path", - "description": "Recipe name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipe" + "updateModelVersion" ] } ], + "summary": "Stash artifact version in team", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "getRecipe", + "updateModelVersion", "kas" ] - }, - "patch": { - "tags": [ - "Resources" - ], - "summary": "Update recipe in team", - "description": "Update recipe details in team", - "operationId": "updateRecipeInTeam", + } + }, + "/v2/org/{org_name}/team/{team_name}/models/{model_name}": { + "get": { + "description": "This operation gets info of a model in the org/team.", + "operationId": "getModelInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Model name", "in": "path", - "description": "Recipe name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateRecipe" + "getModel" ] } ], + "summary": "Get model in team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "updateRecipe", + "getModel", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}": { - "get": { - "tags": [ - "Resources" - ], - "summary": "Get recipe in team", - "description": "Get recipe details in team", - "operationId": "getRecipeInTeam_1", + }, + "patch": { + "description": "This operation updates details of a model in the org/team.", + "operationId": "updateModelInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Model name", "in": "path", - "description": "Recipe name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipe" + "updateModel" ] } ], + "summary": "Update model in team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "getRecipe", + "updateModel", "kas" ] - }, - "patch": { - "tags": [ - "Resources" - ], - "summary": "Update recipe in team", - "description": "Update recipe details in team", - "operationId": "updateRecipeInTeam_1", + } + }, + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/encryption-key": { + "delete": { + "description": "Disassociate encryption key from model in team and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Model name", "in": "path", - "description": "Recipe name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } } - } + }, + "description": "Accepted" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateRecipe" + "kas" ] } ], + "summary": "Disassociate encryption key from model in team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "updateRecipe", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}": { - "get": { - "tags": [ - "Models" - ], - "summary": "Get model in team", - "description": "This operation gets info of a model in the org/team.", - "operationId": "getModelInTeam", + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org": { + "delete": { + "description": "This operation revokes a shared team model with the org.", + "operationId": "revokeShareModelInTeamWithOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", - "in": "path", "description": "Model name", + "in": "path", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "getModel" + "kas" ] } ], + "summary": "Revoke shared team model with the org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "getModel", "kas" ] }, - "patch": { - "tags": [ - "Models" - ], - "summary": "Update model in team", - "description": "This operation updates details of a model in the org/team.", - "operationId": "updateModelInTeam", + "put": { + "description": "This operation shares a team model with the org.", + "operationId": "shareModelInTeamWithOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", - "in": "path", "description": "Model name", + "in": "path", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateModel" + "kas" ] } ], + "summary": "Share team model with the org", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "updateModel", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}": { - "get": { - "tags": [ - "Model Version" - ], - "summary": "Get model version in team", - "description": "Get model version in team", - "operationId": "getModelVersionInTeam", + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/team/{target_team}": { + "delete": { + "description": "This operation revokes a shared team model with the team.", + "operationId": "revokeShareModelInTeamWithTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", - "in": "path", "description": "Model name", + "in": "path", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Target team name", "in": "path", - "description": "Version ID", + "name": "target_team", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "getModelVersion", - "getModelVersionFilterByOrgEnablement" + "kas" ] } ], + "summary": "Revoke shared team model with the specified team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "getModelVersionFilterByOrgEnablement", - "getModelVersion", "kas" ] }, - "patch": { - "tags": [ - "Model Version" - ], - "summary": "Update model version in team", - "description": "Update model version information in team e.g. upload status", - "operationId": "updateModelVersionInTeam", + "put": { + "description": "This operation shares a team model with the team.", + "operationId": "shareModelInTeamWithTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", - "in": "path", "description": "Model name", + "in": "path", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Target team name", "in": "path", - "description": "Version ID", + "name": "target_team", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 - } - }, - { - "name": "create-zip", - "in": "query", - "description": "Create zip of version content", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "set-latest", - "in": "query", - "description": "Set version to latest", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateModelVersion" + "kas" ] } ], + "summary": "Share team model with the specified team", + "tags": [ + "Models" + ], "x-ssa-scopes": [ - "updateModelVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash": { - "patch": { - "tags": [ - "Model Version" - ], - "summary": "Stash artifact version in team", - "description": "Stash artifact version information in team in model version upload paused state", - "operationId": "stashArtifactVersionInTeam", + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions": { + "get": { + "description": "List model versions in team", + "operationId": "listModelVersionsInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Model name", "in": "path", - "description": "Artifact name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateModelVersion" + "listModelVersions" ] } ], + "summary": "List model versions in team", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "updateModelVersion", + "listModelVersions", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id}": { - "get": { - "tags": [ - "Helm Charts" - ], - "summary": "Get chart version in team", - "description": "Get chart version in team", - "operationId": "getHelmChartVersionInTeam", + }, + "post": { + "description": "Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Model name", "in": "path", - "description": "Version ID", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getArtifactVersion" + "createModelVersion" ] } ], - "x-ssa-scopes": [ - "getArtifactVersion", - "kas" - ] - }, - "patch": { + "summary": "Create model version in team.", "tags": [ - "Helm Charts" + "Model Version" ], - "summary": "Update chart version in team", - "description": "Update chart version information in team e.g. upload status", - "operationId": "updateHelmChartVersionInTeam", + "x-ssa-scopes": [ + "kas", + "createModelVersion" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}": { + "get": { + "description": "Get model version in team", + "operationId": "getModelVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Model name", "in": "path", - "description": "Artifact name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 512, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateArtifactVersion" + "getModelVersion", + "getModelVersionFilterByOrgEnablement" ] } ], + "summary": "Get model version in team", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "updateArtifactVersion", + "getModelVersionFilterByOrgEnablement", + "getModelVersion", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}": { - "get": { - "tags": [ - "Collections" - ], - "summary": "Get collection in team", - "description": "Get collection details in team", - "operationId": "getCollectionInTeam", + }, + "patch": { + "description": "Update model version information in team e.g. upload status", + "operationId": "updateModelVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", "in": "query", - "description": "Resolve labels", + "name": "create-zip", "required": false, "schema": { "type": "boolean" } }, { - "name": "remove-unresolved-labels", + "description": "Set version to latest", "in": "query", - "description": "Remove unresolved labels", + "name": "set-latest", "required": false, "schema": { "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getCollection" + "updateModelVersion" ] } ], + "summary": "Update model version in team", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "getCollection", + "updateModelVersion", "kas" ] - }, + } + }, + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}/apps/{app_name}": { "delete": { - "tags": [ - "Collections" - ], - "summary": "Delete collection in org and team", - "description": "Delete collection in the specified org and team", - "operationId": "deleteCollectionInTeam", + "deprecated": true, + "description": "Delete model app association", + "operationId": "deleteModelAppAssociation", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "App Name", + "in": "path", + "name": "app_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -23822,426 +27934,535 @@ ] } ], + "summary": "Delete model app association", + "tags": [ + "Apps" + ], "x-ssa-scopes": [ "kas" ] }, - "patch": { - "tags": [ - "Collections" - ], - "summary": "Update collection in team", - "description": "Update collection details in team", - "operationId": "updateCollectionInTeam", + "put": { + "deprecated": true, + "description": "Update model app association", + "operationId": "updateModelAppAssociation", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "App Name", + "in": "path", + "name": "app_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "updateCollection" + "kas" ] } ], + "summary": "Update model app association", + "tags": [ + "Apps" + ], "x-ssa-scopes": [ - "updateCollection", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts": { - "patch": { - "tags": [ - "Collections" - ], - "summary": "Patch collection in org and team", - "description": "Patch collection in the specified org and team", - "operationId": "patchCollectionInTeam", + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the model version in team", + "operationId": "listModeFilesInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Model name", "in": "path", - "description": "Collection name", + "name": "model_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionPatchRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionFileListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "patchCollectionArtifacts" + "kas" + ] + }, + { + "ssa": [ + "listModelVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "listModelVersionFiles" ] } ], + "summary": "List model files in team", + "tags": [ + "Model Version Files" + ], "x-ssa-scopes": [ - "patchCollectionArtifacts", + "listModelVersionFiles", + "listModelVersionFilesFilterByOrgEnablement", "kas" ] } }, - "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}": { + "/v2/org/{org_name}/team/{team_name}/recipes": { "get": { - "tags": [ - "Resource Versions" - ], - "summary": "Get recipe version in org", - "description": "Get recipe version in org", - "operationId": "getRecipeVersionInOrg", + "description": "List recipes the user can access in the specified org and team", + "operationId": "listRecipesInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", - "description": "Recipe name", + "name": "team_name", "required": true, "schema": { - "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" + "listRecipes" ] } ], + "summary": "List recipes in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", + "listRecipes", "kas" ] }, - "patch": { - "tags": [ - "Resource Versions" - ], - "summary": "Update recipe version in org", - "description": "Update recipe version information in org e.g. upload status", - "operationId": "updateRecipeVersionInOrg", + "post": { + "description": "Create recipe in team", + "operationId": "createRecipeInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "recipe-name", "in": "path", - "description": "Recipe name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Team name", "in": "path", - "description": "Version ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "create-zip", - "in": "query", - "description": "Create zip of version content", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "set-latest", - "in": "query", - "description": "Set version to latest", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], @@ -24249,251 +28470,269 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + "$ref": "#/components/schemas/RecipeCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateRecipeVersion" + "createRecipe" ] } ], + "summary": "Create recipe in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "updateRecipeVersion", + "createRecipe", "kas" ] } }, - "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}": { + "/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}": { "get": { - "tags": [ - "Resource Versions" - ], - "summary": "Get recipe version in org", - "description": "Get recipe version in org", - "operationId": "getRecipeVersionInOrg_1", + "description": "Get recipe details in team", + "operationId": "getRecipeInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", - "description": "Recipe name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Recipe name", "in": "path", - "description": "Version ID", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" + "getRecipe" ] } ], + "summary": "Get recipe in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", + "getRecipe", "kas" ] }, "patch": { - "tags": [ - "Resource Versions" - ], - "summary": "Update recipe version in org", - "description": "Update recipe version information in org e.g. upload status", - "operationId": "updateRecipeVersionInOrg_1", + "description": "Update recipe details in team", + "operationId": "updateRecipeInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", - "description": "Recipe name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Recipe name", "in": "path", - "description": "Version ID", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "create-zip", - "in": "query", - "description": "Create zip of version content", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "set-latest", - "in": "query", - "description": "Set version to latest", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], @@ -24501,225 +28740,329 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + "$ref": "#/components/schemas/RecipeUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateRecipeVersion" + "updateRecipe" ] } ], + "summary": "Update recipe in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "updateRecipeVersion", + "updateRecipe", "kas" ] } }, - "/v1/org/{org-name}/recipes/{recipe-name}": { + "/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions": { "get": { - "tags": [ - "Resources" - ], - "summary": "Get recipe in org", - "description": "Get recipe in org", - "operationId": "getRecipeInOrg", + "description": "List recipe versions in team", + "operationId": "listRecipeVersionsInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { "description": "Recipe name", + "in": "path", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", + "description": "Page size", "in": "query", - "description": "Resolve labels", + "name": "page-size", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Page number - zero based index", "in": "query", - "description": "Remove unresolved labels", + "name": "page-number", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipe" + "listRecipeVersions" ] } ], + "summary": "List recipe versions in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "getRecipe", + "listRecipeVersions", "kas" ] }, - "patch": { - "tags": [ - "Resources" - ], - "summary": "Update recipe in org", - "description": "Update recipe details in org", - "operationId": "updateRecipeInOrg", + "post": { + "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { "description": "Recipe name", + "in": "path", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -24727,225 +29070,295 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" + "$ref": "#/components/schemas/RecipeVersionCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateRecipe" + "createRecipeVersion" ] } ], + "summary": "Create recipe version in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "updateRecipe", + "createRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/resources/{recipe-name}": { + "/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions/{version_id}": { "get": { - "tags": [ - "Resources" - ], - "summary": "Get recipe in org", - "description": "Get recipe in org", - "operationId": "getRecipeInOrg_1", + "description": "Get recipe version in team", + "operationId": "getRecipeVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", - "description": "Recipe name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getRecipe" + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" ] } ], + "summary": "Get recipe version in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "getRecipe", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", "kas" ] }, "patch": { - "tags": [ - "Resources" - ], - "summary": "Update recipe in org", - "description": "Update recipe details in org", - "operationId": "updateRecipeInOrg_1", + "description": "Update recipe version information in team e.g. upload status", + "operationId": "updateRecipeVersionInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -24953,821 +29366,1111 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateRecipe" + "updateRecipeVersion" ] } ], + "summary": "Update recipe version in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "updateRecipe", + "updateRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/models/{model-name}": { + "/v2/org/{org_name}/team/{team_name}/recipes/{recipe_name}/versions/{version_id}/files": { "get": { - "tags": [ - "Models" - ], - "summary": "Get model details in org", - "description": "This operation gets info of a model in the org.", - "operationId": "getModelInOrg", + "description": "List recipe files in team", + "operationId": "listRecipeFilesInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Team name", "in": "path", - "description": "Model name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", "in": "query", - "description": "Resolve labels", + "name": "page-size", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Page reference", "in": "query", - "description": "Remove unresolved labels", + "name": "page-reference", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "getModel" + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" ] } ], + "summary": "List recipe files in team", + "tags": [ + "Resource Version Files endpoints" + ], "x-ssa-scopes": [ - "getModel", + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", "kas" ] - }, - "patch": { - "tags": [ - "Models" - ], - "summary": "Update model in org", - "description": "This operation updates details of a model in the org.", - "operationId": "updateModelInOrg", + } + }, + "/v2/org/{org_name}/team/{team_name}/repositories/{container_name}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Team name", "in": "path", - "description": "Model name", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container name", + "in": "path", + "name": "container_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateModel" + "listModelVersions" ] } ], + "summary": "List associated model versions by container", + "tags": [ + "Model Version" + ], "x-ssa-scopes": [ - "updateModel", + "listModelVersions", "kas" ] } }, - "/v1/org/{org-name}/models/{model-name}/versions/{version-id}": { + "/v2/org/{org_name}/team/{team_name}/repositories/{container_name}/tags/{container_tag}/associated-models": { "get": { - "tags": [ - "Model Version" - ], - "summary": "Get model version in org", - "description": "Get model version in org", - "operationId": "getModelVersionInOrg", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_3", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Team name", "in": "path", - "description": "Model name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Container name", "in": "path", - "description": "Version ID", + "name": "container_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container tag", + "in": "path", + "name": "container_tag", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getModelVersion", - "getModelVersionFilterByOrgEnablement" + "listModelVersions" ] } ], - "x-ssa-scopes": [ - "getModelVersionFilterByOrgEnablement", - "getModelVersion", - "kas" - ] - }, - "patch": { + "summary": "List associated model versions by container", "tags": [ "Model Version" ], - "summary": "Update model version in org", - "description": "Update model version information in org e.g. upload status", - "operationId": "updateModelVersionInOrg", + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/resources": { + "get": { + "description": "List recipes the user can access in the specified org and team", + "operationId": "listRecipesInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Team name", "in": "path", - "description": "Model name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "create-zip", + "description": "Page size", "in": "query", - "description": "Create zip of version content", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "set-latest", + "description": "Remove unresolved labels", "in": "query", - "description": "Set version to latest", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateModelVersion" + "listRecipes" ] } ], + "summary": "List recipes in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "updateModelVersion", + "listRecipes", "kas" ] - } - }, - "/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash": { - "patch": { - "tags": [ - "Model Version" - ], - "summary": "Stash artifact version in org", - "description": "Stash artifact version information in org during upload paused state", - "operationId": "stashArtifactVersionInOrg", + }, + "post": { + "description": "Create recipe in team", + "operationId": "createRecipeInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-name", "in": "path", - "description": "Artifact name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Team name", "in": "path", - "description": "Version ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateModelVersion" + "createRecipe" ] } ], + "summary": "Create recipe in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "updateModelVersion", + "createRecipe", "kas" ] } }, - "/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id}": { + "/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}": { "get": { - "tags": [ - "Helm Charts" - ], - "summary": "Get chart version in org", - "description": "Get chart version in org", - "operationId": "getHelmChartVersionInOrg", + "description": "Get recipe details in team", + "operationId": "getRecipeInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Recipe name", "in": "path", - "description": "Version ID", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getArtifactVersion" + "getRecipe" ] } ], + "summary": "Get recipe in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "getArtifactVersion", + "getRecipe", "kas" ] }, "patch": { - "tags": [ - "Helm Charts" - ], - "summary": "Update chart version in org", - "description": "Update chart version information in org e.g. upload status", - "operationId": "updateHelmChartVersionInOrg", + "description": "Update recipe details in team", + "operationId": "updateRecipeInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Recipe name", "in": "path", - "description": "Version ID", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -25775,431 +30478,625 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + "$ref": "#/components/schemas/RecipeUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateArtifactVersion" + "updateRecipe" ] } ], + "summary": "Update recipe in team", + "tags": [ + "Resources" + ], "x-ssa-scopes": [ - "updateArtifactVersion", + "updateRecipe", "kas" ] } }, - "/v1/org/{org-name}/collections/{collection-name}": { + "/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions": { "get": { - "tags": [ - "Collections" - ], - "summary": "Get collection in org", - "description": "Get collection details in org", - "operationId": "getCollectionInOrg", + "description": "List recipe versions in team", + "operationId": "listRecipeVersionsInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Team name", "in": "path", - "description": "Collection name", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", + "description": "Page size", "in": "query", - "description": "Resolve labels", + "name": "page-size", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Release Type", "in": "query", - "description": "Remove unresolved labels", + "name": "release-type", "required": false, "schema": { - "type": "boolean" + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "getCollection" + "listRecipeVersions" ] } ], + "summary": "List recipe versions in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "getCollection", + "listRecipeVersions", "kas" ] }, - "delete": { - "tags": [ - "Collections" - ], - "summary": "Delete collection in org", - "description": "Delete collection in the specified org", - "operationId": "deleteCollectionInOrg", + "post": { + "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Recipe name", "in": "path", - "description": "Collection name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "createRecipeVersion" ] } ], + "summary": "Create recipe version in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ + "createRecipeVersion", "kas" ] - }, - "patch": { - "tags": [ - "Collections" - ], - "summary": "Update collection in org", - "description": "Update collection details in org", - "operationId": "updateCollectionInOrg", + } + }, + "/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions/{version_id}": { + "get": { + "description": "Get recipe version in team", + "operationId": "getRecipeVersionInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Team name", "in": "path", - "description": "Collection name", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionUpdateRequest" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } } - } + }, + "description": "OK" }, - "required": true - }, - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "updateCollection" + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" ] } ], + "summary": "Get recipe version in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "updateCollection", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", "kas" ] - } - }, - "/v1/org/{org-name}/collections/{collection-name}/artifacts": { + }, "patch": { - "tags": [ - "Collections" - ], - "summary": "Patch collection in org", - "description": "Patch collection in the specified org", - "operationId": "patchCollectionInOrg", + "description": "Update recipe version information in team e.g. upload status", + "operationId": "updateRecipeVersionInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Recipe name", "in": "path", - "description": "Collection name", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -26207,256 +31104,499 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CollectionPatchRequest" + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "patchCollectionArtifacts" + "updateRecipeVersion" ] } ], + "summary": "Update recipe version in team", + "tags": [ + "Resource Versions" + ], "x-ssa-scopes": [ - "patchCollectionArtifacts", + "updateRecipeVersion", "kas" ] } }, - "/v1/csps/{csp-name}": { + "/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions/{version_id}/files": { "get": { - "tags": [ - "Cloud service providers" - ], - "summary": "Get cloud service provider details", - "description": "Get cloud service provider details", - "operationId": "getCloudServiceProviderDetails", + "description": "List recipe files in team", + "operationId": "listRecipeFilesInTeam_1", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - }, - "delete": { + "security": [ + { + "ssa": [ + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" + ] + } + ], + "summary": "List recipe files in team", "tags": [ - "Cloud service providers" + "Resource Version Files endpoints" ], - "summary": "Delete cloud service provider", - "description": "Delete cloud service provider", - "operationId": "deleteCloudServiceProvider", + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}": { + "get": { + "description": "List artifacts the user can access in the specified org and team", + "operationId": "listArtifactsInTeam", "parameters": [ { - "name": "csp-name", + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", "in": "path", - "description": "Cloud service provider name", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "listArtifacts" ] } ], + "summary": "List artifacts in team", + "tags": [ + "Artifacts" + ], "x-ssa-scopes": [ + "listArtifacts", "kas" ] }, - "patch": { - "tags": [ - "Cloud service providers" - ], - "summary": "Update cloud service provider", - "description": "Update cloud service provider", - "operationId": "updateCloudServiceProvider", + "post": { + "description": "Create artifact in team", + "operationId": "createArtifactInTeam", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], @@ -26464,525 +31604,428 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CloudServiceProviderUpdateRequest" + "$ref": "#/components/schemas/ArtifactCreateRequest" } } }, "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "createArtifact" ] } ], + "summary": "Create artifact in team", + "tags": [ + "Artifacts" + ], "x-ssa-scopes": [ + "createArtifact", "kas" ] } }, - "/v1/{type}/org/{org}/{name}/{version}/files": { - "get": { - "tags": [ - "Artifact File" - ], - "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", - "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", - "operationId": "downloadAllArtifactFilesAsGuest", + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Delete artifact in team", + "operationId": "deleteArtifactInTeam", "parameters": [ { - "name": "type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version", + "description": "Artifact type", "in": "path", - "description": "Version ID", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "path", - "in": "query", - "description": "File path", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 - } - }, - { - "name": "redirect", - "in": "query", - "description": "Get redirect URL", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{type}/org/{org}/team/{team}/{name}/{version}/files": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "deleteArtifact" + ] + } + ], + "summary": "Delete artifact in team", "tags": [ - "Artifact File" + "Artifacts" ], - "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", - "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", - "operationId": "downloadAllArtifactFilesAsGuest_1", + "x-ssa-scopes": [ + "deleteArtifact", + "kas" + ] + }, + "get": { + "description": "Get artifact details in team", + "operationId": "getArtifactInTeam", "parameters": [ { - "name": "type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "org", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "team", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "name", - "in": "path", "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "version", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "path", - "in": "query", - "description": "File path", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "redirect", + "description": "Resolve labels", "in": "query", - "description": "Get redirect URL", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", + "description": "Remove unresolved labels", "in": "query", - "description": "Page number - zero based index", + "name": "remove-unresolved-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifactType}/{orgName}/{artifactName}/playground": { - "get": { - "tags": [ - "AIPlayground" - ], - "description": "Get AI Playground for public model", - "operationId": "getPublicModelAIPlayground", - "parameters": [ - { - "name": "orgName", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 - } - }, + "security": [ { - "name": "artifactName", - "in": "path", - "description": "Model name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } + "ssa": [ + "kas", + "getArtifact" + ] } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" - } - } - } - } - }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/playground": { - "get": { + "summary": "Get artifact in team", "tags": [ - "AIPlayground" + "Artifacts" ], - "description": "Get AI Playground for public model", - "operationId": "getPublicModelAIPlayground_1", + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "patch": { + "description": "Update artifact details in team", + "operationId": "updateArtifactInTeam", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "teamName", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactType", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "models", "helm-charts", "endpoints", "agents", @@ -26991,70 +32034,149 @@ "playbooks", "skills" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifactName", + "description": "Artifact name", "in": "path", - "description": "Model name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/ArtifactResponse" } } - } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifactType}/{orgName}/{artifactName}/spec": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Update artifact in team", "tags": [ - "AIPlayground" + "Artifacts" ], - "summary": "Get AI Playground for public artifactType", - "description": "Get AI Playground for public artifactType", - "operationId": "getPublicModelArtifactsSpec", + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + }, + "put": { + "description": "Replace artifact details in team", + "operationId": "replaceArtifactInTeam", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactType", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ - "models", "helm-charts", "endpoints", "agents", @@ -27063,138 +32185,295 @@ "playbooks", "skills" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifactName", + "description": "Artifact name", "in": "path", - "description": "Model name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/ArtifactResponse" } } - } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Replace artifact in team", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] } }, - "/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/spec": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/catalog/flags": { "get": { - "tags": [ - "AIPlayground" - ], - "summary": "Get AI Playground for public artifactType", - "description": "Get AI Playground for public artifactType", - "operationId": "getPublicModelArtifactsSpec_1", + "description": "Get the Catalog Public flags for artifact in team", + "operationId": "getPublicFlagsInTeam", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "teamName", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactType", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "models", - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifactName", + "description": "Artifact name", "in": "path", - "description": "Model name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AIPlaygroundResponse" + "$ref": "#/components/schemas/ArtifactCatalogFlags" } } - } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "getPublicFlags" + ] + } + ], + "summary": "Get Catalog flags", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "getPublicFlags" + ] } }, - "/v1/{artifact-type}/org/{org-name}/{artifact-name}/collections": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/collections": { "get": { - "tags": [ - "Collections" - ], - "summary": "List artifact collections in org as guest", - "description": "List artifact collections the user can access in the specified org as guest", - "operationId": "listArtifactCollectionsInOrgAsGuest", + "description": "List artifact collections the user can access in the specified org and team", + "operationId": "listArtifactCollectionsInTeam", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ "MODEL", "MODEL_SCRIPT", @@ -27208,70 +32487,58 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } }, { - "name": "order-by", - "in": "query", "description": "Order by", + "in": "query", + "name": "order-by", "required": false, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "ALPHABETIC_ASC", "ALPHABETIC_DESC", @@ -27290,23 +32557,25 @@ "RESOURCE_ID_ASC", "RESOURCE_ID_DESC" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "remove-unresolved-labels", - "in": "query", "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" @@ -27314,335 +32583,292 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/collections": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact collections in org and team", "tags": [ "Collections" ], - "summary": "List artifact collections in org and team as guest", - "description": "List artifact collections the user can access in the specified org and team as guest", - "operationId": "listArtifactCollectionsInTeamAsGuest", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels": { + "post": { + "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", + "operationId": "syncCollectionReleaseTypeLabelsForArtifact_1", "parameters": [ { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "order-by", - "in": "query", - "description": "Order by", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas", + "syncReleaseTypeLabels" + ] + } + ], + "summary": "Sync collection release type labels for artifact", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "syncReleaseTypeLabels" + ] } }, - "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/signature": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/params": { "get": { - "tags": [ - "ArtifactSigning" - ], - "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", - "operationId": "getArtifactVersionSignatureAsGuest", + "description": "List artifact deployment parameters in team", + "operationId": "listArtifactDeploymentParametersInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "redirect", + "description": "Inherit CSP parameters", "in": "query", - "description": "Get redirect URL", + "name": "inherit-csp-parameters", "required": false, "schema": { "type": "boolean" @@ -27650,823 +32876,1021 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/signature": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact deployment parameters in team", "tags": [ - "ArtifactSigning" + "Artifact deployment parameters" ], - "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", - "operationId": "getArtifactVersionSignatureAsGuest_1", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/parameters": { + "post": { + "description": "Create artifact deployment parameters in team", + "operationId": "createArtifactDeploymentParametersInTeam_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Cloud service provider name", "in": "path", - "description": "Version ID", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "redirect", + "description": "No auto labels", "in": "query", - "description": "Get redirect URL", + "name": "no-auto-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", "required": false, "schema": { "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact deployment parameters in team", "tags": [ - "Artifact Version Files" + "Artifact deployment parameters" ], - "summary": "Download all files of a team artifact in a zip as guest", - "description": "Download all files of a team artifact in a zip as guest", - "operationId": "downloadAllFilesInTeamAsGuest", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params": { + "delete": { + "description": "Delete artifact deployment parameters in team", + "operationId": "deleteArtifactDeploymentParametersInTeam", "parameters": [ { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "sc_cmp", - "in": "cookie", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip/download": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete artifact deployment parameters in team", "tags": [ - "Artifact Version Files" + "Artifact deployment parameters" ], - "summary": "Direct download all files of a team artifact in a zip as guest", - "description": "Direct download all files of a team artifact in a zip as guest", - "operationId": "directDownloadAllFilesInTeamAsGuest", + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get artifact deployment parameters details in team", + "operationId": "getArtifactDeploymentParametersInTeam", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Cloud service provider name", "in": "path", - "description": "Version ID", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "sc_cmp", - "in": "cookie", + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Get artifact deployment parameters details in team", "tags": [ - "Artifact Version Files" + "Artifact deployment parameters" ], - "summary": "Download artifact file in team as guest", - "description": "Download the specified file of the artifact version in team as guest", - "operationId": "downloadArtifactFileInTeamAsGuest", + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "description": "Update artifact deployment parameters in team", + "operationId": "updateArtifactDeploymentParametersInTeam", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Cloud service provider name", "in": "path", - "description": "Version ID", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "sc_cmp", - "in": "cookie", + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**/zip/download": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update artifact deployment parameters in team", "tags": [ - "Artifact Version Files" + "Artifact deployment parameters" ], - "summary": "Download artifact file in team as guest as zip", - "description": "Download the specified file of the artifact version in team as guest as zip", - "operationId": "downloadArtifactFileInTeamAsGuestAsZip", + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create artifact deployment parameters in team", + "operationId": "createArtifactDeploymentParametersInTeam", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Cloud service provider name", "in": "path", - "description": "Version ID", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "sc_cmp", - "in": "cookie", + "description": "No auto labels", + "in": "query", + "name": "no-auto-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", + "required": false, + "schema": { + "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/latest-version/zip": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact deployment parameters in team", "tags": [ - "Artifact Version Files" + "Artifact deployment parameters" ], - "summary": "Download all files of a team artifact's latest version in a zip as guest", - "description": "Download all files of a team artifact's latest version in a zip as guest", - "operationId": "downloadAllFilesInTeamAsGuest_1", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/files": { + "post": { + "description": "Check if file exists based on checksum provided in request", + "operationId": "checkArtifactFilesExistByChecksum_1", "parameters": [ { - "name": "artifact-type", + "description": "Org Name", "in": "path", - "description": "Artifact type", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team Name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact Type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ "MODEL", "MODEL_SCRIPT", @@ -28480,683 +33904,774 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact Name", "in": "path", - "description": "Team name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "sc_cmp", - "in": "cookie", + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Check if file exists based on checksum", + "tags": [ + "ArtifactChecksum" + ], + "x-ssa-scopes": [ + "kas" + ] } }, - "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance": { "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "Download all files of an org artifact in a zip as guest", - "description": "Download all files of an org artifact in a zip as guest", - "operationId": "downloadAllFilesInOrgAsGuest", + "description": "Check if user needs to accept license. Checks against uam", + "operationId": "getOrgArtifactLicenseAcceptance_1", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip/download": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Check if user needs to accept license", "tags": [ - "Artifact Version Files" + "Publish" ], - "summary": "Direct download all files of a org artifact in a zip as guest", - "description": "Direct download all files of a org artifact in a zip as guest", - "operationId": "directDownloadAllFilesInOrgAsGuest", + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Record license acceptance for an org artifact.", + "operationId": "acceptArtifactLicense_1", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Accept artifact license", "tags": [ - "Artifact Version Files" + "Publish" ], - "summary": "Download artifact file in org as guest", - "description": "Download the specified file of the artifact version in org as guest", - "operationId": "downloadArtifactFileInOrgAsGuest", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/release-type": { + "put": { + "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", + "operationId": "updateReleaseLabel_1", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**/zip/download": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "publishArtifact" + ] + } + ], + "summary": "Update artifact version release type", "tags": [ - "Artifact Version Files" + "Publish" ], - "summary": "Download artifact file in org as guest as zip", - "description": "Download the specified file of the artifact version in org as guest as zip", - "operationId": "downloadArtifactFileInOrgAsGuestAsZip", + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/share": { + "delete": { + "description": "Undo publishing of artifact to public", + "operationId": "undoPublishArtifact_1", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{artifact-name}/latest-version/zip": { - "get": { + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "summary": "Undo publishing of artifact to public", "tags": [ - "Artifact Version Files" + "Publish" ], - "summary": "Download all files of an org artifact's latest version in a zip as guest", - "description": "Download all files of an org artifact's latest version in a zip as guest", - "operationId": "downloadAllFilesOfLatestVersionInOrgAsGuest", + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + }, + "put": { + "description": "Publish artifact to public", + "operationId": "publishArtifact_1", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ "MODEL", "MODEL_SCRIPT", @@ -29170,1764 +34685,2037 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Artifact name", "in": "path", - "description": "Organization name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", + "description": "Indicates if guest users can download this artifact", + "in": "query", + "name": "guest-can-download", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } }, { - "name": "sc_cmp", - "in": "cookie", + "description": "Indicates if artifact is listed publicly", + "in": "query", + "name": "public-can-list", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files": { - "get": { + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact to public", "tags": [ - "Artifact Version Files" + "Publish" ], - "summary": "List artifact files in team as guest", - "description": "List files of the artifact version in team as guest", - "operationId": "listArtifactFilesInTeamAsGuest", + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/share/product": { + "delete": { + "description": "Undo publishing of product artifacts", + "operationId": "undoPublishProduct_1", "parameters": [ { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files": { - "get": { + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "summary": "Undo publishing of product artifacts", "tags": [ - "Artifact Version Files" + "Publish" ], - "summary": "List artifact files in org as guest", - "description": "List files of the artifact version in org as guest", - "operationId": "listArtifactFilesInOrgAsGuest", + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + }, + "put": { + "description": "Publish artifact to product", + "operationId": "publishArtifactFromRequest_1", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}": { - "get": { + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact to product", "tags": [ - "Artifacts" + "Publish" ], - "summary": "List public artifacts", - "description": "List public artifacts", - "operationId": "listPublicArtifacts", + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/terms-of-service": { + "put": { + "description": "Update artifact terms of service", + "operationId": "updateTermsOfService_1", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, "schema": { - "type": "string", + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}": { - "get": { + "security": [ + { + "ssa": [ + "publishArtifact", + "kas" + ] + } + ], + "summary": "Update artifact terms of service", "tags": [ - "Artifacts" + "Publish" ], - "summary": "Get artifact in team as guest", - "description": "Get artifact details in team as guest", - "operationId": "getChartInTeamAsGuest", + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}": { + "delete": { + "description": "Delete a artifact version in team", + "operationId": "deleteArtifactVersionInTeam", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "org-name", + "description": "Team name", "in": "path", - "description": "Organization name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/{artifact-type}/{org-name}/{artifact-name}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "deleteArtifactVersion" + ] + } + ], + "summary": "Delete a artifact version in team", "tags": [ - "Artifacts" + "Artifact Versions" ], - "summary": "Get artifact in org as guest", - "description": "Get artifact details in org as guest", - "operationId": "getArtifactInOrgAsGuest", + "x-ssa-scopes": [ + "deleteArtifactVersion", + "kas" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs": { + "patch": { + "description": "Update artifact version with configs like policy badge", + "operationId": "updateTagLevelPublishConfigs_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files": { - "get": { + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact version with configs like policy badge", "tags": [ - "Resource Version Files endpoints" + "Publish" ], - "summary": "List recipe files in team as guest", - "description": "List files of the recipe version in team as guest", - "operationId": "listModeFilesInTeamAsGuest", + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}": { + "post": { + "description": "Create artifact version deployment url in team", + "operationId": "createArtifactDeploymentUrlInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact version deployment url in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] } }, - "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files": { "get": { - "tags": [ - "Resource Version Files endpoints" - ], - "summary": "List recipe files in team as guest", - "description": "List files of the recipe version in team as guest", - "operationId": "listModeFilesInTeamAsGuest_1", + "description": "List files of the artifact version in team", + "operationId": "listArtifactFilesInTeam", "parameters": [ { - "name": "org-name", + "description": "Artifact type", "in": "path", - "description": "Organization name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Organization name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", - "description": "Recipe name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-reference", + "description": "Page size", "in": "query", - "description": "Page reference", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "listArtifactVersionFiles" + ] + }, + { + "ssa": [ + "listArtifactVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact files in team", "tags": [ - "Resource Versions" + "Artifact Version Files" ], - "summary": "Get recipe version in team as guest", - "description": "Get recipe version in team as guest", - "operationId": "getRecipeVersionInTeamAsGuest", + "x-ssa-scopes": [ + "listArtifactVersionFiles", + "kas", + "listArtifactVersionFilesFilterByOrgEnablement" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**": { + "delete": { + "description": "Delete artifact file in team", + "operationId": "deleteArtifactFileInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact name", "in": "path", - "description": "Recipe name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete artifact file in team", "tags": [ - "Resource Versions" + "Artifact Version Files" ], - "summary": "Get recipe version in team as guest", - "description": "Get recipe version in team as guest", - "operationId": "getRecipeVersionInTeamAsGuest_1", + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in team", + "operationId": "downloadArtifactFileInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile" + ] + } + ], + "summary": "Download artifact file in team", "tags": [ - "Resource Versions" + "Artifact Version Files" ], - "summary": "List recipe versions in team as guest", - "description": "List recipe versions in team as guest", - "operationId": "listRecipeVersionsInTeamAsGuest", + "x-ssa-scopes": [ + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name}": { + "post": { + "description": "Create artifact version file deployment url in team", + "operationId": "createArtifactVersionFileDeploymentUrlInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact version file deployment url in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] } }, - "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/zip/download": { "get": { - "tags": [ - "Resource Versions" - ], - "summary": "List recipe versions in team as guest", - "description": "List recipe versions in team as guest", - "operationId": "listRecipeVersionsInTeamAsGuest_1", + "deprecated": true, + "description": "Download the specified file of the artifact version in team as zip", + "operationId": "downloadArtifactFileInTeamAsZip", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 + "type": "string" } }, { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Download artifact file in team as zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] } }, - "/v1/recipes/{org-name}/{team-name}/{recipe-name}": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature": { "get": { - "tags": [ - "Resources" - ], - "summary": "Get recipe in team as guest", - "description": "Get recipe details in team as guest", - "operationId": "getRecipeInTeamAsGuest", + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", + "operationId": "getArtifactVersionSignature_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Get redirect URL", "in": "query", - "description": "Remove unresolved labels", + "name": "redirect", "required": false, "schema": { "type": "boolean" @@ -30935,1795 +36723,2066 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/resources/{org-name}/{team-name}/{recipe-name}": { - "get": { "tags": [ - "Resources" + "ArtifactSigning" ], - "summary": "Get recipe in team as guest", - "description": "Get recipe details in team as guest", - "operationId": "getRecipeInTeamAsGuest_1", + "x-ssa-scopes": [] + }, + "put": { + "description": "Request to sign artifact version", + "operationId": "signArtifactVersion_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas", + "signArtifactVersion" + ] + } + ], + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [ + "signArtifactVersion", + "kas" + ] } }, - "/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files": { + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/zip": { "get": { - "tags": [ - "Resource Version Files endpoints" - ], - "summary": "List recipe files in org as guest", - "description": "List files of the recipe version in org as guest", - "operationId": "listModeFilesInOrgAsGuest", + "deprecated": true, + "description": "Download all files of a team artifact in a zip", + "operationId": "downloadAllFilesInTeam", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Team name", "in": "path", - "description": "Recipe name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact type", "in": "path", - "description": "Version ID", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Download all files of a team artifact in a zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] } }, - "/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files": { + "/v2/org/{org_name}/{artifact_type}": { "get": { - "tags": [ - "Resource Version Files endpoints" - ], - "summary": "List recipe files in org as guest", - "description": "List files of the recipe version in org as guest", - "operationId": "listModeFilesInOrgAsGuest_1", + "description": "List artifacts the user can access in the specified org", + "operationId": "listArtifactsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "page-size", + "description": "Page number - zero based index", "in": "query", - "description": "Page size", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, + "maximum": 10000, "minLength": 0, - "minimum": 1 + "minimum": 0, + "type": "string" } }, { - "name": "page-reference", + "description": "Resolve labels", "in": "query", - "description": "Page reference", + "name": "resolve-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "boolean" } }, { - "name": "page-number", + "description": "Remove unresolved labels", "in": "query", - "description": "Page number - zero based index", + "name": "remove-unresolved-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "listArtifacts" + ] + } + ], + "summary": "List artifacts in org", "tags": [ - "Resource Versions" + "Artifacts" ], - "summary": "Get recipe version in org as guest", - "description": "Get recipe version in org as guest", - "operationId": "getRecipeVersionInOrgAsGuest", + "x-ssa-scopes": [ + "listArtifacts", + "kas" + ] + }, + "post": { + "description": "Create artifact in org", + "operationId": "createArtifactInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "recipe-name", "in": "path", - "description": "Recipe name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact type", "in": "path", - "description": "Version ID", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/resources/{org-name}/{recipe-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "createArtifact" + ] + } + ], + "summary": "Create artifact in org", "tags": [ - "Resource Versions" + "Artifacts" ], - "summary": "Get recipe version in org as guest", - "description": "Get recipe version in org as guest", - "operationId": "getRecipeVersionInOrgAsGuest_1", + "x-ssa-scopes": [ + "createArtifact", + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Delete artifact in org", + "operationId": "deleteArtifactInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/recipes/{org-name}/{recipe-name}/versions": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "deleteArtifact" + ] + } + ], + "summary": "Delete artifact in org", "tags": [ - "Resource Versions" + "Artifacts" ], - "summary": "List recipe versions in org as guest", - "description": "List recipe versions in org as guest", - "operationId": "listRecipeVersionsInOrgAsGuest", + "x-ssa-scopes": [ + "deleteArtifact", + "kas" + ] + }, + "get": { + "description": "Get artifact details in org", + "operationId": "getArtifactInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", + "description": "Resolve labels", "in": "query", - "description": "Sort order", + "name": "resolve-labels", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], - "maxLength": 262144, - "minLength": 0 + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/resources/{org-name}/{recipe-name}/versions": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "summary": "Get artifact in org", "tags": [ - "Resource Versions" + "Artifacts" ], - "summary": "List recipe versions in org as guest", - "description": "List recipe versions in org as guest", - "operationId": "listRecipeVersionsInOrgAsGuest_1", + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "patch": { + "description": "Update artifact details in org", + "operationId": "updateArtifactInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], - "maxLength": 262144, - "minLength": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/recipes/{org-name}/{recipe-name}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Update artifact in org", "tags": [ - "Resources" + "Artifacts" ], - "summary": "Get recipe in org as guest", - "description": "Get recipe details in org as guest", - "operationId": "getRecipeInOrgAsGuest", + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + }, + "put": { + "description": "Replace artifact details in org", + "operationId": "replaceArtifactInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Replace artifact in org", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] } }, - "/v1/resources/{org-name}/{recipe-name}": { + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/catalog/flags": { "get": { - "tags": [ - "Resources" - ], - "summary": "Get recipe in org as guest", - "description": "Get recipe details in org as guest", - "operationId": "getRecipeInOrgAsGuest_1", + "description": "Get the Catalog Public flags for artifact in org", + "operationId": "getPublicFlagsInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCatalogFlags" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "getPublicFlags" + ] + } + ], + "summary": "Get Catalog flags", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "getPublicFlags" + ] } }, - "/v1/recipes": { + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/collections": { "get": { - "tags": [ - "Resources" - ], - "summary": "List public recipes", - "description": "List public recipes", - "operationId": "listPublicRecipes", + "description": "List artifact collections the user can access in the specified org", + "operationId": "listArtifactCollectionsInOrg", "parameters": [ { - "name": "page-size", - "in": "query", + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/resources": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact collections in org", "tags": [ - "Resources" + "Collections" ], - "summary": "List public recipes", - "description": "List public recipes", - "operationId": "listPublicRecipes_1", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels": { + "post": { + "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", + "operationId": "syncCollectionReleaseTypeLabelsForArtifact", "parameters": [ { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas", + "syncReleaseTypeLabels" + ] + } + ], + "summary": "Sync collection release type labels for artifact", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "syncReleaseTypeLabels" + ] } }, - "/v1/org/{org}/{type}/{name}/{version}/files": { + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/params": { "get": { - "tags": [ - "Artifact File" - ], - "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", - "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", - "operationId": "downloadAllArtifactFiles", + "description": "List artifact deployment parameters in org", + "operationId": "listArtifactDeploymentParametersInOrg", "parameters": [ { - "name": "org", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "type", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "version", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "path", - "in": "query", - "description": "File path", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", + "description": "Inherit CSP parameters", "in": "query", - "description": "Page number - zero based index", + "name": "inherit-csp-parameters", "required": false, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0 + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "downloadArtifactVersionFile", - "downloadArtifactVersionFileFilterByOrgEnablement" + "kas" ] } ], + "summary": "List artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], "x-ssa-scopes": [ - "downloadArtifactVersionFileFilterByOrgEnablement", - "kas", - "downloadArtifactVersionFile" + "kas" ] } }, - "/v1/org/{org}/team/{team}/{type}/{name}/{version}/files": { - "get": { - "tags": [ - "Artifact File" - ], - "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", - "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", - "operationId": "downloadAllArtifactFiles_1", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params": { + "delete": { + "description": "Delete artifact deployment parameters in org", + "operationId": "deleteArtifactDeploymentParametersInOrg", "parameters": [ { - "name": "org", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "team", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "type", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "version", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "path", - "in": "query", - "description": "File path", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "downloadArtifactVersionFile", - "downloadArtifactVersionFileFilterByOrgEnablement" + "kas" ] } ], - "x-ssa-scopes": [ - "downloadArtifactVersionFileFilterByOrgEnablement", - "kas", - "downloadArtifactVersionFile" - ] - } - }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params": { - "get": { + "summary": "Delete artifact deployment parameters in org", "tags": [ "Artifact deployment parameters" ], - "summary": "List artifact deployment parameters in org", - "description": "List artifact deployment parameters in org", - "operationId": "listArtifactDeploymentParametersInOrg", + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get artifact deployment parameters details in org", + "operationId": "getArtifactDeploymentParametersInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "repositories", "recipes", "models" ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Cloud service provider name", "in": "path", - "description": "Artifact name", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "inherit-csp-parameters", - "in": "query", "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", "required": false, "schema": { "type": "boolean" @@ -32731,55 +38790,65 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -32789,196 +38858,171 @@ ] } ], + "summary": "Get artifact deployment parameters details in org", + "tags": [ + "Artifact deployment parameters" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections": { - "get": { - "tags": [ - "Collections" - ], - "summary": "List artifact collections in org", - "description": "List artifact collections the user can access in the specified org", - "operationId": "listArtifactCollectionsInOrg", + }, + "patch": { + "description": "Update artifact deployment parameters in org", + "operationId": "updateArtifactDeploymentParametersInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "order-by", - "in": "query", - "description": "Order by", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Merge CSP parameters in response", "in": "query", - "description": "Remove unresolved labels", + "name": "merge-csp-parameters", "required": false, "schema": { "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ @@ -32988,163 +39032,221 @@ ] } ], + "summary": "Update artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/catalog/flags": { - "get": { - "tags": [ - "Publish" - ], - "summary": "Get Catalog flags", - "description": "Get the Catalog Public flags for artifact in org", - "operationId": "getPublicFlagsInOrg", + }, + "post": { + "description": "Create artifact deployment parameters in org", + "operationId": "createArtifactDeploymentParametersInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "No auto labels", + "in": "query", + "name": "no-auto-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", + "required": false, + "schema": { + "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "getPublicFlags" + "kas" ] } ], + "summary": "Create artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], "x-ssa-scopes": [ - "getPublicFlags" + "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip": { - "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "Download all files of an org artifact in a zip", - "description": "Download all files of an org artifact in a zip", - "operationId": "downloadAllFilesInOrg", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/files": { + "post": { + "description": "Check if file exists based on checksum provided in request", + "operationId": "checkArtifactFilesExistByChecksum", "parameters": [ { - "name": "org-name", + "description": "Org Name", "in": "path", - "description": "Organization name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact Type", "in": "path", - "description": "Artifact type", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -33158,99 +39260,125 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact Name", "in": "path", - "description": "Artifact name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "sc_cmp", - "in": "cookie", + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, "security": [ { "ssa": [ @@ -33258,40 +39386,38 @@ ] } ], + "summary": "Check if file exists based on checksum", + "tags": [ + "ArtifactChecksum" + ], "x-ssa-scopes": [ "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/*/zip/download": { + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance": { "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "Download artifact file in org as zip", - "description": "Download the specified file of the artifact version in org as zip", - "operationId": "downloadArtifactFileInOrgAsZip", + "description": "Check if user needs to accept license. Checks against uam", + "operationId": "getOrgArtifactLicenseAcceptance", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -33305,99 +39431,87 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, "security": [ { "ssa": [ @@ -33405,40 +39519,36 @@ ] } ], + "summary": "Check if user needs to accept license", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**": { - "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "Download artifact file in org", - "description": "Download the specified file of the artifact version in org", - "operationId": "downloadArtifactFileInOrg", + }, + "post": { + "description": "Record license acceptance for an org artifact.", + "operationId": "acceptArtifactLicense", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -33452,140 +39562,136 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, "security": [ { "ssa": [ - "kas", - "downloadArtifactVersionFile" + "kas" ] } ], - "x-ssa-scopes": [ - "kas", - "downloadArtifactVersionFile" - ] - }, - "delete": { + "summary": "Accept artifact license", "tags": [ - "Artifact Version Files" + "Publish" ], - "summary": "Delete artifact file in org", - "description": "Delete artifact file in org", - "operationId": "deleteArtifactFileInOrg", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/release-type": { + "put": { + "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", + "operationId": "updateReleaseLabel", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -33599,116 +39705,138 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "kas", + "publishArtifact" ] } ], + "summary": "Update artifact version release type", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ + "publishArtifact", "kas" ] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files": { - "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "List artifact files in org", - "description": "List files of the artifact version in org", - "operationId": "listArtifactFilesInOrg", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/share": { + "delete": { + "description": "Undo publishing of artifact to public", + "operationId": "undoPublishArtifact", "parameters": [ { - "name": "artifact-type", + "description": "Organization name", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ "MODEL", "MODEL_SCRIPT", @@ -33722,207 +39850,168 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listArtifactVersionFiles" + "undoPublishArtifact" ] } ], + "summary": "Undo publishing of artifact to public", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "listArtifactVersionFiles", - "kas" + "undoPublishArtifact" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/params": { - "get": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "List artifact deployment parameters in team", - "description": "List artifact deployment parameters in team", - "operationId": "listArtifactDeploymentParametersInTeam", + }, + "put": { + "description": "Publish artifact to public", + "operationId": "publishArtifact", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Artifact name", "in": "path", - "description": "Artifact type", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", + "description": "Indicates if guest users can download this artifact", + "in": "query", + "name": "guest-can-download", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "type": "boolean" } }, { - "name": "inherit-csp-parameters", + "description": "Indicates if artifact is listed publicly", "in": "query", - "description": "Inherit CSP parameters", + "name": "public-can-list", "required": false, "schema": { "type": "boolean" @@ -33930,110 +40019,106 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "publishArtifact" ] } ], + "summary": "Publish artifact to public", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "kas" + "publishArtifact" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections": { - "get": { - "tags": [ - "Collections" - ], - "summary": "List artifact collections in org and team", - "description": "List artifact collections the user can access in the specified org and team", - "operationId": "listArtifactCollectionsInTeam", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/share/product": { + "delete": { + "description": "Undo publishing of product artifacts", + "operationId": "undoPublishProduct", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -34047,204 +40132,124 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "order-by", - "in": "query", - "description": "Order by", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "undoPublishArtifact" ] } ], - "x-ssa-scopes": [ - "kas" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/catalog/flags": { - "get": { + "summary": "Undo publishing of product artifacts", "tags": [ "Publish" ], - "summary": "Get Catalog flags", - "description": "Get the Catalog Public flags for artifact in team", - "operationId": "getPublicFlagsInTeam", + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + }, + "put": { + "description": "Publish artifact to product", + "operationId": "publishArtifactFromRequest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -34258,128 +40263,136 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "getPublicFlags" + "publishArtifact" ] } ], + "summary": "Publish artifact to product", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "getPublicFlags" + "publishArtifact" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip": { - "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "Download all files of a team artifact in a zip", - "description": "Download all files of a team artifact in a zip", - "operationId": "downloadAllFilesInTeam", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/terms-of-service": { + "put": { + "description": "Update artifact terms of service", + "operationId": "updateTermsOfService", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -34393,152 +40406,138 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, "security": [ { "ssa": [ + "publishArtifact", "kas" ] } ], + "summary": "Update artifact terms of service", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ + "publishArtifact", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**": { - "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "Download artifact file in team", - "description": "Download the specified file of the artifact version in team", - "operationId": "downloadArtifactFileInTeam", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}": { + "delete": { + "description": "Delete a artifact version in org", + "operationId": "deleteArtifactVersionInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -34552,152 +40551,140 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "sc_cmp", - "in": "cookie", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, "security": [ { "ssa": [ "kas", - "downloadArtifactVersionFile" + "deleteArtifactVersion" ] } ], - "x-ssa-scopes": [ - "kas", - "downloadArtifactVersionFile" - ] - }, - "delete": { + "summary": "Delete a artifact version in org", "tags": [ - "Artifact Version Files" + "Artifact Versions" ], - "summary": "Delete artifact file in team", - "description": "Delete artifact file in team", - "operationId": "deleteArtifactFileInTeam", + "x-ssa-scopes": [ + "deleteArtifactVersion", + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs": { + "patch": { + "description": "Update artifact version with configs like policy badge", + "operationId": "updateTagLevelPublishConfigs", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -34711,246 +40698,288 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas" + "publishArtifact" ] } ], + "summary": "Publish artifact version with configs like policy badge", + "tags": [ + "Publish" + ], "x-ssa-scopes": [ - "kas" + "publishArtifact" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/zip/download": { - "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "Download artifact file in team as zip", - "description": "Download the specified file of the artifact version in team as zip", - "operationId": "downloadArtifactFileInTeamAsZip", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}": { + "post": { + "description": "Create artifact version deployment url in org", + "operationId": "createArtifactDeploymentUrlInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "repositories", + "recipes", + "models" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "sc_cmp", - "in": "cookie", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "deprecated": true, "security": [ { "ssa": [ @@ -34958,28 +40987,26 @@ ] } ], + "summary": "Create artifact version deployment url in org", + "tags": [ + "Artifact deployment parameters" + ], "x-ssa-scopes": [ "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files": { + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files": { "get": { - "tags": [ - "Artifact Version Files" - ], - "summary": "List artifact files in team", - "description": "List files of the artifact version in team", - "operationId": "listArtifactFilesInTeam", + "description": "List files of the artifact version in org", + "operationId": "listArtifactFilesInOrg", "parameters": [ { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -34993,888 +41020,807 @@ "API", "SKILL" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", "listArtifactVersionFiles" ] + }, + { + "ssa": [ + "listArtifactVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] } ], + "summary": "List artifact files in org", + "tags": [ + "Artifact Version Files" + ], "x-ssa-scopes": [ "listArtifactVersionFiles", - "kas" + "kas", + "listArtifactVersionFilesFilterByOrgEnablement" ] } }, - "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}/files": { - "get": { - "tags": [ - "Resource Version Files endpoints" - ], - "summary": "List recipe files in team", - "description": "List recipe files in team", - "operationId": "listRecipeFilesInTeam", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**": { + "delete": { + "description": "Delete artifact file in org", + "operationId": "deleteArtifactFileInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listRecipeVersionFiles" + "kas" ] } ], + "summary": "Delete artifact file in org", + "tags": [ + "Artifact Version Files" + ], "x-ssa-scopes": [ - "listRecipeVersionFiles", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}/files": { + }, "get": { - "tags": [ - "Resource Version Files endpoints" - ], - "summary": "List recipe files in team", - "description": "List recipe files in team", - "operationId": "listRecipeFilesInTeam_1", + "deprecated": true, + "description": "Download the specified file of the artifact version in org", + "operationId": "downloadArtifactFileInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "recipe-name", + "description": "Artifact type", "in": "path", - "description": "Recipe name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listRecipeVersionFiles" + "downloadArtifactVersionFile" ] } ], + "summary": "Download artifact file in org", + "tags": [ + "Artifact Version Files" + ], "x-ssa-scopes": [ - "listRecipeVersionFiles", - "kas" + "kas", + "downloadArtifactVersionFile" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/files": { - "get": { - "tags": [ - "Model Version Files" - ], - "summary": "List model files in team", - "description": "List files of the model version in team", - "operationId": "listModeFilesInTeam", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/**/deployments/{csp_name}": { + "post": { + "description": "Create artifact version file deployment url in org", + "operationId": "createArtifactVerionFileDeploymentUrlInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact type", "in": "path", - "description": "Model name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "repositories", + "recipes", + "models" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Cloud service provider name", + "in": "path", + "name": "csp_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listModelVersionFiles" + "kas" ] } ], + "summary": "Create artifact version file deployment url in org", + "tags": [ + "Artifact deployment parameters" + ], "x-ssa-scopes": [ - "listModelVersionFiles", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions": { - "get": { - "tags": [ - "Helm Charts" - ], - "summary": "List chart versions in team", - "description": "List chart versions in team", - "operationId": "listHelmChartVersionsInTeam", + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files/*/zip/download": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in org as zip", + "operationId": "downloadArtifactFileInOrgAsZip", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 + "type": "string" } }, { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listArtifactVersions" + "kas" ] } ], + "summary": "Download artifact file in org as zip", + "tags": [ + "Artifact Version Files" + ], "x-ssa-scopes": [ - "kas", - "listArtifactVersions" + "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type}": { + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature": { "get": { - "tags": [ - "Collections" - ], - "summary": "List collection artifacts in org and team", - "description": "List collection artifacts the user can access in the specified org and team", - "operationId": "listCollectionArtifactsInTeam", + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", + "operationId": "getArtifactVersionSignature", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "MODEL", "MODEL_SCRIPT", @@ -35888,81 +41834,40 @@ "API", "SKILL" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "order-by", - "in": "query", - "description": "Order by", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Get redirect URL", "in": "query", - "description": "Remove unresolved labels", + "name": "redirect", "required": false, "schema": { "type": "boolean" @@ -35970,5154 +41875,5139 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "listCollectionArtifacts" - ] - } - ], - "x-ssa-scopes": [ - "kas", - "listCollectionArtifacts" - ] - } - }, - "/v1/org/{org-name}/repositories/{container-name}/associated-models": { - "get": { "tags": [ - "Model Version" + "ArtifactSigning" ], - "summary": "List associated model versions by container", - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer", + "x-ssa-scopes": [] + }, + "put": { + "description": "Request to sign artifact version", + "operationId": "signArtifactVersion", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "container-name", + "description": "Artifact type", "in": "path", - "description": "Container name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listModelVersions" + "signArtifactVersion" ] } ], + "tags": [ + "ArtifactSigning" + ], "x-ssa-scopes": [ - "listModelVersions", + "signArtifactVersion", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/associated-models": { + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/zip": { "get": { - "tags": [ - "Model Version" - ], - "summary": "List associated model versions by container", - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer_1", + "deprecated": true, + "description": "Download all files of an org artifact in a zip", + "operationId": "downloadAllFilesInOrg", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "container-name", + "description": "Artifact type", "in": "path", - "description": "Container name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listModelVersions" + "kas" ] } ], + "summary": "Download all files of an org artifact in a zip", + "tags": [ + "Artifact Version Files" + ], "x-ssa-scopes": [ - "listModelVersions", "kas" ] } }, - "/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { - "get": { - "tags": [ - "Model Version" - ], - "summary": "List associated model versions by container", - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer_2", + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan": { + "post": { + "description": "Initiates malwares can for the artifact", + "operationId": "initiateMalwareScan_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "container-name", + "description": "Team name", "in": "path", - "description": "Container name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "container-tag", + "description": "Artifact name", "in": "path", - "description": "Container tag", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 1000, + "maxLength": 512, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", + "description": "Contact email", "in": "query", - "description": "Page number - zero based index", + "name": "contact-email", "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 320, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", + "description": "Nspect identifier", "in": "query", - "description": "Sort order", + "name": "nspect-id", "required": false, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 64, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ - "kas", - "listModelVersions" + "kas" ] } ], + "summary": "Initiates malwares can for the artifact", + "tags": [ + "MalwareScan" + ], "x-ssa-scopes": [ - "listModelVersions", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { - "get": { - "tags": [ - "Model Version" - ], - "summary": "List associated model versions by container", - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer_3", + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground": { + "post": { + "deprecated": true, + "description": "Create AI Playground for model", + "operationId": "createModelAIPlayground_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "container-name", - "in": "path", - "description": "Container name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "container-tag", "in": "path", - "description": "Container tag", + "name": "org_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listModelVersions" + "writeArtifacts" ] } ], + "tags": [ + "AIPlayground" + ], "x-ssa-scopes": [ - "listModelVersions", + "writeArtifacts", "kas" ] } }, - "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files": { - "get": { - "tags": [ - "Resource Version Files endpoints" - ], - "summary": "List recipe files in org", - "description": "List recipe files in org", - "operationId": "listRecipeFilesInOrg", + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/playground/{artifact_name}": { + "delete": { + "deprecated": true, + "description": "Delete AI Playground for model", + "operationId": "deleteModelAIPlayground_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "recipe-name", "in": "path", - "description": "Recipe name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Team name", "in": "path", - "description": "Version ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listRecipeVersionFiles" + "deleteArtifacts" ] } ], + "tags": [ + "AIPlayground" + ], "x-ssa-scopes": [ - "listRecipeVersionFiles", + "deleteArtifacts", "kas" ] - } - }, - "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files": { + }, "get": { - "tags": [ - "Resource Version Files endpoints" - ], - "summary": "List recipe files in org", - "description": "List recipe files in org", - "operationId": "listRecipeFilesInOrg_1", + "deprecated": true, + "description": "Get AI Playground for model", + "operationId": "getModelAIPlayground_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "recipe-name", "in": "path", - "description": "Recipe name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Team name", "in": "path", - "description": "Version ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listRecipeVersionFiles" + "getArtifact" ] } ], + "tags": [ + "AIPlayground" + ], "x-ssa-scopes": [ - "listRecipeVersionFiles", + "getArtifact", "kas" ] - } - }, - "/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files": { - "get": { - "tags": [ - "Model Version Files" - ], - "summary": "List model files in org", - "description": "List files of the model version in org", - "operationId": "listModeFilesInOrg", + }, + "put": { + "deprecated": true, + "description": "Update AI Playground for model", + "operationId": "updateModelAIPlayground_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", "in": "path", - "description": "Model name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Team name", "in": "path", - "description": "Version ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listModelVersionFiles" + "writeArtifacts" ] } ], + "tags": [ + "AIPlayground" + ], "x-ssa-scopes": [ - "listModelVersionFiles", + "writeArtifacts", "kas" ] } }, - "/v1/org/{org-name}/helm-charts/{artifact-name}/versions": { - "get": { - "tags": [ - "Helm Charts" - ], - "summary": "List chart versions in org", - "description": "List chart versions in org", - "operationId": "listHelmChartVersionsInOrg", - "parameters": [ - { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/spec": { + "post": { + "description": "Create AI Playground for artifactType", + "operationId": "createModelArtifactsSpec_1", + "parameters": [ { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listArtifactVersions" + "writeArtifacts" ] } ], + "summary": "Create AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], "x-ssa-scopes": [ - "kas", - "listArtifactVersions" + "writeArtifacts", + "kas" ] } }, - "/v1/org/{org-name}/collections/{collection-name}/artifacts/{artifact-type}": { - "get": { - "tags": [ - "Collections" - ], - "summary": "List collection artifacts in org", - "description": "List collection artifacts the user can access in the specified org", - "operationId": "listCollectionArtifactsInOrg", + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/purge": { + "delete": { + "description": "Purge Search DB for deleted artifacts", + "operationId": "purgeDeletedArtifact_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Team name", "in": "path", - "description": "Collection name", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "path", "description": "Artifact type", + "in": "path", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "order-by", - "in": "query", - "description": "Order by", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "listCollectionArtifacts" + "purgeArtifact" ] } ], + "summary": "Purge Search DB", + "tags": [ + "Artifacts" + ], "x-ssa-scopes": [ "kas", - "listCollectionArtifacts" + "purgeArtifact" ] } }, - "/v1/models": { - "get": { - "tags": [ - "Models" - ], - "summary": "List public models", - "description": "This operation lists public models.", - "operationId": "listPublicModels", + "/v2/org/{org_name}/team/{team_name}/{artifact_type}/{artifact_name}/spec": { + "delete": { + "description": "Delete AI Playground for artifactType", + "operationId": "deleteModelArtifactsSpec_1", "parameters": [ { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{team-name}/{model-name}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "summary": "Delete AI Playground for artifactType", "tags": [ - "Models" + "AIPlayground" ], - "summary": "Get model in team as guest", - "description": "This operation gets info of a model in the org/team as guest.", - "operationId": "getModelInTeamAsGuest", + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + }, + "get": { + "description": "Get AI Playground for artifactType", + "operationId": "getModelArtifactsSpec_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact type", "in": "path", - "description": "Model name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{team-name}/{model-name}/versions": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "summary": "Get AI Playground for artifactType", "tags": [ - "Model Version" + "AIPlayground" ], - "summary": "List model versions in team as guest", - "description": "List model versions in team as guest", - "operationId": "listModelVersionsInTeamAsGuest", + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "description": "Update AI Playground for artifactType", + "operationId": "updateModelArtifactsSpec_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact type", "in": "path", - "description": "Model name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 1000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "summary": "Update AI Playground for artifactType", "tags": [ - "Model Version" + "AIPlayground" ], - "summary": "Get model version in team as guest", - "description": "Get model version in team as guest", - "operationId": "getModelVersionInTeamAsGuest", + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan": { + "post": { + "description": "Initiates malwares can for the artifact", + "operationId": "initiateMalwareScan", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact type", "in": "path", - "description": "Team name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact name", "in": "path", - "description": "Model name", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 512, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Contact email", + "in": "query", + "name": "contact-email", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 320, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Nspect identifier", + "in": "query", + "name": "nspect-id", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 64, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}/files": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Initiates malwares can for the artifact", "tags": [ - "Model Version Files" + "MalwareScan" ], - "summary": "List model files in team as guest", - "description": "List files of the model version in team as guest", - "operationId": "listModeFilesInTeamAsGuest_2", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/playground": { + "post": { + "deprecated": true, + "description": "Create AI Playground for model", + "operationId": "createModelAIPlayground", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", "in": "path", - "description": "Model name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact type", "in": "path", - "description": "Version ID", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{model-name}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], "tags": [ - "Models" + "AIPlayground" ], - "summary": "Get model in org as guest", - "description": "This operation gets info of a model in the org as guest.", - "operationId": "getModelInOrgAsGuest", + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/playground/{artifact_name}": { + "delete": { + "deprecated": true, + "description": "Delete AI Playground for model", + "operationId": "deleteModelAIPlayground", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact type", "in": "path", - "description": "Model name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{model-name}/versions": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], "tags": [ - "Model Version" + "AIPlayground" ], - "summary": "List model versions in org as guest", - "description": "List model versions in org as guest", - "operationId": "listModelVersionsInOrgAsGuest", + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + }, + "get": { + "deprecated": true, + "description": "Get AI Playground for model", + "operationId": "getModelAIPlayground", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact type", "in": "path", - "description": "Model name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{model-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], "tags": [ - "Model Version" + "AIPlayground" ], - "summary": "Get model version in org as guest", - "description": "Get model version in org as guest", - "operationId": "getModelVersionInOrgAsGuest", + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Update AI Playground for model", + "operationId": "updateModelAIPlayground", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Artifact type", "in": "path", - "description": "Model name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Model name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/models/{org-name}/{model-name}/versions/{version-id}/files": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], "tags": [ - "Model Version Files" + "AIPlayground" ], - "summary": "List model files in org as guest", - "description": "List files of the model version in org as guest", - "operationId": "listModeFilesInOrgAsGuest_2", + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/spec": { + "post": { + "description": "Create AI Playground for artifactType", + "operationId": "createModelArtifactsSpec", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "model-name", "in": "path", - "description": "Model name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Artifact type", "in": "path", - "description": "Version ID", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-reference", - "in": "query", - "description": "Page reference", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "summary": "Create AI Playground for artifactType", "tags": [ - "Helm Charts" + "AIPlayground" ], - "summary": "List chart versions in team as guest", - "description": "List chart versions in team as guest", - "operationId": "listHelmChartVersionsInTeamAsGuest", + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/purge": { + "delete": { + "description": "Purge Search DB for deleted artifacts", + "operationId": "purgeDeletedArtifact", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], - "maxLength": 262144, - "minLength": 0 + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "purgeArtifact" + ] + } + ], + "summary": "Purge Search DB", "tags": [ - "Helm Charts" + "Artifacts" ], - "summary": "Get chart version in team as guest", - "description": "Get chart version in team as guest", - "operationId": "getHelmChartVersionInTeamAsGuest", + "x-ssa-scopes": [ + "kas", + "purgeArtifact" + ] + } + }, + "/v2/org/{org_name}/{artifact_type}/{artifact_name}/spec": { + "delete": { + "description": "Delete AI Playground for artifactType", + "operationId": "deleteModelArtifactsSpec", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", "in": "path", - "description": "Team name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Model name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/helm-charts/{org-name}/{artifact-name}/versions": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "summary": "Delete AI Playground for artifactType", "tags": [ - "Helm Charts" + "AIPlayground" ], - "summary": "List chart versions in org as guest", - "description": "List chart versions in org as guest", - "operationId": "listHelmChartVersionsInOrgAsGuest", + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + }, + "get": { + "description": "Get AI Playground for artifactType", + "operationId": "getModelArtifactsSpec", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-name", "in": "path", - "description": "Artifact name", + "name": "org_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1 - } - }, - { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, - "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } }, { - "name": "sort-order", - "in": "query", - "description": "Sort order", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "release-type", - "in": "query", - "description": "Release Type", - "required": false, + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "summary": "Get AI Playground for artifactType", "tags": [ - "Helm Charts" + "AIPlayground" ], - "summary": "Get chart version in org as guest", - "description": "Get chart version in org as guest", - "operationId": "getHelmChartVersionInOrgAsGuest", + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "description": "Update AI Playground for artifactType", + "operationId": "updateModelArtifactsSpec", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Artifact type", "in": "path", - "description": "Artifact name", + "name": "artifact_type", "required": true, "schema": { - "type": "string", + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", + "description": "Model name", "in": "path", - "description": "Version ID", + "name": "artifact_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "summary": "Update AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] } }, - "/v1/gpus": { - "get": { - "tags": [ - "GpuByPci" + "/v2/org/{org}/files/clone": { + "put": { + "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", + "operationId": "cloneArtifactVersionFiles", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } ], - "summary": "Get all GPUs", - "description": "Get all GPU by PCI records", - "operationId": "getGpus", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "readGpuByPci" + "cloneArtifact" ] } ], + "summary": "Clone Artifact files", + "tags": [ + "Artifact File" + ], "x-ssa-scopes": [ "kas", - "readGpuByPci" + "cloneArtifact" ] } }, - "/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}": { - "get": { - "tags": [ - "GpuByPci" - ], - "summary": "Get GPUs by PCI Device ID and Vendor ID", - "description": "Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID", - "operationId": "getGpuByPciDeviceIdVendorId", + "/v2/org/{org}/files/clone/status": { + "put": { + "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", + "operationId": "cloneArtifactVersionFilesStatus", "parameters": [ { - "name": "pci-device-id", - "in": "path", - "description": "PCI Device ID", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 32, - "minLength": 0 - } - }, - { - "name": "pci-vendor-id", + "description": "Organization name", "in": "path", - "description": "PCI Vendor ID", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 32, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactFilesStatusResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, "security": [ { "ssa": [ "kas", - "readGpuByPci" + "cloneArtifact" ] } ], + "summary": "Clone Artifact files Status", + "tags": [ + "Artifact File" + ], "x-ssa-scopes": [ "kas", - "readGpuByPci" + "cloneArtifact" ] } }, - "/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params": { - "get": { - "tags": [ - "Artifact deployment parameters" - ], - "summary": "Get public artifact deployment parameters details in team as guest", - "description": "Get public artifact deployment parameters details in team as guest", - "operationId": "getPublicArtifactDeploymentParametersInTeamAsGuest", + "/v2/org/{org}/files/multipart": { + "delete": { + "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", + "operationId": "abortFileUpload", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "csp-name", "in": "path", - "description": "Cloud service provider name", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadAbortRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Abort a multipart upload for an artifact file.", "tags": [ - "Artifact deployment parameters" + "Artifact File" ], - "summary": "List public artifact deployment parameters in team as guest", - "description": "List public artifact deployment parameters in team as guest", - "operationId": "listPublicArtifactDeploymentParametersInTeamAsGuest", + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", + "operationId": "fileUpload", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", "in": "path", - "description": "Artifact name", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Initiate a multipart upload for an artifact file.", "tags": [ - "Artifact deployment parameters" + "Artifact File" ], - "summary": "Get public artifact deployment parameters details in org as guest", - "description": "Get public artifact deployment parameters details in org as guest", - "operationId": "getPublicArtifactDeploymentParametersInOrgAsGuest", + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", + "operationId": "completeFileUpload", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "csp-name", "in": "path", - "description": "Cloud service provider name", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCompleteRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] } - }, - "x-ssa-scopes": [] - } - }, - "/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params": { - "get": { + ], + "summary": "Complete a multipart upload for an artifact file.", "tags": [ - "Artifact deployment parameters" + "Artifact File" ], - "summary": "List public artifact deployment parameters in org as guest", - "description": "List public artifact deployment parameters in org as guest", - "operationId": "listPublicArtifactDeploymentParametersInOrgAsGuest", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org}/team/{team}/files/clone": { + "put": { + "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", + "operationId": "cloneArtifactVersionFiles_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", "in": "path", - "description": "Artifact type", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/deploy/csps/{csp-name}": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files", "tags": [ - "Cloud service providers" + "Artifact File" ], - "summary": "Get cloud service provider details", - "description": "Get cloud service provider details", - "operationId": "getCloudServiceProviderDetails_1", + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v2/org/{org}/team/{team}/files/clone/status": { + "put": { + "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", + "operationId": "cloneArtifactVersionFilesStatus_1", "parameters": [ { - "name": "csp-name", + "description": "Organization name", "in": "path", - "description": "Cloud service provider name", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactFilesStatusResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files Status", "tags": [ - "Artifact deployment parameters" + "Artifact File" ], - "summary": "Get public artifact deployment parameters details in team", - "description": "Get public artifact deployment parameters details in team", - "operationId": "getPublicArtifactDeploymentParametersInTeam", + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v2/org/{org}/team/{team}/files/multipart": { + "delete": { + "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", + "operationId": "abortFileUpload_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", "in": "path", - "description": "Artifact name", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Team name", "in": "path", - "description": "Cloud service provider name", + "name": "team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadAbortRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Abort a multipart upload for an artifact file.", "tags": [ - "Artifact deployment parameters" + "Artifact File" ], - "summary": "List public artifact deployment parameters in team", - "description": "List public artifact deployment parameters in team", - "operationId": "listPublicArtifactDeploymentParametersInTeam", + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", + "operationId": "fileUpload_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", "in": "path", - "description": "Artifact type", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Team name", "in": "path", - "description": "Artifact name", + "name": "team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Initiate a multipart upload for an artifact file.", "tags": [ - "Artifact deployment parameters" + "Artifact File" ], - "summary": "Get public artifact deployment parameters details in org", - "description": "Get public artifact deployment parameters details in org", - "operationId": "getPublicArtifactDeploymentParametersInOrg", + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", + "operationId": "completeFileUpload_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-name", "in": "path", - "description": "Artifact name", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "csp-name", + "description": "Team name", "in": "path", - "description": "Cloud service provider name", + "name": "team", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCompleteRequest" + } + } + }, + "required": true + }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params": { - "get": { + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Complete a multipart upload for an artifact file.", "tags": [ - "Artifact deployment parameters" + "Artifact File" ], - "summary": "List public artifact deployment parameters in org", - "description": "List public artifact deployment parameters in org", - "operationId": "listPublicArtifactDeploymentParametersInOrg", + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v2/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone": { + "put": { + "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", + "operationId": "cloneArtifactVersionFilesAsync_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Team name", "in": "path", - "description": "Artifact type", + "name": "team", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "repositories", - "recipes", - "models" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Target version ID", "in": "path", - "description": "Artifact name", + "name": "version", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "inherit-csp-parameters", - "in": "query", - "description": "Inherit CSP parameters", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files asynchronously", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "cloneArtifact" + ] } }, - "/v1/deploy/csps": { + "/v2/org/{org}/team/{team}/{type}/{name}/{version}/files": { "get": { - "tags": [ - "Cloud service providers" - ], - "summary": "List cloud service providers", - "description": "List cloud service providers", - "operationId": "listCloudServiceProviders_1", + "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", + "operationId": "downloadAllArtifactFiles_1", "parameters": [ { - "name": "page-size", + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "File path", "in": "query", - "description": "Page size", + "name": "path", "required": false, "schema": { - "type": "integer", - "maximum": 5000, - "minimum": 1 + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" } }, { - "name": "page-number", + "description": "Page size", "in": "query", - "description": "Page number - zero based index", + "name": "page-size", "required": false, "schema": { - "type": "integer", - "maximum": 10000, - "minimum": 0 + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "include-disabled", + "description": "Page number - zero based index", "in": "query", - "description": "Include disabled", + "name": "page-number", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadAllResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/v1/collections": { - "get": { + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile", + "downloadArtifactVersionFileFilterByOrgEnablement" + ] + } + ], + "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", "tags": [ - "Collections" + "Artifact File" ], - "summary": "List public collections", - "description": "List public collections", - "operationId": "listPublicCollections", + "x-ssa-scopes": [ + "downloadArtifactVersionFileFilterByOrgEnablement", + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v2/org/{org}/{type}/{name}/versions/{version}/async-clone": { + "put": { + "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", + "operationId": "cloneArtifactVersionFilesAsync", "parameters": [ { - "name": "page-size", - "in": "query", - "description": "Page size", - "required": false, + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1 + "type": "string" } }, { - "name": "page-number", - "in": "query", - "description": "Page number - zero based index", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target version ID", + "in": "path", + "name": "version", + "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files asynchronously", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "cloneArtifact" + ] } }, - "/v1/collections/{org-name}/{team-name}/{collection-name}": { + "/v2/org/{org}/{type}/{name}/{version}/files": { "get": { - "tags": [ - "Collections" - ], - "summary": "Get collection in team as guest", - "description": "Get collection details in team as guest", - "operationId": "getCollectionInTeamAsGuest", + "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", + "operationId": "downloadAllArtifactFiles", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "type", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Artifact name", "in": "path", - "description": "Team name", + "name": "name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Version ID", "in": "path", - "description": "Collection name", + "name": "version", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", + "description": "File path", "in": "query", - "description": "Resolve labels", + "name": "path", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Page size", "in": "query", - "description": "Remove unresolved labels", + "name": "page-size", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadAllResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile", + "downloadArtifactVersionFileFilterByOrgEnablement" + ] + } + ], + "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "downloadArtifactVersionFileFilterByOrgEnablement", + "kas", + "downloadArtifactVersionFile" + ] } }, - "/v1/collections/{org-name}/{team-name}/{collection-name}/artifacts/{artifact-type}": { + "/v2/recipes": { "get": { - "tags": [ - "Collections" - ], - "summary": "List collection artifacts in org and team as guest", - "description": "List collection artifacts the user can access in the specified org and team as guest", - "operationId": "listCollectionArtifactsInTeamAsGuest", + "description": "List public recipes", + "operationId": "listPublicRecipes", "parameters": [ { - "name": "org-name", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", - "in": "path", - "description": "Collection name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifact-type", - "in": "path", - "description": "Artifact type", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 - } - }, - { - "name": "order-by", - "in": "query", - "description": "Order by", - "required": false, - "schema": { - "type": "string", - "format": "UTF-8", - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "remove-unresolved-labels", - "in": "query", - "description": "Remove unresolved labels", - "required": false, - "schema": { - "type": "boolean" + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, + "summary": "List public recipes", + "tags": [ + "Resources" + ], "x-ssa-scopes": [] } }, - "/v1/collections/{org-name}/{collection-name}": { + "/v2/recipes/{org_name}/{recipe_name}": { "get": { - "tags": [ - "Collections" - ], - "summary": "Get collection in org as guest", - "description": "Get collection details in org as guest", - "operationId": "getCollectionInOrgAsGuest", + "description": "Get recipe details in org as guest", + "operationId": "getRecipeInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "collection-name", + "description": "Recipe name", "in": "path", - "description": "Collection name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "resolve-labels", - "in": "query", "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "name": "remove-unresolved-labels", - "in": "query", "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" @@ -41125,154 +47015,137 @@ } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, + "summary": "Get recipe in org as guest", + "tags": [ + "Resources" + ], "x-ssa-scopes": [] } }, - "/v1/collections/{org-name}/{collection-name}/artifacts/{artifact-type}": { + "/v2/recipes/{org_name}/{recipe_name}/versions": { "get": { - "tags": [ - "Collections" - ], - "summary": "List collection artifacts in org as guest", - "description": "List collection artifacts the user can access in the specified org as guest", - "operationId": "listCollectionArtifactsInOrgAsGuest", + "description": "List recipe versions in org as guest", + "operationId": "listRecipeVersionsInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "collection-name", "in": "path", - "description": "Collection name", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Recipe name", "in": "path", - "description": "Artifact type", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "page-size", - "in": "query", "description": "Page size", + "in": "query", + "name": "page-size", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 5000, "minLength": 0, - "minimum": 1 + "minimum": 1, + "type": "string" } }, { - "name": "page-number", - "in": "query", "description": "Page number - zero based index", + "in": "query", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, "maximum": 10000, "minLength": 0, - "minimum": 0 + "minimum": 0, + "type": "string" } }, { - "name": "order-by", + "description": "Sort order", "in": "query", - "description": "Order by", + "name": "sort-order", "required": false, "schema": { - "type": "string", - "format": "UTF-8", "enum": [ "ALPHABETIC_ASC", "ALPHABETIC_DESC", @@ -41291,4660 +47164,6123 @@ "RESOURCE_ID_ASC", "RESOURCE_ID_DESC" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "resolve-labels", - "in": "query", - "description": "Resolve labels", - "required": false, - "schema": { - "type": "boolean" + "minLength": 0, + "type": "string" } }, { - "name": "remove-unresolved-labels", + "description": "Release Type", "in": "query", - "description": "Remove unresolved labels", + "name": "release-type", "required": false, "schema": { - "type": "boolean" + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "500": { - "description": "Internal Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/RecipeVersionListResponse" } } - } - } - }, - "x-ssa-scopes": [] - } - }, - "/v1/artifact-registry/org/{org}/workflows/{workflowId}": { - "get": { - "tags": [ - "Workflows" - ], - "summary": "Get workflow status", - "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization.", - "operationId": "getWorkflowStatus", - "parameters": [ - { - "name": "org", - "in": "path", - "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } + }, + "description": "OK" }, - { - "name": "workflowId", - "in": "path", - "description": "Workflow identifier", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 512, - "minLength": 0 - } - } - ], - "responses": { "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "cloneArtifact" - ] - } + "summary": "List recipe versions in org as guest", + "tags": [ + "Resource Versions" ], - "x-ssa-scopes": [ - "kas", - "cloneArtifact" - ] + "x-ssa-scopes": [] } }, - "/v1/artifact-registry/org/{org}/team/{team}/workflows/{workflowId}": { + "/v2/recipes/{org_name}/{recipe_name}/versions/{version_id}": { "get": { - "tags": [ - "Workflows" - ], - "summary": "Get team-scoped workflow status", - "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team.", - "operationId": "getWorkflowStatusForTeam", + "description": "Get recipe version in org as guest", + "operationId": "getRecipeVersionInOrgAsGuest", "parameters": [ { - "name": "org", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team", + "description": "Recipe name", "in": "path", - "description": "Team name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "workflowId", + "description": "Version ID", "in": "path", - "description": "Workflow identifier", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "cloneArtifact" - ] - } + "summary": "Get recipe version in org as guest", + "tags": [ + "Resource Versions" ], - "x-ssa-scopes": [ - "kas", - "cloneArtifact" - ] + "x-ssa-scopes": [] } }, - "/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys": { + "/v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files": { "get": { - "tags": [ - "Encryption Keys" - ], - "summary": "List encryption keys in org/team", - "description": "List encryption keys in org/team", - "operationId": "listKeysInTeam", + "description": "List files of the recipe version in org as guest", + "operationId": "listModeFilesInOrgAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Recipe name", "in": "path", - "description": "Team name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - } - ], - "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "500": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - } - }, - "/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id}": { - "get": { - "tags": [ - "Encryption Keys" - ], - "summary": "List artifacts for encryption key in org/team", - "description": "List artifacts for encryption key in org/team", - "operationId": "listArtifactsForKeyInTeam", - "parameters": [ { - "name": "org-name", + "description": "Version ID", "in": "path", - "description": "Organization name", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", - "description": "Team name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "key-id", - "in": "path", - "description": "Key ID", - "required": true, + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 1024, + "minLength": 0, + "type": "string" } }, { - "name": "artifactType", + "description": "Page number - zero based index", "in": "query", - "description": "Artifact type", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", - "default": "MODEL", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + "summary": "List recipe files in org as guest", "tags": [ - "Encryption Keys" + "Resource Version Files endpoints" ], - "summary": "Revoke encryption key in org/team", - "description": "Revoke encryption key and disassociate from all artifacts in org/team", - "operationId": "deleteKeyFromTeam", + "x-ssa-scopes": [] + } + }, + "/v2/recipes/{org_name}/{team_name}/{recipe_name}": { + "get": { + "description": "Get recipe details in team as guest", + "operationId": "getRecipeInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "key-id", + "description": "Recipe name", "in": "path", - "description": "Key ID", + "name": "recipe_name", "required": true, "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { - "202": { - "description": "Accepted", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + "$ref": "#/components/schemas/RecipeResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "Get recipe in team as guest", + "tags": [ + "Resources" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/artifact-registry/org/{org-name}/encryption-keys": { + "/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions": { "get": { - "tags": [ - "Encryption Keys" - ], - "summary": "List encryption keys in org", - "description": "List encryption keys in org", - "operationId": "listKeysInOrg", + "description": "List recipe versions in team as guest", + "operationId": "listRecipeVersionsInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "List recipe versions in team as guest", + "tags": [ + "Resource Versions" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id}": { + "/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}": { "get": { - "tags": [ - "Encryption Keys" - ], - "summary": "List artifacts for encryption key in org", - "description": "List artifacts for encryption key in org", - "operationId": "listArtifactsForKeyInOrg", + "description": "Get recipe version in team as guest", + "operationId": "getRecipeVersionInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "key-id", + "description": "Team name", "in": "path", - "description": "Key ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", - "in": "query", - "description": "Artifact type", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "string", "format": "UTF-8", - "default": "MODEL", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "delete": { + "summary": "Get recipe version in team as guest", "tags": [ - "Encryption Keys" + "Resource Versions" ], - "summary": "Revoke encryption key in org", - "description": "Revoke encryption key and disassociate from all artifacts in org", - "operationId": "deleteKeyFromOrg", + "x-ssa-scopes": [] + } + }, + "/v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the recipe version in team as guest", + "operationId": "listModeFilesInTeamAsGuest", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "key-id", + "description": "Team name", "in": "path", - "description": "Key ID", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 - } - } - ], - "responses": { - "202": { - "description": "Accepted", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" - } - } + "minLength": 0, + "type": "string" } }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" } }, - "500": { - "description": "Internal Error", + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/RecipeVersionFileListResponse" } } - } - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "x-ssa-scopes": [ - "kas" - ] - } - }, - "/health": { - "get": { - "tags": [ - "Health" - ], - "summary": "Web Service Health Status", - "description": "Used to check the health status of the web service only", - "operationId": "status", - "responses": { + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, + "summary": "List recipe files in team as guest", + "tags": [ + "Resource Version Files endpoints" + ], "x-ssa-scopes": [] } }, - "/health/all": { + "/v2/resources": { "get": { - "tags": [ - "Health" - ], - "summary": "All Service Health Status", - "description": "Used to get health status of all services", - "operationId": "statusDetails", + "description": "List public recipes", + "operationId": "listPublicRecipes_1", "parameters": [ { - "name": "showDetails", + "description": "Page size", "in": "query", - "description": "boolean value to indicating to show details or not", + "name": "page-size", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "secret", + "description": "Page number - zero based index", "in": "query", - "description": "secret value that validates the call in order to show details", + "name": "page-number", "required": false, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 512, - "minLength": 0 + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "x-ssa-scopes": [] - } - }, - "/health/**": { - "get": { + "summary": "List public recipes", "tags": [ - "Health" + "Resources" ], - "summary": "Get Health Information", - "description": "Get Health Information about this service", - "operationId": "getHealth", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HealthComponent" - } - } - } - } - }, "x-ssa-scopes": [] } }, - "/v1/org/{orgName}/{artifactType}/{artifactName}/purge": { - "delete": { - "tags": [ - "Artifacts" - ], - "summary": "Purge Search DB", - "description": "Purge Search DB for deleted artifacts", - "operationId": "purgeDeletedArtifact", + "/v2/resources/{org_name}/{recipe_name}": { + "get": { + "description": "Get recipe details in org as guest", + "operationId": "getRecipeInOrgAsGuest_1", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 - } - }, - { - "name": "artifactType", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifactName", + "description": "Recipe name", "in": "path", - "description": "Artifact name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "purgeArtifact" - ] - } + "summary": "Get recipe in org as guest", + "tags": [ + "Resources" ], - "x-ssa-scopes": [ - "kas", - "purgeArtifact" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/purge": { - "delete": { - "tags": [ - "Artifacts" - ], - "summary": "Purge Search DB", - "description": "Purge Search DB for deleted artifacts", - "operationId": "purgeDeletedArtifact_1", + "/v2/resources/{org_name}/{recipe_name}/versions": { + "get": { + "description": "List recipe versions in org as guest", + "operationId": "listRecipeVersionsInOrgAsGuest_1", "parameters": [ { - "name": "orgName", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "teamName", + "description": "Recipe name", "in": "path", - "description": "Team name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifactType", - "in": "path", - "description": "Artifact type", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { "enum": [ - "helm-charts", - "endpoints", - "agents", - "blueprints", - "apis", - "playbooks", - "skills" + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" ], + "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifactName", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, "schema": { - "type": "string", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "purgeArtifact" - ] - } + "summary": "List recipe versions in org as guest", + "tags": [ + "Resource Versions" ], - "x-ssa-scopes": [ - "kas", - "purgeArtifact" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}": { - "delete": { - "tags": [ - "Artifact Versions" - ], - "summary": "Delete a artifact version in org", - "description": "Delete a artifact version in org", - "operationId": "deleteArtifactVersionInOrg", + "/v2/resources/{org_name}/{recipe_name}/versions/{version_id}": { + "get": { + "description": "Get recipe version in org as guest", + "operationId": "getRecipeVersionInOrgAsGuest_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", - "required": true, - "schema": { - "type": "string", - "format": "UTF-8", - "maxLength": 255, - "minLength": 0 - } - }, - { - "name": "artifact-type", "in": "path", - "description": "Artifact type", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "maxLength": 262144, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", + "description": "Recipe name", "in": "path", - "description": "Artifact name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "version-id", - "in": "path", "description": "Version ID", + "in": "path", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "deleteArtifactVersion" - ] - } + "summary": "Get recipe version in org as guest", + "tags": [ + "Resource Versions" ], - "x-ssa-scopes": [ - "deleteArtifactVersion", - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}": { - "delete": { - "tags": [ - "Artifact Versions" - ], - "summary": "Delete a artifact version in team", - "description": "Delete a artifact version in team", - "operationId": "deleteArtifactVersionInTeam", + "/v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the recipe version in org as guest", + "operationId": "listModeFilesInOrgAsGuest_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", + "description": "Recipe name", "in": "path", - "description": "Team name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "artifact-type", + "description": "Version ID", "in": "path", - "description": "Artifact type", + "name": "version_id", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "maxLength": 262144, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "artifact-name", - "in": "path", - "description": "Artifact name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "name": "version-id", - "in": "path", - "description": "Version ID", - "required": true, + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 262144, - "minLength": 0 + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } ], "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas", - "deleteArtifactVersion" - ] - } + "summary": "List recipe files in org as guest", + "tags": [ + "Resource Version Files endpoints" ], - "x-ssa-scopes": [ - "deleteArtifactVersion", - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key": { - "delete": { - "tags": [ - "Models" - ], - "summary": "Disassociate encryption key from model in team", - "description": "Disassociate encryption key from model in team and mark it for offline deletion", - "operationId": "disassociateKeyFromModelInTeam", + "/v2/resources/{org_name}/{team_name}/{recipe_name}": { + "get": { + "description": "Get recipe details in team as guest", + "operationId": "getRecipeInTeamAsGuest_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "team-name", - "in": "path", "description": "Team name", + "in": "path", + "name": "team_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", "maxLength": 255, - "minLength": 0 + "minLength": 0, + "type": "string" } }, { - "name": "model-name", + "description": "Recipe name", "in": "path", - "description": "Model name", + "name": "recipe_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { - "202": { - "description": "Accepted", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + "$ref": "#/components/schemas/RecipeResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "Get recipe in team as guest", + "tags": [ + "Resources" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } }, - "/v1/org/{org-name}/models/{model-name}/encryption-key": { - "delete": { - "tags": [ - "Models" - ], - "summary": "Disassociate encryption key from model in org", - "description": "Disassociate encryption key from model in org and mark it for offline deletion", - "operationId": "disassociateKeyFromModelInOrg", + "/v2/resources/{org_name}/{team_name}/{recipe_name}/versions": { + "get": { + "description": "List recipe versions in team as guest", + "operationId": "listRecipeVersionsInTeamAsGuest_1", "parameters": [ { - "name": "org-name", - "in": "path", "description": "Organization name", + "in": "path", + "name": "org_name", "required": true, "schema": { - "type": "string", "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "name": "model-name", - "in": "path", - "description": "Model name", - "required": true, + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, "schema": { - "type": "string", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], "format": "UTF-8", - "maxLength": 255, - "minLength": 0 + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], "responses": { - "202": { - "description": "Accepted", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + "$ref": "#/components/schemas/RecipeVersionListResponse" } } - } + }, + "description": "OK" }, "401": { - "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Unauthorized" }, "403": { - "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Forbidden" }, "404": { - "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Not Found" }, "429": { - "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Too many requests" }, "500": { - "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - } + }, + "description": "Internal Error" } }, - "security": [ - { - "ssa": [ - "kas" - ] - } + "summary": "List recipe versions in team as guest", + "tags": [ + "Resource Versions" ], - "x-ssa-scopes": [ - "kas" - ] + "x-ssa-scopes": [] } - } - }, - "components": { - "schemas": { - "AsyncCloneArtifactVersionFilesRequest": { - "type": "object", - "description": "Request to asynchronously clone artifact version files. Artifact type, target artifact name, version, org, and team are provided via URL path parameters.", - "properties": { - "sourceArtifact": { - "$ref": "#/components/schemas/CloneableArtifact", - "description": "Cloneable Artifact Parameters object" - }, - "uploadPending": { - "type": "boolean", - "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'." - } - }, - "required": [ - "sourceArtifact" - ] - }, - "CloneableArtifact": { - "type": "object", - "description": "Cloneable Artifact Parameters object", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the artifact" - }, - "org": { - "type": "string", - "description": "Name of the org that the artifact belongs to" - }, - "team": { - "type": "string", - "description": "Name of the team that the artifact belongs to" - }, - "version": { - "type": "string", - "description": "ID of the version or tag" - } - }, - "required": [ - "name", - "org", - "version" - ] - }, - "RequestStatus": { - "type": "object", - "description": "Request status information", - "properties": { - "statusCode": { - "type": "string", - "description": "Describes response status reported by the server.", - "enum": [ - "UNKNOWN", - "SUCCESS", - "UNAUTHORIZED", - "PAYMENT_REQUIRED", - "FORBIDDEN", - "TIMEOUT", - "EXISTS", - "NOT_FOUND", - "INTERNAL_ERROR", - "INVALID_REQUEST", - "INVALID_REQUEST_VERSION", - "INVALID_REQUEST_DATA", - "METHOD_NOT_ALLOWED", - "CONFLICT", - "UNPROCESSABLE_ENTITY", - "TOO_MANY_REQUESTS", - "INSUFFICIENT_STORAGE", - "SERVICE_UNAVAILABLE" - ] - }, - "statusDescription": { - "type": "string", - "description": "Status description" - }, - "requestId": { - "type": "string", - "description": "Request ID" - }, - "serverId": { - "type": "string", - "description": "Server ID" - } - } - }, - "Response": { - "type": "object", - "properties": { - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus", - "description": "Request status information" - } - } - }, - "WorkflowStatusUrlResponse": { - "type": "object", - "description": "Response containing workflow status URL and ID", - "properties": { - "statusUrl": { - "type": "string", - "description": "URL to check the workflow status" - }, - "workflowId": { - "type": "string", - "description": "ID of the workflow" - }, - "requestStatus": { - "$ref": "#/components/schemas/RequestStatus", - "description": "Request status information" - } - } - }, - "MultipartUploadCompleteRequest": { - "type": "object", - "description": "Request body for completing a multipart upload for artifacts", - "properties": { - "name": { - "type": "string", - "description": "Name of the artifact" - }, - "version": { - "type": "string", - "description": "Artifact version" - }, - "artifactType": { - "type": "string", - "description": "Type of artifact" - }, - "filePath": { - "type": "string", - "description": "The file path for the artifact upload" - }, - "uploadID": { - "type": "string", - "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema" - }, - "sha256": { - "type": "string", - "description": "Base64 encoded sha256 hash of the entire file" - } - }, - "required": [ - "artifactType", - "filePath", - "name", - "sha256", - "uploadID", - "version" - ] - }, - "CloneArtifactVersionFilesRequest": { - "type": "object", - "description": "Request to clone artifact version files", - "properties": { - "artifactType": { - "type": "string", - "description": "Artifact type", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ] - }, - "sourceArtifact": { - "$ref": "#/components/schemas/CloneableArtifact", - "description": "Cloneable Artifact Parameters object" - }, - "targetArtifact": { - "$ref": "#/components/schemas/CloneableArtifact", - "description": "Cloneable Artifact Parameters object" - }, - "uploadPending": { - "type": "boolean", - "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'." - } - }, - "required": [ - "artifactType", - "sourceArtifact", - "targetArtifact" - ] - }, - "AIPlaygroundUpdateRequest": { - "type": "object", - "description": "Request to update an AI Playground config", - "properties": { - "nvcfFunctionId": { - "type": "string", - "description": "NVCF function id for the model playground" - }, - "attributes": { - "type": "string", - "description": "Metadata json string" - }, - "openAPISpec": { - "type": "string", - "description": "OpenAPI specification for this model" - } - } - }, - "AIPlaygroundResponse": { - "type": "object", - "description": "Request to fetch an AI Playground config", - "properties": { - "artifactName": { - "type": "string", - "description": "Unique name of the model" - }, - "artifactType": { - "type": "string", - "description": "ArtifactTypeEnum of the artifact" - }, - "namespace": { - "type": "string", - "description": "org/team of the model" - }, - "nvcfFunctionId": { - "type": "string", - "description": "NVCF function id for the model playground" - }, - "attributes": { - "type": "string", - "description": "Metadata json string" - }, - "openAPISpec": { - "type": "string", - "description": "OpenAPI specification for this model" - }, - "createdDate": { - "type": "string", - "description": "Creation date in ISO-8601 format", - "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z" - }, - "updatedDate": { - "type": "string", - "description": "Updated date in ISO-8601 format", - "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z" - } - } - }, - "ArtifactPublishRequest": { - "type": "object", - "description": "Request to publish an artifact", - "properties": { - "canGuestPull": { - "type": "boolean" - }, - "canPublicList": { - "type": "boolean" - }, - "isPublic": { - "type": "boolean" - }, - "productNames": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" - } - }, - "accessType": { - "type": "string", - "enum": [ - "LISTED", - "EXCLUSIVE", - "NOT_LISTED" - ] - }, - "licenseTerms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseMetadata" + }, + "/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}": { + "get": { + "description": "Get recipe version in team as guest", + "operationId": "getRecipeVersionInTeamAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } - } - } - }, - "ConfiguredLicenseTerm": { - "type": "object", - "description": "License information for the artifact", - "properties": { - "artifactType": { - "type": "string", - "description": "Artifact type", - "example": "model", - "maxLength": 15, - "pattern": "^[\\s\\S]*$" }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseTag" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "generatedHtml": { - "type": "string", - "description": "Generated html", - "example": "

GOVERNING HOSTING TERMS: ...

", - "maxLength": 9999, - "pattern": "^[\\s\\S]*$" - } - } - }, - "ConfiguredLicenseTerms": { - "type": "object", - "description": "License information for the artifact", - "properties": { - "hosting": { - "$ref": "#/components/schemas/ConfiguredLicenseTerm", - "description": "License information for the artifact" - }, - "download": { - "$ref": "#/components/schemas/ConfiguredLicenseTerm", - "description": "License information for the artifact" - } - } - }, - "LicenseMetadata": { - "type": "object", - "description": "License information for the artifact", - "properties": { - "licenseId": { - "type": "string", - "description": "License ID", - "example": "NVIDIA proprietary", - "maxLength": 100, - "pattern": "^[\\s\\S]*$" - }, - "licenseVersion": { - "type": "string", - "description": "License version ID", - "example": "v1.0", - "maxLength": 100, - "pattern": "^[\\s\\S]*$" - }, - "needsAcceptance": { - "type": "boolean", - "description": "Indicator if user needs to accept this license" - }, - "governingTerms": { - "type": "string", - "description": "Comprehensive terms and links related to the license", - "example": "

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

", - "maxLength": 1000, - "pattern": "^[\\s\\S]*$" - }, - "configuredLicenseTerms": { - "$ref": "#/components/schemas/ConfiguredLicenseTerms", - "description": "License information for the artifact" - } - } - }, - "LicenseTag": { - "type": "object", - "description": "License tag information for individual term", - "properties": { - "key": { - "type": "string", - "description": "Key identifier for the tag", - "example": "nv-open-model", - "maxLength": 100, - "pattern": "^[\\s\\S]*$" - }, - "category": { - "type": "string", - "description": "Category of the tag", - "example": "terms", - "maxLength": 100, - "pattern": "^[\\s\\S]*$" - }, - "tag": { - "type": "string", - "description": "License tag name", - "example": "Model Agreement", - "maxLength": 100, - "pattern": "^[\\s\\S]*$" - }, - "url": { - "type": "string", - "description": "Link to the hosted license", - "example": "https://www.nvidia.com/.../nvidia-open-model-agreement/", - "maxLength": 1000, - "pattern": "^[\\s\\S]*$" - }, - "label": { - "type": "string", - "description": "License Label", - "example": "NVIDIA Open Model Agreement", - "maxLength": 100, - "pattern": "^[\\s\\S]*$" - } - } - }, - "UpdateReleaseTypeRequest": { - "type": "object", - "description": "Request to update release type of an artifact version", - "properties": { - "version": { - "type": "string", - "description": "Artifact version" - }, - "releaseType": { - "type": "string", - "description": "Release type enum for the artifact version in the product lifecycle.", - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ] - } - }, - "required": [ - "version" - ] - }, - "ArtifactAttribute": { - "type": "object", - "description": "Attribute on the artifact", - "properties": { - "key": { - "type": "string", - "maxLength": 255, - "pattern": "[a-zA-Z0-9]+" - }, - "value": { - "type": "string", - "maxLength": 255 - } - } - }, - "ArtifactUpdateRequest": { - "type": "object", - "description": "Properties for the artifact to update", - "properties": { - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" }, - "description": { - "type": "string", - "description": "Description of the artifact" - }, - "shortDescription": { - "type": "string", - "description": "Short description of the artifact", - "maxLength": 255 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 128, - "minLength": 2 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "builtBy": { - "type": "string", - "description": "organization that built the artifact", - "maxLength": 255 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "publisher": { - "type": "string", - "description": "organization that published the artifact", - "maxLength": 255 + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe version in team as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the recipe version in team as guest", + "operationId": "listModeFilesInTeamAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "bias": { - "type": "string", - "description": "Text describing bias in the model" + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "explainability": { - "type": "string", - "description": "Text describing explainability for this model" + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "privacy": { - "type": "string", - "description": "Text describing the privacy for this model" + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } }, - "safetyAndSecurity": { - "type": "string", - "description": "Text for describing the safety and security in the model" + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } }, - "licenseTerms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseMetadata" + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } - } - }, - "CollectionPublishRequest": { - "type": "object", - "description": "Request to publish a collection", - "properties": { - "canGuestPull": { - "type": "boolean" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" }, - "canPublicList": { - "type": "boolean" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "isPublic": { - "type": "boolean" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "productNames": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe files in team as guest", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}": { + "get": { + "description": "List public artifacts", + "operationId": "listPublicArtifacts", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "accessType": { - "type": "string", - "enum": [ - "LISTED", - "EXCLUSIVE", - "NOT_LISTED" - ] + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } } - } - }, - "MultipartUploadCreateRequest": { - "type": "object", - "description": "Request body for creating a multipart upload for artifacts", - "properties": { - "name": { - "type": "string", - "description": "Name of the artifact" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" }, - "version": { - "type": "string", - "description": "Artifact version" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "artifactType": { - "type": "string", - "description": "Type of artifact" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "filePath": { - "type": "string", - "description": "The file path for the artifact upload" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "size": { - "type": "integer", - "format": "int64", - "description": "total size of the artifact, in bytes" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "customPartSize": { - "type": "integer", - "format": "int64", - "description": "Custom chunk size of the file to be uploaded, in bytes. should be >= 5MB and <= 500MB. default is 500 in MB." + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public artifacts", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/org/{org_name}/team/{team_name}/{artifact_name}/collections": { + "get": { + "description": "List artifact collections the user can access in the specified org and team as guest", + "operationId": "listArtifactCollectionsInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "uploadID": { - "type": "string", - "description": "Upload id of an already initiated Multipart upload" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "partNumberList": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "sha256": { - "type": "string", - "description": "Base64 encoded sha256 hash of the artifact file to be uploaded" - } - }, - "required": [ - "artifactType", - "filePath", - "name", - "size", - "version" - ] - }, - "AIPlaygroundCreateRequest": { - "type": "object", - "description": "Request to create a new AI Playground config", - "properties": { - "artifactName": { - "type": "string", - "description": "Unique name of the model" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "nvcfFunctionId": { - "type": "string", - "description": "NVCF function id for the model playground" + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "attributes": { - "type": "string", - "description": "Metadata json string" + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } }, - "openAPISpec": { - "type": "string", - "description": "OpenAPI specification for this model" + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } } - }, - "required": [ - "artifactName", - "nvcfFunctionId" - ] - }, - "DeploymentArtifactParameters": { - "type": "object", - "description": "Deployment Artifact Parameters object", - "properties": { - "artifactType": { - "type": "string", - "description": "Artifact type", - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ] - }, - "name": { - "type": "string", - "description": "Unique name of the artifact" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" }, - "displayName": { - "type": "string", - "description": "Display name of the artifact" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "orgName": { - "type": "string", - "description": "Name of the org that the artifact belongs to" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "teamName": { - "type": "string", - "description": "Name of the team that the artifact belongs to" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "versionId": { - "type": "string", - "description": "ID of the version or tag" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "filePath": { - "type": "string", - "description": "Path to a file in an artifact version" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "name", - "orgName" - ] - }, - "DeploymentCpuParameters": { - "type": "object", - "description": "Deployment CPU Parameters object", - "properties": { - "count": { - "type": "integer", - "format": "int64", - "description": "Total count of CPUs" - } - } - }, - "DeploymentGpuParameters": { - "type": "object", - "description": "Deployment GPU Parameters object", - "properties": { - "count": { - "type": "integer", - "format": "int64", - "description": "Total count of GPUs" + "summary": "List artifact collections in org and team as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/org/{org_name}/{artifact_name}/collections": { + "get": { + "description": "List artifact collections the user can access in the specified org as guest", + "operationId": "listArtifactCollectionsInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "type": { - "type": "string", - "description": "GPU Type" - } - } - }, - "DeploymentMemoryParameters": { - "type": "object", - "description": "Deployment Memory Parameters object", - "properties": { - "capacityInGB": { - "type": "integer", - "format": "int64", - "description": "Capacity in GB" - } - } - }, - "DeploymentStorageParameters": { - "type": "object", - "description": "Deployment Storage Parameters object", - "properties": { - "capacityInGB": { - "type": "integer", - "format": "int64", - "description": "Capacity in GB" - } - } - }, - "DeploymentUrlCreateRequest": { - "type": "object", - "description": "Request to create a new deployment url", - "properties": { - "cpu": { - "$ref": "#/components/schemas/DeploymentCpuParameters", - "description": "Deployment CPU Parameters object" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "gpu": { - "$ref": "#/components/schemas/DeploymentGpuParameters", - "description": "Deployment GPU Parameters object" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "memory": { - "$ref": "#/components/schemas/DeploymentMemoryParameters", - "description": "Deployment Memory Parameters object" + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } }, - "storage": { - "$ref": "#/components/schemas/DeploymentStorageParameters", - "description": "Deployment Storage Parameters object" + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } }, - "container": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "model": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } }, - "resource": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } } - } - }, - "DeploymentParametersCreateRequest": { - "type": "object", - "description": "Request to create a new deployment parameters", - "properties": { - "cpu": { - "$ref": "#/components/schemas/DeploymentCpuParameters", - "description": "Deployment CPU Parameters object" - }, - "gpu": { - "$ref": "#/components/schemas/DeploymentGpuParameters", - "description": "Deployment GPU Parameters object" - }, - "memory": { - "$ref": "#/components/schemas/DeploymentMemoryParameters", - "description": "Deployment Memory Parameters object" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" }, - "storage": { - "$ref": "#/components/schemas/DeploymentStorageParameters", - "description": "Deployment Storage Parameters object" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "container": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "model": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "resource": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" - } - } - }, - "AcceptArtifactLicenseRequest": { - "type": "object", - "description": "Request body to accept an org-scoped artifact license.", - "properties": { - "licenseId": { - "type": "string", - "description": "License identifier to accept (must match a licenseId from the artifact's published licenseTerms).", - "example": "NVIDIA Proprietary", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "licenseVersion": { - "type": "string", - "description": "License version to accept (must match licenseVersion for that license on the artifact).", - "example": 1, - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$" - } - }, - "required": [ - "licenseId", - "licenseVersion" - ] - }, - "ArtifactFileChecksumToValidate": { - "type": "object", - "description": "Artifact file checksum object in request to validate artifact file checksum exists or not", - "properties": { - "sha256": { - "type": "string", - "description": "Base64 encoded sha256 hash of the artifact file" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "sha256" - ] - }, - "ArtifactFilesChecksumExistsRequest": { - "type": "object", - "description": "File checksums", - "properties": { - "files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactFileChecksumToValidate" + "summary": "List artifact collections in org as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}": { + "get": { + "description": "Get artifact details in org as guest", + "operationId": "getArtifactInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } - } - } - }, - "ArtifactCreateRequest": { - "type": "object", - "description": "Properties for the artifact to create", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the artifact", - "maxLength": 250, - "minLength": 1, - "pattern": "^[a-z][a-z\\d._-]*$" }, - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } }, - "description": { - "type": "string", - "description": "Description of the artifact" - }, - "shortDescription": { - "type": "string", - "description": "Short description of the artifact", - "maxLength": 255 - }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 128, - "minLength": 2 - }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 - }, - "builtBy": { - "type": "string", - "description": "organization that built the artifact", - "maxLength": 255 - }, - "publisher": { - "type": "string", - "description": "organization that published the artifact", - "maxLength": 255 + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" }, - "bias": { - "type": "string", - "description": "Text describing bias in the model" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "explainability": { - "type": "string", - "description": "Text describing explainability for this model" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "privacy": { - "type": "string", - "description": "Text describing the privacy for this model" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "safetyAndSecurity": { - "type": "string", - "description": "Text for describing the safety and security in the model" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "licenseTerms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseMetadata" - } + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "name", - "shortDescription" - ] - }, - "CustomMetric": { - "type": "object", - "description": "Custom metrics", - "properties": { - "key": { - "type": "string", - "maxLength": 255 + "summary": "Get artifact in org as guest", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/latest-version/zip": { + "get": { + "deprecated": true, + "description": "Download all files of an org artifact's latest version in a zip as guest", + "operationId": "downloadAllFilesOfLatestVersionInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "value": { - "type": "string", - "maxLength": 255 - } - } - }, - "CustomMetricGroup": { - "type": "object", - "description": "Defines the group of custom metrics.", - "properties": { - "name": { - "type": "string", - "maxLength": 255 + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomMetric" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } - } - }, - "RecipeVersionCreateRequest": { - "type": "object", - "description": "Properties for the recipe version to be created", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "Deprecated: Please use version instead. Unique ID of the version", - "maximum": 2147483647, - "minimum": 1 - }, - "versionId": { - "type": "string", - "description": "Unique version id. Please use this instead of 'id'", - "maxLength": 255, - "pattern": "[^/]+" - }, - "description": { - "type": "string", - "description": "Description of the recipe version" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "accuracyReached": { - "type": "number", - "format": "float", - "description": "Accuracy this recipe reached", - "maximum": 100, - "minimum": 0 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "numberOfEpochs": { - "type": "integer", - "format": "int64", - "description": "Number of epochs this recipe trained", - "minimum": 0 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "gpuModel": { - "type": "string", - "description": "GPU model and memory", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "batchSize": { - "type": "integer", - "format": "int64", - "description": "Batch size this recipe was trained with", - "minimum": 0 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "memoryFootprint": { - "type": "string", - "description": "Recipe size/memory footprint for inference", - "maxLength": 255 + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download all files of an org artifact's latest version in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the artifact version in org as guest", + "operationId": "listArtifactFilesInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "setup": { - "type": "string", - "description": "Text describing recipe setup" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "quickStartGuide": { - "type": "string", - "description": "Text with a guide to getting started" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "performance": { - "type": "string", - "description": "Text describing performance of the recipe results" + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "releaseNotes": { - "type": "string", - "description": "Text describing this release" + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } }, - "customMetrics": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomMetricGroup" + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" } }, - "otherContents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } - } - }, - "Dataset": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the dataset", - "maxLength": 255 - }, - "link": { - "type": "string", - "description": "Link to the dataset", - "maxLength": 255 + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" }, - "license": { - "type": "string", - "description": "License of the dataset", - "maxLength": 255 - } - } - }, - "RecipeCreateRequest": { - "type": "object", - "description": "Properties for the recipe to create", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the recipe", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-z][a-z\\d._-]*$" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "trainingFramework": { - "type": "string", - "enum": [ - "TensorFlow", - "Caffe2", - "CNTK", - "Torch", - "PyTorch", - "MXNet", - "Keras", - "Other", - "TransferLearningToolkit", - "TensorFlow2" - ] + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "modelFormat": { - "type": "string", - "description": "Format of the model this recipe produces", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "publicDatasetUsed": { - "$ref": "#/components/schemas/Dataset" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List artifact files in org as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files/**": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in org as guest", + "operationId": "downloadArtifactFileInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, "type": "string" } }, - "description": { - "type": "string", - "description": "Description of the recipe" - }, - "shortDescription": { - "type": "string", - "description": "Short description of the recipe", - "maxLength": 255 - }, - "setup": { - "type": "string", - "description": "Text describing recipe setup" - }, - "quickStartGuide": { - "type": "string", - "description": "Text with a guide to getting started" - }, - "performance": { - "type": "string", - "description": "Text describing performance of the recipe results" - }, - "advanced": { - "type": "string", - "description": "Text for describing advanced information" - }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 64, - "minLength": 2 + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "precision": { - "type": "string", - "enum": [ - "FP16", - "FP32", - "INT8", - "FPBOTH", - "OTHER", - "ALL" - ] + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "application": { - "type": "string", - "enum": [ - "CLASSIFICATION", - "OBJECT_DETECTION", - "SEGMENTATION", - "TRANSLATION", - "TEXT_TO_SPEECH", - "RECOMMENDER", - "SENTIMENT", - "NLP", - "KUBEFLOW_PIPELINE", - "OTHER", - "SPEAKER_VERIFICATION", - "PUNCTUATION_AND_CAPITALIZATION", - "DIALOG_STATE_TRACKING", - "SPEAKER_DIARIZATION", - "SPEAKER_RECOGNITION", - "SPEECH_SYNTHESIS", - "VOICE_ACTIVITY_DETECTION", - "SPEECH_RECOGNITION", - "LANGUAGE_MODELING", - "NAMED_ENTITY_RECOGNITION", - "TEXT_CLASSIFICATION", - "TEXT_PROCESSING", - "QUESTION_ANSWERING", - "CONTENT_GENERATION" - ] + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "builtBy": { - "type": "string", - "description": "organization that built the recipe", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "publisher": { - "type": "string", - "description": "organization that published the recipe", - "maxLength": 255 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "licenseTerms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseMetadata" - } + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "application", - "modelFormat", - "name", - "precision", - "publicDatasetUsed", - "shortDescription", - "trainingFramework" - ] - }, - "EncryptionKey": { - "type": "object", - "description": "Customer Managed Key shard configuration for the model", - "properties": { - "useExistingKey": { - "type": "boolean", - "description": "Whether to use an existing customer key shard or should a new one be created" + "summary": "Download artifact file in org as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files/**/zip/download": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in org as guest as zip", + "operationId": "downloadArtifactFileInOrgAsGuestAsZip", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "encryptionKeyId": { - "type": "string", - "description": "ID of the existing customer key shard to use" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "description": { - "type": "string", - "description": "Description for a new customer key shard" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } - }, - "required": [ - "useExistingKey" - ] - }, - "ModelCreateRequest": { - "type": "object", - "description": "Properties for the models to be created", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the model", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-z][a-z\\d._-]*$" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" }, - "description": { - "type": "string", - "description": "Description of the model" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "ownerName": { - "type": "string", - "description": "Name of the user who owns this model", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "framework": { - "type": "string", - "description": "Framework used to train this model", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "modelFormat": { - "type": "string", - "description": "Format of the model", - "maxLength": 255 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "publicDatasetUsed": { - "$ref": "#/components/schemas/Dataset" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download artifact file in org as guest as zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/signature": { + "get": { + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", + "operationId": "getArtifactVersionSignatureAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } }, - "shortDescription": { - "type": "string", - "description": "Short description of the model", - "maxLength": 255 + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 64, - "minLength": 2 + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" }, - "precision": { - "type": "string", - "description": "Precision this model was trained with", - "maxLength": 255 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "application": { - "type": "string", - "description": "Application of the model", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "builtBy": { - "type": "string", - "description": "organization that built the repository", - "maxLength": 255 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "publisher": { - "type": "string", - "description": "organization that published the repository", - "maxLength": 255 + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/zip": { + "get": { + "deprecated": true, + "description": "Download all files of an org artifact in a zip as guest", + "operationId": "downloadAllFilesInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "hasPlayground": { - "type": "boolean", - "description": "indicate if the Model has AI Playground configured" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "isPlaygroundEnabled": { - "type": "boolean", - "description": "indicate if AI Playground is enabled in the catalog" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "bias": { - "type": "string", - "description": "Text describing bias in the model" + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "explainability": { - "type": "string", - "description": "Text describing explainability for this model" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "privacy": { - "type": "string", - "description": "Text describing the privacy for this model" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "safetyAndSecurity": { - "type": "string", - "description": "Text for describing the safety and security in the model" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "licenseTerms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseMetadata" - } + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "encryptionKey": { - "$ref": "#/components/schemas/EncryptionKey", - "description": "Customer Managed Key shard configuration for the model" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "framework", - "name", - "precision" - ] - }, - "MetaData": { - "type": "object", - "properties": { - "key": { - "type": "string", - "maxLength": 255 - }, - "value": { - "type": "string", - "maxLength": 255 - } - } - }, - "ModelVersionCreateRequest": { - "type": "object", - "description": "Properties for the model version to be created", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "Deprecated: Please use version instead. Unique ID of the version", - "maximum": 2147483647, - "minimum": 1 - }, - "versionId": { - "type": "string", - "description": "Unique version id. Please use this instead of 'id'", - "maxLength": 255, - "pattern": "[^/]+" + "summary": "Download all files of an org artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/zip/download": { + "get": { + "deprecated": true, + "description": "Direct download all files of a org artifact in a zip as guest", + "operationId": "directDownloadAllFilesInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "description": { - "type": "string", - "description": "Description of the model version", - "maxLength": 255 + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "ownerName": { - "type": "string", - "description": "Name of the user who owns this version", - "maxLength": 255 + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "accuracyReached": { - "type": "number", - "format": "float", - "description": "Accuracy this model reached", - "maximum": 100, - "minimum": 0 + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + }, + "application/zip": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" }, - "numberOfEpochs": { - "type": "integer", - "format": "int64", - "description": "Number of epochs this model trained", - "minimum": 0 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "gpuModel": { - "type": "string", - "description": "GPU model and memory", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "batchSize": { - "type": "integer", - "format": "int64", - "description": "Batch size this model was trained with", - "minimum": 0 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "memoryFootprint": { - "type": "string", - "description": "Model size/memory footprint for inference", - "maxLength": 255 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "customMetrics": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomMetricGroup" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Direct download all files of a org artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}": { + "get": { + "description": "Get artifact details in team as guest", + "operationId": "getChartInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "nvcfContainerConfiguration": { - "$ref": "#/components/schemas/NvcfContainerConfiguration", - "description": "NVCF container configuration parameters" - }, - "nvcfDeploymentSpecification": { - "$ref": "#/components/schemas/NvcfDeploymentSpecification", - "description": "NVCF deployment specification" - }, - "otherContents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } - } - } - }, - "NvcfContainerConfiguration": { - "type": "object", - "description": "NVCF container configuration parameters", - "properties": { - "inferenceUrl": { - "type": "string", - "description": "Inference url" - }, - "inferencePort": { - "type": "string", - "description": "Inference port" - }, - "healthUri": { - "type": "string", - "description": "Health URI" - }, - "containerImage": { - "type": "string", - "description": "Container Image" }, - "containerArgs": { - "type": "string", - "description": "Container arguments" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "apiBodyFormat": { - "type": "string", - "description": "API body format" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "models": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NvcfContainerModel" + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" } }, - "containerEnvironment": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MetaData" + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } - } - }, - "NvcfContainerModel": { - "type": "object", - "description": "Models version object metadata", - "properties": { - "name": { - "type": "string", - "description": "Model name" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" }, - "version": { - "type": "string", - "description": "Model version" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "uri": { - "type": "string", - "description": "Model URI" - } - } - }, - "NvcfDeploymentSpecification": { - "type": "object", - "description": "NVCF deployment specification", - "properties": { - "gpuType": { - "type": "string", - "description": "GPU type" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "gpuCount": { - "type": "integer", - "format": "int32", - "description": "GPU count" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "instanceType": { - "type": "string", - "description": "Instance type" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "maxConcurrency": { - "type": "integer", - "format": "int32", - "description": "Maximum concurrency" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } - } - }, - "CollectionCreateRequest": { - "type": "object", - "description": "Properties for the collections to be created", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the collection", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-z][a-z\\d._-]*$" - }, - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + }, + "summary": "Get artifact in team as guest", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/latest-version/zip": { + "get": { + "deprecated": true, + "description": "Download all files of a team artifact's latest version in a zip as guest", + "operationId": "downloadAllFilesInTeamAsGuest_1", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, "type": "string" } }, - "description": { - "type": "string", - "description": "Description of the collection" - }, - "shortDescription": { - "type": "string", - "description": "Short description of the collection", - "maxLength": 255 - }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 64, - "minLength": 2 + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "ownerName": { - "type": "string", - "description": "Name of the user who owns this collection", - "maxLength": 255 + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "builtBy": { - "type": "string", - "description": "organization that built the collection" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "publisher": { - "type": "string", - "description": "organization that published the collection", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "category": { - "type": "string", - "enum": [ - "HEALTHCARE", - "SMART_CITIES", - "RETAIL", - "MANUFACTURING", - "SUPERCOMPUTING", - "ROBOTICS", - "AUTOMOTIVE", - "TELECOMMUNICATIONS", - "FINANCE", - "OIL_AND_GAS", - "NATURAL_LANGUAGE_PROCESSING", - "AUTOMATIC_SPEECH_RECOGNITION", - "INTELLIGENT_VIDEO_ANALYTICS", - "OBJECT_DETECTION", - "IMAGE_CLASSIFICATION", - "ANNOTATION", - "IMAGE_SYNTHESIS", - "MACHINE_LEARNING", - "DEEP_LEARNING", - "INFRASTRUCTURE", - "HIGH_PERFORMANCE_COMPUTING", - "WINDOWS_RTX_ACCELERATED_MODELS", - "BEGINNER", - "ADVANCED" - ] + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" - } + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "category", - "name", - "shortDescription" - ] - }, - "ArtifactFileCommitMetadata": { - "type": "object", - "properties": { - "commitType": { - "type": "string", - "enum": [ - "ADDITION", - "DELETION" - ] + "summary": "Download all files of a team artifact's latest version in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files": { + "get": { + "description": "List files of the artifact version in team as guest", + "operationId": "listArtifactFilesInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "filePath": { - "type": "string", - "description": "Artifact file path" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "sha256": { - "type": "string", - "description": "Base64 encoded sha256 hash of the artifact file. Required for addition and not required for deletion" - } - }, - "required": [ - "commitType", - "filePath" - ] - }, - "ArtifactFilesCommitRequest": { - "type": "object", - "description": "Artifact files to be committed", - "properties": { - "name": { - "type": "string", - "description": "Artifact name" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "artifactType": { - "type": "string", - "description": "Artifact type - could be either model or resource" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "version": { - "type": "string", - "description": "Artifact version" + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "baseVersion": { - "type": "string", - "description": "Artifact version that the commit is based on" + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } }, - "files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactFileCommitMetadata" + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } } - }, - "required": [ - "artifactType", - "name", - "version" - ] - }, - "MalwareScanNotification": { - "type": "object", - "properties": { - "uuid": { - "type": "string" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" }, - "tenant": { - "type": "string" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "contact": { - "type": "string" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "nspect_id": { - "type": "string" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "metadata": { - "type": "object", - "additionalProperties": { + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List artifact files in team as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files/**": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in team as guest", + "operationId": "downloadArtifactFileInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } - } - } - }, - "NotifyMalwareScanResultResponse": { - "type": "object", - "description": "Notify malware scan result response", - "properties": { - "status": { - "type": "string", - "description": "Malware scan status", - "enum": [ - "NOT_SCANNED", - "IN_PROGRESS", - "CLEAN", - "SUSPICIOUS", - "FAILED", - "MALICIOUS" - ] - } - } - }, - "GpuByPciCreateRequest": { - "type": "object", - "description": "GPU by PCI properties", - "properties": { - "pciDeviceId": { - "type": "string", - "description": "PCI Device ID" }, - "pciVendorId": { - "type": "string", - "description": "PCI Vendor ID" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "pciSubsystemDeviceId": { - "type": "string", - "description": "PCI Subsystem Device ID" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "labelName": { - "type": "string", - "description": "Label name for the GPU" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "displayName": { - "type": "string", - "description": "Display name for the GPU" + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "cudaMajorVersion": { - "type": "string", - "description": "CUDA major version" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "cudaMinorVersion": { - "type": "string", - "description": "CUDA minor version" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "memorySizeGb": { - "type": "integer", - "format": "int32", - "description": "Memory size in GB (smallint range)", - "maximum": 32767, - "minimum": 0 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "formFactor": { - "type": "string", - "description": "GPU form factor" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "gpuCounts": { - "type": "array", - "items": { - "type": "integer", - "format": "int32", - "maximum": 255, - "minimum": 0 + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } }, - "uniqueItems": true + "description": "Internal Error" } }, - "required": [ - "displayName", - "pciDeviceId" - ] - }, - "CloudServiceProviderCreateRequest": { - "type": "object", - "description": "Request to create a new Cloud Service Provider", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the Cloud Service Provider" - }, - "displayName": { - "type": "string", - "description": "Display name of the Cloud Service Provider" - }, - "description": { - "type": "string", - "description": "Description of the Cloud Service Provider" + "summary": "Download artifact file in team as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files/**/zip/download": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in team as guest as zip", + "operationId": "downloadArtifactFileInTeamAsGuestAsZip", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "isEnabled": { - "type": "boolean", - "description": "Determines if this Cloud Service Provider is enabled" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "logo": { - "type": "string", - "description": "URL for the logo image" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labels": { - "type": "array", - "items": { + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } } - }, - "required": [ - "name" - ] - }, - "CountableResource": { - "type": "object", - "description": "Countable Resource object", - "properties": { - "minValue": { - "type": "integer", - "format": "int64", - "description": "Minimum value" - }, - "maxValue": { - "type": "integer", - "format": "int64", - "description": "Maximum value" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" }, - "defaultValue": { - "type": "integer", - "format": "int64", - "description": "Deprecated: Default value. Please use actual CloudServiceProvider values instead" - } - } - }, - "DeploymentCpuParametersMeta": { - "type": "object", - "description": "Cloud Service Provider Deployment CPU Parameters object", - "properties": { - "count": { - "$ref": "#/components/schemas/CountableResource", - "description": "Countable Resource object" - } - }, - "required": [ - "count" - ] - }, - "DeploymentGpuParametersMeta": { - "type": "object", - "description": "Cloud Service Provider Deployment GPU Parameters object", - "properties": { - "count": { - "$ref": "#/components/schemas/CountableResource", - "description": "Countable Resource object" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "type": { - "$ref": "#/components/schemas/EnumerableResource", - "description": "Enumerable Resource object" - } - }, - "required": [ - "type" - ] - }, - "DeploymentMemoryParametersMeta": { - "type": "object", - "description": "Cloud Service Provider Deployment Memory Parameters object", - "properties": { - "capacityInGB": { - "$ref": "#/components/schemas/CountableResource", - "description": "Countable Resource object" - } - }, - "required": [ - "capacityInGB" - ] - }, - "DeploymentParametersMetaCreateRequest": { - "type": "object", - "description": "Properties for the cloud service provider deployment parameters meta to create", - "properties": { - "cpu": { - "$ref": "#/components/schemas/DeploymentCpuParametersMeta", - "description": "Cloud Service Provider Deployment CPU Parameters object" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "gpu": { - "$ref": "#/components/schemas/DeploymentGpuParametersMeta", - "description": "Cloud Service Provider Deployment GPU Parameters object" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "memory": { - "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", - "description": "Cloud Service Provider Deployment Memory Parameters object" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "storage": { - "$ref": "#/components/schemas/DeploymentStorageParametersMeta", - "description": "Cloud Service Provider Deployment Storage Parameters object" - } - }, - "required": [ - "gpu", - "storage" - ] - }, - "DeploymentStorageParametersMeta": { - "type": "object", - "description": "Cloud Service Provider Deployment Storage Parameters object", - "properties": { - "capacityInGB": { - "$ref": "#/components/schemas/CountableResource", - "description": "Countable Resource object" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "capacityInGB" - ] - }, - "EnumerableResource": { - "type": "object", - "description": "Enumerable Resource object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EnumerableResourceItem" + "summary": "Download artifact file in team as guest as zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/signature": { + "get": { + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", + "operationId": "getArtifactVersionSignatureAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "defaultItemName": { - "type": "string", - "description": "Deprecated: Default item name. Please use actual CloudServiceProvider values instead" - } - } - }, - "EnumerableResourceItem": { - "type": "object", - "description": "Enumerable Resource Item object", - "properties": { - "name": { - "type": "string", - "description": "Name" - }, - "displayName": { - "type": "string", - "description": "Display name" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "logo": { - "type": "string", - "description": "Logo URL" - } - } - }, - "UpdateArtifactVersionConfigs": { - "type": "object", - "description": "Request to publish an artifact", - "properties": { - "policy": { - "type": "array", - "items": { - "type": "string", + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { "enum": [ - "GOV_READY", - "FedRAMP" - ] + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } - } - } - }, - "DeploymentParametersUpdateRequest": { - "type": "object", - "description": "Request to update existing deployment parameters", - "properties": { - "cpu": { - "$ref": "#/components/schemas/DeploymentCpuParameters", - "description": "Deployment CPU Parameters object" - }, - "gpu": { - "$ref": "#/components/schemas/DeploymentGpuParameters", - "description": "Deployment GPU Parameters object" - }, - "memory": { - "$ref": "#/components/schemas/DeploymentMemoryParameters", - "description": "Deployment Memory Parameters object" - }, - "storage": { - "$ref": "#/components/schemas/DeploymentStorageParameters", - "description": "Deployment Storage Parameters object" }, - "container": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "model": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "resource": { - "$ref": "#/components/schemas/DeploymentArtifactParameters", - "description": "Deployment Artifact Parameters object" + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } } - } - }, - "RecipeVersionUpdateRequest": { - "type": "object", - "description": "Version properties to update", - "properties": { - "status": { - "type": "string", - "description": "Version status", - "enum": [ - "UPLOAD_PENDING", - "UPLOAD_COMPLETE" - ] - }, - "description": { - "type": "string", - "description": "Description of the recipe version" - }, - "accuracyReached": { - "type": "number", - "format": "float", - "description": "Accuracy this recipe reached", - "maximum": 100, - "minimum": 0 - }, - "numberOfEpochs": { - "type": "integer", - "format": "int64", - "description": "Number of epochs this recipe trained", - "minimum": 0 + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" }, - "gpuModel": { - "type": "string", - "description": "GPU model and memory", - "maxLength": 255 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "batchSize": { - "type": "integer", - "format": "int64", - "description": "Batch size this recipe was trained with", - "minimum": 0 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "memoryFootprint": { - "type": "string", - "description": "Recipe size/memory footprint for inference", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "setup": { - "type": "string", - "description": "Text describing recipe setup" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "quickStartGuide": { - "type": "string", - "description": "Text with a guide to getting started" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/zip": { + "get": { + "deprecated": true, + "description": "Download all files of a team artifact in a zip as guest", + "operationId": "downloadAllFilesInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "performance": { - "type": "string", - "description": "Text describing performance of the recipe results" + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "releaseNotes": { - "type": "string", - "description": "Text describing this release" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "customMetrics": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomMetricGroup" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "otherContents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } - } - }, - "ModelSimplified": { - "type": "object", - "description": "Model object", - "properties": { - "name": { - "type": "string", - "description": "Unique name of the model" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" }, - "orgName": { - "type": "string", - "description": "Name of the org that the model belongs to" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "teamName": { - "type": "string", - "description": "Name of the team that the model belongs to" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "name", - "orgName" - ] - }, - "RecipeUpdateRequest": { - "type": "object", - "description": "Properties for the recipe to update", - "properties": { - "trainingFramework": { - "type": "string", - "enum": [ - "TensorFlow", - "Caffe2", - "CNTK", - "Torch", - "PyTorch", - "MXNet", - "Keras", - "Other", - "TransferLearningToolkit", - "TensorFlow2" - ] + "summary": "Download all files of a team artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/zip/download": { + "get": { + "deprecated": true, + "description": "Direct download all files of a team artifact in a zip as guest", + "operationId": "directDownloadAllFilesInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "modelFormat": { - "type": "string", - "description": "Format of the model this recipe produces", - "maxLength": 255 + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "publicDatasetUsed": { - "$ref": "#/components/schemas/Dataset" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + }, + "application/zip": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" }, - "description": { - "type": "string", - "description": "Description of the recipe" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "shortDescription": { - "type": "string", - "description": "Short description of the recipe", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "setup": { - "type": "string", - "description": "Text describing recipe setup" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "quickStartGuide": { - "type": "string", - "description": "Text with a guide to getting started" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "performance": { - "type": "string", - "description": "Text describing performance of the recipe results" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Direct download all files of a team artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/playground": { + "get": { + "deprecated": true, + "description": "Get AI Playground for public model", + "operationId": "getPublicModelAIPlayground", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "advanced": { - "type": "string", - "description": "Text for describing advanced information" + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 64, - "minLength": 2 + { + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" }, - "precision": { - "type": "string", - "enum": [ - "FP16", - "FP32", - "INT8", - "FPBOTH", - "OTHER", - "ALL" - ] + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "application": { - "type": "string", - "enum": [ - "CLASSIFICATION", - "OBJECT_DETECTION", - "SEGMENTATION", - "TRANSLATION", - "TEXT_TO_SPEECH", - "RECOMMENDER", - "SENTIMENT", - "NLP", - "KUBEFLOW_PIPELINE", - "OTHER", - "SPEAKER_VERIFICATION", - "PUNCTUATION_AND_CAPITALIZATION", - "DIALOG_STATE_TRACKING", - "SPEAKER_DIARIZATION", - "SPEAKER_RECOGNITION", - "SPEECH_SYNTHESIS", - "VOICE_ACTIVITY_DETECTION", - "SPEECH_RECOGNITION", - "LANGUAGE_MODELING", - "NAMED_ENTITY_RECOGNITION", - "TEXT_CLASSIFICATION", - "TEXT_PROCESSING", - "QUESTION_ANSWERING", - "CONTENT_GENERATION" - ] + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "builtBy": { - "type": "string", - "description": "organization that built the recipe", - "maxLength": 255 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "publisher": { - "type": "string", - "description": "organization that published the recipe", - "maxLength": 255 + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{artifact_name}/spec": { + "get": { + "description": "Get AI Playground for public artifactType", + "operationId": "getPublicModelArtifactsSpec", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "relatedModels": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ModelSimplified" + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "licenseTerms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseMetadata" + { + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } - } - }, - "ModelUpdateRequest": { - "type": "object", - "description": "Properties for the model to update", - "properties": { - "description": { - "type": "string", - "description": "Description of the model" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" }, - "ownerName": { - "type": "string", - "description": "Name of the user who owns this model", - "maxLength": 255 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "framework": { - "type": "string", - "description": "Framework used to train this model", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "modelFormat": { - "type": "string", - "description": "Format of the model", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "publicDatasetUsed": { - "$ref": "#/components/schemas/Dataset" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get AI Playground for public artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/playground": { + "get": { + "deprecated": true, + "description": "Get AI Playground for public model", + "operationId": "getPublicModelAIPlayground_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } }, - "shortDescription": { - "type": "string", - "description": "Short description of the model", - "maxLength": 255 - }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 64, - "minLength": 2 - }, - "precision": { - "type": "string", - "description": "Precision this model was trained with", - "maxLength": 255 - }, - "hasPlayground": { - "type": "boolean", - "description": "indicate if the Model has AI Playground configured" - }, - "isPlaygroundEnabled": { - "type": "boolean", - "description": "indicate if AI Playground is enabled in the catalog" + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "application": { - "type": "string", - "description": "Application of the model", - "maxLength": 255 + { + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "builtBy": { - "type": "string", - "description": "organization that built the repository", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "publisher": { - "type": "string", - "description": "organization that published the repository", - "maxLength": 255 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "bias": { - "type": "string", - "description": "Text describing bias in the model" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "explainability": { - "type": "string", - "description": "Text describing explainability for this model" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/spec": { + "get": { + "description": "Get AI Playground for public artifactType", + "operationId": "getPublicModelArtifactsSpec_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "privacy": { - "type": "string", - "description": "Text describing the privacy for this model" + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "safetyAndSecurity": { - "type": "string", - "description": "Text for describing the safety and security in the model" + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "licenseTerms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LicenseMetadata" + { + "description": "Model name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } - } - }, - "ModelVersionUpdateRequest": { - "type": "object", - "description": "Version properties to update", - "properties": { - "status": { - "type": "string", - "description": "Version status", - "enum": [ - "UPLOAD_PENDING", - "UPLOAD_COMPLETE" - ] - }, - "description": { - "type": "string", - "description": "Description of the model version", - "maxLength": 255 - }, - "ownerName": { - "type": "string", - "description": "Name of the user who owns this version", - "maxLength": 255 - }, - "accuracyReached": { - "type": "number", - "format": "float", - "description": "Accuracy this model reached", - "maximum": 100, - "minimum": 0 + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" }, - "numberOfEpochs": { - "type": "integer", - "format": "int64", - "description": "Number of epochs this model trained", - "minimum": 0 + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "gpuModel": { - "type": "string", - "description": "GPU model and memory", - "maxLength": 255 + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "batchSize": { - "type": "integer", - "format": "int64", - "description": "Batch size this model was trained with", - "minimum": 0 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "memoryFootprint": { - "type": "string", - "description": "Model size/memory footprint for inference", - "maxLength": 255 + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "customMetrics": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomMetricGroup" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get AI Playground for public artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{type}/org/{org}/team/{team}/{name}/{version}/files": { + "get": { + "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", + "operationId": "downloadAllArtifactFilesAsGuest_1", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "otherContents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "nvcfContainerConfiguration": { - "$ref": "#/components/schemas/NvcfContainerConfiguration", - "description": "NVCF container configuration parameters" - }, - "nvcfDeploymentSpecification": { - "$ref": "#/components/schemas/NvcfDeploymentSpecification", - "description": "NVCF deployment specification" - } - } - }, - "ArtifactVersionUpdateRequest": { - "type": "object", - "description": "Version properties to update", - "properties": { - "status": { - "type": "string", - "description": "Version status", - "enum": [ - "UPLOAD_PENDING", - "UPLOAD_COMPLETE" - ] - }, - "description": { - "type": "string", - "description": "Description of the artifact version", - "maxLength": 255 - }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } - } - } - }, - "CollectionUpdateRequest": { - "type": "object", - "description": "Properties for the collection to update", - "properties": { - "labels": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+" + }, + { + "description": "Artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" } }, - "labelsV2": { - "type": "array", - "items": { + { + "description": "Version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, "type": "string" } }, - "description": { - "type": "string", - "description": "Description of the collection" - }, - "shortDescription": { - "type": "string", - "description": "Short description of the collection", - "maxLength": 255 - }, - "displayName": { - "type": "string", - "description": "Display name", - "maxLength": 64, - "minLength": 2 - }, - "logo": { - "type": "string", - "description": "URL for the logo image", - "maxLength": 255 - }, - "builtBy": { - "type": "string", - "description": "organization that built the collection" - }, - "publisher": { - "type": "string", - "description": "organization that published the collection", - "maxLength": 255 - }, - "category": { - "type": "string", - "enum": [ - "HEALTHCARE", - "SMART_CITIES", - "RETAIL", - "MANUFACTURING", - "SUPERCOMPUTING", - "ROBOTICS", - "AUTOMOTIVE", - "TELECOMMUNICATIONS", - "FINANCE", - "OIL_AND_GAS", - "NATURAL_LANGUAGE_PROCESSING", - "AUTOMATIC_SPEECH_RECOGNITION", - "INTELLIGENT_VIDEO_ANALYTICS", - "OBJECT_DETECTION", - "IMAGE_CLASSIFICATION", - "ANNOTATION", - "IMAGE_SYNTHESIS", - "MACHINE_LEARNING", - "DEEP_LEARNING", - "INFRASTRUCTURE", - "HIGH_PERFORMANCE_COMPUTING", - "WINDOWS_RTX_ACCELERATED_MODELS", - "BEGINNER", - "ADVANCED" - ] + { + "description": "File path", + "in": "query", + "name": "path", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } }, - "ownerName": { - "type": "string", - "description": "Name of the user who owns this collection", - "maxLength": 255 + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } - } - } - }, - "CollectionOperation": { - "type": "object", - "description": "Collection operation object", - "properties": { - "operation": { - "type": "string", - "description": "Collection operation", - "maxLength": 255 }, - "path": { - "type": "string", - "description": "Path to a collection item in a scoped format", - "maxLength": 255, - "pattern": "^(/(?!/)([\\w- %\\.(?!\\.)])+)+$" + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } } - } - }, - "CollectionPatchRequest": { - "type": "object", - "description": "Properties for the collection to patch", - "properties": { - "operations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CollectionOperation", - "maxItems": 100 + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } }, - "maxItems": 100 - } - } - }, - "GpuByPciUpdateRequest": { - "type": "object", - "description": "GPU by PCI update properties", - "properties": { - "labelName": { - "type": "string", - "description": "Label name for the GPU" - }, - "displayName": { - "type": "string", - "description": "Display name for the GPU" + "description": "OK" }, - "cudaMajorVersion": { - "type": "string", - "description": "CUDA major version" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "cudaMinorVersion": { - "type": "string", - "description": "CUDA minor version" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "memorySizeGb": { - "type": "integer", - "format": "int32", - "description": "Memory size in GB (smallint range)", - "maximum": 32767, - "minimum": 0 + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "formFactor": { - "type": "string", - "description": "GPU form factor" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "gpuCounts": { - "type": "array", - "items": { - "type": "integer", - "format": "int32", - "maximum": 255, - "minimum": 0 + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } }, - "uniqueItems": true + "description": "Internal Error" } - } - }, - "CloudServiceProviderUpdateRequest": { - "type": "object", - "description": "Request to update existing Cloud Service Provider", - "properties": { - "displayName": { - "type": "string", - "description": "Display name of the Cloud Service Provider" - }, - "description": { - "type": "string", - "description": "Description of the Cloud Service Provider" + }, + "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [] + } + }, + "/v2/{type}/org/{org}/{name}/{version}/files": { + "get": { + "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", + "operationId": "downloadAllArtifactFilesAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "isEnabled": { - "type": "boolean", - "description": "Determines if this Cloud Service Provider is enabled" + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } }, - "logo": { - "type": "string", - "description": "URL for the logo image" + { + "description": "Artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ArtifactAttribute" + { + "description": "Version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "labels": { - "type": "array", - "items": { + { + "description": "File path", + "in": "query", + "name": "path", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, "type": "string" } - } - } - }, - "DeploymentParametersMetaUpdateRequest": { - "type": "object", - "description": "Properties for the cloud service provider deployment parameters meta to create", - "properties": { - "cpu": { - "$ref": "#/components/schemas/DeploymentCpuParametersMeta", - "description": "Cloud Service Provider Deployment CPU Parameters object" }, - "gpu": { - "$ref": "#/components/schemas/DeploymentGpuParametersMeta", - "description": "Cloud Service Provider Deployment GPU Parameters object" + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } }, - "memory": { - "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", - "description": "Cloud Service Provider Deployment Memory Parameters object" + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } }, - "storage": { - "$ref": "#/components/schemas/DeploymentStorageParametersMeta", - "description": "Cloud Service Provider Deployment Storage Parameters object" + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } } - } - }, - "HealthComponent": { - "type": "object", - "properties": { - "description": { - "type": "string" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" }, - "status": { - "type": "string" - } - } - }, - "MultipartUploadAbortRequest": { - "type": "object", - "description": "Request body for aborting a multipart upload for artifacts", - "properties": { - "name": { - "type": "string", - "description": "Name of the artifact" + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, - "version": { - "type": "string", - "description": "Artifact version" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" }, - "artifactType": { - "type": "string", - "description": "Type of artifact" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" }, - "filePath": { - "type": "string", - "description": "The file path for the artifact upload" + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" }, - "uploadID": { - "type": "string", - "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema" + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" } }, - "required": [ - "artifactType", - "filePath", - "name", - "uploadID", - "version" - ] + "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [] } + } + }, + "servers": [ + { + "url": "https://api.ngc.nvidia.com" + } + ], + "tags": [ + { + "description": "Artifact file checksum verification and commit endpoints", + "name": "ArtifactChecksum" }, - "securitySchemes": { - "authn": { - "type": "oauth2", - "flows": { - "clientCredentials": { - "tokenUrl": "authn.nvidia.com/token", - "scopes": {} - } - } - }, - "ssa": { - "type": "oauth2", - "description": "A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725", - "flows": { - "clientCredentials": { - "tokenUrl": "https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token", - "scopes": { - "kas": "{scope}", - "getPublicFlags": "{scope}", - "publishArtifact": "{scope}", - "undoPublishArtifact": "{scope}", - "helmProxy": "{scope}", - "undoPublishCollection": "{scope}", - "publishCollection": "{scope}", - "recreateArtifactVersionZip": "{scope}", - "cloneArtifact": "{scope}" - } - } - } - } + { + "description": "Artifact-level overrides for cloud deployment parameters", + "name": "Artifact deployment parameters" + }, + { + "description": "Artifact signing and signature verification", + "name": "ArtifactSigning" + }, + { + "description": "Publish artifacts to the NGC catalog", + "name": "Publish" + }, + { + "description": "Artifact (resource, model, helm chart) Version endpoints", + "name": "Artifact Versions" + }, + { + "description": "App-to-artifact associations", + "name": "Apps" + }, + { + "description": "NIM profile metadata registration (placeholder)", + "name": "NIM Metadata" + }, + { + "description": "Metadata describing cloud deployment parameter schemas", + "name": "Deployment parameters meta" + }, + { + "description": "AI Playground demo metadata endpoints", + "name": "AIPlayground" + }, + { + "description": "Collections endpoints", + "name": "Collections" + }, + { + "description": "Model endpoints", + "name": "Models" + }, + { + "description": "Default CSP-level cloud deployment parameters", + "name": "Cloud service provider deployment parameters" + }, + { + "description": "Service health checks", + "name": "Health" + }, + { + "description": "Model endpoints", + "name": "Model Version Files" + }, + { + "description": "Artifact (resource, model, helm chart) endpoints", + "name": "Artifacts" + }, + { + "description": "Resources endpoints, previously known as 'recipes'", + "name": "Resources" + }, + { + "description": "Malware scan status for artifact files", + "name": "MalwareScan" + }, + { + "description": "Asynchronous artifact-registry workflow status endpoints", + "name": "Workflows" + }, + { + "description": "GPU metadata lookup by PCI identifier", + "name": "GpuByPci" + }, + { + "description": "Helm chart version management", + "name": "Helm Charts" + }, + { + "description": "Cloud service provider registry entries", + "name": "Cloud service providers" + }, + { + "description": "Artifact (resource, model, helm chart) Version File endpoints", + "name": "Artifact Version Files" + }, + { + "description": "Customer-managed encryption keys for artifact storage", + "name": "Encryption Keys" + }, + { + "description": "Resource and Model File endpoints", + "name": "Artifact File" + }, + { + "description": "Resource Versions endpoints, previously known as 'recipes'", + "name": "Resource Versions" + }, + { + "description": "Resource Version File endpoints, previously known as 'recipes'", + "name": "Resource Version Files endpoints" + }, + { + "description": "Model endpoints", + "name": "Model Version" + }, + { + "description": "NSPECT-LOEJ-50BP", + "name": "nspect_id" } - } + ] } diff --git a/provider-dev/downloaded/cleaned/nvcf_openapi.json b/provider-dev/downloaded/cleaned/nvcf_openapi.json index 8947bd6..b275570 100644 --- a/provider-dev/downloaded/cleaned/nvcf_openapi.json +++ b/provider-dev/downloaded/cleaned/nvcf_openapi.json @@ -1,5757 +1,6146 @@ { - "openapi": "3.1.0", - "info": { - "title": "Cloud Functions", - "termsOfService": "https://www.nvidia.com/en-us/legal_info", - "contact": { - "name": "NVIDIA", - "url": "https://www.nvidia.com/" - }, - "version": "2.245.1" - }, - "servers": [ - { - "url": "https://api.nvcf.nvidia.com", - "description": "Generated server url" - } - ], - "tags": [ - { - "name": "Function Invocation", - "description": "Defines function pass-through invocation endpoints where the invocation payload is passed as-is without any wrapper. All the endpoints defined in this API require a bearer token with 'invoke_function' scope in the HTTP Authorization header. " - }, - { - "name": "Asset Management", - "description": "Deprecated. Users can provide assets directly as part of the input during function invocation. There is no need to upload assets and then include the asset-id as part of input to the function invocation. Defines Asset Management endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token in the HTTP Authorization header with 'invoke_function' scope." - }, - { - "name": "User Ratelimit Management", - "description": "Defines User Ratelimit Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_function' scope in the HTTP Authorization header. " - }, - { - "name": "Queue Details", - "description": "Defines Queue Details endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token with 'queue_details' scope in the HTTP Authorization header. " - }, - { - "name": "Function Sharing", - "description": "Defines endpoints related to authorizing other accounts to invoke a function for Account Admins. All the endpoints defined in this API require a bearer token with 'authorize_clients' scope in HTTP Authorization header." - }, - { - "name": "Telemetry Management", - "description": "Defines Telemetry Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token or an api-key with appropriate scope in the HTTP Authorization header. " - }, - { - "name": "Cluster Groups and GPUs", - "description": "Deprecated. Please use corresponding ICMS endpoints directly. These endpoints will be removed. Defines endpoints to list Cluster Groups and GPUs for Account Admins. All tne endpoints defined in this API require a bearer token with 'list_cluster_groups' scope in the HTTP Authorization header." - }, - { - "name": "Function Deployment", - "description": "Defines Function Deployment endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'deploy_function' scope in the HTTP Authorization header." - }, - { - "name": "User Secret Management", - "description": "Defines User Secret Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_secrets' scope in the HTTP Authorization header. " - }, - { - "name": "Function Management", - "description": "Defines Function Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with appropriate scope in the HTTP Authorization header. The scope is specified in the documentation for each of the endpoints. " - }, - { - "name": "Function Invocation Assertion Token", - "description": "Defines endpoints that issue an assertion token from Notary Service to be used for function invocation later " - }, - { - "name": "Registry Credential Management", - "description": "Defines Registry Credential Management endpoints. These endpoints can only be invoked by Account Admins and require a bearer token in HTTP Authorization header with 'manage_registry_credentials' scope. " - }, - { - "name": "nspect_id", - "description": "NSPECT-F7NT-ONT3" - } - ], - "paths": { - "/v2/nvcf/secrets/telemetries/{telemetryId}": { - "put": { - "tags": [ - "User Secret Management" - ], - "summary": "Update secret for a specific Telemetry Id", - "description": "Updates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ", - "operationId": "updateTelemetrySecret", - "parameters": [ - { - "name": "telemetryId", - "in": "path", - "description": "NVIDIA Cloud Account Id", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "maxLength": 36, - "minLength": 36 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTelemetrySecretRequest" - } - } + "components": { + "schemas": { + "AddRegistryCredentialRequest": { + "description": "Request body to add a registry credential to an account", + "properties": { + "artifactTypes": { + "description": "Artifact types that can be retrieved using this credential", + "items": { + "enum": [ + "CONTAINER", + "HELM", + "MODEL", + "RESOURCE" + ], + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 1, + "type": "array", + "uniqueItems": true }, - "required": true - }, - "responses": { - "204": { - "description": "No Content" - } - } - } - }, - "/v2/nvcf/secrets/functions/{functionId}/versions/{versionId}": { - "put": { - "tags": [ - "User Secret Management" - ], - "summary": "Update user secrets for a function version", - "description": "Updates secrets for the specified function version. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ", - "operationId": "updateFunctionSecrets", - "parameters": [ - { - "name": "functionId", - "in": "path", - "description": "Function Id", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "maxLength": 36, - "minLength": 36 - } + "description": { + "description": "Optional registry credential description", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": [ + "string", + "null" + ] }, - { - "name": "versionId", - "in": "path", - "description": "Function Version Id", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "maxLength": 36, - "minLength": 36 - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateFunctionSecretsRequest" - } - } + "registryHostname": { + "description": "Registry hostname", + "format": "UTF-8", + "maxLength": 255, + "minLength": 1, + "pattern": "(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?[/]].\nWhenever the user wants to access a protected route or resource, the user must get the token for that particular organization / team","scheme":"bearer","bearerFormat":"JWT"}}}} \ No newline at end of file +{ + "components": { + "schemas": { + "AlternateContact": { + "description": "Org Owner Alternate Contact", + "properties": { + "email": { + "description": "Alternate contact's email.", + "maxLength": 128, + "minLength": 6, + "type": "string" + }, + "fullName": { + "description": "Full name of the alternate contact.", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "Entitlement": { + "description": "Information about the entitlement for an org", + "properties": { + "entitlementExpirationTime": { + "description": "Entitlement expiration time", + "type": "string" + }, + "entitlementId": { + "description": "Unique entitlement identifier", + "type": "string" + }, + "entitlementState": { + "description": "Entitlement state", + "type": "string" + }, + "pecSfdcId": { + "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer", + "type": "string" + }, + "products": { + "items": { + "$ref": "#/components/schemas/EntitlementProduct" + }, + "type": "array" + } + }, + "type": "object" + }, + "EntitlementProduct": { + "description": "Information about the entitlement product", + "properties": { + "pkId": { + "description": "Unique product key identifier", + "type": "string" + }, + "productName": { + "description": "Product name. ex: FleetCommand, Batch, etc", + "type": "string" + }, + "subscriptionType": { + "description": "Subscription type", + "type": "string" + } + }, + "type": "object" + }, + "ErrorResponse": { + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "Health": { + "description": "object that describes health of the service", + "properties": { + "healthCode": { + "description": "Enum that describes health of the service", + "enum": [ + "UNKNOWN", + "OK", + "UNDER_MAINTENANCE", + "WARNING", + "FAILED" + ], + "type": "string" + }, + "healthCodeDescription": { + "description": "Human readable description", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "metaData": { + "items": { + "$ref": "#/components/schemas/MetaData" + }, + "type": "array" + } + }, + "type": "object" + }, + "HealthResponse": { + "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method", + "properties": { + "health": { + "$ref": "#/components/schemas/Health" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "InfinityManagerSettings": { + "description": "Infinity manager setting definition", + "properties": { + "infinityManagerEnableTeamOverride": { + "description": "Allow override settings at team level. Only used in org level object", + "type": "boolean" + }, + "infinityManagerEnabled": { + "description": "Enable the infinity manager or not. Used both in org and team level object", + "type": "boolean" + } + }, + "type": "object" + }, + "MetaData": { + "properties": { + "key": { + "maxLength": 255, + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "OrgCreateRequest": { + "description": "Request to create new Organization", + "properties": { + "country": { + "description": "user country", + "type": "string" + }, + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" + }, + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "idpId": { + "description": "Identity Provider ID.", + "type": "string" + }, + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" + }, + "name": { + "description": "Organization name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "pecName": { + "description": "product end customer name for enterprise(Fleet Command) product", + "type": "string" + }, + "pecSfdcId": { + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product", + "type": "string" + }, + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" + }, + "productSubscriptions": { + "description": "This should be deprecated, use productEnablements instead", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" + }, + "salesforceAccountIndustry": { + "description": "Company or organization industry", + "type": "string" + }, + "sendEmail": { + "description": "Send email to org owner or not. Default is true", + "type": "boolean" + }, + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + "required": [ + "orgOwner" + ], + "type": "object" + }, + "OrgCreateRequestV3": { + "description": "Request to create new Organization in v3 flow", + "properties": { + "country": { + "description": "user country", + "type": "string" + }, + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" + }, + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "initiator": { + "description": "Identify the initiator of the org request", + "type": "string" + }, + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" + }, + "name": { + "description": "Organization name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "ncaId": { + "description": "NVIDIA Cloud Account Identifier", + "type": "string" + }, + "ncaNumber": { + "description": "NVIDIA Cloud Account Number", + "type": "string" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwnerV3" + }, + "pecName": { + "description": "product end customer name for enterprise(Fleet Command) product", + "type": "string" + }, + "pecSfdcId": { + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product", + "type": "string" + }, + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" + }, + "productSubscriptions": { + "description": "This should be deprecated, use productEnablements instead", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" + }, + "protoOrgId": { + "description": "Proto org identifier", + "type": "string" + }, + "salesforceAccountIndustry": { + "description": "Company or organization industry", + "type": "string" + }, + "sendEmail": { + "description": "Send email to org owner or not. Default is true", + "type": "boolean" + }, + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + "type": "object" + }, + "OrgInvitation": { + "description": "Org invitation to NGC", + "properties": { + "email": { + "description": "Email address of the user.", + "type": "string" + }, + "protoOrgId": { + "description": "Proto Org identifier.", + "type": "string" + } + }, + "type": "object" + }, + "OrgInvitationResponse": { + "description": "Invitation Validation Response.", + "properties": { + "orgInvitation": { + "$ref": "#/components/schemas/OrgInvitation" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgListEntitlementResponse": { + "description": "List of all organizations which have entitlement information. Only accessible by NGC admin portal", + "properties": { + "entitlements": { + "items": { + "$ref": "#/components/schemas/OrganizationEntitlement" + }, + "type": "array" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgListResponse": { + "description": "List of organizations.", + "properties": { + "organizations": { + "items": { + "$ref": "#/components/schemas/Organization" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgNca": { + "description": "Org vs NcaId mapping", + "properties": { + "ncaId": { + "description": "NVIDIA Cloud Account Id", + "type": "string" + }, + "orgName": { + "description": "Organization name", + "type": "string" + } + }, + "type": "object" + }, + "OrgNcaMappingRequest": { + "description": "object to get the org and nca mapping", + "properties": { + "ncaIds": { + "description": "List of nca Ids", + "items": { + "description": "List of nca Ids", + "type": "string" + }, + "type": "array" + }, + "orgNames": { + "description": "List of org names", + "items": { + "description": "List of org names", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "OrgNcaMappingResponse": { + "description": "org and nca mapping response", + "properties": { + "orgNcaMapping": { + "items": { + "$ref": "#/components/schemas/OrgNca" + }, + "type": "array" + } + }, + "type": "object" + }, + "OrgOwner": { + "description": "Org owner.", + "properties": { + "email": { + "description": "Email address of the org owner.", + "maxLength": 128, + "type": "string" + }, + "fullName": { + "description": "Org owner name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "lastLoginDate": { + "description": "Last time the org owner logged in.", + "type": "string" + } + }, + "required": [ + "email" + ], + "type": "object" + }, + "OrgOwnerV3": { + "description": "Org owner.", + "properties": { + "email": { + "description": "Email address of the org owner.", + "maxLength": 128, + "type": "string" + }, + "fullName": { + "description": "Org owner name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "idpId": { + "description": "Identity Provider ID of the org owner.", + "type": "string" + }, + "starfleetId": { + "description": "Starfleet ID of the org owner.", + "type": "string" + } + }, + "required": [ + "email" + ], + "type": "object" + }, + "OrgProfileUpdateRequest": { + "description": "Object used to update Org profile information", + "properties": { + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" + }, + "displayName": { + "description": "Name of the organization that will be shown to users", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "OrgResponse": { + "description": "info about an organizations", + "properties": { + "organizations": { + "$ref": "#/components/schemas/Organization" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "OrgUpdateRequest": { + "description": "Object used to update Org information", + "properties": { + "alternateContact": { + "$ref": "#/components/schemas/AlternateContact" + }, + "companyName": { + "description": "Name of the company", + "maxLength": 128, + "type": "string" + }, + "description": { + "description": "optional description of the organization", + "maxLength": 128, + "type": "string" + }, + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "idpId": { + "description": "Identity Provider ID.", + "type": "string" + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + }, + "isDatasetServiceEnabled": { + "description": "Dataset Service enable flag for an organization", + "type": "boolean" + }, + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" + }, + "isQuickStartEnabled": { + "description": "Quick Start enable flag for an organization", + "type": "boolean" + }, + "isRegistrySSEEnabled": { + "description": "If a server side encryption is enabled for private registry (models, resources)", + "type": "boolean" + }, + "isSecretsManagerServiceEnabled": { + "description": "Secrets Manager Service enable flag for an organization", + "type": "boolean" + }, + "isSecureCredentialSharingServiceEnabled": { + "description": "Secure Credential Sharing Service enable flag for an organization", + "type": "boolean" + }, + "isSeparateInfluxDbUsed": { + "description": "If a separate influx db used for an organization in Base Command Platform job telemetry", + "type": "boolean" + }, + "ngcClaimID": { + "description": "NGC Reference ID for redeem subscription flow tracking purpose. Provided from RWA only.", + "type": "string" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "orgOwners": { + "description": "Org owners", + "items": { + "$ref": "#/components/schemas/OrgOwner" + }, + "type": "array" + }, + "pecName": { + "description": "product end customer name for enterprise(Fleet Command) product", + "type": "string" + }, + "pecSfdcId": { + "description": "product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product", + "type": "string" + }, + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" + }, + "productSubscriptions": { + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" + }, + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + }, + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + "type": "object" + }, + "Organization": { + "description": "Information about the Organization", + "properties": { + "alternateContact": { + "$ref": "#/components/schemas/AlternateContact" + }, + "billingAccountId": { + "description": "Billing account ID.", + "type": "string" + }, + "canAddOn": { + "description": "Identifies if the org can be reused.", + "type": "boolean" + }, + "country": { + "description": "ISO country code of the organization.", + "type": "string" + }, + "description": { + "description": "Optional description of the organization.", + "type": "string" + }, + "displayName": { + "description": "Name of the organization that will be shown to users.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "id": { + "description": "Unique Id of this team.", + "format": "int64", + "type": "integer" + }, + "idpId": { + "description": "Identity Provider ID.", + "type": "string" + }, + "industry": { + "description": "Industry of the organization.", + "type": "string" + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + }, + "isDatasetServiceEnabled": { + "description": "Dataset Service enable flag for an organization", + "type": "boolean" + }, + "isInternal": { + "description": "Is NVIDIA internal org or not", + "type": "boolean" + }, + "isProto": { + "description": "Indicates when the org is a proto org", + "type": "boolean" + }, + "isQuickStartEnabled": { + "description": "Quick Start enable flag for an organization", + "type": "boolean" + }, + "isRegistrySSEEnabled": { + "description": "If a server side encryption is enabled for private registry (models, resources)", + "type": "boolean" + }, + "isSecretsManagerServiceEnabled": { + "description": "Secrets Manager Service enable flag for an organization", + "type": "boolean" + }, + "isSecureCredentialSharingServiceEnabled": { + "description": "Secure Credential Sharing Service enable flag for an organization", + "type": "boolean" + }, + "isSeparateInfluxDbUsed": { + "description": "If a separate influx db used for an organization in BCP for job telemetry", + "type": "boolean" + }, + "name": { + "description": "Organization name.", + "type": "string" + }, + "ncaAccountNumber": { + "description": "NVIDIA Cloud Account Number.", + "type": "string" + }, + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "orgOwners": { + "description": "Org owners", + "items": { + "$ref": "#/components/schemas/OrgOwner" + }, + "type": "array" + }, + "pecSfdcId": { + "description": "Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer.", + "type": "string" + }, + "productEnablements": { + "items": { + "$ref": "#/components/schemas/ProductEnablement" + }, + "type": "array" + }, + "productSubscriptions": { + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" + }, + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + }, + "type": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + }, + "usersInfo": { + "$ref": "#/components/schemas/UsersInfo" + } + }, + "type": "object" + }, + "OrganizationEntitlement": { + "description": "Information about the organization entitlements", + "properties": { + "entitlements": { + "items": { + "$ref": "#/components/schemas/Entitlement" + }, + "type": "array" + }, + "orgName": { + "description": "Organization name", + "type": "string" + } + }, + "type": "object" + }, + "PackageVersion": { + "description": "Latest version information for a specific package", + "properties": { + "createdAt": { + "description": "The creation date of the version", + "type": "string" + }, + "description": { + "description": "Human readable description of the package", + "type": "string" + }, + "name": { + "description": "The name of the package", + "type": "string" + }, + "version": { + "description": "The version number", + "type": "string" + } + }, + "type": "object" + }, + "PackageVersionListResponse": { + "description": "an array of versions", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "versions": { + "items": { + "$ref": "#/components/schemas/PackageVersion" + }, + "type": "array" + } + }, + "type": "object" + }, + "PaginationInfo": { + "description": "object that describes the pagination information", + "properties": { + "index": { + "description": "Page index of results", + "format": "int32", + "type": "integer" + }, + "nextPage": { + "description": "Serialized pointer to the next results page. Should be used for fetching next page. Can be empty", + "type": "string" + }, + "size": { + "description": "Number of results in page", + "format": "int32", + "type": "integer" + }, + "totalPages": { + "description": "Total number of pages available", + "format": "int64", + "type": "integer" + }, + "totalResults": { + "description": "Total number of results available", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "ProductEnablement": { + "description": "Product Enablement", + "properties": { + "expirationDate": { + "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)", + "type": "string" + }, + "poDetails": { + "items": { + "$ref": "#/components/schemas/PurchaseOrder" + }, + "type": "array" + }, + "productName": { + "description": "Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc)", + "type": "string" + }, + "type": { + "description": "Product Enablement Types", + "enum": [ + "NGC_ADMIN_EVAL", + "NGC_ADMIN_NFR", + "NGC_ADMIN_COMMERCIAL", + "EMS_EVAL", + "EMS_NFR", + "EMS_COMMERCIAL", + "NGC_ADMIN_DEVELOPER" + ], + "type": "string" + } + }, + "required": [ + "productName", + "type" + ], + "type": "object" + }, + "ProductSubscription": { + "description": "Product Subscription", + "properties": { + "emsEntitlementType": { + "description": "EMS Subscription type. (options: EMS_EVAL, EMS_NFR and EMS_COMMERCIAL)", + "enum": [ + "EMS_EVAL", + "EMS_NFR", + "EMS_COMMERICAL", + "EMS_COMMERCIAL" + ], + "type": "string" + }, + "expirationDate": { + "description": "Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd)", + "type": "string" + }, + "id": { + "description": "Unique entitlement identifier", + "type": "string" + }, + "productName": { + "description": "Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc).", + "type": "string" + }, + "startDate": { + "description": "Date on which the subscription becomes active. (yyyy-MM-dd)", + "type": "string" + }, + "type": { + "description": "Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, NGC_ADMIN_COMMERCIAL)", + "enum": [ + "NGC_ADMIN_EVAL", + "NGC_ADMIN_NFR", + "NGC_ADMIN_COMMERCIAL" + ], + "type": "string" + } + }, + "required": [ + "productName" + ], + "type": "object" + }, + "PurchaseOrder": { + "description": "Purchase Order.", + "properties": { + "entitlementId": { + "description": "Entitlement identifier.", + "type": "string" + }, + "pkId": { + "description": "PAK (Product Activation Key) identifier.", + "type": "string" + } + }, + "type": "object" + }, + "RepoScanSettings": { + "description": "Repo scan setting definition", + "properties": { + "repoScanAllowOverride": { + "description": "Allow org admin to override the org level repo scan settings", + "type": "boolean" + }, + "repoScanByDefault": { + "description": "Allow repository scanning by default", + "type": "boolean" + }, + "repoScanEnableNotifications": { + "description": "Sends notification to end user after scanning is done", + "type": "boolean" + }, + "repoScanEnableTeamOverride": { + "description": "Allow override settings at team level. Only used in org level object", + "type": "boolean" + }, + "repoScanEnabled": { + "description": "Enable the repository scan or not. Only used in org level object", + "type": "boolean" + }, + "repoScanShowResults": { + "description": "Allow showing scan results to CLI or UI", + "type": "boolean" + } + }, + "type": "object" + }, + "RequestStatus": { + "properties": { + "requestId": { + "type": "string" + }, + "serverId": { + "type": "string" + }, + "statusCode": { + "description": "Describes response status reported by the server.", + "enum": [ + "UNKNOWN", + "SUCCESS", + "UNAUTHORIZED", + "PAYMENT_REQUIRED", + "FORBIDDEN", + "TIMEOUT", + "EXISTS", + "NOT_FOUND", + "INTERNAL_ERROR", + "INVALID_REQUEST", + "INVALID_REQUEST_VERSION", + "INVALID_REQUEST_DATA", + "METHOD_NOT_ALLOWED", + "CONFLICT", + "UNPROCESSABLE_ENTITY", + "TOO_MANY_REQUESTS", + "INSUFFICIENT_STORAGE", + "SERVICE_UNAVAILABLE", + "PAYLOAD_TOO_LARGE", + "NOT_ACCEPTABLE", + "UNAVAILABLE_FOR_LEGAL_REASONS", + "BAD_GATEWAY", + "PRECONDITION_FAILED" + ], + "type": "string" + }, + "statusDescription": { + "type": "string" + } + }, + "type": "object" + }, + "Response": { + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "RoleProduct": { + "description": "Product information of the role", + "properties": { + "displayName": { + "description": "Display Name of the product from the product catalog to which this role is associated with", + "type": "string" + }, + "name": { + "description": "Name of the product from the product catalog to which this role is associated with", + "type": "string" + } + }, + "type": "object" + }, + "SearchParamFilter": { + "properties": { + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "SearchParamOrderBy": { + "properties": { + "field": { + "type": "string" + }, + "value": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + "SearchParams": { + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "filters": { + "items": { + "$ref": "#/components/schemas/SearchParamFilter" + }, + "type": "array" + }, + "groupBy": { + "type": "string" + }, + "orderBy": { + "items": { + "$ref": "#/components/schemas/SearchParamOrderBy" + }, + "type": "array" + }, + "page": { + "format": "int64", + "type": "integer" + }, + "pageSize": { + "format": "int64", + "type": "integer" + }, + "query": { + "type": "string" + }, + "queryFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scoredSize": { + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "SecurityConfiguration": { + "properties": { + "additionalQueryStringParams": { + "additionalProperties": { + "type": "object" + }, + "type": "object" + }, + "apiKey": { + "deprecated": true, + "type": "string" + }, + "apiKeyName": { + "deprecated": true, + "type": "string" + }, + "apiKeyVehicle": { + "deprecated": true, + "type": "string" + }, + "appName": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "realm": { + "type": "string" + }, + "scopeSeparator": { + "type": "string" + }, + "useBasicAuthenticationWithAccessCodeGrant": { + "type": "boolean" + } + }, + "type": "object" + }, + "ServiceAccess": { + "description": "List of actions that this role allows", + "properties": { + "accessLevels": { + "description": "List of access levels that this role allows", + "items": { + "description": "List of access levels that this role allows", + "type": "string" + }, + "type": "array" + }, + "service": { + "description": "Service that this role allows", + "type": "string" + } + }, + "type": "object" + }, + "SwaggerResource": { + "properties": { + "location": { + "deprecated": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "swaggerVersion": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "TargetSystemUserIdentifier": { + "description": "Information about the user who is attempting to run the job", + "properties": { + "gid": { + "description": "gid of the user on this team", + "format": "int64", + "type": "integer" + }, + "orgName": { + "description": "Org context for the job", + "type": "string" + }, + "starfleetId": { + "description": "Starfleet ID of the user creating the job.", + "type": "string" + }, + "teamName": { + "description": "Team context for the job", + "type": "string" + }, + "uid": { + "description": "uid of the user on this team", + "format": "int64", + "type": "integer" + }, + "userId": { + "description": "Unique ID of the user who submitted the job", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "Team": { + "description": "Information about the team", + "properties": { + "description": { + "description": "description of the team", + "type": "string" + }, + "id": { + "description": "unique Id of this team.", + "format": "int64", + "type": "integer" + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + }, + "isDeleted": { + "description": "indicates if the team is deleted or not", + "type": "boolean" + }, + "name": { + "description": "team name", + "type": "string" + }, + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + } + }, + "type": "object" + }, + "TeamCreateRequest": { + "description": "Request to create new Team", + "properties": { + "description": { + "description": "description of the team", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "team name", + "maxLength": 19, + "minLength": 2, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "TeamCreateResponse": { + "description": "response to an team creation request, includes unique team id", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "team": { + "$ref": "#/components/schemas/Team" + } + }, + "type": "object" + }, + "TeamListResponse": { + "description": "listing of all teams", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "teams": { + "items": { + "$ref": "#/components/schemas/Team" + }, + "type": "array" + } + }, + "type": "object" + }, + "TeamResponse": { + "description": "details about one team", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "team": { + "$ref": "#/components/schemas/Team" + } + }, + "type": "object" + }, + "TeamUpdateRequest": { + "description": "object used to update information about existing team", + "properties": { + "description": { + "description": "description of the team", + "maxLength": 255, + "type": "string" + }, + "infinityManagerSettings": { + "$ref": "#/components/schemas/InfinityManagerSettings" + }, + "repoScanSettings": { + "$ref": "#/components/schemas/RepoScanSettings" + } + }, + "type": "object" + }, + "UiConfiguration": { + "properties": { + "apisSorter": { + "deprecated": true, + "type": "string" + }, + "deepLinking": { + "type": "boolean" + }, + "defaultModelExpandDepth": { + "format": "int32", + "type": "integer" + }, + "defaultModelRendering": { + "enum": [ + "example", + "model" + ], + "type": "string" + }, + "defaultModelsExpandDepth": { + "format": "int32", + "type": "integer" + }, + "displayOperationId": { + "type": "boolean" + }, + "displayRequestDuration": { + "type": "boolean" + }, + "docExpansion": { + "enum": [ + "none", + "list", + "full" + ], + "type": "string" + }, + "filter": { + "type": "object" + }, + "jsonEditor": { + "deprecated": true, + "type": "boolean" + }, + "maxDisplayedTags": { + "format": "int32", + "type": "integer" + }, + "operationsSorter": { + "enum": [ + "alpha", + "method" + ], + "type": "string" + }, + "showExtensions": { + "type": "boolean" + }, + "showRequestHeaders": { + "deprecated": true, + "type": "boolean" + }, + "supportedSubmitMethods": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tagsSorter": { + "enum": [ + "alpha" + ], + "type": "string" + }, + "validatorUrl": { + "type": "string" + } + }, + "type": "object" + }, + "User": { + "description": "information about the user", + "properties": { + "clientId": { + "description": "unique auth client id of this user.", + "type": "string" + }, + "createdDate": { + "description": "Created date for this user", + "type": "string" + }, + "email": { + "description": "Email address of the user. This should be unique.", + "maxLength": 128, + "minLength": 7, + "type": "string" + }, + "firstLoginDate": { + "description": "Last time the user logged in", + "type": "string" + }, + "hasBetaAccess": { + "description": "Determines if the user has beta access", + "type": "boolean" + }, + "hasProfile": { + "description": "indicate if user profile has been completed.", + "type": "boolean" + }, + "hasSignedAODTEULA": { + "description": "indicates if user has accepted AODT End User License Agreement.", + "type": "boolean" + }, + "hasSignedAiFoundryPartnershipsEULA": { + "description": "indicates if user has accepted AI Foundry Partnerships eula", + "type": "boolean" + }, + "hasSignedBaseCommandEULA": { + "description": "indicates if user has accepted Base Command End User License Agreement.", + "type": "boolean" + }, + "hasSignedBaseCommandManagerEULA": { + "description": "indicates if user has accepted Base Command Manager End User License Agreement.", + "type": "boolean" + }, + "hasSignedBioNeMoEULA": { + "description": "indicates if user has accepted BioNeMo End User License Agreement.", + "type": "boolean" + }, + "hasSignedContainerPublishingEULA": { + "description": "indicates if user has accepted container publishing eula", + "type": "boolean" + }, + "hasSignedCuOptEULA": { + "description": "indicates if user has accepted CuOpt eula", + "type": "boolean" + }, + "hasSignedEULA": { + "description": "Determines if the user has signed the NGC End User License Agreement.", + "type": "boolean" + }, + "hasSignedEarth2EULA": { + "description": "indicates if user has accepted Earth-2 eula", + "type": "boolean" + }, + "hasSignedEgxEULA": { + "description": "[Deprecated] indicates if user has accepted EGX End User License Agreement.", + "type": "boolean" + }, + "hasSignedFleetCommandEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" + }, + "hasSignedLlmEULA": { + "description": "indicates if user has accepted LLM End User License Agreement.", + "type": "boolean" + }, + "hasSignedNVAIEEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" + }, + "hasSignedNVQCEULA": { + "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement.", + "type": "boolean" + }, + "hasSignedNvidiaEULA": { + "description": "Determines if the user has signed the NVIDIA End User License Agreement.", + "type": "boolean" + }, + "hasSignedOmniverseEULA": { + "description": "indicates if user has accepted Omniverse End User License Agreement.", + "type": "boolean" + }, + "hasSignedPrivacyPolicy": { + "description": "Determines if the user has signed the Privacy Policy.", + "type": "boolean" + }, + "hasSignedThirdPartyRegistryShareEULA": { + "description": "indicates if user has consented to share their registration info with other parties", + "type": "boolean" + }, + "hasSubscribedToEmail": { + "description": "Determines if the user has opted in email subscription.", + "type": "boolean" + }, + "id": { + "description": "unique Id of this user.", + "format": "int64", + "type": "integer" + }, + "idpType": { + "description": "Type of IDP, Identity Provider. Used for login.", + "enum": [ + "NVIDIA", + "ENTERPRISE" + ], + "type": "string" + }, + "isActive": { + "description": "Determines if the user is active or not.", + "type": "boolean" + }, + "isDeleted": { + "description": "Indicates if user was deleted from the system.", + "type": "boolean" + }, + "isSAML": { + "description": "Determines if the user is a SAML account or not.", + "type": "boolean" + }, + "jobPositionTitle": { + "description": "Title of user's job position.", + "type": "string" + }, + "lastLoginDate": { + "description": "Last time the user logged in", + "type": "string" + }, + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "roles": { + "description": "List of roles that the user have", + "items": { + "$ref": "#/components/schemas/UserRole" + }, + "type": "array" + }, + "starfleetId": { + "description": "unique starfleet id of this user.", + "type": "string" + }, + "storageQuota": { + "description": "Storage quota for this user.", + "items": { + "$ref": "#/components/schemas/UserStorageQuota" + }, + "type": "array" + }, + "updatedDate": { + "description": "Updated date for this user", + "type": "string" + }, + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + }, + "verified": { + "description": "Is user's email or phone number is verified", + "type": "boolean" + } + }, + "type": "object" + }, + "UserCreateRequest": { + "description": "object used request user creation in an existing org", + "properties": { + "email": { + "description": "Email address of the user. This should be unique.", + "maxLength": 128, + "minLength": 6, + "type": "string" + }, + "emailOptIn": { + "description": "indicates if user has opt in to nvidia emails", + "type": "boolean" + }, + "eulaAccepted": { + "description": "indicates if user has accepted EULA", + "type": "boolean" + }, + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "roleType": { + "description": "DEPRECATED - use roleTypes which allows multiple roles", + "type": "string" + }, + "roleTypes": { + "description": "feature roles to give to the user", + "items": { + "description": "feature roles to give to the user", + "type": "string" + }, + "type": "array" + }, + "salesforceContactJobRole": { + "description": "user job role", + "type": "string" + }, + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + } + }, + "required": [ + "email" + ], + "type": "object" + }, + "UserInvitation": { + "description": "User invitation to an NGC org or team", + "properties": { + "createdDate": { + "description": "Date on which the invitation was created. (ISO-8601 format)", + "type": "string" + }, + "email": { + "description": "Email address of the user.", + "maxLength": 128, + "minLength": 7, + "type": "string" + }, + "id": { + "description": "Unique invitation ID", + "type": "string" + }, + "isProcessed": { + "description": "Flag indicating if the invitation has already been accepted by the user.", + "type": "boolean" + }, + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "org": { + "description": "Org to which a user was invited.", + "type": "string" + }, + "roles": { + "description": "List of roles that the user have.", + "items": { + "description": "List of roles that the user have.", + "type": "string" + }, + "type": "array" + }, + "team": { + "description": "Team to which a user was invited.", + "type": "string" + }, + "type": { + "description": "Type of invitation. The invitation is either to an organization or to a team within organization.", + "enum": [ + "ORGANIZATION", + "TEAM" + ], + "type": "string" + } + }, + "type": "object" + }, + "UserInvitationListResponse": { + "description": "Response for a list of user invitations.", + "properties": { + "invitations": { + "description": "List of invitations.", + "items": { + "$ref": "#/components/schemas/UserInvitation" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "type": "object" + }, + "UserKeyResponse": { + "description": "response to a request to access key such as docker token", + "properties": { + "cloudNfsKey": { + "type": "string" + }, + "cloudNfsKeyPwd": { + "type": "string" + }, + "cloudNfsUserName": { + "type": "string" + }, + "key": { + "maxLength": 255, + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "UserListResponse": { + "description": "Response for List User reponse", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "users": { + "description": "information about the user", + "items": { + "$ref": "#/components/schemas/User" + }, + "type": "array" + } + }, + "type": "object" + }, + "UserMetadata": { + "description": "Metadata information about the user.", + "properties": { + "company": { + "description": "Name of the company", + "maxLength": 128, + "type": "string" + }, + "companyUrl": { + "description": "Company URL", + "type": "string" + }, + "country": { + "description": "Country of the user", + "type": "string" + }, + "firstName": { + "description": "User's first name", + "maxLength": 255, + "type": "string" + }, + "industry": { + "description": "Industry segment", + "type": "string" + }, + "interest": { + "description": "List of development areas that user has interest", + "items": { + "description": "List of development areas that user has interest", + "type": "string" + }, + "type": "array" + }, + "lastName": { + "description": "User's last name", + "maxLength": 255, + "type": "string" + }, + "role": { + "description": "Role of the user in the company", + "type": "string" + } + }, + "type": "object" + }, + "UserNcaInvitationRequest": { + "description": "NCA User invitation request", + "properties": { + "email": { + "description": "Is the user email", + "maxLength": 128, + "minLength": 7, + "type": "string" + }, + "invitationExpirationIn": { + "description": "Is the numbers of days the invitation will expire", + "format": "int32", + "type": "integer" + }, + "inviteAs": { + "description": "Nca allow users to be invited as Admin and as Member", + "enum": [ + "ADMIN", + "MEMBER" + ], + "type": "string" + }, + "message": { + "description": "Is a message to the new user", + "type": "string" + } + }, + "type": "object" + }, + "UserResponse": { + "description": " about one user", + "properties": { + "activationToken": { + "description": "token needed to activate the user to enable login and other features", + "type": "string" + }, + "ncaRole": { + "description": "NCA role", + "enum": [ + "UNKNOWN", + "ADMINISTRATOR", + "MEMBER", + "OWNER", + "PENDING" + ], + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "user": { + "$ref": "#/components/schemas/User" + }, + "userRoles": { + "description": "DEPRECATED - Please use roles inside user", + "items": { + "$ref": "#/components/schemas/UserRole" + }, + "type": "array" + } + }, + "type": "object" + }, + "UserRole": { + "description": "List of roles that the user have", + "properties": { + "org": { + "$ref": "#/components/schemas/Organization" + }, + "orgRoles": { + "description": "List of org role types that the user have", + "items": { + "description": "List of org role types that the user have", + "type": "string" + }, + "type": "array" + }, + "roleTypes": { + "description": "DEPRECATED - List of role types that the user have", + "items": { + "description": "DEPRECATED - List of role types that the user have", + "type": "string" + }, + "type": "array" + }, + "targetSystemUserIdentifier": { + "$ref": "#/components/schemas/TargetSystemUserIdentifier" + }, + "team": { + "$ref": "#/components/schemas/Team" + }, + "teamRoles": { + "description": "List of team role types that the user have", + "items": { + "description": "List of team role types that the user have", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "UserRoleDefinition": { + "description": "List of roles", + "properties": { + "allowedActions": { + "description": "List of actions that this role allows", + "items": { + "$ref": "#/components/schemas/ServiceAccess" + }, + "type": "array" + }, + "displayName": { + "description": "Display Name of the role", + "type": "string" + }, + "name": { + "description": "Name of the role", + "type": "string" + }, + "product": { + "$ref": "#/components/schemas/RoleProduct" + }, + "shortDisplayName": { + "description": "Short Display Name of the role", + "type": "string" + } + }, + "type": "object" + }, + "UserRoleDefinitionsResponse": { + "description": "Response containing all the roles defined in NGC and their allowed actions", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus" + }, + "roles": { + "description": "List of roles", + "items": { + "$ref": "#/components/schemas/UserRoleDefinition" + }, + "type": "array" + } + }, + "type": "object" + }, + "UserStorageQuota": { + "description": "represents user storage quota for a given ace and available unused storage", + "properties": { + "aceId": { + "description": "id of the ace", + "format": "int64", + "type": "integer" + }, + "aceName": { + "description": "name of the ace", + "type": "string" + }, + "available": { + "description": "Available space in bytes", + "format": "int64", + "type": "integer" + }, + "datasetCount": { + "description": "Number of datasets that are a part of user's used storage", + "format": "int64", + "type": "integer" + }, + "datasetsUsage": { + "description": "Space used by datasets in bytes", + "format": "int64", + "type": "integer" + }, + "orgName": { + "description": "The org name that this user quota tied to. This is needed for analytics", + "type": "string" + }, + "quota": { + "description": "Assigned quota in bytes", + "format": "int64", + "type": "integer" + }, + "resultsetCount": { + "description": "Number of resultsets that are a part of user's used storage", + "format": "int64", + "type": "integer" + }, + "resultsetsUsage": { + "description": "Space used by resultsets in bytes", + "format": "int64", + "type": "integer" + }, + "storageClusterDescription": { + "description": "Description of this storage cluster", + "type": "string" + }, + "storageClusterName": { + "description": "Name of storage cluster", + "type": "string" + }, + "storageClusterUuid": { + "description": "Identifier to this storage cluster", + "type": "string" + }, + "workspacesCount": { + "description": "Number of workspaces that are a part of user's used storage", + "format": "int64", + "type": "integer" + }, + "workspacesUsage": { + "description": "Space used by workspaces in bytes", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "UserUpdateRequest": { + "description": "object used to request user update", + "properties": { + "hasEmailOptIn": { + "description": "indicates if user has opt in to nvidia emails", + "type": "boolean" + }, + "hasSignedAODTEULA": { + "description": "indicates if user has accepted AODT End User License Agreement.", + "type": "boolean" + }, + "hasSignedAiFoundryPartnershipsEULA": { + "description": "indicates if user has accepted AI Foundry Partnerships End User License Agreement.", + "type": "boolean" + }, + "hasSignedBaseCommandEULA": { + "description": "indicates if user has accepted Base Command EULA", + "type": "boolean" + }, + "hasSignedBaseCommandManagerEULA": { + "description": "indicates if user has accepted Base Command Manager End User License Agreement.", + "type": "boolean" + }, + "hasSignedBioNeMoEULA": { + "description": "indicates if user has accepted BioNeMo End User License Agreement.", + "type": "boolean" + }, + "hasSignedContainerPublishingEULA": { + "description": "indicates if user has accepted container publishing eula", + "type": "boolean" + }, + "hasSignedCuOptEULA": { + "description": "indicates if user has accepted CuOpt End User License Agreement.", + "type": "boolean" + }, + "hasSignedEULA": { + "description": "indicates if user has accepted NGC EULA", + "type": "boolean" + }, + "hasSignedEarth2EULA": { + "description": "indicates if user has accepted Earth-2 End User License Agreement.", + "type": "boolean" + }, + "hasSignedEgxEULA": { + "description": "indicates if user has accepted EGX EULA", + "type": "boolean" + }, + "hasSignedFleetCommandEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" + }, + "hasSignedLlmEULA": { + "description": "indicates if user has accepted LLM End User License Agreement.", + "type": "boolean" + }, + "hasSignedNVAIEEULA": { + "description": "indicates if user has accepted Fleet Command End User License Agreement.", + "type": "boolean" + }, + "hasSignedNVQCEULA": { + "description": "indicates if user has accepted Nvidia Quantum Cloud End User License Agreement.", + "type": "boolean" + }, + "hasSignedNvidiaEULA": { + "description": "indicates if user has accepted NVIDIA EULA", + "type": "boolean" + }, + "hasSignedOmniverseEULA": { + "description": "indicates if user has accepted Omniverse End User License Agreement.", + "type": "boolean" + }, + "hasSignedPrivacyPolicy": { + "description": "indicates if the user has signed the Privacy Policy", + "type": "boolean" + }, + "hasSignedThirdPartyRegistryShareEULA": { + "description": "indicates if user has consented to share their registration info with other parties", + "type": "boolean" + }, + "name": { + "description": "user name", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "userMetadata": { + "$ref": "#/components/schemas/UserMetadata" + } + }, + "type": "object" + }, + "UsersInfo": { + "description": "Users information.", + "properties": { + "totalUsers": { + "description": "Total number of users.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "ValidateOrgQueryParams": { + "description": "Object for defining params to validate org.", + "properties": { + "orgOwner": { + "$ref": "#/components/schemas/OrgOwner" + }, + "pecSfdcId": { + "description": "Product end customer salesforce.com id (external customer id) for enterprise product.", + "type": "string" + }, + "productSubscriptions": { + "description": "Product Subscriptions.", + "items": { + "$ref": "#/components/schemas/ProductSubscription" + }, + "type": "array" + } + }, + "required": [ + "orgOwner", + "pecSfdcId", + "productSubscriptions" + ], + "type": "object" + } + }, + "securitySchemes": { + "api-key": { + "description": "Authenticate your API requests by adding the API key from https://ngc.nvidia.com/setup/api-key", + "in": "header", + "name": "Authorization", + "type": "apiKey" + }, + "bearer-token": { + "bearerFormat": "JWT", + "description": "Users can issue API tokens by calling GET https://ngc.authn.nvidia.com/token?scope=group/ngc[:[/]].\nWhenever the user wants to access a protected route or resource, the user must get the token for that particular organization / team", + "scheme": "bearer", + "type": "http" + } + } + }, + "info": { + "description": "The NGC Web API is an interface for querying information from and enacting change in a NGC world. \n", + "license": { + "name": "Legal Notices", + "url": "https://www.nvidia.com/en-us/legal_info" + }, + "title": "NGC API Documentation", + "version": "v3.249.17" + }, + "openapi": "3.0.1", + "paths": { + "/health": { + "get": { + "description": "Used to check the health status of the web service only", + "operationId": "status", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Web Service Health Status", + "tags": [ + "Services" + ] + } + }, + "/health/all": { + "get": { + "description": "Used to get health status of all services", + "operationId": "statusDetails", + "parameters": [ + { + "description": "boolean value to indicating to show details or not", + "in": "query", + "name": "showDetails", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + }, + { + "description": "secret value that validates the call in order to show details", + "in": "query", + "name": "secret", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "All Service Health Status", + "tags": [ + "Services" + ] + } + }, + "/public-keys": { + "get": { + "description": "Used to check the health status of the web service only", + "operationId": "getPublicKey", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Web Service Health Status", + "tags": [ + "Services" + ] + } + }, + "/roles": { + "get": { + "description": "List of roles in NGC and their scopes", + "operationId": "getRoles", + "parameters": [ + { + "description": "flag indicate if hidden roles should be included", + "in": "query", + "name": "show-hidden", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserRoleDefinitionsResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "NGC Roles", + "tags": [ + "Services" + ] + } + }, + "/swagger-resources": { + "delete": { + "operationId": "swaggerResources_6", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "get": { + "operationId": "swaggerResources_4", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "head": { + "operationId": "swaggerResources_1", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "options": { + "operationId": "swaggerResources", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "patch": { + "operationId": "swaggerResources_2", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "post": { + "operationId": "swaggerResources_3", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "put": { + "operationId": "swaggerResources_5", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "items": { + "$ref": "#/components/schemas/SwaggerResource" + }, + "type": "array" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + } + }, + "/swagger-resources/configuration/security": { + "delete": { + "operationId": "securityConfiguration_6", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "get": { + "operationId": "securityConfiguration_4", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "head": { + "operationId": "securityConfiguration_1", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "options": { + "operationId": "securityConfiguration", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "patch": { + "operationId": "securityConfiguration_2", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "post": { + "operationId": "securityConfiguration_3", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "put": { + "operationId": "securityConfiguration_5", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/SecurityConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + } + }, + "/swagger-resources/configuration/ui": { + "delete": { + "operationId": "uiConfiguration_6", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "get": { + "operationId": "uiConfiguration_4", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "head": { + "operationId": "uiConfiguration_1", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "options": { + "operationId": "uiConfiguration", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "patch": { + "operationId": "uiConfiguration_2", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "post": { + "operationId": "uiConfiguration_3", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + }, + "put": { + "operationId": "uiConfiguration_5", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UiConfiguration" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Server Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "tags": [ + "api-resource-controller" + ] + } + }, + "/v2/admin/backfill-orgs-to-kratos": { + "post": { + "description": "Backfill Orgs to Kratos", + "operationId": "backfillOrgsToKratos", + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Backfill Orgs to Kratos", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/entitlements": { + "get": { + "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", + "operationId": "listOrganizationsWithEntitlement_1", + "parameters": [ + { + "description": "filter by org-name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "filter by product-name", + "in": "query", + "name": "product-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "get is paid subscription entitlements", + "in": "query", + "name": "is-paid-subscription", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListEntitlementResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Organizations with Entitlements", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/org": { + "get": { + "description": "List all organizations. (SuperAdmin privileges required)", + "operationId": "listOrganizations_2", + "parameters": [ + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "Org name to search", + "in": "query", + "name": "org-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Org description to search", + "in": "query", + "name": "org-desc", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org display name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org owner name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org owner email. Email should be base-64-encoded.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Org Type to search", + "in": "query", + "name": "org-type", + "required": false, + "schema": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + { + "description": "PEC ID to search", + "in": "query", + "name": "pec-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Organizations", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/org/validate": { + "get": { + "description": "List all organizations that match the validate org params", + "operationId": "listValidatedOrganizations", + "parameters": [ + { + "description": "Validate Organization Parameters", + "in": "query", + "name": "q", + "required": true, + "schema": { + "$ref": "#/components/schemas/ValidateOrgQueryParams" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Validated Organizations", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/org/{org-name}": { + "get": { + "description": "Get organization info. (SuperAdmin privileges required)", + "operationId": "getOrg_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get Organization", + "tags": [ + "Super Admin Org Controller" + ] + }, + "patch": { + "deprecated": true, + "description": "Update org information and settings. Superadmin privileges required", + "operationId": "updateOrg_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Update Organization", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/org/{org-name}/entitlements": { + "get": { + "description": "List all organizations with entitlements. (SuperAdmin, ECM and Billing privileges required)", + "operationId": "listOrganizationsWithEntitlement", + "parameters": [ + { + "description": "filter by org-name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "filter by product-name", + "in": "query", + "name": "product-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "get is paid subscription entitlements", + "in": "query", + "name": "is-paid-subscription", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListEntitlementResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Organizations with Entitlements", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/org/{org-name}/org-owner-backfill": { + "post": { + "description": "Backfill the org owner for users", + "operationId": "backfillOrgOwnerByOrg", + "parameters": [ + { + "in": "path", + "name": "Org Name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Backfill the org owner for users", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users": { + "post": { + "description": "Create an Org-Admin User (Super Admin privileges required)", + "operationId": "createUserInTeam_1", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Boolean to send email notification, default is true", + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create User", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users/{id}": { + "post": { + "deprecated": true, + "description": "Add existing User to an Team", + "operationId": "addUserToTeam_1", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "user role, defaults to REGISTRY_READ", + "required": false, + "schema": { + "default": "REGISTRY_READ", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Add existing User to an Team", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add user role in team.", + "operationId": "addUserRole_3", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Add user role in team", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/team/{team-name}/users/{id}/remove-role": { + "delete": { + "deprecated": true, + "description": "Remove user role in team (if the last role is removed, the user is removed from the team).", + "operationId": "removeUserRole_3", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove user role in team", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/teams": { + "get": { + "description": "List all Teams", + "operationId": "listTeams_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "Team name to search", + "in": "query", + "name": "team-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Get all team that has scan by default only", + "in": "query", + "name": "scan-by-default", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Get all team that has scan allow override only", + "in": "query", + "name": "scan-allow-override", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Get all team that has scan show results only", + "in": "query", + "name": "scan-show-results", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/TeamListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Teams", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/org/{org-name}/teams/{team-name}": { + "get": { + "description": "Get one team", + "operationId": "getTeam_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get Team", + "tags": [ + "Super Admin Org Controller" + ] + }, + "patch": { + "description": "Edit a Team", + "operationId": "editTeam_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Edit Team", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/org/{org-name}/users": { + "post": { + "description": "Create an user in an Organization (Super Admin privileges required)", + "operationId": "createUserInOrg_1", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Boolean to send email notification, default is true", + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create User", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/users/{id}": { + "delete": { + "description": "Remove User from org.", + "operationId": "removeUserFromOrg_2", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove User from org", + "tags": [ + "Super Admin User Controller" + ] + }, + "post": { + "deprecated": true, + "description": "Add existing User to an Org", + "operationId": "addUserToOrg", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "user role, defaults to REGISTRY_READ", + "required": false, + "schema": { + "default": "REGISTRY_READ", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Add existing User to an Org", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add user role in org.", + "operationId": "addUserRole_2", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Add user role in org", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/users/{id}/remove-role": { + "delete": { + "deprecated": true, + "description": "Remove user role in org (if the last role is removed, the user is removed from the org and org teams).", + "operationId": "removeUserRole_2", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove user role in org", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/org/{org-name}/users/{id}/update-role": { + "patch": { + "deprecated": true, + "description": "Update User Role in org", + "operationId": "updateUserRole_2", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Update User Role in org", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/orgs": { + "post": { + "description": "Create a new organization. (SuperAdmin privileges required)", + "operationId": "createOrganization", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create Organization", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/orgs/offboarded": { + "get": { + "description": "List all Offboarded organizations.", + "operationId": "listOffboardedOrgs", + "parameters": [ + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Offboarded Organizations", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v2/admin/users/invite": { + "patch": { + "deprecated": true, + "description": "Invite an existing user again (Super Admin privileges required)", + "operationId": "emailInviteToUser", + "parameters": [ + { + "in": "query", + "name": "email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Boolean to send email notification, default is true", + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Re invite user", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/users/me": { + "get": { + "description": "What am I? Admin version, shows more info than regular endpoint", + "operationId": "whoAmI_1", + "parameters": [ + { + "in": "query", + "name": "org-name", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Who am I? Admin version", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/users/{id}": { + "get": { + "description": "Get User details", + "operationId": "getUserDetails", + "parameters": [ + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get User Information", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/users/{id}/crm-sync": { + "post": { + "description": "Sync crm id with user email (Super Admin privileges required)", + "operationId": "syncCrmUser", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "format": "int64", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Sync crm id with user email", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/users/{id}/migrate-deprecated-roles": { + "post": { + "description": "Migrate User Deprecated Roles.", + "operationId": "migrateUserDeprecatedRoles", + "parameters": [ + { + "in": "path", + "name": "user id (not email)", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Migrate User Deprecated Roles", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/admin/users/{user-id}/org-owner-backfill": { + "post": { + "description": "Backfill the org owner for individual users", + "operationId": "backfillOrgOwnerByUser", + "parameters": [ + { + "in": "path", + "name": "User ID of the user", + "required": true, + "schema": { + "format": "int64", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Backfill the org owner for individual users", + "tags": [ + "Super Admin User Controller" + ] + } + }, + "/v2/org/{org-name}/starfleetIds/{starfleet-id}": { + "get": { + "description": "Get User details in org by starfleet Id", + "operationId": "getUserInOrg_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "starfleet-id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get User in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/starfleetIds/{starfleet-id}": { + "get": { + "description": "Get User details in team by starfleet Id", + "operationId": "getUserInTeamByStarfleetId", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "starfleet-id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get User in team", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users": { + "get": { + "description": "Get list of users in team. (User Admin in team privileges required)", + "operationId": "listUsersInTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", + "in": "query", + "name": "q", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List users in team", + "tags": [ + "Users Management" + ] + }, + "post": { + "description": "Creates a User and add them to a team within the org.", + "operationId": "createUserInTeam", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Creates a User in team", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users/invitations": { + "get": { + "description": "List invitations in a team. (Team User Admin privileges required)", + "operationId": "listInvitationsForUserInTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "in": "query", + "name": "orderBy", + "required": false, + "schema": { + "enum": [ + "NAME_ASC", + "NAME_DESC" + ], + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "User Search Parameters", + "in": "query", + "name": "q", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInvitationListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List user invitations in a team.", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users/invitations/{id}": { + "delete": { + "description": "Delete a specific invitation in an team. (Org Admin or Team User Admin privileges required)", + "operationId": "deleteUserInvitationInTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "invitation ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Delete a specific invitation in a team.", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users/invitations/{id}/resend-invitation-email": { + "get": { + "description": "Resend email of a specific invitation in a team (Org or Team User Admin privileges required).", + "operationId": "resendUserInvitationEmailInTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "invitation ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Resend email of a specific invitation in a team.", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}": { + "delete": { + "description": "Removes User from team. (Org Admin or Team Admin Privileges Required).", + "operationId": "removeUserFromTeam_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Removes User from team", + "tags": [ + "Users Management" + ] + }, + "get": { + "description": "Get User details within team context", + "operationId": "getUserInTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get User in team", + "tags": [ + "Users Management" + ] + }, + "post": { + "description": "Add a User to team", + "operationId": "addUserToTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "user role", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Add a User to team", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add User Role in team.", + "operationId": "addUserRole_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Add User Role in team", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}/remove-role": { + "delete": { + "deprecated": true, + "description": "Remove User Role in team (if the last role is removed, the user is removed from the team).", + "operationId": "removeUserRole_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove User Role in team", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/team/{team-name}/users/{id}/update-role": { + "patch": { + "deprecated": true, + "description": "Update User Role in team", + "operationId": "updateUserRole_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Update User Role in team", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/teams": { + "get": { + "description": "List all Teams", + "operationId": "listTeams", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Teams", + "tags": [ + "Teams" + ] + }, + "post": { + "description": "Create team in org. (Org Admin Privileges Required)", + "operationId": "createTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamCreateResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create Team", + "tags": [ + "Teams" + ] + } + }, + "/v2/org/{org-name}/teams/{team-name}": { + "delete": { + "description": "Delete a Team", + "operationId": "deleteTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Delete Team", + "tags": [ + "Teams" + ] + }, + "get": { + "description": "Get Team by name", + "operationId": "getTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get Team", + "tags": [ + "Teams" + ] + }, + "patch": { + "description": "Edit a Team", + "operationId": "editTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Edit Team", + "tags": [ + "Teams" + ] + } + }, + "/v2/org/{org-name}/users": { + "get": { + "description": "Get list of users in organization. (User Admin in org privileges required)", + "operationId": "listUsersInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Name of team to exclude members from", + "in": "query", + "name": "exclude-from-team", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented", + "in": "query", + "name": "q", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List users In org", + "tags": [ + "Users Management" + ] + }, + "post": { + "description": "Creates a User", + "operationId": "createUserInOrg", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Creates a User in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/invitations": { + "get": { + "description": "List invitations in an org. (Org User Admin privileges required)", + "operationId": "listInvitationsForUserInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "in": "query", + "name": "orderBy", + "required": false, + "schema": { + "enum": [ + "NAME_ASC", + "NAME_DESC" + ], + "type": "string" + } + }, + { + "description": "User Search Parameters", + "in": "query", + "name": "q", + "required": false, + "schema": { + "$ref": "#/components/schemas/SearchParams" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInvitationListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List user invitations in an org.", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/invitations/{id}": { + "delete": { + "description": "Delete a specific invitation in an org. (Org User Admin privileges required)", + "operationId": "deleteUserInvitationInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "invitation ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Delete a specific invitation in an org.", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/invitations/{id}/resend-invitation-email": { + "get": { + "description": "Resend email of a specific invitation in an org (Org User Admin privileges required).", + "operationId": "resendUserInvitationEmailInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "invitation ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Resend email of a specific invitation in an org.", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/{id}": { + "delete": { + "description": "Remove User from org. (User Admin Privileges Required)", + "operationId": "removeUserFromOrg_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If anonymize is true, then org owner permission is required.", + "in": "query", + "name": "anonymize", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove User from org", + "tags": [ + "Users Management" + ] + }, + "get": { + "description": "Get User details in org context", + "operationId": "getUserInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If the IDP ID is provided then it is used instead of the one configured for the organization. If no IDP is configured for the organization, then IDP is guessed based on the email domain", + "in": "query", + "name": "idp-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get User in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/{id}/add-role": { + "patch": { + "deprecated": true, + "description": "Add User Role in org.", + "operationId": "addUserRole", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Add User Role in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/{id}/invite": { + "get": { + "deprecated": true, + "description": "Create a new invitation and send email to a user. This is used when a previously sent invite email expired. (Org Admin privileges required)", + "operationId": "emailInviteToUser_1", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "send-email", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create a new Invitation and send Email to User", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/{id}/remove-role": { + "delete": { + "deprecated": true, + "description": "Remove User Role in org (if the last role is removed, the user is removed from the org and org teams).", + "operationId": "removeUserRole", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove User Role in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/org/{org-name}/users/{id}/update-role": { + "patch": { + "deprecated": true, + "description": "Update User Role in org", + "operationId": "updateUserRole", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Update User Role in org", + "tags": [ + "Users Management" + ] + } + }, + "/v2/orgs": { + "get": { + "description": "List all organizations of the user", + "operationId": "listOrganizations_1", + "parameters": [ + { + "in": "query", + "name": "Filter using PEC ID", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org display name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org owner name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org owner email", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Organizations", + "tags": [ + "Orgs" + ] + } + }, + "/v2/orgs/{org-name}": { + "get": { + "description": "Get organization information", + "operationId": "getOrganization", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get Organization", + "tags": [ + "Orgs" + ] + }, + "patch": { + "description": "Update organization information", + "operationId": "updateOrganization", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgProfileUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Update Organization", + "tags": [ + "Orgs" + ] + } + }, + "/v2/ping": { + "head": { + "description": "A lightweight ping call (heartbeat). This would allow UI to show different overlays in case there is any problem with the subscription or if the user has not accepted TOU", + "operationId": "headPing", + "parameters": [ + { + "in": "query", + "name": "Org name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Product name", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Head ping (heartbeat)", + "tags": [ + "Users Management" + ] + } + }, + "/v2/users/me": { + "get": { + "description": "What am I?", + "operationId": "whoAmI", + "parameters": [ + { + "in": "query", + "name": "org-name", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Who am I?", + "tags": [ + "Users Management" + ] + }, + "patch": { + "description": "Edit current user profile", + "operationId": "editUserProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Edit current user profile", + "tags": [ + "Users Management" + ] + } + }, + "/v2/users/me/api-key": { + "post": { + "description": "Generate API Key", + "operationId": "generateUserApiKey", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserKeyResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Generate API Key", + "tags": [ + "Users Management" + ] + } + }, + "/v3/admin/org": { + "get": { + "description": "List all organizations. (SuperAdmin privileges required)", + "operationId": "listOrganizations", + "parameters": [ + { + "description": "The page number of result", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "The page size of result", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "int32", + "type": "integer" + } + }, + { + "description": "Org name to search", + "in": "query", + "name": "org-name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Org description to search", + "in": "query", + "name": "org-desc", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org display name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org owner name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "Filter using org owner email. Email should be base-64-encoded.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Org Type to search", + "in": "query", + "name": "org-type", + "required": false, + "schema": { + "enum": [ + "UNKNOWN", + "CLOUD", + "ENTERPRISE", + "INDIVIDUAL" + ], + "type": "string" + } + }, + { + "description": "PEC ID to search", + "in": "query", + "name": "pec-id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "List Organizations and Proto Organizations", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v3/admin/org/{org-name}": { + "get": { + "description": "Get organization or proto organization info. (SuperAdmin privileges required)", + "operationId": "getOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The list of fields to hide from the response", + "in": "query", + "name": "exclude-fields", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get Organization or Proto Organization", + "tags": [ + "Super Admin Org Controller" + ] + }, + "patch": { + "description": "Update org information and settings. Superadmin privileges required", + "operationId": "updateOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Update Organization", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v3/admin/orgs": { + "post": { + "description": "OrgCreateRequest is used to create the organization or when no nca_id is provided upfront, the OrgCreateRequest is stored as proto org, and proto org flow initiates (SuperAdmin privileges required)", + "operationId": "createProtoOrganization", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Creates organization from scratch or proto organization", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v3/admin/orgs/ncaIds": { + "post": { + "description": "Get Organization by NCA ID or Org Name. (SuperAdmin privileges required)", + "operationId": "getMapping", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgNcaMappingRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/OrgNcaMappingResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get Organization by NCA ID or Org Name", + "tags": [ + "Super Admin Org Controller" + ] + } + }, + "/v3/orgs": { + "post": { + "description": "Create a new organization based on the org info provided in the request.", + "operationId": "createOrganizationFromScratch", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create Organization from Scratch", + "tags": [ + "Orgs" + ] + } + }, + "/v3/orgs/proto-org": { + "post": { + "description": "Create a new organization based on the org info retrieved from the ProtoOrg.", + "operationId": "createOrganizationFromProtoOrg", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgCreateRequestV3" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Create Organization from ProtoOrg", + "tags": [ + "Orgs" + ] + } + }, + "/v3/orgs/proto-org/validate": { + "get": { + "description": "Validate org creation from proto org", + "operationId": "protoOrgInvitationValidate", + "parameters": [ + { + "description": "JWT that contains org owner email and proto org identifier", + "in": "query", + "name": "invitation_token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgInvitationResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Validate org creation invite", + "tags": [ + "Orgs" + ] + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/nca-invitations": { + "post": { + "description": "Invites and creates a User in team", + "operationId": "inviteUserToNcaInTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserNcaInvitationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Invite User to NCA (team version)", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{id}": { + "delete": { + "description": "Remove User from team.", + "operationId": "removeUserFromTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If anonymize is true, then org owner permission is required.", + "in": "query", + "name": "anonymize", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove User from team", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}": { + "get": { + "description": "Get info and role/invitation in a team by email or id", + "operationId": "listUserRolesInOrgTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user-email-or-id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get user in a team by email or id.", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/add-role": { + "patch": { + "description": "Invite if user does not exist, otherwise add role in team", + "operationId": "addRoleOrInviteUserToTeam", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user-email-or-id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Invite user or add role in team", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/teams/{team-name}/users/{user-email-or-id}/remove-role": { + "delete": { + "description": "Remove role in team if user exists, otherwise remove invitation", + "operationId": "removeRoleOrInvitationInTeam", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user-email-or-id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove role or invitation in team", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/users/nca-invitations": { + "post": { + "description": "Invites and creates a User in org", + "operationId": "inviteUserToNcaInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserNcaInvitationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Invite User to NCA (org version)", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/users/{id}": { + "delete": { + "description": "Remove User from org.", + "operationId": "removeUserFromOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user id or b64encoded email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "If anonymize is true, then org owner permission is required.", + "in": "query", + "name": "anonymize", + "required": false, + "schema": { + "default": false, + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove User from org", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/users/{user-email-or-id}": { + "get": { + "description": "Get info and role/invitation in an org by email or id", + "operationId": "listUserRolesInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user-email-or-id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Get user in an org by email or id.", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/users/{user-email-or-id}/add-role": { + "patch": { + "description": "Invite if user does not exist, otherwise add role in org", + "operationId": "addRoleOrInviteUserToOrg", + "parameters": [ + { + "in": "cookie", + "name": "ncid", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "cookie", + "name": "VisitorID", + "required": false, + "schema": { + "default": "", + "type": "string" + } + }, + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user-email-or-id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Invite user or add role in org", + "tags": [ + "Users Management" + ] + } + }, + "/v3/orgs/{org-name}/users/{user-email-or-id}/remove-role": { + "delete": { + "description": "Remove role in org if user exists, otherwise remove invitation", + "operationId": "removeRoleOrInvitationInOrg", + "parameters": [ + { + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user-email-or-id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "roles", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Remove role or invitation in org", + "tags": [ + "Users Management" + ] + } + }, + "/version": { + "get": { + "description": "Used to get the latest version number of a given package.", + "operationId": "getLatestPackageVersion", + "parameters": [ + { + "description": "repository of package", + "in": "query", + "name": "repo", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "name of package", + "in": "query", + "name": "package", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PackageVersionListResponse" + } + } + }, + "description": "OK" + }, + "302": { + "description": "Found" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unauthorized" + }, + "402": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Payment Required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Found" + }, + "405": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Method Not Allowed" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Object Exists" + }, + "415": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unsupported Media Type" + }, + "422": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Unprocessable Entity" + }, + "429": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Too Many Requests" + }, + "451": { + "description": "Unavailable For Legal Reasons" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "501": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Not Implemented" + }, + "502": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Gateway" + }, + "503": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Service Unavailable" + } + }, + "summary": "Version Number", + "tags": [ + "Services" + ] + } + } + }, + "security": [ + { + "api-key": [] + }, + { + "bearer-token": [] + } + ], + "servers": [ + { + "url": "/" + } + ], + "tags": [ + { + "name": "Services" + }, + { + "name": "Orgs" + }, + { + "name": "Super Admin User Controller" + }, + { + "name": "Super Admin Org Controller" + }, + { + "description": "Team Operations", + "name": "Teams" + }, + { + "description": "Operation to manager users", + "name": "Users Management" + } + ] +} diff --git a/provider-dev/downloaded/ngc_models.json b/provider-dev/downloaded/ngc_models.json index 106c85e..23c3585 100644 --- a/provider-dev/downloaded/ngc_models.json +++ b/provider-dev/downloaded/ngc_models.json @@ -1 +1,52584 @@ -{"openapi":"3.1.0","info":{"title":"Models API","termsOfService":"https://www.nvidia.com/en-us/legal_info","contact":{"name":"NVIDIA","url":"https://www.nvidia.com/"},"version":"0.0.1-SNAPSHOT"},"servers":[{"url":"https://models.ngc.nvidia.com","description":"Generated server url - production","x-internal":true}],"tags":[{"name":"ArtifactChecksum","description":"Artifact file checksum verification and commit endpoints"},{"name":"Artifact deployment parameters","description":"Artifact-level overrides for cloud deployment parameters"},{"name":"ArtifactSigning","description":"Artifact signing and signature verification"},{"name":"Publish","description":"Publish artifacts to the NGC catalog"},{"name":"Artifact Versions","description":"Artifact (resource, model, helm chart) Version endpoints"},{"name":"Apps","description":"App-to-artifact associations"},{"name":"Deployment parameters meta","description":"Metadata describing cloud deployment parameter schemas"},{"name":"AIPlayground","description":"AI Playground demo metadata endpoints"},{"name":"Collections","description":"Collections endpoints"},{"name":"Models","description":"Model endpoints"},{"name":"Cloud service provider deployment parameters","description":"Default CSP-level cloud deployment parameters"},{"name":"Health","description":"Service health checks"},{"name":"Model Version Files","description":"Model endpoints"},{"name":"Artifacts","description":"Artifact (resource, model, helm chart) endpoints"},{"name":"Resources","description":"Resources endpoints, previously known as 'recipes'"},{"name":"MalwareScan","description":"Malware scan status for artifact files"},{"name":"Workflows","description":"Asynchronous artifact-registry workflow status endpoints"},{"name":"GpuByPci","description":"GPU metadata lookup by PCI identifier"},{"name":"Helm Charts","description":"Helm chart version management"},{"name":"Cloud service providers","description":"Cloud service provider registry entries"},{"name":"Artifact Version Files","description":"Artifact (resource, model, helm chart) Version File endpoints"},{"name":"Encryption Keys","description":"Customer-managed encryption keys for artifact storage"},{"name":"Artifact File","description":"Resource and Model File endpoints"},{"name":"Resource Versions","description":"Resource Versions endpoints, previously known as 'recipes'"},{"name":"Resource Version Files endpoints","description":"Resource Version File endpoints, previously known as 'recipes'"},{"name":"Model Version","description":"Model endpoints"},{"name":"nspect_id","description":"NSPECT-LOEJ-50BP"}],"paths":{"/v1/org/{org}/{type}/{name}/versions/{version}/async-clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files asynchronously","description":"Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.","operationId":"cloneArtifactVersionFilesAsync","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Target artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Target version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncCloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["cloneArtifact"]}],"x-ssa-scopes":["cloneArtifact"]}},"/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files asynchronously","description":"Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.","operationId":"cloneArtifactVersionFilesAsync_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Target artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Target version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncCloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["cloneArtifact"]}],"x-ssa-scopes":["cloneArtifact"]}},"/v1/org/{org}/files/multipart":{"put":{"tags":["Artifact File"],"summary":"Complete a multipart upload for an artifact file.","description":"Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.","operationId":"completeFileUpload","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCompleteRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact File"],"summary":"Initiate a multipart upload for an artifact file.","description":"Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.","operationId":"fileUpload","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact File"],"summary":"Abort a multipart upload for an artifact file.","description":"Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.","operationId":"abortFileUpload","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadAbortRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org}/team/{team}/files/multipart":{"put":{"tags":["Artifact File"],"summary":"Complete a multipart upload for an artifact file.","description":"Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.","operationId":"completeFileUpload_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCompleteRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact File"],"summary":"Initiate a multipart upload for an artifact file.","description":"Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.","operationId":"fileUpload_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact File"],"summary":"Abort a multipart upload for an artifact file.","description":"Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.","operationId":"abortFileUpload_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadAbortRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org}/files/clone/status":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files Status","description":"Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.","operationId":"cloneArtifactVersionFilesStatus","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{org}/team/{team}/files/clone/status":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files Status","description":"Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.","operationId":"cloneArtifactVersionFilesStatus_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{org}/files/clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files","description":"Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).","operationId":"cloneArtifactVersionFiles","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{org}/team/{team}/files/clone":{"put":{"tags":["Artifact File"],"summary":"Clone Artifact files","description":"Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).","operationId":"cloneArtifactVersionFiles_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneArtifactVersionFilesRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/org/{orgName}/{artifactType}/playground/{artifactName}":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for model","operationId":"getModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"description":"Update AI Playground for model","operationId":"updateModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"description":"Delete AI Playground for model","operationId":"deleteModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName}":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for model","operationId":"getModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"description":"Update AI Playground for model","operationId":"updateModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"description":"Delete AI Playground for model","operationId":"deleteModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{orgName}/{artifactType}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for artifactType","description":"Get AI Playground for artifactType","operationId":"getModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"summary":"Update AI Playground for artifactType","description":"Update AI Playground for artifactType","operationId":"updateModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"summary":"Delete AI Playground for artifactType","description":"Delete AI Playground for artifactType","operationId":"deleteModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for artifactType","description":"Get AI Playground for artifactType","operationId":"getModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["AIPlayground"],"summary":"Update AI Playground for artifactType","description":"Update AI Playground for artifactType","operationId":"updateModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]},"delete":{"tags":["AIPlayground"],"summary":"Delete AI Playground for artifactType","description":"Delete AI Playground for artifactType","operationId":"deleteModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifacts"]}],"x-ssa-scopes":["deleteArtifacts","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/terms-of-service":{"put":{"tags":["Publish"],"summary":"Update artifact terms of service","description":"Update artifact terms of service","operationId":"updateTermsOfService","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact","kas"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service":{"put":{"tags":["Publish"],"summary":"Update artifact terms of service","description":"Update artifact terms of service","operationId":"updateTermsOfService_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact","kas"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/share":{"put":{"tags":["Publish"],"summary":"Publish artifact to public","description":"Publish artifact to public","operationId":"publishArtifact","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this artifact","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if artifact is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of artifact to public","description":"Undo publishing of artifact to public","operationId":"undoPublishArtifact","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish artifact to product","description":"Publish artifact to product","operationId":"publishArtifactFromRequest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of product artifacts","description":"Undo publishing of product artifacts","operationId":"undoPublishProduct","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version","operationId":"getArtifactVersionSignature","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"put":{"tags":["ArtifactSigning"],"description":"Request to sign artifact version","operationId":"signArtifactVersion","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","signArtifactVersion"]}],"x-ssa-scopes":["signArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version","operationId":"getArtifactVersionSignature_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"put":{"tags":["ArtifactSigning"],"description":"Request to sign artifact version","operationId":"signArtifactVersion_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","signArtifactVersion"]}],"x-ssa-scopes":["signArtifactVersion","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/release-type":{"put":{"tags":["Publish"],"summary":"Update artifact version release type","description":"Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.","operationId":"updateReleaseLabel","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateReleaseTypeRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","publishArtifact"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/release-type":{"put":{"tags":["Publish"],"summary":"Update artifact version release type","description":"Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.","operationId":"updateReleaseLabel_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateReleaseTypeRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","publishArtifact"]}],"x-ssa-scopes":["publishArtifact","kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in org","description":"Get artifact details in org","operationId":"getArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["Artifacts"],"summary":"Replace artifact in org","description":"Replace artifact details in org","operationId":"replaceArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]},"delete":{"tags":["Artifacts"],"summary":"Delete artifact in org","description":"Delete artifact in org","operationId":"deleteArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifact"]}],"x-ssa-scopes":["deleteArtifact","kas"]},"patch":{"tags":["Artifacts"],"summary":"Update artifact in org","description":"Update artifact details in org","operationId":"updateArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share":{"put":{"tags":["Publish"],"summary":"Publish artifact to public","description":"Publish artifact to public","operationId":"publishArtifact_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this artifact","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if artifact is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of artifact to public","description":"Undo publishing of artifact to public","operationId":"undoPublishArtifact_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish artifact to product","description":"Publish artifact to product","operationId":"publishArtifactFromRequest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of product artifacts","description":"Undo publishing of product artifacts","operationId":"undoPublishProduct_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishArtifact"]}],"x-ssa-scopes":["undoPublishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in team","description":"Get artifact details in team","operationId":"getArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifact"]}],"x-ssa-scopes":["getArtifact","kas"]},"put":{"tags":["Artifacts"],"summary":"Replace artifact in team","description":"Replace artifact details in team","operationId":"replaceArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]},"delete":{"tags":["Artifacts"],"summary":"Delete artifact in team","description":"Delete artifact in team","operationId":"deleteArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifact"]}],"x-ssa-scopes":["deleteArtifact","kas"]},"patch":{"tags":["Artifacts"],"summary":"Update artifact in team","description":"Update artifact details in team","operationId":"updateArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifact"]}],"x-ssa-scopes":["updateArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name}":{"put":{"tags":["Apps"],"summary":"Update model app association","description":"Update model app association","operationId":"updateModelAppAssociation","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"app-name","in":"path","description":"App Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Apps"],"summary":"Delete model app association","description":"Delete model app association","operationId":"deleteModelAppAssociation","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"app-name","in":"path","description":"App Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team}":{"put":{"tags":["Models"],"summary":"Share team model with the specified team","description":"This operation shares a team model with the team.","operationId":"shareModelInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared team model with the specified team","description":"This operation revokes a shared team model with the team.","operationId":"revokeShareModelInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org":{"put":{"tags":["Models"],"summary":"Share team model with the org","description":"This operation shares a team model with the org.","operationId":"shareModelInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared team model with the org","description":"This operation revokes a shared team model with the org.","operationId":"revokeShareModelInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org and team","description":"Add artifact to the specified collection in the specified org and team","operationId":"addArtifactToCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org and team","description":"Remove artifact from the specified collection in the specified org and team","operationId":"removeArtifactFromCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team}":{"put":{"tags":["Collections"],"summary":"Share team collection with the specified team","description":"Share team collection with the specified team","operationId":"shareCollectionInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared team collection with the specified team","description":"Revoke shared team collection with the specified team","operationId":"revokeShareCollectionInTeamWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org":{"put":{"tags":["Collections"],"summary":"Share team collection with the org","description":"Share team collection with the org","operationId":"shareCollectionInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared team collection with the org","description":"Revoke shared team collection with the org","operationId":"revokeShareCollectionInTeamWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share":{"put":{"tags":["Publish"],"summary":"Publish collection to public","description":"Publish collection to public","operationId":"publishCollection","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this collection","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if collection is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of collection to public","description":"Undo publishing of collection to public","operationId":"undoPublishCollection","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishCollection"]}],"x-ssa-scopes":["undoPublishCollection"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org and team from another org","description":"Add artifact to the specified collection in the specified org and team from another org","operationId":"addArtifactToCollectionInTeamFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org and team from another org","description":"Remove artifact from the specified collection in the specified org and team from another org","operationId":"removeArtifactFromCollectionInTeamFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org and team from another org and team","description":"Add artifact to the specified collection in the specified org and team from another org and team","operationId":"addArtifactToCollectionInTeamFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org and team from another org and team","description":"Remove artifact from the specified collection in the specified org and team from another org and team","operationId":"removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/models/{model-name}/shares/team/{target-team}":{"put":{"tags":["Models"],"summary":"Share org model with the specified team","description":"This operation shares an org model with the team.","operationId":"shareModelInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared org model with the specified team","description":"This operation revokes a shared org model with the team.","operationId":"revokeShareModelInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/models/{model-name}/shares/org":{"put":{"tags":["Models"],"summary":"Share org model with the org","description":"This operation shares an org model with the org.","operationId":"shareModelInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Models"],"summary":"Revoke shared org model with the org","description":"This operation revokes a shared org model with the org.","operationId":"revokeShareModelInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org","description":"Add artifact to the specified collection in the specified org","operationId":"addArtifactToCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org","description":"Remove artifact from the specified collection in the specified org","operationId":"removeArtifactFromCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team}":{"put":{"tags":["Collections"],"summary":"Share org collection with the specified team","description":"Share org collection with the specified team","operationId":"shareCollectionInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared org collection with the specified team","description":"Revoke shared org collection with the specified team","operationId":"revokeShareCollectionInOrgWithTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"target-team","in":"path","description":"Target team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/shares/org":{"put":{"tags":["Collections"],"summary":"Share org collection with the org","description":"Share org collection with the org","operationId":"shareCollectionInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Collections"],"summary":"Revoke shared org collection with the org","description":"Revoke shared org collection with the org","operationId":"revokeShareCollectionInOrgWithOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/share":{"put":{"tags":["Publish"],"summary":"Publish collection to public","description":"Publish collection to public","operationId":"publishCollection_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"guest-can-download","in":"query","description":"Indicates if guest users can download this collection","required":true,"schema":{"type":"boolean"}},{"name":"public-can-list","in":"query","description":"Indicates if collection is listed publicly","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]},"delete":{"tags":["Publish"],"summary":"Undo publishing of collection to public","description":"Undo publishing of collection to public","operationId":"undoPublishCollection_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["undoPublishCollection"]}],"x-ssa-scopes":["undoPublishCollection"]}},"/v1/org/{org-name}/collections/{collection-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish collection to product","description":"Publish collection to product","operationId":"publishCollectionFromRequest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product":{"put":{"tags":["Publish"],"summary":"Publish collection to product","description":"Publish collection to product","operationId":"publishCollectionFromRequest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPublishRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishCollection"]}],"x-ssa-scopes":["publishCollection"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org from another org","description":"Add artifact to the specified collection in the specified org from another org","operationId":"addArtifactToCollectionInOrgFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org from another org","description":"Remove artifact from the specified collection in the specified org from another org","operationId":"removeArtifactFromCollectionInOrgFromAnotherOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}":{"put":{"tags":["Collections"],"summary":"Add artifact to collection in org from another org and team","description":"Add artifact to the specified collection in the specified org from another org and team","operationId":"addArtifactToCollectionInOrgFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","addArtifactToCollectionFromAnotherOrgOrTeam"]}],"x-ssa-scopes":["addArtifactToCollectionFromAnotherOrgOrTeam","kas"]},"delete":{"tags":["Collections"],"summary":"Remove artifact from collection in org from another org","description":"Remove artifact from the specified collection in the specified org from another org","operationId":"removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-org-name","in":"path","description":"Artifact organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-team-name","in":"path","description":"Artifact team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{orgName}/{artifactType}/playground":{"post":{"tags":["AIPlayground"],"description":"Create AI Playground for model","operationId":"createModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/playground":{"post":{"tags":["AIPlayground"],"description":"Create AI Playground for model","operationId":"createModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/{artifactType}/spec":{"post":{"tags":["AIPlayground"],"summary":"Create AI Playground for artifactType","description":"Create AI Playground for artifactType","operationId":"createModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/spec":{"post":{"tags":["AIPlayground"],"summary":"Create AI Playground for artifactType","description":"Create AI Playground for artifactType","operationId":"createModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"security":[{"ssa":["kas","writeArtifacts"]}],"x-ssa-scopes":["writeArtifacts","kas"]}},"/v1/org/{orgName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan":{"post":{"tags":["MalwareScan"],"summary":"Initiates malwares can for the artifact","description":"Initiates malwares can for the artifact","operationId":"initiateMalwareScan","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"contact-email","in":"query","description":"Contact email","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":320,"minLength":0}},{"name":"nspect-id","in":"query","description":"Nspect identifier","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":64,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{orgName}/team/{teamName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan":{"post":{"tags":["MalwareScan"],"summary":"Initiates malwares can for the artifact","description":"Initiates malwares can for the artifact","operationId":"initiateMalwareScan_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"contact-email","in":"query","description":"Contact email","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":320,"minLength":0}},{"name":"nspect-id","in":"query","description":"Nspect identifier","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":64,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version file deployment url in org","description":"Create artifact version file deployment url in org","operationId":"createArtifactVerionFileDeploymentUrlInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version deployment url in org","description":"Create artifact version deployment url in org","operationId":"createArtifactDeploymentUrlInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get artifact deployment parameters details in org","description":"Get artifact deployment parameters details in org","operationId":"getArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact deployment parameters in org","description":"Create artifact deployment parameters in org","operationId":"createArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"no-auto-labels","in":"query","description":"No auto labels","required":false,"schema":{"type":"boolean"}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact deployment parameters"],"summary":"Delete artifact deployment parameters in org","description":"Delete artifact deployment parameters in org","operationId":"deleteArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Artifact deployment parameters"],"summary":"Update artifact deployment parameters in org","description":"Update artifact deployment parameters in org","operationId":"updateArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels":{"post":{"tags":["Collections"],"summary":"Sync collection release type labels for artifact","description":"Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.","operationId":"syncCollectionReleaseTypeLabelsForArtifact","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","syncReleaseTypeLabels"]}],"x-ssa-scopes":["kas","syncReleaseTypeLabels"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels":{"post":{"tags":["Collections"],"summary":"Sync collection release type labels for artifact","description":"Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.","operationId":"syncCollectionReleaseTypeLabelsForArtifact_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","syncReleaseTypeLabels"]}],"x-ssa-scopes":["kas","syncReleaseTypeLabels"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance":{"get":{"tags":["Publish"],"summary":"Check if user needs to accept license","description":"Check if user needs to accept license. Checks against uam","operationId":"getOrgArtifactLicenseAcceptance","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Publish"],"summary":"Accept artifact license","description":"Record license acceptance for an org artifact.","operationId":"acceptArtifactLicense","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptArtifactLicenseRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance":{"get":{"tags":["Publish"],"summary":"Check if user needs to accept license","description":"Check if user needs to accept license. Checks against uam","operationId":"getOrgArtifactLicenseAcceptance_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Publish"],"summary":"Accept artifact license","description":"Record license acceptance for an org artifact.","operationId":"acceptArtifactLicense_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptArtifactLicenseRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/files":{"post":{"tags":["ArtifactChecksum"],"summary":"Check if file exists based on checksum","description":"Check if file exists based on checksum provided in request","operationId":"checkArtifactFilesExistByChecksum","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact Type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesChecksumExistsRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/files":{"post":{"tags":["ArtifactChecksum"],"summary":"Check if file exists based on checksum","description":"Check if file exists based on checksum provided in request","operationId":"checkArtifactFilesExistByChecksum_1","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact Type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesChecksumExistsRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}":{"get":{"tags":["Artifacts"],"summary":"List artifacts in org","description":"List artifacts the user can access in the specified org","operationId":"listArtifactsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifacts"]}],"x-ssa-scopes":["listArtifacts","kas"]},"post":{"tags":["Artifacts"],"summary":"Create artifact in org","description":"Create artifact in org","operationId":"createArtifactInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createArtifact"]}],"x-ssa-scopes":["createArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version file deployment url in team","description":"Create artifact version file deployment url in team","operationId":"createArtifactVersionFileDeploymentUrlInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact version deployment url in team","description":"Create artifact version deployment url in team","operationId":"createArtifactDeploymentUrlInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get artifact deployment parameters details in team","description":"Get artifact deployment parameters details in team","operationId":"getArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact deployment parameters in team","description":"Create artifact deployment parameters in team","operationId":"createArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"no-auto-labels","in":"query","description":"No auto labels","required":false,"schema":{"type":"boolean"}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Artifact deployment parameters"],"summary":"Delete artifact deployment parameters in team","description":"Delete artifact deployment parameters in team","operationId":"deleteArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Artifact deployment parameters"],"summary":"Update artifact deployment parameters in team","description":"Update artifact deployment parameters in team","operationId":"updateArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/parameters":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create artifact deployment parameters in team","description":"Create artifact deployment parameters in team","operationId":"createArtifactDeploymentParametersInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"no-auto-labels","in":"query","description":"No auto labels","required":false,"schema":{"type":"boolean"}},{"name":"merge-csp-parameters","in":"query","description":"Merge CSP parameters in response","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}":{"get":{"tags":["Artifacts"],"summary":"List artifacts in team","description":"List artifacts the user can access in the specified org and team","operationId":"listArtifactsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifacts"]}],"x-ssa-scopes":["listArtifacts","kas"]},"post":{"tags":["Artifacts"],"summary":"Create artifact in team","description":"Create artifact in team","operationId":"createArtifactInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createArtifact"]}],"x-ssa-scopes":["createArtifact","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team","description":"List recipe versions in team","operationId":"listRecipeVersionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in team","description":"Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team","description":"List recipe versions in team","operationId":"listRecipeVersionsInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in team","description":"Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes":{"get":{"tags":["Resources"],"summary":"List recipes in team","description":"List recipes the user can access in the specified org and team","operationId":"listRecipesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in team","description":"Create recipe in team","operationId":"createRecipeInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources":{"get":{"tags":["Resources"],"summary":"List recipes in team","description":"List recipes the user can access in the specified org and team","operationId":"listRecipesInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in team","description":"Create recipe in team","operationId":"createRecipeInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/models":{"get":{"tags":["Models"],"summary":"List models in team","description":"This operation lists models the user can access in the org/team.","operationId":"listModelsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"[Deprecated] Page reference, Use page-number instead","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModels"]}],"x-ssa-scopes":["kas","listModels"]},"post":{"tags":["Models"],"summary":"Create model in team","description":"This operation creates a model in the org/team.","operationId":"createModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModel"]}],"x-ssa-scopes":["createModel","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in team","description":"List model versions in team","operationId":"listModelVersionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]},"post":{"tags":["Model Version"],"summary":"Create model version in team.","description":"Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createModelVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModelVersion"]}],"x-ssa-scopes":["kas","createModelVersion"]}},"/v1/org/{org-name}/team/{team-name}/collections":{"get":{"tags":["Collections"],"summary":"List collections in team","description":"List collections the user can access in the specified org and team","operationId":"listCollectionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Collections"],"summary":"Create collection in org and team","description":"Create collection in org and team","operationId":"createCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createCollection"]}],"x-ssa-scopes":["kas","createCollection"]}},"/v1/org/{org-name}/recipes/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org","description":"List recipe versions in org","operationId":"listRecipeVersionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in org","description":"Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org","description":"List recipe versions in org","operationId":"listRecipeVersionsInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersions"]}],"x-ssa-scopes":["listRecipeVersions","kas"]},"post":{"tags":["Resource Versions"],"summary":"Create recipe version in org","description":"Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createRecipeVersionInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipeVersion"]}],"x-ssa-scopes":["createRecipeVersion","kas"]}},"/v1/org/{org-name}/recipes":{"get":{"tags":["Resources"],"summary":"List recipes in org","description":"List recipes the user can access in the specified org","operationId":"listRecipesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in org","description":"Create recipe in org","operationId":"createRecipeInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/resources":{"get":{"tags":["Resources"],"summary":"List recipes in org","description":"List recipes the user can access in the specified org","operationId":"listRecipesInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipes"]}],"x-ssa-scopes":["listRecipes","kas"]},"post":{"tags":["Resources"],"summary":"Create recipe in org","description":"Create recipe in org","operationId":"createRecipeInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createRecipe"]}],"x-ssa-scopes":["createRecipe","kas"]}},"/v1/org/{org-name}/models":{"get":{"tags":["Models"],"summary":"List models in org","description":"This operation lists models the user can access in the org.","operationId":"listModelsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"app-name","in":"query","description":"Application name","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"[Deprecated] Page reference, Use page-number instead","required":false,"deprecated":true,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModels"]}],"x-ssa-scopes":["kas","listModels"]},"post":{"tags":["Models"],"summary":"Create model in org","description":"This operation creates a model in the org.","operationId":"createModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModel"]}],"x-ssa-scopes":["createModel","kas"]}},"/v1/org/{org-name}/models/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in org","description":"List model versions in org","operationId":"listModelVersionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]},"post":{"tags":["Model Version"],"summary":"Create model version in org","description":"Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org","operationId":"createModelVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createModelVersion"]}],"x-ssa-scopes":["kas","createModelVersion"]}},"/v1/org/{org-name}/files/commit":{"post":{"tags":["ArtifactChecksum"],"summary":"Commit artifact files metadata to database","description":"Commit artifact files metadata to database given request","operationId":"commitArtifactFiles","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"upload-pending","in":"query","description":"Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesCommitRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/files/commit":{"post":{"tags":["ArtifactChecksum"],"summary":"Commit artifact files metadata to database","description":"Commit artifact files metadata to database given request","operationId":"commitArtifactFiles_1","parameters":[{"name":"org-name","in":"path","description":"Org Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team Name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"upload-pending","in":"query","description":"Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactFilesCommitRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/collections":{"get":{"tags":["Collections"],"summary":"List collections in org","description":"List collections the user can access in the specified org","operationId":"listCollectionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"post":{"tags":["Collections"],"summary":"Create collection in org","description":"Create collection in org","operationId":"createCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createCollection"]}],"x-ssa-scopes":["kas","createCollection"]}},"/v1/malware-scan-notification":{"post":{"tags":["MalwareScan"],"summary":"Update artifact's malware scan result with MalwareScanNotification","description":"Update artifact's malware scan result with MalwareScanNotification","operationId":"notifyScanResult","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MalwareScanNotification"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyMalwareScanResultResponse"}}}}},"security":[{"ssa":["kas","notifyScanResult"]}],"x-ssa-scopes":["notifyScanResult","kas"]}},"/v1/gpus/pci-device-id/{pci-device-id}":{"get":{"tags":["GpuByPci"],"summary":"Get GPU by PCI Device ID","description":"Get all GPU records matching the given PCI Device ID","operationId":"getGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]},"post":{"tags":["GpuByPci"],"summary":"Create GPU by PCI Device ID only","description":"Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')","operationId":"createGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createGpuByPci"]}],"x-ssa-scopes":["kas","createGpuByPci"]},"delete":{"tags":["GpuByPci"],"summary":"Delete GPU by PCI Device ID only","description":"Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')","operationId":"deleteGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteGpuByPci"]}],"x-ssa-scopes":["deleteGpuByPci","kas"]},"patch":{"tags":["GpuByPci"],"summary":"Partially update GPU by PCI Device ID only","description":"Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated.","operationId":"updateGpuByPciDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateGpuByPci"]}],"x-ssa-scopes":["kas","updateGpuByPci"]}},"/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id}":{"get":{"tags":["GpuByPci"],"summary":"Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Get a single GPU record matching the full PCI composite key","operationId":"getGpuByPciDeviceIdVendorIdSubsystemDeviceId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]},"post":{"tags":["GpuByPci"],"summary":"Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Create a new GPU record using the full PCI composite key","operationId":"createGpuByPciFullKey","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","createGpuByPci"]}],"x-ssa-scopes":["kas","createGpuByPci"]},"delete":{"tags":["GpuByPci"],"summary":"Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Delete a GPU record matching the full PCI composite key","operationId":"deleteGpuByPciFullKey","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteGpuByPci"]}],"x-ssa-scopes":["deleteGpuByPci","kas"]},"patch":{"tags":["GpuByPci"],"summary":"Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID","description":"Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated.","operationId":"updateGpuByPciFullKey","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-subsystem-device-id","in":"path","description":"PCI Subsystem Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuByPciUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateGpuByPci"]}],"x-ssa-scopes":["kas","updateGpuByPci"]}},"/v1/csps":{"get":{"tags":["Cloud service providers"],"summary":"List cloud service providers","description":"List cloud service providers","operationId":"listCloudServiceProviders","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0}},{"name":"include-disabled","in":"query","description":"Include disabled","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"post":{"tags":["Cloud service providers"],"summary":"Create cloud service provider","description":"Create cloud service provider","operationId":"createCloudServiceProvider","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudServiceProviderCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/csps/{csp-name}/deployments/params":{"get":{"tags":["Cloud service provider deployment parameters"],"summary":"Get cloud service provider deployment parameters details","description":"Get cloud service provider deployment parameters details","operationId":"getCloudServiceProviderDeploymentParametersDetails","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"post":{"tags":["Cloud service provider deployment parameters"],"summary":"Create cloud service provider deployment parameters","description":"Create cloud service provider deployment parameters","operationId":"createCloudServiceProviderDeploymentParameters","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Cloud service provider deployment parameters"],"summary":"Delete cloud service provider deployment parameters","description":"Delete cloud service provider deployment parameters","operationId":"deleteCloudServiceProviderDeploymentParameters","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Cloud service provider deployment parameters"],"summary":"Update cloud service provider deployment parameters","description":"Update cloud service provider deployment parameters","operationId":"updateCloudServiceProviderDeploymentParameters","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/csps/{csp-name}/deployments/params/meta":{"get":{"tags":["Deployment parameters meta"],"summary":"Get cloud service provider deployment parameters meta details","description":"Get cloud service provider deployment parameters meta details","operationId":"getCloudServiceProviderDeploymentParametersMetaDetails","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"post":{"tags":["Deployment parameters meta"],"summary":"Create cloud service provider deployment parameters meta","description":"Create cloud service provider deployment parameters meta","operationId":"createCloudServiceProviderDeploymentParametersMeta","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersMetaCreateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Deployment parameters meta"],"summary":"Delete cloud service provider deployment parameters meta","description":"Delete cloud service provider deployment parameters meta","operationId":"deleteCloudServiceProviderDeploymentParametersMeta","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Deployment parameters meta"],"summary":"Update cloud service provider deployment parameters meta","description":"Update cloud service provider deployment parameters meta","operationId":"updateCloudServiceProviderDeploymentParametersMeta","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentParametersMetaUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version file deployment url in org","description":"Create public artifact version file deployment url in org","operationId":"createPublicArtifactVersionFileDeploymentUrlInOrg","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version deployment url in org","description":"Create public artifact version deployment url in org","operationId":"createPublicArtifactDeploymentUrlInOrg","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version file deployment url in team","description":"Create public artifact version file deployment url in team","operationId":"createPublicArtifactVersionFileDeploymentUrlInTeam","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}":{"post":{"tags":["Artifact deployment parameters"],"summary":"Create public artifact version deployment url in team","description":"Create public artifact version deployment url in team","operationId":"createPublicArtifactDeploymentUrlInTeam","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentUrlCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":[]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs":{"patch":{"tags":["Publish"],"summary":"Publish artifact version with configs like policy badge","description":"Update artifact version with configs like policy badge","operationId":"updateTagLevelPublishConfigs","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateArtifactVersionConfigs"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs":{"patch":{"tags":["Publish"],"summary":"Publish artifact version with configs like policy badge","description":"Update artifact version with configs like policy badge","operationId":"updateTagLevelPublishConfigs_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateArtifactVersionConfigs"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["publishArtifact"]}],"x-ssa-scopes":["publishArtifact"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team","description":"Get recipe version in team","operationId":"getRecipeVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in team","description":"Update recipe version information in team e.g. upload status","operationId":"updateRecipeVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team","description":"Get recipe version in team","operationId":"getRecipeVersionInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in team","description":"Update recipe version information in team e.g. upload status","operationId":"updateRecipeVersionInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team","description":"Get recipe details in team","operationId":"getRecipeInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in team","description":"Update recipe details in team","operationId":"updateRecipeInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team","description":"Get recipe details in team","operationId":"getRecipeInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in team","description":"Update recipe details in team","operationId":"updateRecipeInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}":{"get":{"tags":["Models"],"summary":"Get model in team","description":"This operation gets info of a model in the org/team.","operationId":"getModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModel"]}],"x-ssa-scopes":["getModel","kas"]},"patch":{"tags":["Models"],"summary":"Update model in team","description":"This operation updates details of a model in the org/team.","operationId":"updateModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModel"]}],"x-ssa-scopes":["updateModel","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in team","description":"Get model version in team","operationId":"getModelVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModelVersion","getModelVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getModelVersionFilterByOrgEnablement","getModelVersion","kas"]},"patch":{"tags":["Model Version"],"summary":"Update model version in team","description":"Update model version information in team e.g. upload status","operationId":"updateModelVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash":{"patch":{"tags":["Model Version"],"summary":"Stash artifact version in team","description":"Stash artifact version information in team in model version upload paused state","operationId":"stashArtifactVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in team","description":"Get chart version in team","operationId":"getHelmChartVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifactVersion"]}],"x-ssa-scopes":["getArtifactVersion","kas"]},"patch":{"tags":["Helm Charts"],"summary":"Update chart version in team","description":"Update chart version information in team e.g. upload status","operationId":"updateHelmChartVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifactVersion"]}],"x-ssa-scopes":["updateArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in team","description":"Get collection details in team","operationId":"getCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getCollection"]}],"x-ssa-scopes":["getCollection","kas"]},"delete":{"tags":["Collections"],"summary":"Delete collection in org and team","description":"Delete collection in the specified org and team","operationId":"deleteCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Collections"],"summary":"Update collection in team","description":"Update collection details in team","operationId":"updateCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateCollection"]}],"x-ssa-scopes":["updateCollection","kas"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts":{"patch":{"tags":["Collections"],"summary":"Patch collection in org and team","description":"Patch collection in the specified org and team","operationId":"patchCollectionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPatchRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","patchCollectionArtifacts"]}],"x-ssa-scopes":["patchCollectionArtifacts","kas"]}},"/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org","description":"Get recipe version in org","operationId":"getRecipeVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in org","description":"Update recipe version information in org e.g. upload status","operationId":"updateRecipeVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org","description":"Get recipe version in org","operationId":"getRecipeVersionInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipeVersion","getRecipeVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getRecipeVersion","getRecipeVersionFilterByOrgEnablement","kas"]},"patch":{"tags":["Resource Versions"],"summary":"Update recipe version in org","description":"Update recipe version information in org e.g. upload status","operationId":"updateRecipeVersionInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipeVersion"]}],"x-ssa-scopes":["updateRecipeVersion","kas"]}},"/v1/org/{org-name}/recipes/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org","description":"Get recipe in org","operationId":"getRecipeInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in org","description":"Update recipe details in org","operationId":"updateRecipeInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org","description":"Get recipe in org","operationId":"getRecipeInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getRecipe"]}],"x-ssa-scopes":["getRecipe","kas"]},"patch":{"tags":["Resources"],"summary":"Update recipe in org","description":"Update recipe details in org","operationId":"updateRecipeInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateRecipe"]}],"x-ssa-scopes":["updateRecipe","kas"]}},"/v1/org/{org-name}/models/{model-name}":{"get":{"tags":["Models"],"summary":"Get model details in org","description":"This operation gets info of a model in the org.","operationId":"getModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModel"]}],"x-ssa-scopes":["getModel","kas"]},"patch":{"tags":["Models"],"summary":"Update model in org","description":"This operation updates details of a model in the org.","operationId":"updateModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModel"]}],"x-ssa-scopes":["updateModel","kas"]}},"/v1/org/{org-name}/models/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in org","description":"Get model version in org","operationId":"getModelVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getModelVersion","getModelVersionFilterByOrgEnablement"]}],"x-ssa-scopes":["getModelVersionFilterByOrgEnablement","getModelVersion","kas"]},"patch":{"tags":["Model Version"],"summary":"Update model version in org","description":"Update model version information in org e.g. upload status","operationId":"updateModelVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}},{"name":"create-zip","in":"query","description":"Create zip of version content","required":false,"schema":{"type":"boolean"}},{"name":"set-latest","in":"query","description":"Set version to latest","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash":{"patch":{"tags":["Model Version"],"summary":"Stash artifact version in org","description":"Stash artifact version information in org during upload paused state","operationId":"stashArtifactVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateModelVersion"]}],"x-ssa-scopes":["updateModelVersion","kas"]}},"/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in org","description":"Get chart version in org","operationId":"getHelmChartVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getArtifactVersion"]}],"x-ssa-scopes":["getArtifactVersion","kas"]},"patch":{"tags":["Helm Charts"],"summary":"Update chart version in org","description":"Update chart version information in org e.g. upload status","operationId":"updateHelmChartVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactVersionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateArtifactVersion"]}],"x-ssa-scopes":["updateArtifactVersion","kas"]}},"/v1/org/{org-name}/collections/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in org","description":"Get collection details in org","operationId":"getCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","getCollection"]}],"x-ssa-scopes":["getCollection","kas"]},"delete":{"tags":["Collections"],"summary":"Delete collection in org","description":"Delete collection in the specified org","operationId":"deleteCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Collections"],"summary":"Update collection in org","description":"Update collection details in org","operationId":"updateCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","updateCollection"]}],"x-ssa-scopes":["updateCollection","kas"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts":{"patch":{"tags":["Collections"],"summary":"Patch collection in org","description":"Patch collection in the specified org","operationId":"patchCollectionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPatchRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","patchCollectionArtifacts"]}],"x-ssa-scopes":["patchCollectionArtifacts","kas"]}},"/v1/csps/{csp-name}":{"get":{"tags":["Cloud service providers"],"summary":"Get cloud service provider details","description":"Get cloud service provider details","operationId":"getCloudServiceProviderDetails","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]},"delete":{"tags":["Cloud service providers"],"summary":"Delete cloud service provider","description":"Delete cloud service provider","operationId":"deleteCloudServiceProvider","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"patch":{"tags":["Cloud service providers"],"summary":"Update cloud service provider","description":"Update cloud service provider","operationId":"updateCloudServiceProvider","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudServiceProviderUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/{type}/org/{org}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version","description":"Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.","operationId":"downloadAllArtifactFilesAsGuest","parameters":[{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{type}/org/{org}/team/{team}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version","description":"Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.","operationId":"downloadAllArtifactFilesAsGuest_1","parameters":[{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{artifactName}/playground":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for public model","operationId":"getPublicModelAIPlayground","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/playground":{"get":{"tags":["AIPlayground"],"description":"Get AI Playground for public model","operationId":"getPublicModelAIPlayground_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for public artifactType","description":"Get AI Playground for public artifactType","operationId":"getPublicModelArtifactsSpec","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"x-ssa-scopes":[]}},"/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/spec":{"get":{"tags":["AIPlayground"],"summary":"Get AI Playground for public artifactType","description":"Get AI Playground for public artifactType","operationId":"getPublicModelArtifactsSpec_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["models","helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIPlaygroundResponse"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/org/{org-name}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org as guest","description":"List artifact collections the user can access in the specified org as guest","operationId":"listArtifactCollectionsInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org and team as guest","description":"List artifact collections the user can access in the specified org and team as guest","operationId":"listArtifactCollectionsInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.","operationId":"getArtifactVersionSignatureAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/signature":{"get":{"tags":["ArtifactSigning"],"description":"Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.","operationId":"getArtifactVersionSignatureAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"redirect","in":"query","description":"Get redirect URL","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of a team artifact in a zip as guest","description":"Download all files of a team artifact in a zip as guest","operationId":"downloadAllFilesInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Direct download all files of a team artifact in a zip as guest","description":"Direct download all files of a team artifact in a zip as guest","operationId":"directDownloadAllFilesInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team as guest","description":"Download the specified file of the artifact version in team as guest","operationId":"downloadArtifactFileInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team as guest as zip","description":"Download the specified file of the artifact version in team as guest as zip","operationId":"downloadArtifactFileInTeamAsGuestAsZip","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/latest-version/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of a team artifact's latest version in a zip as guest","description":"Download all files of a team artifact's latest version in a zip as guest","operationId":"downloadAllFilesInTeamAsGuest_1","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of an org artifact in a zip as guest","description":"Download all files of an org artifact in a zip as guest","operationId":"downloadAllFilesInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Direct download all files of a org artifact in a zip as guest","description":"Direct download all files of a org artifact in a zip as guest","operationId":"directDownloadAllFilesInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org as guest","description":"Download the specified file of the artifact version in org as guest","operationId":"downloadArtifactFileInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org as guest as zip","description":"Download the specified file of the artifact version in org as guest as zip","operationId":"downloadArtifactFileInOrgAsGuestAsZip","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/latest-version/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of an org artifact's latest version in a zip as guest","description":"Download all files of an org artifact's latest version in a zip as guest","operationId":"downloadAllFilesOfLatestVersionInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in team as guest","description":"List files of the artifact version in team as guest","operationId":"listArtifactFilesInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in org as guest","description":"List files of the artifact version in org as guest","operationId":"listArtifactFilesInOrgAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}":{"get":{"tags":["Artifacts"],"summary":"List public artifacts","description":"List public artifacts","operationId":"listPublicArtifacts","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in team as guest","description":"Get artifact details in team as guest","operationId":"getChartInTeamAsGuest","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/{artifact-type}/{org-name}/{artifact-name}":{"get":{"tags":["Artifacts"],"summary":"Get artifact in org as guest","description":"Get artifact details in org as guest","operationId":"getArtifactInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team as guest","description":"List files of the recipe version in team as guest","operationId":"listModeFilesInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team as guest","description":"List files of the recipe version in team as guest","operationId":"listModeFilesInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team as guest","description":"Get recipe version in team as guest","operationId":"getRecipeVersionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in team as guest","description":"Get recipe version in team as guest","operationId":"getRecipeVersionInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team as guest","description":"List recipe versions in team as guest","operationId":"listRecipeVersionsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in team as guest","description":"List recipe versions in team as guest","operationId":"listRecipeVersionsInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{team-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team as guest","description":"Get recipe details in team as guest","operationId":"getRecipeInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{team-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in team as guest","description":"Get recipe details in team as guest","operationId":"getRecipeInTeamAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org as guest","description":"List files of the recipe version in org as guest","operationId":"listModeFilesInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org as guest","description":"List files of the recipe version in org as guest","operationId":"listModeFilesInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org as guest","description":"Get recipe version in org as guest","operationId":"getRecipeVersionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}/versions/{version-id}":{"get":{"tags":["Resource Versions"],"summary":"Get recipe version in org as guest","description":"Get recipe version in org as guest","operationId":"getRecipeVersionInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org as guest","description":"List recipe versions in org as guest","operationId":"listRecipeVersionsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}/versions":{"get":{"tags":["Resource Versions"],"summary":"List recipe versions in org as guest","description":"List recipe versions in org as guest","operationId":"listRecipeVersionsInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes/{org-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org as guest","description":"Get recipe details in org as guest","operationId":"getRecipeInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources/{org-name}/{recipe-name}":{"get":{"tags":["Resources"],"summary":"Get recipe in org as guest","description":"Get recipe details in org as guest","operationId":"getRecipeInOrgAsGuest_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/recipes":{"get":{"tags":["Resources"],"summary":"List public recipes","description":"List public recipes","operationId":"listPublicRecipes","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/resources":{"get":{"tags":["Resources"],"summary":"List public recipes","description":"List public recipes","operationId":"listPublicRecipes_1","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/org/{org}/{type}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"Provide a list of presigned urls for the download of all files belonging to an artifact version","description":"Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.","operationId":"downloadAllArtifactFiles","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","downloadArtifactVersionFile","downloadArtifactVersionFileFilterByOrgEnablement"]}],"x-ssa-scopes":["downloadArtifactVersionFileFilterByOrgEnablement","kas","downloadArtifactVersionFile"]}},"/v1/org/{org}/team/{team}/{type}/{name}/{version}/files":{"get":{"tags":["Artifact File"],"summary":"Provide a list of presigned urls for the download of all files belonging to an artifact version","description":"Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.","operationId":"downloadAllArtifactFiles_1","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"path","in":"query","description":"File path","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","downloadArtifactVersionFile","downloadArtifactVersionFileFilterByOrgEnablement"]}],"x-ssa-scopes":["downloadArtifactVersionFileFilterByOrgEnablement","kas","downloadArtifactVersionFile"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List artifact deployment parameters in org","description":"List artifact deployment parameters in org","operationId":"listArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org","description":"List artifact collections the user can access in the specified org","operationId":"listArtifactCollectionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/catalog/flags":{"get":{"tags":["Publish"],"summary":"Get Catalog flags","description":"Get the Catalog Public flags for artifact in org","operationId":"getPublicFlagsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["getPublicFlags"]}],"x-ssa-scopes":["getPublicFlags"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of an org artifact in a zip","description":"Download all files of an org artifact in a zip","operationId":"downloadAllFilesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/*/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org as zip","description":"Download the specified file of the artifact version in org as zip","operationId":"downloadArtifactFileInOrgAsZip","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in org","description":"Download the specified file of the artifact version in org","operationId":"downloadArtifactFileInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","downloadArtifactVersionFile"]}],"x-ssa-scopes":["kas","downloadArtifactVersionFile"]},"delete":{"tags":["Artifact Version Files"],"summary":"Delete artifact file in org","description":"Delete artifact file in org","operationId":"deleteArtifactFileInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in org","description":"List files of the artifact version in org","operationId":"listArtifactFilesInOrg","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersionFiles"]}],"x-ssa-scopes":["listArtifactVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List artifact deployment parameters in team","description":"List artifact deployment parameters in team","operationId":"listArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections":{"get":{"tags":["Collections"],"summary":"List artifact collections in org and team","description":"List artifact collections the user can access in the specified org and team","operationId":"listArtifactCollectionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/catalog/flags":{"get":{"tags":["Publish"],"summary":"Get Catalog flags","description":"Get the Catalog Public flags for artifact in team","operationId":"getPublicFlagsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["getPublicFlags"]}],"x-ssa-scopes":["getPublicFlags"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip":{"get":{"tags":["Artifact Version Files"],"summary":"Download all files of a team artifact in a zip","description":"Download all files of a team artifact in a zip","operationId":"downloadAllFilesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team","description":"Download the specified file of the artifact version in team","operationId":"downloadArtifactFileInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas","downloadArtifactVersionFile"]}],"x-ssa-scopes":["kas","downloadArtifactVersionFile"]},"delete":{"tags":["Artifact Version Files"],"summary":"Delete artifact file in team","description":"Delete artifact file in team","operationId":"deleteArtifactFileInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/zip/download":{"get":{"tags":["Artifact Version Files"],"summary":"Download artifact file in team as zip","description":"Download the specified file of the artifact version in team as zip","operationId":"downloadArtifactFileInTeamAsZip","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"sc_cmp","in":"cookie","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"deprecated":true,"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files":{"get":{"tags":["Artifact Version Files"],"summary":"List artifact files in team","description":"List files of the artifact version in team","operationId":"listArtifactFilesInTeam","parameters":[{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersionFiles"]}],"x-ssa-scopes":["listArtifactVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team","description":"List recipe files in team","operationId":"listRecipeFilesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in team","description":"List recipe files in team","operationId":"listRecipeFilesInTeam_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in team","description":"List files of the model version in team","operationId":"listModeFilesInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersionFiles"]}],"x-ssa-scopes":["listModelVersionFiles","kas"]}},"/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in team","description":"List chart versions in team","operationId":"listHelmChartVersionsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersions"]}],"x-ssa-scopes":["kas","listArtifactVersions"]}},"/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org and team","description":"List collection artifacts the user can access in the specified org and team","operationId":"listCollectionArtifactsInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listCollectionArtifacts"]}],"x-ssa-scopes":["kas","listCollectionArtifacts"]}},"/v1/org/{org-name}/repositories/{container-name}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer_2","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-tag","in":"path","description":"Container tag","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/tags/{container-tag}/associated-models":{"get":{"tags":["Model Version"],"summary":"List associated model versions by container","description":"List associated model versions by container","operationId":"listModelVersionsAssociatedByContainer_3","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-name","in":"path","description":"Container name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"container-tag","in":"path","description":"Container tag","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersions"]}],"x-ssa-scopes":["listModelVersions","kas"]}},"/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org","description":"List recipe files in org","operationId":"listRecipeFilesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files":{"get":{"tags":["Resource Version Files endpoints"],"summary":"List recipe files in org","description":"List recipe files in org","operationId":"listRecipeFilesInOrg_1","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"recipe-name","in":"path","description":"Recipe name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listRecipeVersionFiles"]}],"x-ssa-scopes":["listRecipeVersionFiles","kas"]}},"/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in org","description":"List files of the model version in org","operationId":"listModeFilesInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listModelVersionFiles"]}],"x-ssa-scopes":["listModelVersionFiles","kas"]}},"/v1/org/{org-name}/helm-charts/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in org","description":"List chart versions in org","operationId":"listHelmChartVersionsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listArtifactVersions"]}],"x-ssa-scopes":["kas","listArtifactVersions"]}},"/v1/org/{org-name}/collections/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org","description":"List collection artifacts the user can access in the specified org","operationId":"listCollectionArtifactsInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","listCollectionArtifacts"]}],"x-ssa-scopes":["kas","listCollectionArtifacts"]}},"/v1/models":{"get":{"tags":["Models"],"summary":"List public models","description":"This operation lists public models.","operationId":"listPublicModels","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}":{"get":{"tags":["Models"],"summary":"Get model in team as guest","description":"This operation gets info of a model in the org/team as guest.","operationId":"getModelInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in team as guest","description":"List model versions in team as guest","operationId":"listModelVersionsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in team as guest","description":"Get model version in team as guest","operationId":"getModelVersionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in team as guest","description":"List files of the model version in team as guest","operationId":"listModeFilesInTeamAsGuest_2","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}":{"get":{"tags":["Models"],"summary":"Get model in org as guest","description":"This operation gets info of a model in the org as guest.","operationId":"getModelInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}/versions":{"get":{"tags":["Model Version"],"summary":"List model versions in org as guest","description":"List model versions in org as guest","operationId":"listModelVersionsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":1000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}/versions/{version-id}":{"get":{"tags":["Model Version"],"summary":"Get model version in org as guest","description":"Get model version in org as guest","operationId":"getModelVersionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/models/{org-name}/{model-name}/versions/{version-id}/files":{"get":{"tags":["Model Version Files"],"summary":"List model files in org as guest","description":"List files of the model version in org as guest","operationId":"listModeFilesInOrgAsGuest_2","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-reference","in":"query","description":"Page reference","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":1024,"minLength":0}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in team as guest","description":"List chart versions in team as guest","operationId":"listHelmChartVersionsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in team as guest","description":"Get chart version in team as guest","operationId":"getHelmChartVersionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{artifact-name}/versions":{"get":{"tags":["Helm Charts"],"summary":"List chart versions in org as guest","description":"List chart versions in org as guest","operationId":"listHelmChartVersionsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"sort-order","in":"query","description":"Sort order","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"release-type","in":"query","description":"Release Type","required":false,"schema":{"type":"string","format":"UTF-8","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id}":{"get":{"tags":["Helm Charts"],"summary":"Get chart version in org as guest","description":"Get chart version in org as guest","operationId":"getHelmChartVersionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/gpus":{"get":{"tags":["GpuByPci"],"summary":"Get all GPUs","description":"Get all GPU by PCI records","operationId":"getGpus","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]}},"/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}":{"get":{"tags":["GpuByPci"],"summary":"Get GPUs by PCI Device ID and Vendor ID","description":"Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID","operationId":"getGpuByPciDeviceIdVendorId","parameters":[{"name":"pci-device-id","in":"path","description":"PCI Device ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}},{"name":"pci-vendor-id","in":"path","description":"PCI Vendor ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":32,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","readGpuByPci"]}],"x-ssa-scopes":["kas","readGpuByPci"]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in team as guest","description":"Get public artifact deployment parameters details in team as guest","operationId":"getPublicArtifactDeploymentParametersInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in team as guest","description":"List public artifact deployment parameters in team as guest","operationId":"listPublicArtifactDeploymentParametersInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in org as guest","description":"Get public artifact deployment parameters details in org as guest","operationId":"getPublicArtifactDeploymentParametersInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in org as guest","description":"List public artifact deployment parameters in org as guest","operationId":"listPublicArtifactDeploymentParametersInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps/{csp-name}":{"get":{"tags":["Cloud service providers"],"summary":"Get cloud service provider details","description":"Get cloud service provider details","operationId":"getCloudServiceProviderDetails_1","parameters":[{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in team","description":"Get public artifact deployment parameters details in team","operationId":"getPublicArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in team","description":"List public artifact deployment parameters in team","operationId":"listPublicArtifactDeploymentParametersInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"Get public artifact deployment parameters details in org","description":"Get public artifact deployment parameters details in org","operationId":"getPublicArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"csp-name","in":"path","description":"Cloud service provider name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params":{"get":{"tags":["Artifact deployment parameters"],"summary":"List public artifact deployment parameters in org","description":"List public artifact deployment parameters in org","operationId":"listPublicArtifactDeploymentParametersInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["repositories","recipes","models"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"inherit-csp-parameters","in":"query","description":"Inherit CSP parameters","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/deploy/csps":{"get":{"tags":["Cloud service providers"],"summary":"List cloud service providers","description":"List cloud service providers","operationId":"listCloudServiceProviders_1","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0}},{"name":"include-disabled","in":"query","description":"Include disabled","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections":{"get":{"tags":["Collections"],"summary":"List public collections","description":"List public collections","operationId":"listPublicCollections","parameters":[{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{team-name}/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in team as guest","description":"Get collection details in team as guest","operationId":"getCollectionInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{team-name}/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org and team as guest","description":"List collection artifacts the user can access in the specified org and team as guest","operationId":"listCollectionArtifactsInTeamAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{collection-name}":{"get":{"tags":["Collections"],"summary":"Get collection in org as guest","description":"Get collection details in org as guest","operationId":"getCollectionInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/collections/{org-name}/{collection-name}/artifacts/{artifact-type}":{"get":{"tags":["Collections"],"summary":"List collection artifacts in org as guest","description":"List collection artifacts the user can access in the specified org as guest","operationId":"listCollectionArtifactsInOrgAsGuest","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"collection-name","in":"path","description":"Collection name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"page-size","in":"query","description":"Page size","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":5000,"minLength":0,"minimum":1}},{"name":"page-number","in":"query","description":"Page number - zero based index","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"maximum":10000,"minLength":0,"minimum":0}},{"name":"order-by","in":"query","description":"Order by","required":false,"schema":{"type":"string","format":"UTF-8","enum":["ALPHABETIC_ASC","ALPHABETIC_DESC","CREATED_DATE_ASC","CREATED_DATE_DESC","SEMVER_ASC","SEMVER_DESC","DISPLAY_NAME_ASC","DISPLAY_NAME_DESC","UPDATED_DATE_ASC","UPDATED_DATE_DESC","PUBLISHER_ASC","PUBLISHER_DESC","BUILT_BY_ASC","BUILT_BY_DESC","RESOURCE_ID_ASC","RESOURCE_ID_DESC"],"maxLength":262144,"minLength":0}},{"name":"resolve-labels","in":"query","description":"Resolve labels","required":false,"schema":{"type":"boolean"}},{"name":"remove-unresolved-labels","in":"query","description":"Remove unresolved labels","required":false,"schema":{"type":"boolean"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/v1/artifact-registry/org/{org}/workflows/{workflowId}":{"get":{"tags":["Workflows"],"summary":"Get workflow status","description":"Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization.","operationId":"getWorkflowStatus","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"workflowId","in":"path","description":"Workflow identifier","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/artifact-registry/org/{org}/team/{team}/workflows/{workflowId}":{"get":{"tags":["Workflows"],"summary":"Get team-scoped workflow status","description":"Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team.","operationId":"getWorkflowStatusForTeam","parameters":[{"name":"org","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"workflowId","in":"path","description":"Workflow identifier","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","cloneArtifact"]}],"x-ssa-scopes":["kas","cloneArtifact"]}},"/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys":{"get":{"tags":["Encryption Keys"],"summary":"List encryption keys in org/team","description":"List encryption keys in org/team","operationId":"listKeysInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id}":{"get":{"tags":["Encryption Keys"],"summary":"List artifacts for encryption key in org/team","description":"List artifacts for encryption key in org/team","operationId":"listArtifactsForKeyInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifactType","in":"query","description":"Artifact type","required":false,"schema":{"type":"string","format":"UTF-8","default":"MODEL","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Encryption Keys"],"summary":"Revoke encryption key in org/team","description":"Revoke encryption key and disassociate from all artifacts in org/team","operationId":"deleteKeyFromTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/artifact-registry/org/{org-name}/encryption-keys":{"get":{"tags":["Encryption Keys"],"summary":"List encryption keys in org","description":"List encryption keys in org","operationId":"listKeysInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id}":{"get":{"tags":["Encryption Keys"],"summary":"List artifacts for encryption key in org","description":"List artifacts for encryption key in org","operationId":"listArtifactsForKeyInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"query","description":"Artifact type","required":false,"schema":{"type":"string","format":"UTF-8","default":"MODEL","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]},"delete":{"tags":["Encryption Keys"],"summary":"Revoke encryption key in org","description":"Revoke encryption key and disassociate from all artifacts in org","operationId":"deleteKeyFromOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"key-id","in":"path","description":"Key ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/health":{"get":{"tags":["Health"],"summary":"Web Service Health Status","description":"Used to check the health status of the web service only","operationId":"status","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/health/all":{"get":{"tags":["Health"],"summary":"All Service Health Status","description":"Used to get health status of all services","operationId":"statusDetails","parameters":[{"name":"showDetails","in":"query","description":"boolean value to indicating to show details or not","required":false,"schema":{"type":"boolean"}},{"name":"secret","in":"query","description":"secret value that validates the call in order to show details","required":false,"schema":{"type":"string","format":"UTF-8","maxLength":512,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"x-ssa-scopes":[]}},"/health/**":{"get":{"tags":["Health"],"summary":"Get Health Information","description":"Get Health Information about this service","operationId":"getHealth","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthComponent"}}}}},"x-ssa-scopes":[]}},"/v1/org/{orgName}/{artifactType}/{artifactName}/purge":{"delete":{"tags":["Artifacts"],"summary":"Purge Search DB","description":"Purge Search DB for deleted artifacts","operationId":"purgeDeletedArtifact","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","purgeArtifact"]}],"x-ssa-scopes":["kas","purgeArtifact"]}},"/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/purge":{"delete":{"tags":["Artifacts"],"summary":"Purge Search DB","description":"Purge Search DB for deleted artifacts","operationId":"purgeDeletedArtifact_1","parameters":[{"name":"orgName","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"teamName","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"artifactType","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["helm-charts","endpoints","agents","blueprints","apis","playbooks","skills"],"maxLength":262144,"minLength":0}},{"name":"artifactName","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","purgeArtifact"]}],"x-ssa-scopes":["kas","purgeArtifact"]}},"/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}":{"delete":{"tags":["Artifact Versions"],"summary":"Delete a artifact version in org","description":"Delete a artifact version in org","operationId":"deleteArtifactVersionInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifactVersion"]}],"x-ssa-scopes":["deleteArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}":{"delete":{"tags":["Artifact Versions"],"summary":"Delete a artifact version in team","description":"Delete a artifact version in team","operationId":"deleteArtifactVersionInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"artifact-type","in":"path","description":"Artifact type","required":true,"schema":{"type":"string","format":"UTF-8","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"],"maxLength":262144,"minLength":0}},{"name":"artifact-name","in":"path","description":"Artifact name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}},{"name":"version-id","in":"path","description":"Version ID","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}}},"security":[{"ssa":["kas","deleteArtifactVersion"]}],"x-ssa-scopes":["deleteArtifactVersion","kas"]}},"/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key":{"delete":{"tags":["Models"],"summary":"Disassociate encryption key from model in team","description":"Disassociate encryption key from model in team and mark it for offline deletion","operationId":"disassociateKeyFromModelInTeam","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"team-name","in":"path","description":"Team name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}},"/v1/org/{org-name}/models/{model-name}/encryption-key":{"delete":{"tags":["Models"],"summary":"Disassociate encryption key from model in org","description":"Disassociate encryption key from model in org and mark it for offline deletion","operationId":"disassociateKeyFromModelInOrg","parameters":[{"name":"org-name","in":"path","description":"Organization name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}},{"name":"model-name","in":"path","description":"Model name","required":true,"schema":{"type":"string","format":"UTF-8","maxLength":255,"minLength":0}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusUrlResponse"}}}}},"security":[{"ssa":["kas"]}],"x-ssa-scopes":["kas"]}}},"components":{"schemas":{"AsyncCloneArtifactVersionFilesRequest":{"type":"object","description":"Request to asynchronously clone artifact version files. Artifact type, target artifact name, version, org, and team are provided via URL path parameters.","properties":{"sourceArtifact":{"$ref":"#/components/schemas/CloneableArtifact","description":"Cloneable Artifact Parameters object"},"uploadPending":{"type":"boolean","description":"Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'."}},"required":["sourceArtifact"]},"CloneableArtifact":{"type":"object","description":"Cloneable Artifact Parameters object","properties":{"name":{"type":"string","description":"Unique name of the artifact"},"org":{"type":"string","description":"Name of the org that the artifact belongs to"},"team":{"type":"string","description":"Name of the team that the artifact belongs to"},"version":{"type":"string","description":"ID of the version or tag"}},"required":["name","org","version"]},"RequestStatus":{"type":"object","description":"Request status information","properties":{"statusCode":{"type":"string","description":"Describes response status reported by the server.","enum":["UNKNOWN","SUCCESS","UNAUTHORIZED","PAYMENT_REQUIRED","FORBIDDEN","TIMEOUT","EXISTS","NOT_FOUND","INTERNAL_ERROR","INVALID_REQUEST","INVALID_REQUEST_VERSION","INVALID_REQUEST_DATA","METHOD_NOT_ALLOWED","CONFLICT","UNPROCESSABLE_ENTITY","TOO_MANY_REQUESTS","INSUFFICIENT_STORAGE","SERVICE_UNAVAILABLE"]},"statusDescription":{"type":"string","description":"Status description"},"requestId":{"type":"string","description":"Request ID"},"serverId":{"type":"string","description":"Server ID"}}},"Response":{"type":"object","properties":{"requestStatus":{"$ref":"#/components/schemas/RequestStatus","description":"Request status information"}}},"WorkflowStatusUrlResponse":{"type":"object","description":"Response containing workflow status URL and ID","properties":{"statusUrl":{"type":"string","description":"URL to check the workflow status"},"workflowId":{"type":"string","description":"ID of the workflow"},"requestStatus":{"$ref":"#/components/schemas/RequestStatus","description":"Request status information"}}},"MultipartUploadCompleteRequest":{"type":"object","description":"Request body for completing a multipart upload for artifacts","properties":{"name":{"type":"string","description":"Name of the artifact"},"version":{"type":"string","description":"Artifact version"},"artifactType":{"type":"string","description":"Type of artifact"},"filePath":{"type":"string","description":"The file path for the artifact upload"},"uploadID":{"type":"string","description":"The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema"},"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the entire file"}},"required":["artifactType","filePath","name","sha256","uploadID","version"]},"CloneArtifactVersionFilesRequest":{"type":"object","description":"Request to clone artifact version files","properties":{"artifactType":{"type":"string","description":"Artifact type","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"]},"sourceArtifact":{"$ref":"#/components/schemas/CloneableArtifact","description":"Cloneable Artifact Parameters object"},"targetArtifact":{"$ref":"#/components/schemas/CloneableArtifact","description":"Cloneable Artifact Parameters object"},"uploadPending":{"type":"boolean","description":"Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'."}},"required":["artifactType","sourceArtifact","targetArtifact"]},"AIPlaygroundUpdateRequest":{"type":"object","description":"Request to update an AI Playground config","properties":{"nvcfFunctionId":{"type":"string","description":"NVCF function id for the model playground"},"attributes":{"type":"string","description":"Metadata json string"},"openAPISpec":{"type":"string","description":"OpenAPI specification for this model"}}},"AIPlaygroundResponse":{"type":"object","description":"Request to fetch an AI Playground config","properties":{"artifactName":{"type":"string","description":"Unique name of the model"},"artifactType":{"type":"string","description":"ArtifactTypeEnum of the artifact"},"namespace":{"type":"string","description":"org/team of the model"},"nvcfFunctionId":{"type":"string","description":"NVCF function id for the model playground"},"attributes":{"type":"string","description":"Metadata json string"},"openAPISpec":{"type":"string","description":"OpenAPI specification for this model"},"createdDate":{"type":"string","description":"Creation date in ISO-8601 format","pattern":"\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z"},"updatedDate":{"type":"string","description":"Updated date in ISO-8601 format","pattern":"\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z"}}},"ArtifactPublishRequest":{"type":"object","description":"Request to publish an artifact","properties":{"canGuestPull":{"type":"boolean"},"canPublicList":{"type":"boolean"},"isPublic":{"type":"boolean"},"productNames":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"accessType":{"type":"string","enum":["LISTED","EXCLUSIVE","NOT_LISTED"]},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"ConfiguredLicenseTerm":{"type":"object","description":"License information for the artifact","properties":{"artifactType":{"type":"string","description":"Artifact type","example":"model","maxLength":15,"pattern":"^[\\s\\S]*$"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/LicenseTag"}},"generatedHtml":{"type":"string","description":"Generated html","example":"

GOVERNING HOSTING TERMS: ...

","maxLength":9999,"pattern":"^[\\s\\S]*$"}}},"ConfiguredLicenseTerms":{"type":"object","description":"License information for the artifact","properties":{"hosting":{"$ref":"#/components/schemas/ConfiguredLicenseTerm","description":"License information for the artifact"},"download":{"$ref":"#/components/schemas/ConfiguredLicenseTerm","description":"License information for the artifact"}}},"LicenseMetadata":{"type":"object","description":"License information for the artifact","properties":{"licenseId":{"type":"string","description":"License ID","example":"NVIDIA proprietary","maxLength":100,"pattern":"^[\\s\\S]*$"},"licenseVersion":{"type":"string","description":"License version ID","example":"v1.0","maxLength":100,"pattern":"^[\\s\\S]*$"},"needsAcceptance":{"type":"boolean","description":"Indicator if user needs to accept this license"},"governingTerms":{"type":"string","description":"Comprehensive terms and links related to the license","example":"

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

","maxLength":1000,"pattern":"^[\\s\\S]*$"},"configuredLicenseTerms":{"$ref":"#/components/schemas/ConfiguredLicenseTerms","description":"License information for the artifact"}}},"LicenseTag":{"type":"object","description":"License tag information for individual term","properties":{"key":{"type":"string","description":"Key identifier for the tag","example":"nv-open-model","maxLength":100,"pattern":"^[\\s\\S]*$"},"category":{"type":"string","description":"Category of the tag","example":"terms","maxLength":100,"pattern":"^[\\s\\S]*$"},"tag":{"type":"string","description":"License tag name","example":"Model Agreement","maxLength":100,"pattern":"^[\\s\\S]*$"},"url":{"type":"string","description":"Link to the hosted license","example":"https://www.nvidia.com/.../nvidia-open-model-agreement/","maxLength":1000,"pattern":"^[\\s\\S]*$"},"label":{"type":"string","description":"License Label","example":"NVIDIA Open Model Agreement","maxLength":100,"pattern":"^[\\s\\S]*$"}}},"UpdateReleaseTypeRequest":{"type":"object","description":"Request to update release type of an artifact version","properties":{"version":{"type":"string","description":"Artifact version"},"releaseType":{"type":"string","description":"Release type enum for the artifact version in the product lifecycle.","enum":["BETA","GA","EA","FEATURE","PRODUCTION","LTSB"]}},"required":["version"]},"ArtifactAttribute":{"type":"object","description":"Attribute on the artifact","properties":{"key":{"type":"string","maxLength":255,"pattern":"[a-zA-Z0-9]+"},"value":{"type":"string","maxLength":255}}},"ArtifactUpdateRequest":{"type":"object","description":"Properties for the artifact to update","properties":{"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the artifact"},"shortDescription":{"type":"string","description":"Short description of the artifact","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":128,"minLength":2},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the artifact","maxLength":255},"publisher":{"type":"string","description":"organization that published the artifact","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"CollectionPublishRequest":{"type":"object","description":"Request to publish a collection","properties":{"canGuestPull":{"type":"boolean"},"canPublicList":{"type":"boolean"},"isPublic":{"type":"boolean"},"productNames":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"accessType":{"type":"string","enum":["LISTED","EXCLUSIVE","NOT_LISTED"]}}},"MultipartUploadCreateRequest":{"type":"object","description":"Request body for creating a multipart upload for artifacts","properties":{"name":{"type":"string","description":"Name of the artifact"},"version":{"type":"string","description":"Artifact version"},"artifactType":{"type":"string","description":"Type of artifact"},"filePath":{"type":"string","description":"The file path for the artifact upload"},"size":{"type":"integer","format":"int64","description":"total size of the artifact, in bytes"},"customPartSize":{"type":"integer","format":"int64","description":"Custom chunk size of the file to be uploaded, in bytes. should be >= 5MB and <= 500MB. default is 500 in MB."},"uploadID":{"type":"string","description":"Upload id of an already initiated Multipart upload"},"partNumberList":{"type":"array","items":{"type":"integer","format":"int32"}},"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the artifact file to be uploaded"}},"required":["artifactType","filePath","name","size","version"]},"AIPlaygroundCreateRequest":{"type":"object","description":"Request to create a new AI Playground config","properties":{"artifactName":{"type":"string","description":"Unique name of the model"},"nvcfFunctionId":{"type":"string","description":"NVCF function id for the model playground"},"attributes":{"type":"string","description":"Metadata json string"},"openAPISpec":{"type":"string","description":"OpenAPI specification for this model"}},"required":["artifactName","nvcfFunctionId"]},"DeploymentArtifactParameters":{"type":"object","description":"Deployment Artifact Parameters object","properties":{"artifactType":{"type":"string","description":"Artifact type","enum":["MODEL","MODEL_SCRIPT","HELM_CHART","REPOSITORY","COLLECTION","ENDPOINT","BLUEPRINT","PLAYBOOK","AGENT","API","SKILL"]},"name":{"type":"string","description":"Unique name of the artifact"},"displayName":{"type":"string","description":"Display name of the artifact"},"orgName":{"type":"string","description":"Name of the org that the artifact belongs to"},"teamName":{"type":"string","description":"Name of the team that the artifact belongs to"},"versionId":{"type":"string","description":"ID of the version or tag"},"filePath":{"type":"string","description":"Path to a file in an artifact version"}},"required":["name","orgName"]},"DeploymentCpuParameters":{"type":"object","description":"Deployment CPU Parameters object","properties":{"count":{"type":"integer","format":"int64","description":"Total count of CPUs"}}},"DeploymentGpuParameters":{"type":"object","description":"Deployment GPU Parameters object","properties":{"count":{"type":"integer","format":"int64","description":"Total count of GPUs"},"type":{"type":"string","description":"GPU Type"}}},"DeploymentMemoryParameters":{"type":"object","description":"Deployment Memory Parameters object","properties":{"capacityInGB":{"type":"integer","format":"int64","description":"Capacity in GB"}}},"DeploymentStorageParameters":{"type":"object","description":"Deployment Storage Parameters object","properties":{"capacityInGB":{"type":"integer","format":"int64","description":"Capacity in GB"}}},"DeploymentUrlCreateRequest":{"type":"object","description":"Request to create a new deployment url","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParameters","description":"Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParameters","description":"Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParameters","description":"Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParameters","description":"Deployment Storage Parameters object"},"container":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"model":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"resource":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"}}},"DeploymentParametersCreateRequest":{"type":"object","description":"Request to create a new deployment parameters","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParameters","description":"Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParameters","description":"Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParameters","description":"Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParameters","description":"Deployment Storage Parameters object"},"container":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"model":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"resource":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"}}},"AcceptArtifactLicenseRequest":{"type":"object","description":"Request body to accept an org-scoped artifact license.","properties":{"licenseId":{"type":"string","description":"License identifier to accept (must match a licenseId from the artifact's published licenseTerms).","example":"NVIDIA Proprietary","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$"},"licenseVersion":{"type":"string","description":"License version to accept (must match licenseVersion for that license on the artifact).","example":1.0,"maxLength":128,"minLength":1,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$"}},"required":["licenseId","licenseVersion"]},"ArtifactFileChecksumToValidate":{"type":"object","description":"Artifact file checksum object in request to validate artifact file checksum exists or not","properties":{"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the artifact file"}},"required":["sha256"]},"ArtifactFilesChecksumExistsRequest":{"type":"object","description":"File checksums","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactFileChecksumToValidate"}}}},"ArtifactCreateRequest":{"type":"object","description":"Properties for the artifact to create","properties":{"name":{"type":"string","description":"Unique name of the artifact","maxLength":250,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the artifact"},"shortDescription":{"type":"string","description":"Short description of the artifact","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":128,"minLength":2},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the artifact","maxLength":255},"publisher":{"type":"string","description":"organization that published the artifact","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}},"required":["name","shortDescription"]},"CustomMetric":{"type":"object","description":"Custom metrics","properties":{"key":{"type":"string","maxLength":255},"value":{"type":"string","maxLength":255}}},"CustomMetricGroup":{"type":"object","description":"Defines the group of custom metrics.","properties":{"name":{"type":"string","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetric"}}}},"RecipeVersionCreateRequest":{"type":"object","description":"Properties for the recipe version to be created","properties":{"id":{"type":"integer","format":"int64","description":"Deprecated: Please use version instead. Unique ID of the version","maximum":2147483647,"minimum":1},"versionId":{"type":"string","description":"Unique version id. Please use this instead of 'id'","maxLength":255,"pattern":"[^/]+"},"description":{"type":"string","description":"Description of the recipe version"},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this recipe reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this recipe trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this recipe was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Recipe size/memory footprint for inference","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"releaseNotes":{"type":"string","description":"Text describing this release"},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"Dataset":{"type":"object","properties":{"name":{"type":"string","description":"Name of the dataset","maxLength":255},"link":{"type":"string","description":"Link to the dataset","maxLength":255},"license":{"type":"string","description":"License of the dataset","maxLength":255}}},"RecipeCreateRequest":{"type":"object","description":"Properties for the recipe to create","properties":{"name":{"type":"string","description":"Unique name of the recipe","maxLength":128,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"trainingFramework":{"type":"string","enum":["TensorFlow","Caffe2","CNTK","Torch","PyTorch","MXNet","Keras","Other","TransferLearningToolkit","TensorFlow2"]},"modelFormat":{"type":"string","description":"Format of the model this recipe produces","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the recipe"},"shortDescription":{"type":"string","description":"Short description of the recipe","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"advanced":{"type":"string","description":"Text for describing advanced information"},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","enum":["FP16","FP32","INT8","FPBOTH","OTHER","ALL"]},"application":{"type":"string","enum":["CLASSIFICATION","OBJECT_DETECTION","SEGMENTATION","TRANSLATION","TEXT_TO_SPEECH","RECOMMENDER","SENTIMENT","NLP","KUBEFLOW_PIPELINE","OTHER","SPEAKER_VERIFICATION","PUNCTUATION_AND_CAPITALIZATION","DIALOG_STATE_TRACKING","SPEAKER_DIARIZATION","SPEAKER_RECOGNITION","SPEECH_SYNTHESIS","VOICE_ACTIVITY_DETECTION","SPEECH_RECOGNITION","LANGUAGE_MODELING","NAMED_ENTITY_RECOGNITION","TEXT_CLASSIFICATION","TEXT_PROCESSING","QUESTION_ANSWERING","CONTENT_GENERATION"]},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the recipe","maxLength":255},"publisher":{"type":"string","description":"organization that published the recipe","maxLength":255},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}},"required":["application","modelFormat","name","precision","publicDatasetUsed","shortDescription","trainingFramework"]},"EncryptionKey":{"type":"object","description":"Customer Managed Key shard configuration for the model","properties":{"useExistingKey":{"type":"boolean","description":"Whether to use an existing customer key shard or should a new one be created"},"encryptionKeyId":{"type":"string","description":"ID of the existing customer key shard to use"},"description":{"type":"string","description":"Description for a new customer key shard"}},"required":["useExistingKey"]},"ModelCreateRequest":{"type":"object","description":"Properties for the models to be created","properties":{"name":{"type":"string","description":"Unique name of the model","maxLength":128,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"description":{"type":"string","description":"Description of the model"},"ownerName":{"type":"string","description":"Name of the user who owns this model","maxLength":255},"framework":{"type":"string","description":"Framework used to train this model","maxLength":255},"modelFormat":{"type":"string","description":"Format of the model","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"shortDescription":{"type":"string","description":"Short description of the model","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","description":"Precision this model was trained with","maxLength":255},"application":{"type":"string","description":"Application of the model","maxLength":255},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the repository","maxLength":255},"publisher":{"type":"string","description":"organization that published the repository","maxLength":255},"hasPlayground":{"type":"boolean","description":"indicate if the Model has AI Playground configured"},"isPlaygroundEnabled":{"type":"boolean","description":"indicate if AI Playground is enabled in the catalog"},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}},"encryptionKey":{"$ref":"#/components/schemas/EncryptionKey","description":"Customer Managed Key shard configuration for the model"}},"required":["framework","name","precision"]},"MetaData":{"type":"object","properties":{"key":{"type":"string","maxLength":255},"value":{"type":"string","maxLength":255}}},"ModelVersionCreateRequest":{"type":"object","description":"Properties for the model version to be created","properties":{"id":{"type":"integer","format":"int64","description":"Deprecated: Please use version instead. Unique ID of the version","maximum":2147483647,"minimum":1},"versionId":{"type":"string","description":"Unique version id. Please use this instead of 'id'","maxLength":255,"pattern":"[^/]+"},"description":{"type":"string","description":"Description of the model version","maxLength":255},"ownerName":{"type":"string","description":"Name of the user who owns this version","maxLength":255},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this model reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this model trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this model was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Model size/memory footprint for inference","maxLength":255},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"nvcfContainerConfiguration":{"$ref":"#/components/schemas/NvcfContainerConfiguration","description":"NVCF container configuration parameters"},"nvcfDeploymentSpecification":{"$ref":"#/components/schemas/NvcfDeploymentSpecification","description":"NVCF deployment specification"},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"NvcfContainerConfiguration":{"type":"object","description":"NVCF container configuration parameters","properties":{"inferenceUrl":{"type":"string","description":"Inference url"},"inferencePort":{"type":"string","description":"Inference port"},"healthUri":{"type":"string","description":"Health URI"},"containerImage":{"type":"string","description":"Container Image"},"containerArgs":{"type":"string","description":"Container arguments"},"apiBodyFormat":{"type":"string","description":"API body format"},"models":{"type":"array","items":{"$ref":"#/components/schemas/NvcfContainerModel"}},"containerEnvironment":{"type":"array","items":{"$ref":"#/components/schemas/MetaData"}}}},"NvcfContainerModel":{"type":"object","description":"Models version object metadata","properties":{"name":{"type":"string","description":"Model name"},"version":{"type":"string","description":"Model version"},"uri":{"type":"string","description":"Model URI"}}},"NvcfDeploymentSpecification":{"type":"object","description":"NVCF deployment specification","properties":{"gpuType":{"type":"string","description":"GPU type"},"gpuCount":{"type":"integer","format":"int32","description":"GPU count"},"instanceType":{"type":"string","description":"Instance type"},"maxConcurrency":{"type":"integer","format":"int32","description":"Maximum concurrency"}}},"CollectionCreateRequest":{"type":"object","description":"Properties for the collections to be created","properties":{"name":{"type":"string","description":"Unique name of the collection","maxLength":128,"minLength":1,"pattern":"^[a-z][a-z\\d._-]*$"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the collection"},"shortDescription":{"type":"string","description":"Short description of the collection","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"ownerName":{"type":"string","description":"Name of the user who owns this collection","maxLength":255},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the collection"},"publisher":{"type":"string","description":"organization that published the collection","maxLength":255},"category":{"type":"string","enum":["HEALTHCARE","SMART_CITIES","RETAIL","MANUFACTURING","SUPERCOMPUTING","ROBOTICS","AUTOMOTIVE","TELECOMMUNICATIONS","FINANCE","OIL_AND_GAS","NATURAL_LANGUAGE_PROCESSING","AUTOMATIC_SPEECH_RECOGNITION","INTELLIGENT_VIDEO_ANALYTICS","OBJECT_DETECTION","IMAGE_CLASSIFICATION","ANNOTATION","IMAGE_SYNTHESIS","MACHINE_LEARNING","DEEP_LEARNING","INFRASTRUCTURE","HIGH_PERFORMANCE_COMPUTING","WINDOWS_RTX_ACCELERATED_MODELS","BEGINNER","ADVANCED"]},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}},"required":["category","name","shortDescription"]},"ArtifactFileCommitMetadata":{"type":"object","properties":{"commitType":{"type":"string","enum":["ADDITION","DELETION"]},"filePath":{"type":"string","description":"Artifact file path"},"sha256":{"type":"string","description":"Base64 encoded sha256 hash of the artifact file. Required for addition and not required for deletion"}},"required":["commitType","filePath"]},"ArtifactFilesCommitRequest":{"type":"object","description":"Artifact files to be committed","properties":{"name":{"type":"string","description":"Artifact name"},"artifactType":{"type":"string","description":"Artifact type - could be either model or resource"},"version":{"type":"string","description":"Artifact version"},"baseVersion":{"type":"string","description":"Artifact version that the commit is based on"},"files":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactFileCommitMetadata"}}},"required":["artifactType","name","version"]},"MalwareScanNotification":{"type":"object","properties":{"uuid":{"type":"string"},"tenant":{"type":"string"},"contact":{"type":"string"},"nspect_id":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}},"NotifyMalwareScanResultResponse":{"type":"object","description":"Notify malware scan result response","properties":{"status":{"type":"string","description":"Malware scan status","enum":["NOT_SCANNED","IN_PROGRESS","CLEAN","SUSPICIOUS","FAILED","MALICIOUS"]}}},"GpuByPciCreateRequest":{"type":"object","description":"GPU by PCI properties","properties":{"pciDeviceId":{"type":"string","description":"PCI Device ID"},"pciVendorId":{"type":"string","description":"PCI Vendor ID"},"pciSubsystemDeviceId":{"type":"string","description":"PCI Subsystem Device ID"},"labelName":{"type":"string","description":"Label name for the GPU"},"displayName":{"type":"string","description":"Display name for the GPU"},"cudaMajorVersion":{"type":"string","description":"CUDA major version"},"cudaMinorVersion":{"type":"string","description":"CUDA minor version"},"memorySizeGb":{"type":"integer","format":"int32","description":"Memory size in GB (smallint range)","maximum":32767,"minimum":0},"formFactor":{"type":"string","description":"GPU form factor"},"gpuCounts":{"type":"array","items":{"type":"integer","format":"int32","maximum":255,"minimum":0},"uniqueItems":true}},"required":["displayName","pciDeviceId"]},"CloudServiceProviderCreateRequest":{"type":"object","description":"Request to create a new Cloud Service Provider","properties":{"name":{"type":"string","description":"Unique name of the Cloud Service Provider"},"displayName":{"type":"string","description":"Display name of the Cloud Service Provider"},"description":{"type":"string","description":"Description of the Cloud Service Provider"},"isEnabled":{"type":"boolean","description":"Determines if this Cloud Service Provider is enabled"},"logo":{"type":"string","description":"URL for the logo image"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"labels":{"type":"array","items":{"type":"string"}}},"required":["name"]},"CountableResource":{"type":"object","description":"Countable Resource object","properties":{"minValue":{"type":"integer","format":"int64","description":"Minimum value"},"maxValue":{"type":"integer","format":"int64","description":"Maximum value"},"defaultValue":{"type":"integer","format":"int64","description":"Deprecated: Default value. Please use actual CloudServiceProvider values instead"}}},"DeploymentCpuParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment CPU Parameters object","properties":{"count":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"}},"required":["count"]},"DeploymentGpuParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment GPU Parameters object","properties":{"count":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"},"type":{"$ref":"#/components/schemas/EnumerableResource","description":"Enumerable Resource object"}},"required":["type"]},"DeploymentMemoryParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment Memory Parameters object","properties":{"capacityInGB":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"}},"required":["capacityInGB"]},"DeploymentParametersMetaCreateRequest":{"type":"object","description":"Properties for the cloud service provider deployment parameters meta to create","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParametersMeta","description":"Cloud Service Provider Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParametersMeta","description":"Cloud Service Provider Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParametersMeta","description":"Cloud Service Provider Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParametersMeta","description":"Cloud Service Provider Deployment Storage Parameters object"}},"required":["gpu","storage"]},"DeploymentStorageParametersMeta":{"type":"object","description":"Cloud Service Provider Deployment Storage Parameters object","properties":{"capacityInGB":{"$ref":"#/components/schemas/CountableResource","description":"Countable Resource object"}},"required":["capacityInGB"]},"EnumerableResource":{"type":"object","description":"Enumerable Resource object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EnumerableResourceItem"}},"defaultItemName":{"type":"string","description":"Deprecated: Default item name. Please use actual CloudServiceProvider values instead"}}},"EnumerableResourceItem":{"type":"object","description":"Enumerable Resource Item object","properties":{"name":{"type":"string","description":"Name"},"displayName":{"type":"string","description":"Display name"},"logo":{"type":"string","description":"Logo URL"}}},"UpdateArtifactVersionConfigs":{"type":"object","description":"Request to publish an artifact","properties":{"policy":{"type":"array","items":{"type":"string","enum":["GOV_READY","FedRAMP"]}}}},"DeploymentParametersUpdateRequest":{"type":"object","description":"Request to update existing deployment parameters","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParameters","description":"Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParameters","description":"Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParameters","description":"Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParameters","description":"Deployment Storage Parameters object"},"container":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"model":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"},"resource":{"$ref":"#/components/schemas/DeploymentArtifactParameters","description":"Deployment Artifact Parameters object"}}},"RecipeVersionUpdateRequest":{"type":"object","description":"Version properties to update","properties":{"status":{"type":"string","description":"Version status","enum":["UPLOAD_PENDING","UPLOAD_COMPLETE"]},"description":{"type":"string","description":"Description of the recipe version"},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this recipe reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this recipe trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this recipe was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Recipe size/memory footprint for inference","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"releaseNotes":{"type":"string","description":"Text describing this release"},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"ModelSimplified":{"type":"object","description":"Model object","properties":{"name":{"type":"string","description":"Unique name of the model"},"orgName":{"type":"string","description":"Name of the org that the model belongs to"},"teamName":{"type":"string","description":"Name of the team that the model belongs to"}},"required":["name","orgName"]},"RecipeUpdateRequest":{"type":"object","description":"Properties for the recipe to update","properties":{"trainingFramework":{"type":"string","enum":["TensorFlow","Caffe2","CNTK","Torch","PyTorch","MXNet","Keras","Other","TransferLearningToolkit","TensorFlow2"]},"modelFormat":{"type":"string","description":"Format of the model this recipe produces","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the recipe"},"shortDescription":{"type":"string","description":"Short description of the recipe","maxLength":255},"setup":{"type":"string","description":"Text describing recipe setup"},"quickStartGuide":{"type":"string","description":"Text with a guide to getting started"},"performance":{"type":"string","description":"Text describing performance of the recipe results"},"advanced":{"type":"string","description":"Text for describing advanced information"},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","enum":["FP16","FP32","INT8","FPBOTH","OTHER","ALL"]},"application":{"type":"string","enum":["CLASSIFICATION","OBJECT_DETECTION","SEGMENTATION","TRANSLATION","TEXT_TO_SPEECH","RECOMMENDER","SENTIMENT","NLP","KUBEFLOW_PIPELINE","OTHER","SPEAKER_VERIFICATION","PUNCTUATION_AND_CAPITALIZATION","DIALOG_STATE_TRACKING","SPEAKER_DIARIZATION","SPEAKER_RECOGNITION","SPEECH_SYNTHESIS","VOICE_ACTIVITY_DETECTION","SPEECH_RECOGNITION","LANGUAGE_MODELING","NAMED_ENTITY_RECOGNITION","TEXT_CLASSIFICATION","TEXT_PROCESSING","QUESTION_ANSWERING","CONTENT_GENERATION"]},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the recipe","maxLength":255},"publisher":{"type":"string","description":"organization that published the recipe","maxLength":255},"relatedModels":{"type":"array","items":{"$ref":"#/components/schemas/ModelSimplified"}},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"ModelUpdateRequest":{"type":"object","description":"Properties for the model to update","properties":{"description":{"type":"string","description":"Description of the model"},"ownerName":{"type":"string","description":"Name of the user who owns this model","maxLength":255},"framework":{"type":"string","description":"Framework used to train this model","maxLength":255},"modelFormat":{"type":"string","description":"Format of the model","maxLength":255},"publicDatasetUsed":{"$ref":"#/components/schemas/Dataset"},"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"shortDescription":{"type":"string","description":"Short description of the model","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"precision":{"type":"string","description":"Precision this model was trained with","maxLength":255},"hasPlayground":{"type":"boolean","description":"indicate if the Model has AI Playground configured"},"isPlaygroundEnabled":{"type":"boolean","description":"indicate if AI Playground is enabled in the catalog"},"application":{"type":"string","description":"Application of the model","maxLength":255},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the repository","maxLength":255},"publisher":{"type":"string","description":"organization that published the repository","maxLength":255},"bias":{"type":"string","description":"Text describing bias in the model"},"explainability":{"type":"string","description":"Text describing explainability for this model"},"privacy":{"type":"string","description":"Text describing the privacy for this model"},"safetyAndSecurity":{"type":"string","description":"Text for describing the safety and security in the model"},"licenseTerms":{"type":"array","items":{"$ref":"#/components/schemas/LicenseMetadata"}}}},"ModelVersionUpdateRequest":{"type":"object","description":"Version properties to update","properties":{"status":{"type":"string","description":"Version status","enum":["UPLOAD_PENDING","UPLOAD_COMPLETE"]},"description":{"type":"string","description":"Description of the model version","maxLength":255},"ownerName":{"type":"string","description":"Name of the user who owns this version","maxLength":255},"accuracyReached":{"type":"number","format":"float","description":"Accuracy this model reached","maximum":100,"minimum":0},"numberOfEpochs":{"type":"integer","format":"int64","description":"Number of epochs this model trained","minimum":0},"gpuModel":{"type":"string","description":"GPU model and memory","maxLength":255},"batchSize":{"type":"integer","format":"int64","description":"Batch size this model was trained with","minimum":0},"memoryFootprint":{"type":"string","description":"Model size/memory footprint for inference","maxLength":255},"customMetrics":{"type":"array","items":{"$ref":"#/components/schemas/CustomMetricGroup"}},"otherContents":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"nvcfContainerConfiguration":{"$ref":"#/components/schemas/NvcfContainerConfiguration","description":"NVCF container configuration parameters"},"nvcfDeploymentSpecification":{"$ref":"#/components/schemas/NvcfDeploymentSpecification","description":"NVCF deployment specification"}}},"ArtifactVersionUpdateRequest":{"type":"object","description":"Version properties to update","properties":{"status":{"type":"string","description":"Version status","enum":["UPLOAD_PENDING","UPLOAD_COMPLETE"]},"description":{"type":"string","description":"Description of the artifact version","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"CollectionUpdateRequest":{"type":"object","description":"Properties for the collection to update","properties":{"labels":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+"}},"labelsV2":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Description of the collection"},"shortDescription":{"type":"string","description":"Short description of the collection","maxLength":255},"displayName":{"type":"string","description":"Display name","maxLength":64,"minLength":2},"logo":{"type":"string","description":"URL for the logo image","maxLength":255},"builtBy":{"type":"string","description":"organization that built the collection"},"publisher":{"type":"string","description":"organization that published the collection","maxLength":255},"category":{"type":"string","enum":["HEALTHCARE","SMART_CITIES","RETAIL","MANUFACTURING","SUPERCOMPUTING","ROBOTICS","AUTOMOTIVE","TELECOMMUNICATIONS","FINANCE","OIL_AND_GAS","NATURAL_LANGUAGE_PROCESSING","AUTOMATIC_SPEECH_RECOGNITION","INTELLIGENT_VIDEO_ANALYTICS","OBJECT_DETECTION","IMAGE_CLASSIFICATION","ANNOTATION","IMAGE_SYNTHESIS","MACHINE_LEARNING","DEEP_LEARNING","INFRASTRUCTURE","HIGH_PERFORMANCE_COMPUTING","WINDOWS_RTX_ACCELERATED_MODELS","BEGINNER","ADVANCED"]},"ownerName":{"type":"string","description":"Name of the user who owns this collection","maxLength":255},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}}}},"CollectionOperation":{"type":"object","description":"Collection operation object","properties":{"operation":{"type":"string","description":"Collection operation","maxLength":255},"path":{"type":"string","description":"Path to a collection item in a scoped format","maxLength":255,"pattern":"^(/(?!/)([\\w- %\\.(?!\\.)])+)+$"}}},"CollectionPatchRequest":{"type":"object","description":"Properties for the collection to patch","properties":{"operations":{"type":"array","items":{"$ref":"#/components/schemas/CollectionOperation","maxItems":100},"maxItems":100}}},"GpuByPciUpdateRequest":{"type":"object","description":"GPU by PCI update properties","properties":{"labelName":{"type":"string","description":"Label name for the GPU"},"displayName":{"type":"string","description":"Display name for the GPU"},"cudaMajorVersion":{"type":"string","description":"CUDA major version"},"cudaMinorVersion":{"type":"string","description":"CUDA minor version"},"memorySizeGb":{"type":"integer","format":"int32","description":"Memory size in GB (smallint range)","maximum":32767,"minimum":0},"formFactor":{"type":"string","description":"GPU form factor"},"gpuCounts":{"type":"array","items":{"type":"integer","format":"int32","maximum":255,"minimum":0},"uniqueItems":true}}},"CloudServiceProviderUpdateRequest":{"type":"object","description":"Request to update existing Cloud Service Provider","properties":{"displayName":{"type":"string","description":"Display name of the Cloud Service Provider"},"description":{"type":"string","description":"Description of the Cloud Service Provider"},"isEnabled":{"type":"boolean","description":"Determines if this Cloud Service Provider is enabled"},"logo":{"type":"string","description":"URL for the logo image"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/ArtifactAttribute"}},"labels":{"type":"array","items":{"type":"string"}}}},"DeploymentParametersMetaUpdateRequest":{"type":"object","description":"Properties for the cloud service provider deployment parameters meta to create","properties":{"cpu":{"$ref":"#/components/schemas/DeploymentCpuParametersMeta","description":"Cloud Service Provider Deployment CPU Parameters object"},"gpu":{"$ref":"#/components/schemas/DeploymentGpuParametersMeta","description":"Cloud Service Provider Deployment GPU Parameters object"},"memory":{"$ref":"#/components/schemas/DeploymentMemoryParametersMeta","description":"Cloud Service Provider Deployment Memory Parameters object"},"storage":{"$ref":"#/components/schemas/DeploymentStorageParametersMeta","description":"Cloud Service Provider Deployment Storage Parameters object"}}},"HealthComponent":{"type":"object","properties":{"description":{"type":"string"},"status":{"type":"string"}}},"MultipartUploadAbortRequest":{"type":"object","description":"Request body for aborting a multipart upload for artifacts","properties":{"name":{"type":"string","description":"Name of the artifact"},"version":{"type":"string","description":"Artifact version"},"artifactType":{"type":"string","description":"Type of artifact"},"filePath":{"type":"string","description":"The file path for the artifact upload"},"uploadID":{"type":"string","description":"The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema"}},"required":["artifactType","filePath","name","uploadID","version"]}},"securitySchemes":{"authn":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"authn.nvidia.com/token","scopes":{}}}},"ssa":{"type":"oauth2","description":"A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725","flows":{"clientCredentials":{"tokenUrl":"https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token","scopes":{"kas":"{scope}","getPublicFlags":"{scope}","publishArtifact":"{scope}","undoPublishArtifact":"{scope}","helmProxy":"{scope}","undoPublishCollection":"{scope}","publishCollection":"{scope}","recreateArtifactVersionZip":"{scope}","cloneArtifact":"{scope}"}}}}}}} \ No newline at end of file +{ + "components": { + "schemas": { + "AIPlaygroundCreateRequest": { + "description": "Request to create a new AI Playground config", + "properties": { + "artifactName": { + "description": "Unique name of the model", + "type": "string" + }, + "attributes": { + "description": "Metadata json string", + "type": "string" + }, + "nvcfFunctionId": { + "description": "NVCF function id for the model playground", + "type": "string" + }, + "nvcfInferencePath": { + "description": "NVCF inference path (invocation route) for the model playground", + "type": "string" + }, + "openAPISpec": { + "description": "OpenAPI specification for this model", + "type": "string" + } + }, + "required": [ + "artifactName", + "nvcfFunctionId" + ], + "type": "object" + }, + "AIPlaygroundResponse": { + "description": "Request to fetch an AI Playground config", + "properties": { + "artifactName": { + "description": "Unique name of the model", + "type": "string" + }, + "artifactType": { + "description": "ArtifactTypeEnum of the artifact", + "type": "string" + }, + "attributes": { + "description": "Metadata json string", + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "namespace": { + "description": "org/team of the model", + "type": "string" + }, + "nvcfFunctionId": { + "description": "NVCF function id for the model playground", + "type": "string" + }, + "nvcfInferencePath": { + "description": "NVCF inference path (invocation route) for the model playground", + "type": "string" + }, + "openAPISpec": { + "description": "OpenAPI specification for this model", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "type": "object" + }, + "AIPlaygroundUpdateRequest": { + "description": "Request to update an AI Playground config", + "properties": { + "attributes": { + "description": "Metadata json string", + "type": "string" + }, + "nvcfFunctionId": { + "description": "NVCF function id for the model playground", + "type": "string" + }, + "nvcfInferencePath": { + "description": "NVCF inference path (invocation route) for the model playground", + "type": "string" + }, + "openAPISpec": { + "description": "OpenAPI specification for this model", + "type": "string" + } + }, + "type": "object" + }, + "AcceptArtifactLicenseRequest": { + "description": "Request body to accept an org-scoped artifact license.", + "properties": { + "licenseId": { + "description": "License identifier to accept (must match a licenseId from the artifact's published licenseTerms).", + "example": "NVIDIA Proprietary", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$", + "type": "string" + }, + "licenseVersion": { + "description": "License version to accept (must match licenseVersion for that license on the artifact).", + "example": 1, + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\s._+()/:'-]*$", + "type": "string" + } + }, + "required": [ + "licenseId", + "licenseVersion" + ], + "type": "object" + }, + "Artifact": { + "description": "Artifact object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "artifactType": { + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" + }, + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "bias": { + "description": "Text describing bias in the artifact", + "type": "string" + }, + "builtBy": { + "description": "Organization that built the helm chart", + "type": "string" + }, + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the helm chart", + "type": "string" + }, + "displayName": { + "description": "Display name", + "type": "string" + }, + "encryptionKeyId": { + "description": "ID of the customer managed encryption key associated with this artifact", + "type": "string" + }, + "explainability": { + "description": "Text describing the explainability for this artifact", + "type": "string" + }, + "hasSignedVersion": { + "description": "Indicates if the artifact has any signed versions", + "type": "boolean" + }, + "isFavourite": { + "description": "Flag indicating if helm chart is user's favorite", + "type": "boolean" + }, + "isPublic": { + "description": "Determines if this helm chart is publicly accessible", + "type": "boolean" + }, + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "latestVersionId": { + "description": "ID of the latest version", + "type": "string" + }, + "latestVersionSizeInBytes": { + "description": "Size of the latest version in bytes", + "format": "int64", + "type": "integer" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the helm chart", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the helm chart belongs to", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "privacy": { + "description": "Text describing the privacy for this artifact", + "type": "string" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publisher": { + "description": "Organization that published this helm chart", + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the artifact", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the helm chart", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the helm chart belongs to", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "type": "object" + }, + "ArtifactAttribute": { + "description": "Attribute on the artifact", + "properties": { + "key": { + "maxLength": 255, + "pattern": "[a-zA-Z0-9]+", + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ArtifactCatalogFlags": { + "description": "Artifact Catalog Flags object", + "properties": { + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "isListedToPublic": { + "description": "Flag indicating if artifact is listed and searchable", + "type": "boolean" + }, + "isPublic": { + "description": "Determines if this artifact is publicly accessible", + "type": "boolean" + } + }, + "type": "object" + }, + "ArtifactCreateRequest": { + "description": "Properties for the artifact to create", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "bias": { + "description": "Text describing bias in the model", + "maxLength": 128000, + "type": "string" + }, + "builtBy": { + "description": "organization that built the artifact", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the artifact", + "maxLength": 128000, + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 128, + "minLength": 2, + "type": "string" + }, + "explainability": { + "description": "Text describing explainability for this model", + "maxLength": 128000, + "type": "string" + }, + "labels": { + "items": { + "maxLength": 255, + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Unique name of the artifact", + "maxLength": 250, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "maxLength": 128000, + "type": "string" + }, + "publisher": { + "description": "organization that published the artifact", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "maxLength": 128000, + "type": "string" + }, + "shortDescription": { + "description": "Short description of the artifact", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ArtifactDownloadAllResponse": { + "description": "Response body to download all files of an artifact", + "properties": { + "filepath": { + "items": { + "type": "string" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "sha256_base64": { + "items": { + "type": "string" + }, + "type": "array" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ArtifactDownloadResponse": { + "description": "Response body to download a single file of an artifact", + "properties": { + "filepath": { + "description": "The filepath of the artifact", + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "url": { + "description": "Presigned url for single file download", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "ArtifactFileChecksumToValidate": { + "description": "Artifact file checksum object in request to validate artifact file checksum exists or not", + "properties": { + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" + } + }, + "required": [ + "sha256" + ], + "type": "object" + }, + "ArtifactFileChecksumValidated": { + "properties": { + "exists": { + "description": "Boolean to indicate whether sha256 exists or not", + "type": "boolean" + }, + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" + }, + "size": { + "description": "Size of the artifact file", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "exists", + "sha256" + ], + "type": "object" + }, + "ArtifactFileCommitMetadata": { + "properties": { + "commitType": { + "enum": [ + "ADDITION", + "DELETION" + ], + "type": "string" + }, + "filePath": { + "description": "Artifact file path", + "type": "string" + }, + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file. Required for addition and not required for deletion", + "type": "string" + } + }, + "required": [ + "commitType", + "filePath" + ], + "type": "object" + }, + "ArtifactFilesChecksumExistsRequest": { + "description": "File checksums", + "properties": { + "files": { + "items": { + "$ref": "#/components/schemas/ArtifactFileChecksumToValidate" + }, + "type": "array" + } + }, + "type": "object" + }, + "ArtifactFilesChecksumExistsResponse": { + "description": "Request to check if file exists by checksum", + "properties": { + "files": { + "items": { + "$ref": "#/components/schemas/ArtifactFileChecksumValidated" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ArtifactFilesCommitRequest": { + "description": "Artifact files to be committed", + "properties": { + "artifactType": { + "description": "Artifact type - could be either model or resource", + "type": "string" + }, + "baseVersion": { + "description": "Artifact version that the commit is based on", + "type": "string" + }, + "files": { + "items": { + "$ref": "#/components/schemas/ArtifactFileCommitMetadata" + }, + "type": "array" + }, + "name": { + "description": "Artifact name", + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "artifactType", + "name", + "version" + ], + "type": "object" + }, + "ArtifactItem": { + "description": "Artifact item with name and description", + "properties": { + "artifactType": { + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" + }, + "description": { + "description": "Description of the artifact", + "type": "string" + }, + "displayName": { + "description": "Display name of the artifact", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" + } + }, + "required": [ + "description", + "name" + ], + "type": "object" + }, + "ArtifactListResponse": { + "description": "Response to list artifacts request", + "properties": { + "artifacts": { + "items": { + "$ref": "#/components/schemas/Artifact" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ArtifactPublishRequest": { + "description": "Request to publish an artifact", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "canGuestPull": { + "type": "boolean" + }, + "canPublicList": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ArtifactResponse": { + "description": "Response to artifact request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ArtifactUpdateRequest": { + "description": "Properties for the artifact to update", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "bias": { + "description": "Text describing bias in the model", + "type": "string" + }, + "builtBy": { + "description": "organization that built the artifact", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the artifact", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 128, + "minLength": 2, + "type": "string" + }, + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "publisher": { + "description": "organization that published the artifact", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the artifact", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ArtifactVersion": { + "description": "Artifact version object", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "createdByUser": { + "description": "Id of the user who created this version", + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the version", + "type": "string" + }, + "id": { + "description": "Unique ID of the version", + "type": "string" + }, + "isSigned": { + "description": "Indicates if the version is signed", + "type": "boolean" + }, + "malwareScanDate": { + "description": "Scan date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "malwareScanStatus": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + }, + "policy": { + "items": { + "type": "string" + }, + "type": "array" + }, + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + }, + "storageVersion": { + "description": "The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files.", + "type": "string" + }, + "totalFileCount": { + "description": "Total file count", + "format": "int64", + "type": "integer" + }, + "totalSizeInBytes": { + "description": "Total size of the version in bytes", + "format": "int64", + "type": "integer" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "type": "object" + }, + "ArtifactVersionFileListResponse": { + "description": "Response to list files for artifact version request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" + }, + "artifactFiles": { + "items": { + "$ref": "#/components/schemas/File" + }, + "type": "array" + }, + "artifactVersion": { + "$ref": "#/components/schemas/ArtifactVersion", + "description": "Artifact version object" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ArtifactVersionListResponse": { + "description": "Response to list artifact versions request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" + }, + "artifactVersions": { + "items": { + "$ref": "#/components/schemas/ArtifactVersion" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ArtifactVersionResponse": { + "description": "Response to artifact version request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "description": "Artifact object" + }, + "artifactVersion": { + "$ref": "#/components/schemas/ArtifactVersion", + "description": "Artifact version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ArtifactVersionUpdateRequest": { + "description": "Version properties to update", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "description": { + "description": "Description of the artifact version", + "maxLength": 255, + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + } + }, + "type": "object" + }, + "AsyncCloneArtifactVersionFilesRequest": { + "description": "Request to asynchronously clone artifact version files. Artifact type, target artifact name, version, org, and team are provided via URL path parameters.", + "properties": { + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'.", + "type": "boolean" + } + }, + "required": [ + "sourceArtifact" + ], + "type": "object" + }, + "CloneArtifactFilesStatusResponse": { + "description": "Progress of cloning artifact version files", + "properties": { + "filesCopied": { + "description": "Number of files copied", + "format": "int64", + "type": "integer" + }, + "percentageCloned": { + "description": "Percentage of files cloned", + "format": "double", + "type": "number" + }, + "sizeCopied": { + "description": "Combined file size copied", + "format": "int64", + "type": "integer" + }, + "totalFiles": { + "description": "Total files at source", + "format": "int64", + "type": "integer" + }, + "totalSize": { + "description": "Combined file size at source", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "CloneArtifactVersionFilesRequest": { + "description": "Request to clone artifact version files", + "properties": { + "artifactType": { + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" + }, + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "targetArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "description": "Allow the cloned model version to continue to be updated with files. A follow up commit is needed to update status to 'Upload Complete'.", + "type": "boolean" + } + }, + "required": [ + "artifactType", + "sourceArtifact", + "targetArtifact" + ], + "type": "object" + }, + "CloneStatus": { + "description": "Progress of cloning artifact version files", + "properties": { + "filesCopied": { + "description": "Number of files copied", + "format": "int64", + "type": "integer" + }, + "internalCheckpointStateCleanup": { + "description": "Internal-only: When the async clone workflow is completed, this field shows if the internal checkpoint files were successfully cleaned up in the storage - CLEAN if no objects remain (cleanup succeeded or unused), NOT_EMPTY if objects remain, ERROR if verification could not be performed. Omitted when not applicable.", + "enum": [ + "CLEAN", + "NOT_EMPTY", + "ERROR" + ], + "type": "string" + }, + "percentageFilesCloned": { + "description": "Percentage of files cloned", + "format": "double", + "type": "number" + }, + "sizeCopied": { + "description": "Combined file size copied", + "format": "int64", + "type": "integer" + }, + "totalFiles": { + "description": "Total files at source", + "format": "int64", + "type": "integer" + }, + "totalSize": { + "description": "Combined file size at source", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "CloneableArtifact": { + "description": "Cloneable Artifact Parameters object", + "properties": { + "name": { + "description": "Unique name of the artifact", + "type": "string" + }, + "org": { + "description": "Name of the org that the artifact belongs to", + "type": "string" + }, + "team": { + "description": "Name of the team that the artifact belongs to", + "type": "string" + }, + "version": { + "description": "ID of the version or tag", + "type": "string" + } + }, + "required": [ + "name", + "org", + "version" + ], + "type": "object" + }, + "CloudServiceProvider": { + "description": "Cloud Service Provider object", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the Cloud Service Provider", + "type": "string" + }, + "displayName": { + "description": "Display name of the Cloud Service Provider", + "type": "string" + }, + "isDeployable": { + "description": "Determines if this Cloud Service Provider can be used to deploy artifacts", + "type": "boolean" + }, + "isEnabled": { + "description": "Determines if this Cloud Service Provider is enabled", + "type": "boolean" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the Cloud Service Provider", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "CloudServiceProviderCreateRequest": { + "description": "Request to create a new Cloud Service Provider", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "description": { + "description": "Description of the Cloud Service Provider", + "type": "string" + }, + "displayName": { + "description": "Display name of the Cloud Service Provider", + "type": "string" + }, + "isEnabled": { + "description": "Determines if this Cloud Service Provider is enabled", + "type": "boolean" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the Cloud Service Provider", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "CloudServiceProviderListResponse": { + "description": "Response to list Cloud Service Providers request", + "properties": { + "cloudServiceProviders": { + "items": { + "$ref": "#/components/schemas/CloudServiceProvider" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "CloudServiceProviderUpdateRequest": { + "description": "Request to update existing Cloud Service Provider", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "description": { + "description": "Description of the Cloud Service Provider", + "type": "string" + }, + "displayName": { + "description": "Display name of the Cloud Service Provider", + "type": "string" + }, + "isEnabled": { + "description": "Determines if this Cloud Service Provider is enabled", + "type": "boolean" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + } + }, + "type": "object" + }, + "Collection": { + "description": "Collection object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "builtBy": { + "description": "Organization that built the collection", + "type": "string" + }, + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "category": { + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ], + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the collection", + "type": "string" + }, + "displayName": { + "description": "Display name", + "type": "string" + }, + "isPublic": { + "description": "Determines if this collection is publicly accessible", + "type": "boolean" + }, + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "name": { + "description": "Unique name of the collection", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the collection belongs to", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publisher": { + "description": "Organization that published this collection", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the collection", + "type": "string" + }, + "size": { + "description": "Total count of collection items", + "format": "int64", + "type": "integer" + }, + "teamName": { + "description": "Name of the team that the collection belongs to", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "required": [ + "category" + ], + "type": "object" + }, + "CollectionCreateRequest": { + "description": "Properties for the collections to be created", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "builtBy": { + "description": "organization that built the collection", + "type": "string" + }, + "category": { + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ], + "type": "string" + }, + "description": { + "description": "Description of the collection", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Unique name of the collection", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this collection", + "maxLength": 255, + "type": "string" + }, + "publisher": { + "description": "organization that published the collection", + "maxLength": 255, + "type": "string" + }, + "shortDescription": { + "description": "Short description of the collection", + "maxLength": 255, + "type": "string" + } + }, + "required": [ + "category", + "name", + "shortDescription" + ], + "type": "object" + }, + "CollectionListResponse": { + "description": "Response to list collections request", + "properties": { + "collections": { + "items": { + "$ref": "#/components/schemas/Collection" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "CollectionOperation": { + "description": "Collection operation object", + "properties": { + "operation": { + "description": "Collection operation", + "maxLength": 255, + "type": "string" + }, + "path": { + "description": "Path to a collection item in a scoped format", + "maxLength": 255, + "pattern": "^(/(?!/)([\\w- %\\.(?!\\.)])+)+$", + "type": "string" + } + }, + "type": "object" + }, + "CollectionPatchRequest": { + "description": "Properties for the collection to patch", + "properties": { + "operations": { + "items": { + "$ref": "#/components/schemas/CollectionOperation", + "maxItems": 100 + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "CollectionPublishRequest": { + "description": "Request to publish a collection", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "canGuestPull": { + "type": "boolean" + }, + "canPublicList": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CollectionResponse": { + "description": "Response to create collection request", + "properties": { + "collection": { + "$ref": "#/components/schemas/Collection", + "description": "Collection object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "CollectionUpdateRequest": { + "description": "Properties for the collection to update", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "builtBy": { + "description": "organization that built the collection", + "type": "string" + }, + "category": { + "enum": [ + "HEALTHCARE", + "SMART_CITIES", + "RETAIL", + "MANUFACTURING", + "SUPERCOMPUTING", + "ROBOTICS", + "AUTOMOTIVE", + "TELECOMMUNICATIONS", + "FINANCE", + "OIL_AND_GAS", + "NATURAL_LANGUAGE_PROCESSING", + "AUTOMATIC_SPEECH_RECOGNITION", + "INTELLIGENT_VIDEO_ANALYTICS", + "OBJECT_DETECTION", + "IMAGE_CLASSIFICATION", + "ANNOTATION", + "IMAGE_SYNTHESIS", + "MACHINE_LEARNING", + "DEEP_LEARNING", + "INFRASTRUCTURE", + "HIGH_PERFORMANCE_COMPUTING", + "WINDOWS_RTX_ACCELERATED_MODELS", + "BEGINNER", + "ADVANCED" + ], + "type": "string" + }, + "description": { + "description": "Description of the collection", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this collection", + "maxLength": 255, + "type": "string" + }, + "publisher": { + "description": "organization that published the collection", + "maxLength": 255, + "type": "string" + }, + "shortDescription": { + "description": "Short description of the collection", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ConfiguredLicenseTerm": { + "description": "License information for the artifact", + "properties": { + "artifactType": { + "description": "Artifact type", + "example": "model", + "maxLength": 15, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "generatedHtml": { + "description": "Generated html", + "example": "

GOVERNING HOSTING TERMS: ...

", + "maxLength": 9999, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "tags": { + "items": { + "$ref": "#/components/schemas/LicenseTag" + }, + "type": "array" + } + }, + "type": "object" + }, + "ConfiguredLicenseTerms": { + "description": "License information for the artifact", + "properties": { + "download": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "description": "License information for the artifact" + }, + "hosting": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "description": "License information for the artifact" + } + }, + "type": "object" + }, + "CountableResource": { + "description": "Countable Resource object", + "properties": { + "defaultValue": { + "description": "Deprecated: Default value. Please use actual CloudServiceProvider values instead", + "format": "int64", + "type": "integer" + }, + "maxValue": { + "description": "Maximum value", + "format": "int64", + "type": "integer" + }, + "minValue": { + "description": "Minimum value", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "CustomMetric": { + "description": "Custom metrics", + "properties": { + "key": { + "maxLength": 255, + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "CustomMetricGroup": { + "description": "Defines the group of custom metrics.", + "properties": { + "attributes": { + "items": { + "$ref": "#/components/schemas/CustomMetric" + }, + "type": "array" + }, + "name": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "Dataset": { + "properties": { + "license": { + "description": "License of the dataset", + "maxLength": 255, + "type": "string" + }, + "link": { + "description": "Link to the dataset", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Name of the dataset", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "DeploymentArtifactParameters": { + "description": "Deployment Artifact Parameters object", + "properties": { + "artifactType": { + "description": "Artifact type", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "type": "string" + }, + "displayName": { + "description": "Display name of the artifact", + "type": "string" + }, + "filePath": { + "description": "Path to a file in an artifact version", + "type": "string" + }, + "name": { + "description": "Unique name of the artifact", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the artifact belongs to", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the artifact belongs to", + "type": "string" + }, + "versionId": { + "description": "ID of the version or tag", + "type": "string" + } + }, + "required": [ + "name", + "orgName" + ], + "type": "object" + }, + "DeploymentCpuParameters": { + "description": "Deployment CPU Parameters object", + "properties": { + "count": { + "description": "Total count of CPUs", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentCpuParametersMeta": { + "description": "Cloud Service Provider Deployment CPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "count" + ], + "type": "object" + }, + "DeploymentGpuParameters": { + "description": "Deployment GPU Parameters object", + "properties": { + "count": { + "description": "Total count of GPUs", + "format": "int64", + "type": "integer" + }, + "type": { + "description": "GPU Type", + "type": "string" + } + }, + "type": "object" + }, + "DeploymentGpuParametersMeta": { + "description": "Cloud Service Provider Deployment GPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + }, + "type": { + "$ref": "#/components/schemas/EnumerableResource", + "description": "Enumerable Resource object" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "DeploymentMemoryParameters": { + "description": "Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "description": "Capacity in GB", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentMemoryParametersMeta": { + "description": "Cloud Service Provider Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "capacityInGB" + ], + "type": "object" + }, + "DeploymentParameters": { + "description": "Deployment Artifact Parameters object", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersCreateRequest": { + "description": "Request to create a new deployment parameters", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersListResponse": { + "description": "Response to list deployment parameters request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "deploymentParameters": { + "items": { + "$ref": "#/components/schemas/DeploymentParameters" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "DeploymentParametersMeta": { + "description": "Cloud Service Provider Deployment Parameters object", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersMetaCreateRequest": { + "description": "Properties for the cloud service provider deployment parameters meta to create", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + }, + "required": [ + "gpu", + "storage" + ], + "type": "object" + }, + "DeploymentParametersMetaUpdateRequest": { + "description": "Properties for the cloud service provider deployment parameters meta to create", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "description": "Cloud Service Provider Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "description": "Cloud Service Provider Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "description": "Cloud Service Provider Deployment Memory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "description": "Cloud Service Provider Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentParametersUpdateRequest": { + "description": "Request to update existing deployment parameters", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentStorageParameters": { + "description": "Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "description": "Capacity in GB", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentStorageParametersMeta": { + "description": "Cloud Service Provider Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "description": "Countable Resource object" + } + }, + "required": [ + "capacityInGB" + ], + "type": "object" + }, + "DeploymentUrlCreateRequest": { + "description": "Request to create a new deployment url", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "description": "Deployment Storage Parameters object" + } + }, + "type": "object" + }, + "DeploymentUrlResponse": { + "description": "Response to create a new deployment url", + "properties": { + "csp": { + "description": "Cloud Service Provider name", + "type": "string" + }, + "deploymentParameters": { + "$ref": "#/components/schemas/DeploymentParameters", + "description": "Deployment Artifact Parameters object" + }, + "deploymentUrl": { + "description": "Deployment URL", + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "EncryptionKey": { + "description": "Customer Managed Key shard configuration for the model", + "properties": { + "description": { + "description": "Description for a new customer key shard", + "type": "string" + }, + "encryptionKeyId": { + "description": "ID of the existing customer key shard to use", + "type": "string" + }, + "useExistingKey": { + "description": "Whether to use an existing customer key shard or should a new one be created", + "type": "boolean" + } + }, + "required": [ + "useExistingKey" + ], + "type": "object" + }, + "EnumerableResource": { + "description": "Enumerable Resource object", + "properties": { + "defaultItemName": { + "description": "Deprecated: Default item name. Please use actual CloudServiceProvider values instead", + "type": "string" + }, + "items": { + "items": { + "$ref": "#/components/schemas/EnumerableResourceItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "EnumerableResourceItem": { + "description": "Enumerable Resource Item object", + "properties": { + "displayName": { + "description": "Display name", + "type": "string" + }, + "logo": { + "description": "Logo URL", + "type": "string" + }, + "name": { + "description": "Name", + "type": "string" + } + }, + "type": "object" + }, + "File": { + "description": "File object", + "properties": { + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the file", + "type": "string" + }, + "path": { + "description": "Relative file path from the root of the object", + "maxLength": 1023, + "minLength": 1, + "type": "string" + }, + "sizeInBytes": { + "description": "Size of the file in bytes", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "type": "object" + }, + "GpuByPciCreateRequest": { + "description": "GPU by PCI properties", + "properties": { + "cudaMajorVersion": { + "description": "CUDA major version", + "type": "string" + }, + "cudaMinorVersion": { + "description": "CUDA minor version", + "type": "string" + }, + "displayName": { + "description": "Display name for the GPU", + "type": "string" + }, + "formFactor": { + "description": "GPU form factor", + "type": "string" + }, + "gpuCounts": { + "items": { + "format": "int32", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "type": "array", + "uniqueItems": true + }, + "labelName": { + "description": "Label name for the GPU", + "type": "string" + }, + "memorySizeGb": { + "description": "Memory size in GB (smallint range)", + "format": "int32", + "maximum": 32767, + "minimum": 0, + "type": "integer" + }, + "pciDeviceId": { + "description": "PCI Device ID", + "type": "string" + }, + "pciSubsystemDeviceId": { + "description": "PCI Subsystem Device ID", + "type": "string" + }, + "pciVendorId": { + "description": "PCI Vendor ID", + "type": "string" + } + }, + "required": [ + "displayName", + "pciDeviceId" + ], + "type": "object" + }, + "GpuByPciResponse": { + "description": "Response for GPU by PCI ID lookup", + "properties": { + "createdAt": { + "description": "Creation timestamp", + "format": "date-time", + "type": "string" + }, + "cudaMajorVersion": { + "description": "CUDA major version", + "type": "string" + }, + "cudaMinorVersion": { + "description": "CUDA minor version", + "type": "string" + }, + "displayName": { + "description": "Display name for the GPU", + "type": "string" + }, + "formFactor": { + "description": "GPU form factor", + "type": "string" + }, + "gpuCounts": { + "items": { + "format": "int32", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "type": "array", + "uniqueItems": true + }, + "labelName": { + "description": "Label name for the GPU", + "type": "string" + }, + "memorySizeGb": { + "description": "Memory size in GB (smallint range)", + "format": "int32", + "maximum": 32767, + "minimum": 0, + "type": "integer" + }, + "pciDeviceId": { + "description": "PCI Device ID", + "type": "string" + }, + "pciSubsystemDeviceId": { + "description": "PCI Subsystem Device ID", + "type": "string" + }, + "pciVendorId": { + "description": "PCI Vendor ID", + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "updatedAt": { + "description": "Last update timestamp", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "displayName", + "pciDeviceId" + ], + "type": "object" + }, + "GpuByPciUpdateRequest": { + "description": "GPU by PCI update properties", + "properties": { + "cudaMajorVersion": { + "description": "CUDA major version", + "type": "string" + }, + "cudaMinorVersion": { + "description": "CUDA minor version", + "type": "string" + }, + "displayName": { + "description": "Display name for the GPU", + "type": "string" + }, + "formFactor": { + "description": "GPU form factor", + "type": "string" + }, + "gpuCounts": { + "items": { + "format": "int32", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "type": "array", + "uniqueItems": true + }, + "labelName": { + "description": "Label name for the GPU", + "type": "string" + }, + "memorySizeGb": { + "description": "Memory size in GB (smallint range)", + "format": "int32", + "maximum": 32767, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "Health": { + "description": "object that describes health of the service", + "properties": { + "healthCode": { + "description": "Enum that describes health of the service", + "enum": [ + "UNKNOWN", + "OK", + "UNDER_MAINTENANCE", + "WARNING", + "FAILED" + ], + "type": "string" + }, + "healthCodeDescription": { + "description": "Human readable description", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "metaData": { + "items": { + "$ref": "#/components/schemas/MetaData" + }, + "type": "array" + } + }, + "type": "object" + }, + "HealthComponent": { + "properties": { + "description": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "HealthResponse": { + "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method", + "properties": { + "health": { + "$ref": "#/components/schemas/Health", + "description": "object that describes health of the service" + } + }, + "type": "object" + }, + "KeyArtifactListResponse": { + "description": "Response containing a list of artifacts associated with a key", + "properties": { + "artifacts": { + "items": { + "$ref": "#/components/schemas/ArtifactItem" + }, + "type": "array" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "KeyItem": { + "description": "Key item with ID and create timestamp string", + "properties": { + "created": { + "description": "The creation timestamp of the key item in ISO-8601 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ.", + "example": "2025-04-19T22:30:00.123Z", + "format": "regex", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the encryption key", + "maxLength": 255, + "type": "string" + }, + "encryptionKeyId": { + "description": "The encryption key identifier in UUID format.", + "example": "196afcf4-d6c8-4116-aa25-34a718a14f43", + "format": "regex", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + } + }, + "required": [ + "created", + "encryptionKeyId" + ], + "type": "object" + }, + "KeyListResponse": { + "description": "Response to list keys request", + "properties": { + "encryptionKeys": { + "items": { + "$ref": "#/components/schemas/KeyItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "LicenseMetadata": { + "description": "License information for the artifact", + "properties": { + "configuredLicenseTerms": { + "$ref": "#/components/schemas/ConfiguredLicenseTerms", + "description": "License information for the artifact" + }, + "governingTerms": { + "description": "Comprehensive terms and links related to the license", + "example": "

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

", + "maxLength": 1000, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "licenseId": { + "description": "License ID", + "example": "NVIDIA proprietary", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "licenseVersion": { + "description": "License version ID", + "example": "v1.0", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "needsAcceptance": { + "description": "Indicator if user needs to accept this license", + "type": "boolean" + } + }, + "type": "object" + }, + "LicenseTag": { + "description": "License tag information for individual term", + "properties": { + "category": { + "description": "Category of the tag", + "example": "terms", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "key": { + "description": "Key identifier for the tag", + "example": "nv-open-model", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "label": { + "description": "License Label", + "example": "NVIDIA Open Model Agreement", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "tag": { + "description": "License tag name", + "example": "Model Agreement", + "maxLength": 100, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "url": { + "description": "Link to the hosted license", + "example": "https://www.nvidia.com/.../nvidia-open-model-agreement/", + "maxLength": 1000, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "MalwareScanNotification": { + "properties": { + "contact": { + "type": "string" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "nspect_id": { + "type": "string" + }, + "tenant": { + "type": "string" + }, + "uuid": { + "type": "string" + } + }, + "type": "object" + }, + "MetaData": { + "properties": { + "key": { + "maxLength": 255, + "type": "string" + }, + "value": { + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "Model": { + "description": "Model object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "application": { + "description": "Application of the model", + "type": "string" + }, + "bias": { + "description": "Text describing bias in the model", + "type": "string" + }, + "builtBy": { + "description": "organization that built the repository", + "type": "string" + }, + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the model", + "type": "string" + }, + "displayName": { + "description": "Display name", + "type": "string" + }, + "encryptionKeyId": { + "description": "ID of the customer managed encryption key associated with this artifact", + "type": "string" + }, + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" + }, + "framework": { + "description": "Framework used to train this model", + "type": "string" + }, + "hasPlayground": { + "description": "indicate if the Model has AI Playground configured", + "type": "boolean" + }, + "hasSignedVersion": { + "description": "Indicates if the model has any signed versions", + "type": "boolean" + }, + "isFavourite": { + "description": "Flag indicating if model is user's favorite", + "type": "boolean" + }, + "isPlaygroundEnabled": { + "description": "indicate if AI Playground is enabled in the catalog", + "type": "boolean" + }, + "isPublic": { + "description": "Determines if model is publicly accessible", + "type": "boolean" + }, + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "latestVersionGpuModel": { + "description": "GPU model and memory used for the latest version", + "type": "string" + }, + "latestVersionId": { + "description": "Deprecated: Please use latestVersionIdStr instead. ID of the latest version", + "format": "int64", + "type": "integer" + }, + "latestVersionIdStr": { + "description": "ID of the latest version", + "type": "string" + }, + "latestVersionSizeInBytes": { + "description": "Size of the latest version in bytes", + "format": "int64", + "type": "integer" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "modelFormat": { + "description": "Format of the model", + "type": "string" + }, + "name": { + "description": "Unique name of the model", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the model belongs to", + "type": "string" + }, + "ownerName": { + "description": "Name of model's owner", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "precision": { + "description": "Precision this model was trained with", + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the repository", + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the model", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the model belongs to", + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "versions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ModelCreateRequest": { + "description": "Properties for the models to be created", + "properties": { + "application": { + "description": "Application of the model", + "maxLength": 255, + "type": "string" + }, + "bias": { + "description": "Text describing bias in the model", + "type": "string" + }, + "builtBy": { + "description": "organization that built the repository", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the model", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "encryptionKey": { + "$ref": "#/components/schemas/EncryptionKey", + "description": "Customer Managed Key shard configuration for the model" + }, + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" + }, + "framework": { + "description": "Framework used to train this model", + "maxLength": 255, + "type": "string" + }, + "hasPlayground": { + "description": "indicate if the Model has AI Playground configured", + "type": "boolean" + }, + "isPlaygroundEnabled": { + "description": "indicate if AI Playground is enabled in the catalog", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Unique name of the model", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this model", + "maxLength": 255, + "type": "string" + }, + "precision": { + "description": "Precision this model was trained with", + "maxLength": 255, + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the repository", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the model", + "maxLength": 255, + "type": "string" + } + }, + "required": [ + "framework", + "name", + "precision" + ], + "type": "object" + }, + "ModelFile": { + "description": "Model file object", + "properties": { + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the file", + "type": "string" + }, + "path": { + "description": "Relative file path from the root of the model", + "maxLength": 1023, + "minLength": 1, + "type": "string" + }, + "sha256_base64": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" + }, + "sizeInBytes": { + "description": "Size of the file in bytes", + "format": "int64", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "ModelListResponse": { + "description": "Response to list models request", + "properties": { + "models": { + "items": { + "$ref": "#/components/schemas/Model" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelResponse": { + "description": "Response to create model request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelSimplified": { + "description": "Model object", + "properties": { + "name": { + "description": "Unique name of the model", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the model belongs to", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the model belongs to", + "type": "string" + } + }, + "required": [ + "name", + "orgName" + ], + "type": "object" + }, + "ModelUpdateRequest": { + "description": "Properties for the model to update", + "properties": { + "application": { + "description": "Application of the model", + "maxLength": 255, + "type": "string" + }, + "bias": { + "description": "Text describing bias in the model", + "type": "string" + }, + "builtBy": { + "description": "organization that built the repository", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the model", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "explainability": { + "description": "Text describing explainability for this model", + "type": "string" + }, + "framework": { + "description": "Framework used to train this model", + "maxLength": 255, + "type": "string" + }, + "hasPlayground": { + "description": "indicate if the Model has AI Playground configured", + "type": "boolean" + }, + "isPlaygroundEnabled": { + "description": "indicate if AI Playground is enabled in the catalog", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model", + "maxLength": 255, + "type": "string" + }, + "ownerName": { + "description": "Name of the user who owns this model", + "maxLength": 255, + "type": "string" + }, + "precision": { + "description": "Precision this model was trained with", + "maxLength": 255, + "type": "string" + }, + "privacy": { + "description": "Text describing the privacy for this model", + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the repository", + "maxLength": 255, + "type": "string" + }, + "safetyAndSecurity": { + "description": "Text for describing the safety and security in the model", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the model", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ModelVersion": { + "description": "Model version object", + "properties": { + "accuracyReached": { + "description": "Accuracy this model reached", + "format": "float", + "type": "number" + }, + "batchSize": { + "description": "Batch size this model was trained with", + "format": "int64", + "type": "integer" + }, + "createdByUser": { + "description": "Id of the user who created this model", + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the model version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "type": "string" + }, + "id": { + "description": "Deprecated: Please use versionId instead. Unique ID of the version", + "format": "int64", + "type": "integer" + }, + "isSigned": { + "description": "Indicates if the version is signed", + "type": "boolean" + }, + "malwareScanDate": { + "description": "Scan date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "malwareScanStatus": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + }, + "memoryFootprint": { + "description": "Model size/memory footprint for inference", + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this model trained", + "format": "int64", + "type": "integer" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "type": "string" + }, + "policy": { + "items": { + "type": "string" + }, + "type": "array" + }, + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + }, + "storageVersion": { + "description": "The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files.", + "type": "string" + }, + "totalFileCount": { + "description": "Total file count", + "format": "int64", + "type": "integer" + }, + "totalSizeInBytes": { + "description": "Total size of the model in bytes", + "format": "int64", + "type": "integer" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "ModelVersionCreateRequest": { + "description": "Properties for the model version to be created", + "properties": { + "accuracyReached": { + "description": "Accuracy this model reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this model was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the model version", + "maxLength": 255, + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "id": { + "description": "Deprecated: Please use version instead. Unique ID of the version", + "format": "int64", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "memoryFootprint": { + "description": "Model size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this model trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "maxLength": 255, + "type": "string" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "pattern": "[^/]+", + "type": "string" + } + }, + "type": "object" + }, + "ModelVersionFileListResponse": { + "description": "Response to list files for model version request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "modelFiles": { + "items": { + "$ref": "#/components/schemas/ModelFile" + }, + "type": "array" + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "description": "Model version object" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelVersionListResponse": { + "description": "Response to list model versions request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "modelVersions": { + "items": { + "$ref": "#/components/schemas/ModelVersion" + }, + "type": "array" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelVersionResponse": { + "description": "Response to create a model version request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "description": "Model object" + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "description": "Model version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "ModelVersionUpdateRequest": { + "description": "Version properties to update", + "properties": { + "accuracyReached": { + "description": "Accuracy this model reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this model was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the model version", + "maxLength": 255, + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "memoryFootprint": { + "description": "Model size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this model trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "description": "NVCF deployment specification" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "ownerName": { + "description": "Name of the user who owns this version", + "maxLength": 255, + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + } + }, + "type": "object" + }, + "MultipartUploadAbortRequest": { + "description": "Request body for aborting a multipart upload for artifacts", + "properties": { + "artifactType": { + "description": "Type of artifact", + "type": "string" + }, + "filePath": { + "description": "The file path for the artifact upload", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" + }, + "uploadID": { + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema", + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "uploadID", + "version" + ], + "type": "object" + }, + "MultipartUploadCompleteRequest": { + "description": "Request body for completing a multipart upload for artifacts", + "properties": { + "artifactType": { + "description": "Type of artifact", + "type": "string" + }, + "filePath": { + "description": "The file path for the artifact upload", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" + }, + "sha256": { + "description": "Base64 encoded sha256 hash of the entire file", + "type": "string" + }, + "uploadID": { + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema", + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "sha256", + "uploadID", + "version" + ], + "type": "object" + }, + "MultipartUploadCreateRequest": { + "description": "Request body for creating a multipart upload for artifacts", + "properties": { + "artifactType": { + "description": "Type of artifact", + "type": "string" + }, + "customPartSize": { + "description": "Custom chunk size of the file to be uploaded, in bytes. should be >= 5MB and <= 500MB. default is 500 in MB.", + "format": "int64", + "type": "integer" + }, + "filePath": { + "description": "The file path for the artifact upload", + "type": "string" + }, + "name": { + "description": "Name of the artifact", + "type": "string" + }, + "partNumberList": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "sha256": { + "description": "Base64 encoded sha256 hash of the artifact file to be uploaded", + "type": "string" + }, + "size": { + "description": "total size of the artifact, in bytes", + "format": "int64", + "type": "integer" + }, + "uploadID": { + "description": "Upload id of an already initiated Multipart upload", + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "artifactType", + "filePath", + "name", + "size", + "version" + ], + "type": "object" + }, + "MultipartUploadCreateResponse": { + "description": "Response body for creating a multipart upload for artifacts", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "partSize": { + "description": "The size of each part upload in bytes", + "format": "int64", + "type": "integer" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "uploadID": { + "description": "The unique ID assigned for this multipart upload to associate all upload parts. This is the basic base64 encoded data of the MultipartUploadIDSchema", + "type": "string" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "partSize", + "uploadID" + ], + "type": "object" + }, + "NimManifestMetadataRequest": { + "description": "NIM profile metadata", + "properties": { + "profiles": { + "items": { + "$ref": "#/components/schemas/NimProfile" + }, + "type": "array" + } + }, + "type": "object" + }, + "NimManifestMetadataResponse": { + "properties": { + "profiles": { + "items": { + "$ref": "#/components/schemas/NimProfile" + }, + "type": "array" + } + }, + "type": "object" + }, + "NimProfile": { + "properties": { + "buildable_profile": { + "type": "boolean" + }, + "checksum": { + "type": "string" + }, + "feat_lora": { + "type": "boolean" + }, + "form_factor": { + "type": "string" + }, + "gpu": { + "type": "string" + }, + "gpu_device": { + "type": "string" + }, + "inference_backend": { + "type": "string" + }, + "latency": { + "additionalProperties": {}, + "type": "object" + }, + "min_vram_per_device_gb": { + "format": "double", + "type": "number" + }, + "pipeline_parallel_size": { + "format": "int32", + "type": "integer" + }, + "precision": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "tensor_parallel_size": { + "format": "int32", + "type": "integer" + }, + "workspace_hash": { + "type": "string" + } + }, + "type": "object" + }, + "NotifyMalwareScanResultResponse": { + "description": "Notify malware scan result response", + "properties": { + "status": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + } + }, + "type": "object" + }, + "NvcfContainerConfiguration": { + "description": "NVCF container configuration parameters", + "properties": { + "apiBodyFormat": { + "description": "API body format", + "type": "string" + }, + "containerArgs": { + "description": "Container arguments", + "type": "string" + }, + "containerEnvironment": { + "items": { + "$ref": "#/components/schemas/MetaData" + }, + "type": "array" + }, + "containerImage": { + "description": "Container Image", + "type": "string" + }, + "healthUri": { + "description": "Health URI", + "type": "string" + }, + "inferencePort": { + "description": "Inference port", + "type": "string" + }, + "inferenceUrl": { + "description": "Inference url", + "type": "string" + }, + "models": { + "items": { + "$ref": "#/components/schemas/NvcfContainerModel" + }, + "type": "array" + } + }, + "type": "object" + }, + "NvcfContainerModel": { + "description": "Models version object metadata", + "properties": { + "name": { + "description": "Model name", + "type": "string" + }, + "uri": { + "description": "Model URI", + "type": "string" + }, + "version": { + "description": "Model version", + "type": "string" + } + }, + "type": "object" + }, + "NvcfDeploymentSpecification": { + "description": "NVCF deployment specification", + "properties": { + "gpuCount": { + "description": "GPU count", + "format": "int32", + "type": "integer" + }, + "gpuType": { + "description": "GPU type", + "type": "string" + }, + "instanceType": { + "description": "Instance type", + "type": "string" + }, + "maxConcurrency": { + "description": "Maximum concurrency", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "PaginationInfo": { + "description": "Pagination Information", + "properties": { + "index": { + "description": "Page index of results", + "format": "int32", + "type": "integer" + }, + "nextPage": { + "description": "Serialized pointer to the next results page. Should be used for fetching next page. Can be empty", + "type": "string" + }, + "size": { + "description": "Number of results in page", + "format": "int32", + "type": "integer" + }, + "totalPages": { + "description": "Total number of pages available", + "format": "int64", + "type": "integer" + }, + "totalResults": { + "description": "Total number of results available", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "Recipe": { + "description": "Recipe object", + "properties": { + "accessType": { + "enum": [ + "LISTED", + "EXCLUSIVE", + "NOT_LISTED" + ], + "type": "string" + }, + "advanced": { + "description": "Text for describing advanced information", + "type": "string" + }, + "application": { + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ], + "type": "string" + }, + "builtBy": { + "description": "Organization that built the recipe", + "type": "string" + }, + "canGuestDownload": { + "description": "Indicates if a guest user can download", + "type": "boolean" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the recipe", + "type": "string" + }, + "displayName": { + "description": "Display name", + "type": "string" + }, + "hasSignedVersion": { + "description": "Indicates if the recipe has any signed versions", + "type": "boolean" + }, + "isFavourite": { + "description": "Flag indicating if recipe is user's favorite", + "type": "boolean" + }, + "isPublic": { + "description": "Determines if this recipe is publicly accessible", + "type": "boolean" + }, + "isReadOnly": { + "description": "indicate if current user has read only permissions (deprecated)", + "type": "boolean" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "latestVersionId": { + "description": "Deprecated: Please use latestVersionIdStr instead. ID of the latest version", + "format": "int64", + "type": "integer" + }, + "latestVersionIdStr": { + "description": "ID of the latest version", + "type": "string" + }, + "latestVersionSizeInBytes": { + "description": "Size of the latest version in bytes", + "format": "int64", + "type": "integer" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "type": "string" + }, + "modelFormat": { + "description": "Format of the model this recipe produces", + "type": "string" + }, + "name": { + "description": "Unique name of the recipe", + "type": "string" + }, + "orgName": { + "description": "Name of the org that the recipe belongs to", + "type": "string" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "policyLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "precision": { + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ], + "type": "string" + }, + "productNames": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "Organization that published this recipe", + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "relatedModels": { + "items": { + "$ref": "#/components/schemas/Model" + }, + "type": "array" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the recipe", + "type": "string" + }, + "teamName": { + "description": "Name of the team that the recipe belongs to", + "type": "string" + }, + "trainingFramework": { + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ], + "type": "string" + }, + "updatedDate": { + "description": "Updated date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + } + }, + "type": "object" + }, + "RecipeCreateRequest": { + "description": "Properties for the recipe to create", + "properties": { + "advanced": { + "description": "Text for describing advanced information", + "type": "string" + }, + "application": { + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ], + "type": "string" + }, + "builtBy": { + "description": "organization that built the recipe", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the recipe", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model this recipe produces", + "maxLength": 255, + "type": "string" + }, + "name": { + "description": "Unique name of the recipe", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z][a-z\\d._-]*$", + "type": "string" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "precision": { + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ], + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the recipe", + "maxLength": 255, + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the recipe", + "maxLength": 255, + "type": "string" + }, + "trainingFramework": { + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ], + "type": "string" + } + }, + "required": [ + "application", + "modelFormat", + "name", + "precision", + "publicDatasetUsed", + "shortDescription", + "trainingFramework" + ], + "type": "object" + }, + "RecipeFile": { + "description": "Recipe file object", + "properties": { + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "description": { + "description": "Description of the file", + "type": "string" + }, + "path": { + "description": "Relative file path from the root of the recipe", + "maxLength": 1023, + "minLength": 1, + "type": "string" + }, + "sha256_base64": { + "description": "Base64 encoded sha256 hash of the artifact file", + "type": "string" + }, + "sizeInBytes": { + "description": "Size of the file in bytes", + "format": "int64", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RecipeListResponse": { + "description": "Response to list recipes request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "recipes": { + "items": { + "$ref": "#/components/schemas/Recipe" + }, + "type": "array" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeResponse": { + "description": "Response to recipe request", + "properties": { + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeUpdateRequest": { + "description": "Properties for the recipe to update", + "properties": { + "advanced": { + "description": "Text for describing advanced information", + "type": "string" + }, + "application": { + "enum": [ + "CLASSIFICATION", + "OBJECT_DETECTION", + "SEGMENTATION", + "TRANSLATION", + "TEXT_TO_SPEECH", + "RECOMMENDER", + "SENTIMENT", + "NLP", + "KUBEFLOW_PIPELINE", + "OTHER", + "SPEAKER_VERIFICATION", + "PUNCTUATION_AND_CAPITALIZATION", + "DIALOG_STATE_TRACKING", + "SPEAKER_DIARIZATION", + "SPEAKER_RECOGNITION", + "SPEECH_SYNTHESIS", + "VOICE_ACTIVITY_DETECTION", + "SPEECH_RECOGNITION", + "LANGUAGE_MODELING", + "NAMED_ENTITY_RECOGNITION", + "TEXT_CLASSIFICATION", + "TEXT_PROCESSING", + "QUESTION_ANSWERING", + "CONTENT_GENERATION" + ], + "type": "string" + }, + "builtBy": { + "description": "organization that built the recipe", + "maxLength": 255, + "type": "string" + }, + "description": { + "description": "Description of the recipe", + "type": "string" + }, + "displayName": { + "description": "Display name", + "maxLength": 64, + "minLength": 2, + "type": "string" + }, + "labels": { + "items": { + "pattern": "^[a-zA-Z]+[a-zA-Z0-9-.+_\\s]+", + "type": "string" + }, + "type": "array" + }, + "labelsV2": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseTerms": { + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "type": "array" + }, + "logo": { + "description": "URL for the logo image", + "maxLength": 255, + "type": "string" + }, + "modelFormat": { + "description": "Format of the model this recipe produces", + "maxLength": 255, + "type": "string" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "precision": { + "enum": [ + "FP16", + "FP32", + "INT8", + "FPBOTH", + "OTHER", + "ALL" + ], + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "description": "organization that published the recipe", + "maxLength": 255, + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "relatedModels": { + "items": { + "$ref": "#/components/schemas/ModelSimplified" + }, + "type": "array" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "shortDescription": { + "description": "Short description of the recipe", + "maxLength": 255, + "type": "string" + }, + "trainingFramework": { + "enum": [ + "TensorFlow", + "Caffe2", + "CNTK", + "Torch", + "PyTorch", + "MXNet", + "Keras", + "Other", + "TransferLearningToolkit", + "TensorFlow2" + ], + "type": "string" + } + }, + "type": "object" + }, + "RecipeVersion": { + "description": "Recipe version object", + "properties": { + "accuracyReached": { + "description": "Accuracy this recipe reached", + "format": "float", + "type": "number" + }, + "batchSize": { + "description": "Batch size this recipe was trained with", + "format": "int64", + "type": "integer" + }, + "createdByUser": { + "description": "Id of the user who created this recipe", + "type": "string" + }, + "createdDate": { + "description": "Creation date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the recipe version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "type": "string" + }, + "id": { + "description": "Deprecated: Please use versionId instead. Unique ID of the version", + "format": "int64", + "type": "integer" + }, + "isSigned": { + "description": "Indicates if the version is signed", + "type": "boolean" + }, + "malwareScanDate": { + "description": "Scan date in ISO-8601 format", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+Z", + "type": "string" + }, + "malwareScanStatus": { + "description": "Malware scan status", + "enum": [ + "NOT_SCANNED", + "IN_PROGRESS", + "CLEAN", + "SUSPICIOUS", + "FAILED", + "MALICIOUS" + ], + "type": "string" + }, + "memoryFootprint": { + "description": "recipe size/memory footprint for inference", + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this recipe trained", + "format": "int64", + "type": "integer" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "policy": { + "items": { + "type": "string" + }, + "type": "array" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "releaseNotes": { + "description": "Text describing this release", + "type": "string" + }, + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + }, + "storageVersion": { + "description": "The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files.", + "type": "string" + }, + "totalFileCount": { + "description": "Total file count", + "format": "int64", + "type": "integer" + }, + "totalSizeInBytes": { + "description": "Total size of the recipe in bytes", + "format": "int64", + "type": "integer" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "type": "string" + } + }, + "type": "object" + }, + "RecipeVersionCreateRequest": { + "description": "Properties for the recipe version to be created", + "properties": { + "accuracyReached": { + "description": "Accuracy this recipe reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this recipe was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the recipe version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "id": { + "description": "Deprecated: Please use version instead. Unique ID of the version", + "format": "int64", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "memoryFootprint": { + "description": "Recipe size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this recipe trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "releaseNotes": { + "description": "Text describing this release", + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "versionId": { + "description": "Unique version id. Please use this instead of 'id'", + "maxLength": 255, + "pattern": "[^/]+", + "type": "string" + } + }, + "type": "object" + }, + "RecipeVersionFileListResponse": { + "description": "Response to list files for recipe version request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "recipeFiles": { + "items": { + "$ref": "#/components/schemas/RecipeFile" + }, + "type": "array" + }, + "recipeVersion": { + "$ref": "#/components/schemas/RecipeVersion", + "description": "Recipe version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeVersionListResponse": { + "description": "Response to list recipe versions request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "description": "Pagination Information" + }, + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "recipeVersions": { + "items": { + "$ref": "#/components/schemas/RecipeVersion" + }, + "type": "array" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeVersionResponse": { + "description": "Response to recipe version request", + "properties": { + "recipe": { + "$ref": "#/components/schemas/Recipe", + "description": "Recipe object" + }, + "recipeVersion": { + "$ref": "#/components/schemas/RecipeVersion", + "description": "Recipe version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "RecipeVersionUpdateRequest": { + "description": "Version properties to update", + "properties": { + "accuracyReached": { + "description": "Accuracy this recipe reached", + "format": "float", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "batchSize": { + "description": "Batch size this recipe was trained with", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "customMetrics": { + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "type": "array" + }, + "description": { + "description": "Description of the recipe version", + "type": "string" + }, + "gpuModel": { + "description": "GPU model and memory", + "maxLength": 255, + "type": "string" + }, + "memoryFootprint": { + "description": "Recipe size/memory footprint for inference", + "maxLength": 255, + "type": "string" + }, + "numberOfEpochs": { + "description": "Number of epochs this recipe trained", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "otherContents": { + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "type": "array" + }, + "performance": { + "description": "Text describing performance of the recipe results", + "type": "string" + }, + "quickStartGuide": { + "description": "Text with a guide to getting started", + "type": "string" + }, + "releaseNotes": { + "description": "Text describing this release", + "type": "string" + }, + "setup": { + "description": "Text describing recipe setup", + "type": "string" + }, + "status": { + "description": "Version status", + "enum": [ + "UPLOAD_PENDING", + "UPLOAD_COMPLETE" + ], + "type": "string" + } + }, + "type": "object" + }, + "RequestStatus": { + "description": "Request status information", + "properties": { + "requestId": { + "description": "Request ID", + "type": "string" + }, + "serverId": { + "description": "Server ID", + "type": "string" + }, + "statusCode": { + "description": "Describes response status reported by the server.", + "enum": [ + "UNKNOWN", + "SUCCESS", + "UNAUTHORIZED", + "PAYMENT_REQUIRED", + "FORBIDDEN", + "TIMEOUT", + "EXISTS", + "NOT_FOUND", + "INTERNAL_ERROR", + "INVALID_REQUEST", + "INVALID_REQUEST_VERSION", + "INVALID_REQUEST_DATA", + "METHOD_NOT_ALLOWED", + "CONFLICT", + "UNPROCESSABLE_ENTITY", + "TOO_MANY_REQUESTS", + "INSUFFICIENT_STORAGE", + "SERVICE_UNAVAILABLE" + ], + "type": "string" + }, + "statusDescription": { + "description": "Status description", + "type": "string" + } + }, + "type": "object" + }, + "Response": { + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + } + }, + "type": "object" + }, + "UpdateArtifactVersionConfigs": { + "description": "Request to publish an artifact", + "properties": { + "policy": { + "items": { + "enum": [ + "GOV_READY", + "FedRAMP" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "UpdateReleaseTypeRequest": { + "description": "Request to update release type of an artifact version", + "properties": { + "releaseType": { + "description": "Release type enum for the artifact version in the product lifecycle.", + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "type": "string" + }, + "version": { + "description": "Artifact version", + "type": "string" + } + }, + "required": [ + "version" + ], + "type": "object" + }, + "WorkflowStatusResponse": { + "description": "Response containing workflow status information", + "properties": { + "cloneStatus": { + "$ref": "#/components/schemas/CloneStatus", + "description": "Progress of cloning artifact version files" + }, + "duration": { + "description": "Wall-clock execution duration as an ISO-8601 duration (e.g. PT1H30M5S, PT0.001S); Omitted while IN_PROGRESS.", + "type": "string" + }, + "endTime": { + "description": "UTC instant when the workflow reached a closed state; omitted while IN_PROGRESS.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "Human-readable message about the workflow status", + "maxLength": 255, + "type": "string" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "startTime": { + "description": "UTC instant when the workflow execution started.", + "format": "date-time", + "type": "string" + }, + "status": { + "description": "Current status of the workflow", + "enum": [ + "IN_PROGRESS", + "COMPLETED", + "FAILED", + "CANCELED", + "TERMINATED", + "CONTINUED_AS_NEW", + "TIMED_OUT", + "UNKNOWN" + ], + "type": "string" + }, + "workflowType": { + "description": "Workflow type.", + "enum": [ + "CLONE", + "CUSTOMER_MANAGED_KEY" + ], + "type": "string" + } + }, + "required": [ + "message", + "requestStatus", + "status" + ], + "type": "object" + }, + "WorkflowStatusUrlResponse": { + "description": "Response containing workflow status URL and ID", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "description": "Request status information" + }, + "statusUrl": { + "description": "URL to check the workflow status", + "type": "string" + }, + "workflowId": { + "description": "ID of the workflow", + "type": "string" + } + }, + "type": "object" + } + }, + "securitySchemes": { + "authn": { + "flows": { + "clientCredentials": { + "scopes": {}, + "tokenUrl": "authn.nvidia.com/token" + } + }, + "type": "oauth2" + }, + "ssa": { + "description": "A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725", + "flows": { + "clientCredentials": { + "scopes": { + "cloneArtifact": "{scope}", + "getPublicFlags": "{scope}", + "helmProxy": "{scope}", + "kas": "{scope}", + "publishArtifact": "{scope}", + "publishCollection": "{scope}", + "recreateArtifactVersionZip": "{scope}", + "undoPublishArtifact": "{scope}", + "undoPublishCollection": "{scope}" + }, + "tokenUrl": "https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token" + } + }, + "type": "oauth2" + } + } + }, + "info": { + "contact": { + "name": "NVIDIA", + "url": "https://www.nvidia.com/" + }, + "termsOfService": "https://www.nvidia.com/en-us/legal_info", + "title": "Models API", + "version": "0.0.1-SNAPSHOT" + }, + "openapi": "3.1.0", + "paths": { + "/health": { + "get": { + "description": "Used to check the health status of the web service only", + "operationId": "status", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Web Service Health Status", + "tags": [ + "Health" + ], + "x-ssa-scopes": [] + } + }, + "/health/**": { + "get": { + "description": "Get Health Information about this service", + "operationId": "getHealth", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthComponent" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get Health Information", + "tags": [ + "Health" + ], + "x-ssa-scopes": [] + } + }, + "/health/all": { + "get": { + "description": "Used to get health status of all services", + "operationId": "statusDetails", + "parameters": [ + { + "description": "boolean value to indicating to show details or not", + "in": "query", + "name": "showDetails", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "secret value that validates the call in order to show details", + "in": "query", + "name": "secret", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "All Service Health Status", + "tags": [ + "Health" + ], + "x-ssa-scopes": [] + } + }, + "/v1/artifact-registry/org/{org-name}/encryption-keys": { + "get": { + "description": "List encryption keys in org", + "operationId": "listKeysInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List encryption keys in org", + "tags": [ + "Encryption Keys" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id}": { + "delete": { + "description": "Revoke encryption key and disassociate from all artifacts in org", + "operationId": "deleteKeyFromOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Key ID", + "in": "path", + "name": "key-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke encryption key in org", + "tags": [ + "Encryption Keys" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "List artifacts for encryption key in org", + "operationId": "listArtifactsForKeyInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Key ID", + "in": "path", + "name": "key-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "query", + "name": "artifact-type", + "required": false, + "schema": { + "default": "MODEL", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifacts for encryption key in org", + "tags": [ + "Encryption Keys" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys": { + "get": { + "description": "List encryption keys in org/team", + "operationId": "listKeysInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List encryption keys in org/team", + "tags": [ + "Encryption Keys" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/artifact-registry/org/{org-name}/team/{team-name}/encryption-keys/{key-id}": { + "delete": { + "description": "Revoke encryption key and disassociate from all artifacts in org/team", + "operationId": "deleteKeyFromTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Key ID", + "in": "path", + "name": "key-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke encryption key in org/team", + "tags": [ + "Encryption Keys" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "List artifacts for encryption key in org/team", + "operationId": "listArtifactsForKeyInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Key ID", + "in": "path", + "name": "key-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "query", + "name": "artifactType", + "required": false, + "schema": { + "default": "MODEL", + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeyArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifacts for encryption key in org/team", + "tags": [ + "Encryption Keys" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/artifact-registry/org/{org}/team/{team}/workflows/{workflowId}": { + "get": { + "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team.", + "operationId": "getWorkflowStatusForTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Workflow identifier", + "in": "path", + "name": "workflowId", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Get team-scoped workflow status", + "tags": [ + "Workflows" + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/artifact-registry/org/{org}/workflows/{workflowId}": { + "get": { + "description": "Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization.", + "operationId": "getWorkflowStatus", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Workflow identifier", + "in": "path", + "name": "workflowId", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Get workflow status", + "tags": [ + "Workflows" + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/collections": { + "get": { + "description": "List public collections", + "operationId": "listPublicCollections", + "parameters": [ + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public collections", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{collection-name}": { + "get": { + "description": "Get collection details in org as guest", + "operationId": "getCollectionInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get collection in org as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{collection-name}/artifacts/{artifact-type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org as guest", + "operationId": "listCollectionArtifactsInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List collection artifacts in org as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{team-name}/{collection-name}": { + "get": { + "description": "Get collection details in team as guest", + "operationId": "getCollectionInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get collection in team as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v1/collections/{org-name}/{team-name}/{collection-name}/artifacts/{artifact-type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org and team as guest", + "operationId": "listCollectionArtifactsInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List collection artifacts in org and team as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps": { + "get": { + "description": "List cloud service providers", + "operationId": "listCloudServiceProviders", + "parameters": [ + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "maximum": 5000, + "minimum": 1, + "type": "integer" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "maximum": 10000, + "minimum": 0, + "type": "integer" + } + }, + { + "description": "Include disabled", + "in": "query", + "name": "include-disabled", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List cloud service providers", + "tags": [ + "Cloud service providers" + ], + "x-ssa-scopes": [] + }, + "post": { + "description": "Create cloud service provider", + "operationId": "createCloudServiceProvider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create cloud service provider", + "tags": [ + "Cloud service providers" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "description": "Create public artifact version deployment url in team", + "operationId": "createPublicArtifactDeploymentUrlInTeam", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create public artifact version deployment url in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "description": "Create public artifact version file deployment url in team", + "operationId": "createPublicArtifactVersionFileDeploymentUrlInTeam", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create public artifact version file deployment url in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "description": "Create public artifact version deployment url in org", + "operationId": "createPublicArtifactDeploymentUrlInOrg", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create public artifact version deployment url in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/org/{org-name}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "description": "Create public artifact version file deployment url in org", + "operationId": "createPublicArtifactVersionFileDeploymentUrlInOrg", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create public artifact version file deployment url in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in org", + "operationId": "listPublicArtifactDeploymentParametersInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in org", + "operationId": "getPublicArtifactDeploymentParametersInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get public artifact deployment parameters details in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in team", + "operationId": "listPublicArtifactDeploymentParametersInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public artifact deployment parameters in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in team", + "operationId": "getPublicArtifactDeploymentParametersInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get public artifact deployment parameters details in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/csps/{csp-name}": { + "delete": { + "description": "Delete cloud service provider", + "operationId": "deleteCloudServiceProvider", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete cloud service provider", + "tags": [ + "Cloud service providers" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get cloud service provider details", + "operationId": "getCloudServiceProviderDetails", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get cloud service provider details", + "tags": [ + "Cloud service providers" + ], + "x-ssa-scopes": [] + }, + "patch": { + "description": "Update cloud service provider", + "operationId": "updateCloudServiceProvider", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update cloud service provider", + "tags": [ + "Cloud service providers" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/csps/{csp-name}/deployments/params": { + "delete": { + "description": "Delete cloud service provider deployment parameters", + "operationId": "deleteCloudServiceProviderDeploymentParameters", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete cloud service provider deployment parameters", + "tags": [ + "Cloud service provider deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get cloud service provider deployment parameters details", + "operationId": "getCloudServiceProviderDeploymentParametersDetails", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get cloud service provider deployment parameters details", + "tags": [ + "Cloud service provider deployment parameters" + ], + "x-ssa-scopes": [] + }, + "patch": { + "description": "Update cloud service provider deployment parameters", + "operationId": "updateCloudServiceProviderDeploymentParameters", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update cloud service provider deployment parameters", + "tags": [ + "Cloud service provider deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create cloud service provider deployment parameters", + "operationId": "createCloudServiceProviderDeploymentParameters", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create cloud service provider deployment parameters", + "tags": [ + "Cloud service provider deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/csps/{csp-name}/deployments/params/meta": { + "delete": { + "description": "Delete cloud service provider deployment parameters meta", + "operationId": "deleteCloudServiceProviderDeploymentParametersMeta", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete cloud service provider deployment parameters meta", + "tags": [ + "Deployment parameters meta" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get cloud service provider deployment parameters meta details", + "operationId": "getCloudServiceProviderDeploymentParametersMetaDetails", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get cloud service provider deployment parameters meta details", + "tags": [ + "Deployment parameters meta" + ], + "x-ssa-scopes": [] + }, + "patch": { + "description": "Update cloud service provider deployment parameters meta", + "operationId": "updateCloudServiceProviderDeploymentParametersMeta", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMetaUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update cloud service provider deployment parameters meta", + "tags": [ + "Deployment parameters meta" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create cloud service provider deployment parameters meta", + "operationId": "createCloudServiceProviderDeploymentParametersMeta", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMetaCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create cloud service provider deployment parameters meta", + "tags": [ + "Deployment parameters meta" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/deploy/csps": { + "get": { + "description": "List cloud service providers", + "operationId": "listCloudServiceProviders_1", + "parameters": [ + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "maximum": 5000, + "minimum": 1, + "type": "integer" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "maximum": 10000, + "minimum": 0, + "type": "integer" + } + }, + { + "description": "Include disabled", + "in": "query", + "name": "include-disabled", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProviderListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List cloud service providers", + "tags": [ + "Cloud service providers" + ], + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in org as guest", + "operationId": "listPublicArtifactDeploymentParametersInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public artifact deployment parameters in org as guest", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in org as guest", + "operationId": "getPublicArtifactDeploymentParametersInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get public artifact deployment parameters details in org as guest", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/params": { + "get": { + "description": "List public artifact deployment parameters in team as guest", + "operationId": "listPublicArtifactDeploymentParametersInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public artifact deployment parameters in team as guest", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{artifact-type}/{org-name}/{team-name}/{artifact-name}/deployments/{csp-name}/params": { + "get": { + "description": "Get public artifact deployment parameters details in team as guest", + "operationId": "getPublicArtifactDeploymentParametersInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get public artifact deployment parameters details in team as guest", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [] + } + }, + "/v1/deploy/csps/{csp-name}": { + "get": { + "description": "Get cloud service provider details", + "operationId": "getCloudServiceProviderDetails_1", + "parameters": [ + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get cloud service provider details", + "tags": [ + "Cloud service providers" + ], + "x-ssa-scopes": [] + } + }, + "/v1/gpus": { + "get": { + "description": "Get all GPU by PCI records", + "operationId": "getGpus", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GpuByPciResponse" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": "array" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "summary": "Get all GPUs", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + } + }, + "/v1/gpus/pci-device-id/{pci-device-id}": { + "delete": { + "description": "Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", + "operationId": "deleteGpuByPciDeviceId", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteGpuByPci" + ] + } + ], + "summary": "Delete GPU by PCI Device ID only", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "deleteGpuByPci", + "kas" + ] + }, + "get": { + "description": "Get all GPU records matching the given PCI Device ID", + "operationId": "getGpuByPciDeviceId", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GpuByPciResponse" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": "array" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "summary": "Get GPU by PCI Device ID", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + }, + "patch": { + "description": "Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated.", + "operationId": "updateGpuByPciDeviceId", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateGpuByPci" + ] + } + ], + "summary": "Partially update GPU by PCI Device ID only", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "updateGpuByPci" + ] + }, + "post": { + "description": "Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')", + "operationId": "createGpuByPciDeviceId", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createGpuByPci" + ] + } + ], + "summary": "Create GPU by PCI Device ID only", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "createGpuByPci" + ] + } + }, + "/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}": { + "get": { + "description": "Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID", + "operationId": "getGpuByPciDeviceIdVendorId", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Vendor ID", + "in": "path", + "name": "pci-vendor-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GpuByPciResponse" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": "array" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "summary": "Get GPUs by PCI Device ID and Vendor ID", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + } + }, + "/v1/gpus/pci-device-id/{pci-device-id}/pci-vendor-id/{pci-vendor-id}/pci-subsystem-device-id/{pci-subsystem-device-id}": { + "delete": { + "description": "Delete a GPU record matching the full PCI composite key", + "operationId": "deleteGpuByPciFullKey", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Vendor ID", + "in": "path", + "name": "pci-vendor-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Subsystem Device ID", + "in": "path", + "name": "pci-subsystem-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteGpuByPci" + ] + } + ], + "summary": "Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "deleteGpuByPci", + "kas" + ] + }, + "get": { + "description": "Get a single GPU record matching the full PCI composite key", + "operationId": "getGpuByPciDeviceIdVendorIdSubsystemDeviceId", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Vendor ID", + "in": "path", + "name": "pci-vendor-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Subsystem Device ID", + "in": "path", + "name": "pci-subsystem-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "readGpuByPci" + ] + } + ], + "summary": "Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "readGpuByPci" + ] + }, + "patch": { + "description": "Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated.", + "operationId": "updateGpuByPciFullKey", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Vendor ID", + "in": "path", + "name": "pci-vendor-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Subsystem Device ID", + "in": "path", + "name": "pci-subsystem-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateGpuByPci" + ] + } + ], + "summary": "Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "updateGpuByPci" + ] + }, + "post": { + "description": "Create a new GPU record using the full PCI composite key", + "operationId": "createGpuByPciFullKey", + "parameters": [ + { + "description": "PCI Device ID", + "in": "path", + "name": "pci-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Vendor ID", + "in": "path", + "name": "pci-vendor-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + }, + { + "description": "PCI Subsystem Device ID", + "in": "path", + "name": "pci-subsystem-device-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 32, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GpuByPciResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createGpuByPci" + ] + } + ], + "summary": "Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID", + "tags": [ + "GpuByPci" + ], + "x-ssa-scopes": [ + "kas", + "createGpuByPci" + ] + } + }, + "/v1/helm-charts/{org-name}/{artifact-name}/versions": { + "get": { + "description": "List chart versions in org as guest", + "operationId": "listHelmChartVersionsInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List chart versions in org as guest", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [] + } + }, + "/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id}": { + "get": { + "description": "Get chart version in org as guest", + "operationId": "getHelmChartVersionInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get chart version in org as guest", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [] + } + }, + "/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions": { + "get": { + "description": "List chart versions in team as guest", + "operationId": "listHelmChartVersionsInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List chart versions in team as guest", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [] + } + }, + "/v1/helm-charts/{org-name}/{team-name}/{artifact-name}/versions/{version-id}": { + "get": { + "description": "Get chart version in team as guest", + "operationId": "getHelmChartVersionInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get chart version in team as guest", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [] + } + }, + "/v1/malware-scan-notification": { + "post": { + "description": "Update artifact's malware scan result with MalwareScanNotification", + "operationId": "notifyScanResult", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MalwareScanNotification" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotifyMalwareScanResultResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "notifyScanResult" + ] + } + ], + "summary": "Update artifact's malware scan result with MalwareScanNotification", + "tags": [ + "MalwareScan" + ], + "x-ssa-scopes": [ + "notifyScanResult", + "kas" + ] + } + }, + "/v1/models": { + "get": { + "description": "This operation lists public models.", + "operationId": "listPublicModels", + "parameters": [ + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public models", + "tags": [ + "Models" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}": { + "get": { + "description": "This operation gets info of a model in the org as guest.", + "operationId": "getModelInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get model in org as guest", + "tags": [ + "Models" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}/versions": { + "get": { + "description": "List model versions in org as guest", + "operationId": "listModelVersionsInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List model versions in org as guest", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}/versions/{version-id}": { + "get": { + "description": "Get model version in org as guest", + "operationId": "getModelVersionInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get model version in org as guest", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{model-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the model version in org as guest", + "operationId": "listModeFilesInOrgAsGuest_2", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List model files in org as guest", + "tags": [ + "Model Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}": { + "get": { + "description": "This operation gets info of a model in the org/team as guest.", + "operationId": "getModelInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get model in team as guest", + "tags": [ + "Models" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}/versions": { + "get": { + "description": "List model versions in team as guest", + "operationId": "listModelVersionsInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List model versions in team as guest", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}": { + "get": { + "description": "Get model version in team as guest", + "operationId": "getModelVersionInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get model version in team as guest", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [] + } + }, + "/v1/models/{org-name}/{team-name}/{model-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the model version in team as guest", + "operationId": "listModeFilesInTeamAsGuest_2", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List model files in team as guest", + "tags": [ + "Model Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/nim/{team}/{nimName}/{tag}/metadata": { + "post": { + "description": "Registers NIM profile metadata for the given team, NIM name, and tag. This is a placeholder that validates the supplied profiles and echoes the provided fields back to the caller.\nSSA: requires the following scope `createNimMetadata`\n", + "operationId": "createNimMetadata", + "parameters": [ + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" + } + }, + { + "description": "NIM name", + "in": "path", + "name": "nimName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" + } + }, + { + "description": "NIM tag", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NimManifestMetadataRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NimManifestMetadataResponse" + } + } + }, + "description": "Created" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createNimMetadata" + ] + } + ], + "summary": "Create NIM metadata", + "tags": [ + "NIM Metadata" + ], + "x-ssa-scopes": [ + "createNimMetadata", + "kas" + ] + } + }, + "/v1/org/{org-name}/collections": { + "get": { + "description": "List collections the user can access in the specified org", + "operationId": "listCollectionsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List collections in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create collection in org", + "operationId": "createCollectionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createCollection" + ] + } + ], + "summary": "Create collection in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "createCollection" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}": { + "delete": { + "description": "Delete collection in the specified org", + "operationId": "deleteCollectionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete collection in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get collection details in org", + "operationId": "getCollectionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getCollection" + ] + } + ], + "summary": "Get collection in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "getCollection", + "kas" + ] + }, + "patch": { + "description": "Update collection details in org", + "operationId": "updateCollectionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateCollection" + ] + } + ], + "summary": "Update collection in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "updateCollection", + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts": { + "patch": { + "description": "Patch collection in the specified org", + "operationId": "patchCollectionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPatchRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "patchCollectionArtifacts" + ] + } + ], + "summary": "Patch collection in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "patchCollectionArtifacts", + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org from another org", + "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact-team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Remove artifact from collection in org from another org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org from another org and team", + "operationId": "addArtifactToCollectionInOrgFromAnotherOrgAndTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact-team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "summary": "Add artifact to collection in org from another org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org from another org", + "operationId": "removeArtifactFromCollectionInOrgFromAnotherOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Remove artifact from collection in org from another org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org from another org", + "operationId": "addArtifactToCollectionInOrgFromAnotherOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "summary": "Add artifact to collection in org from another org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/artifacts/{artifact-type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org", + "operationId": "listCollectionArtifactsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listCollectionArtifacts" + ] + } + ], + "summary": "List collection artifacts in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "listCollectionArtifacts" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/share": { + "delete": { + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "undoPublishCollection" + ] + } + ], + "summary": "Undo publishing of collection to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "undoPublishCollection" + ] + }, + "put": { + "deprecated": true, + "description": "Publish collection to public", + "operationId": "publishCollection_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Indicates if guest users can download this collection", + "in": "query", + "name": "guest-can-download", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "description": "Indicates if collection is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "summary": "Publish collection to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishCollection" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/share/product": { + "put": { + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "summary": "Publish collection to product", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishCollection" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/shares/org": { + "delete": { + "deprecated": true, + "description": "Revoke shared org collection with the org", + "operationId": "revokeShareCollectionInOrgWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared org collection with the org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Share org collection with the org", + "operationId": "shareCollectionInOrgWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share org collection with the org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/shares/team/{target-team}": { + "delete": { + "deprecated": true, + "description": "Revoke shared org collection with the specified team", + "operationId": "revokeShareCollectionInOrgWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared org collection with the specified team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Share org collection with the specified team", + "operationId": "shareCollectionInOrgWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share org collection with the specified team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org", + "operationId": "removeArtifactFromCollectionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Remove artifact from collection in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org", + "operationId": "addArtifactToCollectionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Add artifact to collection in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/files/commit": { + "post": { + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles", + "parameters": [ + { + "description": "Org Name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "in": "query", + "name": "upload-pending", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Commit artifact files metadata to database", + "tags": [ + "ArtifactChecksum" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/helm-charts/{artifact-name}/versions": { + "get": { + "description": "List chart versions in org", + "operationId": "listHelmChartVersionsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifactVersions" + ] + } + ], + "summary": "List chart versions in org", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [ + "kas", + "listArtifactVersions" + ] + } + }, + "/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id}": { + "get": { + "description": "Get chart version in org", + "operationId": "getHelmChartVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifactVersion" + ] + } + ], + "summary": "Get chart version in org", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [ + "getArtifactVersion", + "kas" + ] + }, + "patch": { + "description": "Update chart version information in org e.g. upload status", + "operationId": "updateHelmChartVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifactVersion" + ] + } + ], + "summary": "Update chart version in org", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [ + "updateArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/models": { + "get": { + "description": "This operation lists models the user can access in the org.", + "operationId": "listModelsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "deprecated": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "deprecated": true, + "description": "[Deprecated] Page reference, Use page-number instead", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModels" + ] + } + ], + "summary": "List models in org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas", + "listModels" + ] + }, + "post": { + "description": "This operation creates a model in the org.", + "operationId": "createModelInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModel" + ] + } + ], + "summary": "Create model in org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "createModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash": { + "patch": { + "description": "Stash artifact version information in org during upload paused state", + "operationId": "stashArtifactVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "summary": "Stash artifact version in org", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}": { + "get": { + "description": "This operation gets info of a model in the org.", + "operationId": "getModelInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModel" + ] + } + ], + "summary": "Get model details in org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "getModel", + "kas" + ] + }, + "patch": { + "description": "This operation updates details of a model in the org.", + "operationId": "updateModelInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModel" + ] + } + ], + "summary": "Update model in org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "updateModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/encryption-key": { + "delete": { + "description": "Disassociate encryption key from model in org and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Disassociate encryption key from model in org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/shares/org": { + "delete": { + "description": "This operation revokes a shared org model with the org.", + "operationId": "revokeShareModelInOrgWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared org model with the org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "This operation shares an org model with the org.", + "operationId": "shareModelInOrgWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share org model with the org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/shares/team/{target-team}": { + "delete": { + "description": "This operation revokes a shared org model with the team.", + "operationId": "revokeShareModelInOrgWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared org model with the specified team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "This operation shares an org model with the team.", + "operationId": "shareModelInOrgWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share org model with the specified team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/versions": { + "get": { + "description": "List model versions in org", + "operationId": "listModelVersionsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "summary": "List model versions in org", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + }, + "post": { + "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModelVersion" + ] + } + ], + "summary": "Create model version in org", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "kas", + "createModelVersion" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/versions/{version-id}": { + "get": { + "description": "Get model version in org", + "operationId": "getModelVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModelVersion", + "getModelVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get model version in org", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "getModelVersionFilterByOrgEnablement", + "getModelVersion", + "kas" + ] + }, + "patch": { + "description": "Update model version information in org e.g. upload status", + "operationId": "updateModelVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "summary": "Update model version in org", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the model version in org", + "operationId": "listModeFilesInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listModelVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "listModelVersionFiles" + ] + } + ], + "summary": "List model files in org", + "tags": [ + "Model Version Files" + ], + "x-ssa-scopes": [ + "listModelVersionFiles", + "listModelVersionFilesFilterByOrgEnablement", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes": { + "get": { + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "summary": "List recipes in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "description": "Create recipe in org", + "operationId": "createRecipeInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "summary": "Create recipe in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}": { + "get": { + "description": "Get recipe in org", + "operationId": "getRecipeInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "summary": "Get recipe in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "summary": "Update recipe in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "summary": "List recipe versions in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "summary": "Create recipe version in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get recipe version in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "summary": "Update recipe version in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" + ] + } + ], + "summary": "List recipe files in org", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", + "kas" + ] + } + }, + "/v1/org/{org-name}/repositories/{container-name}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container name", + "in": "path", + "name": "container-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "summary": "List associated model versions by container", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_2", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container name", + "in": "path", + "name": "container-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container tag", + "in": "path", + "name": "container-tag", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "summary": "List associated model versions by container", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources": { + "get": { + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "summary": "List recipes in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "description": "Create recipe in org", + "operationId": "createRecipeInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "summary": "Create recipe in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}": { + "get": { + "description": "Get recipe in org", + "operationId": "getRecipeInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "summary": "Get recipe in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "summary": "Update recipe in org", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "summary": "List recipe versions in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "summary": "Create recipe version in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get recipe version in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "summary": "Update recipe version in org", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" + ] + } + ], + "summary": "List recipe files in org", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections": { + "get": { + "description": "List collections the user can access in the specified org and team", + "operationId": "listCollectionsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List collections in team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create collection in org and team", + "operationId": "createCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createCollection" + ] + } + ], + "summary": "Create collection in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "createCollection" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}": { + "delete": { + "description": "Delete collection in the specified org and team", + "operationId": "deleteCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete collection in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get collection details in team", + "operationId": "getCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getCollection" + ] + } + ], + "summary": "Get collection in team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "getCollection", + "kas" + ] + }, + "patch": { + "description": "Update collection details in team", + "operationId": "updateCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateCollection" + ] + } + ], + "summary": "Update collection in team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "updateCollection", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts": { + "patch": { + "description": "Patch collection in the specified org and team", + "operationId": "patchCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPatchRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "patchCollectionArtifacts" + ] + } + ], + "summary": "Patch collection in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "patchCollectionArtifacts", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team from another org and team", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact-team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Remove artifact from collection in org and team from another org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team from another org and team", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact-team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "summary": "Add artifact to collection in org and team from another org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team from another org", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Remove artifact from collection in org and team from another org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team from another org", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" + ] + } + ], + "summary": "Add artifact to collection in org and team from another org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org and team", + "operationId": "listCollectionArtifactsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listCollectionArtifacts" + ] + } + ], + "summary": "List collection artifacts in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "listCollectionArtifacts" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share": { + "delete": { + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "undoPublishCollection" + ] + } + ], + "summary": "Undo publishing of collection to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "undoPublishCollection" + ] + }, + "put": { + "description": "Publish collection to public", + "operationId": "publishCollection", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Indicates if guest users can download this collection", + "in": "query", + "name": "guest-can-download", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "description": "Indicates if collection is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "summary": "Publish collection to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishCollection" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product": { + "put": { + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishCollection" + ] + } + ], + "summary": "Publish collection to product", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishCollection" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org": { + "delete": { + "deprecated": true, + "description": "Revoke shared team collection with the org", + "operationId": "revokeShareCollectionInTeamWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared team collection with the org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Share team collection with the org", + "operationId": "shareCollectionInTeamWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share team collection with the org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team}": { + "delete": { + "deprecated": true, + "description": "Revoke shared team collection with the specified team", + "operationId": "revokeShareCollectionInTeamWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared team collection with the specified team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Share team collection with the specified team", + "operationId": "shareCollectionInTeamWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share team collection with the specified team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team", + "operationId": "removeArtifactFromCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Remove artifact from collection in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team", + "operationId": "addArtifactToCollectionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Add artifact to collection in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/files/commit": { + "post": { + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles_1", + "parameters": [ + { + "description": "Org Name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team Name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "in": "query", + "name": "upload-pending", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Commit artifact files metadata to database", + "tags": [ + "ArtifactChecksum" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions": { + "get": { + "description": "List chart versions in team", + "operationId": "listHelmChartVersionsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifactVersions" + ] + } + ], + "summary": "List chart versions in team", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [ + "kas", + "listArtifactVersions" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id}": { + "get": { + "description": "Get chart version in team", + "operationId": "getHelmChartVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifactVersion" + ] + } + ], + "summary": "Get chart version in team", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [ + "getArtifactVersion", + "kas" + ] + }, + "patch": { + "description": "Update chart version information in team e.g. upload status", + "operationId": "updateHelmChartVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifactVersion" + ] + } + ], + "summary": "Update chart version in team", + "tags": [ + "Helm Charts" + ], + "x-ssa-scopes": [ + "updateArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models": { + "get": { + "description": "This operation lists models the user can access in the org/team.", + "operationId": "listModelsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "deprecated": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "deprecated": true, + "description": "[Deprecated] Page reference, Use page-number instead", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModels" + ] + } + ], + "summary": "List models in team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas", + "listModels" + ] + }, + "post": { + "description": "This operation creates a model in the org/team.", + "operationId": "createModelInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModel" + ] + } + ], + "summary": "Create model in team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "createModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash": { + "patch": { + "description": "Stash artifact version information in team in model version upload paused state", + "operationId": "stashArtifactVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "summary": "Stash artifact version in team", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}": { + "get": { + "description": "This operation gets info of a model in the org/team.", + "operationId": "getModelInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModel" + ] + } + ], + "summary": "Get model in team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "getModel", + "kas" + ] + }, + "patch": { + "description": "This operation updates details of a model in the org/team.", + "operationId": "updateModelInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModel" + ] + } + ], + "summary": "Update model in team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "updateModel", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key": { + "delete": { + "description": "Disassociate encryption key from model in team and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Disassociate encryption key from model in team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org": { + "delete": { + "description": "This operation revokes a shared team model with the org.", + "operationId": "revokeShareModelInTeamWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared team model with the org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "This operation shares a team model with the org.", + "operationId": "shareModelInTeamWithOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share team model with the org", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team}": { + "delete": { + "description": "This operation revokes a shared team model with the team.", + "operationId": "revokeShareModelInTeamWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Revoke shared team model with the specified team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "This operation shares a team model with the team.", + "operationId": "shareModelInTeamWithTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Share team model with the specified team", + "tags": [ + "Models" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions": { + "get": { + "description": "List model versions in team", + "operationId": "listModelVersionsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "summary": "List model versions in team", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + }, + "post": { + "description": "Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createModelVersion" + ] + } + ], + "summary": "Create model version in team.", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "kas", + "createModelVersion" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}": { + "get": { + "description": "Get model version in team", + "operationId": "getModelVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getModelVersion", + "getModelVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get model version in team", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "getModelVersionFilterByOrgEnablement", + "getModelVersion", + "kas" + ] + }, + "patch": { + "description": "Update model version information in team e.g. upload status", + "operationId": "updateModelVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateModelVersion" + ] + } + ], + "summary": "Update model version in team", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "updateModelVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/apps/{app-name}": { + "delete": { + "deprecated": true, + "description": "Delete model app association", + "operationId": "deleteModelAppAssociation", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "App Name", + "in": "path", + "name": "app-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete model app association", + "tags": [ + "Apps" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Update model app association", + "operationId": "updateModelAppAssociation", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "App Name", + "in": "path", + "name": "app-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update model app association", + "tags": [ + "Apps" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the model version in team", + "operationId": "listModeFilesInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listModelVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "listModelVersionFiles" + ] + } + ], + "summary": "List model files in team", + "tags": [ + "Model Version Files" + ], + "x-ssa-scopes": [ + "listModelVersionFiles", + "listModelVersionFilesFilterByOrgEnablement", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes": { + "get": { + "description": "List recipes the user can access in the specified org and team", + "operationId": "listRecipesInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "summary": "List recipes in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "description": "Create recipe in team", + "operationId": "createRecipeInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "summary": "Create recipe in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}": { + "get": { + "description": "Get recipe details in team", + "operationId": "getRecipeInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "summary": "Get recipe in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "description": "Update recipe details in team", + "operationId": "updateRecipeInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "summary": "Update recipe in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in team", + "operationId": "listRecipeVersionsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "summary": "List recipe versions in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "summary": "Create recipe version in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in team", + "operationId": "getRecipeVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get recipe version in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "description": "Update recipe version information in team e.g. upload status", + "operationId": "updateRecipeVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "summary": "Update recipe version in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/recipes/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List recipe files in team", + "operationId": "listRecipeFilesInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" + ] + } + ], + "summary": "List recipe files in team", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container name", + "in": "path", + "name": "container-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "summary": "List associated model versions by container", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_3", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container name", + "in": "path", + "name": "container-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Container tag", + "in": "path", + "name": "container-tag", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listModelVersions" + ] + } + ], + "summary": "List associated model versions by container", + "tags": [ + "Model Version" + ], + "x-ssa-scopes": [ + "listModelVersions", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources": { + "get": { + "description": "List recipes the user can access in the specified org and team", + "operationId": "listRecipesInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipes" + ] + } + ], + "summary": "List recipes in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "listRecipes", + "kas" + ] + }, + "post": { + "description": "Create recipe in team", + "operationId": "createRecipeInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipe" + ] + } + ], + "summary": "Create recipe in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "createRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}": { + "get": { + "description": "Get recipe details in team", + "operationId": "getRecipeInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipe" + ] + } + ], + "summary": "Get recipe in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "getRecipe", + "kas" + ] + }, + "patch": { + "description": "Update recipe details in team", + "operationId": "updateRecipeInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipe" + ] + } + ], + "summary": "Update recipe in team", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [ + "updateRecipe", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in team", + "operationId": "listRecipeVersionsInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listRecipeVersions" + ] + } + ], + "summary": "List recipe versions in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "listRecipeVersions", + "kas" + ] + }, + "post": { + "description": "Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createRecipeVersion" + ] + } + ], + "summary": "Create recipe version in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "createRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in team", + "operationId": "getRecipeVersionInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" + ] + } + ], + "summary": "Get recipe version in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", + "kas" + ] + }, + "patch": { + "description": "Update recipe version information in team e.g. upload status", + "operationId": "updateRecipeVersionInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateRecipeVersion" + ] + } + ], + "summary": "Update recipe version in team", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [ + "updateRecipeVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/resources/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List recipe files in team", + "operationId": "listRecipeFilesInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" + ] + } + ], + "summary": "List recipe files in team", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [ + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}": { + "get": { + "description": "List artifacts the user can access in the specified org and team", + "operationId": "listArtifactsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifacts" + ] + } + ], + "summary": "List artifacts in team", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "listArtifacts", + "kas" + ] + }, + "post": { + "description": "Create artifact in team", + "operationId": "createArtifactInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createArtifact" + ] + } + ], + "summary": "Create artifact in team", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "createArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Delete artifact in team", + "operationId": "deleteArtifactInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifact" + ] + } + ], + "summary": "Delete artifact in team", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "deleteArtifact", + "kas" + ] + }, + "get": { + "description": "Get artifact details in team", + "operationId": "getArtifactInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "summary": "Get artifact in team", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "patch": { + "description": "Update artifact details in team", + "operationId": "updateArtifactInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Update artifact in team", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + }, + "put": { + "description": "Replace artifact details in team", + "operationId": "replaceArtifactInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Replace artifact in team", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/catalog/flags": { + "get": { + "description": "Get the Catalog Public flags for artifact in team", + "operationId": "getPublicFlagsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCatalogFlags" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "getPublicFlags" + ] + } + ], + "summary": "Get Catalog flags", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "getPublicFlags" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections": { + "get": { + "description": "List artifact collections the user can access in the specified org and team", + "operationId": "listArtifactCollectionsInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact collections in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels": { + "post": { + "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", + "operationId": "syncCollectionReleaseTypeLabelsForArtifact_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "syncReleaseTypeLabels" + ] + } + ], + "summary": "Sync collection release type labels for artifact", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "syncReleaseTypeLabels" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/params": { + "get": { + "description": "List artifact deployment parameters in team", + "operationId": "listArtifactDeploymentParametersInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact deployment parameters in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/parameters": { + "post": { + "description": "Create artifact deployment parameters in team", + "operationId": "createArtifactDeploymentParametersInTeam_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "No auto labels", + "in": "query", + "name": "no-auto-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact deployment parameters in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params": { + "delete": { + "description": "Delete artifact deployment parameters in team", + "operationId": "deleteArtifactDeploymentParametersInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete artifact deployment parameters in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get artifact deployment parameters details in team", + "operationId": "getArtifactDeploymentParametersInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Get artifact deployment parameters details in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "description": "Update artifact deployment parameters in team", + "operationId": "updateArtifactDeploymentParametersInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update artifact deployment parameters in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create artifact deployment parameters in team", + "operationId": "createArtifactDeploymentParametersInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "No auto labels", + "in": "query", + "name": "no-auto-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact deployment parameters in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/files": { + "post": { + "description": "Check if file exists based on checksum provided in request", + "operationId": "checkArtifactFilesExistByChecksum_1", + "parameters": [ + { + "description": "Org Name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team Name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact Type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact Name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Check if file exists based on checksum", + "tags": [ + "ArtifactChecksum" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/license/acceptance": { + "get": { + "description": "Check if user needs to accept license. Checks against uam", + "operationId": "getOrgArtifactLicenseAcceptance_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Check if user needs to accept license", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Record license acceptance for an org artifact.", + "operationId": "acceptArtifactLicense_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Accept artifact license", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/release-type": { + "put": { + "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", + "operationId": "updateReleaseLabel_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "publishArtifact" + ] + } + ], + "summary": "Update artifact version release type", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share": { + "delete": { + "description": "Undo publishing of artifact to public", + "operationId": "undoPublishArtifact_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "summary": "Undo publishing of artifact to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + }, + "put": { + "description": "Publish artifact to public", + "operationId": "publishArtifact_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Indicates if guest users can download this artifact", + "in": "query", + "name": "guest-can-download", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "description": "Indicates if artifact is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/share/product": { + "delete": { + "description": "Undo publishing of product artifacts", + "operationId": "undoPublishProduct_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "summary": "Undo publishing of product artifacts", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + }, + "put": { + "description": "Publish artifact to product", + "operationId": "publishArtifactFromRequest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact to product", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/terms-of-service": { + "put": { + "description": "Update artifact terms of service", + "operationId": "updateTermsOfService_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact", + "kas" + ] + } + ], + "summary": "Update artifact terms of service", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}": { + "delete": { + "description": "Delete a artifact version in team", + "operationId": "deleteArtifactVersionInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifactVersion" + ] + } + ], + "summary": "Delete a artifact version in team", + "tags": [ + "Artifact Versions" + ], + "x-ssa-scopes": [ + "deleteArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs": { + "patch": { + "description": "Update artifact version with configs like policy badge", + "operationId": "updateTagLevelPublishConfigs_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact version with configs like policy badge", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "description": "Create artifact version deployment url in team", + "operationId": "createArtifactDeploymentUrlInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact version deployment url in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the artifact version in team", + "operationId": "listArtifactFilesInTeam", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "listArtifactVersionFiles" + ] + }, + { + "ssa": [ + "listArtifactVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact files in team", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "listArtifactVersionFiles", + "kas", + "listArtifactVersionFilesFilterByOrgEnablement" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**": { + "delete": { + "description": "Delete artifact file in team", + "operationId": "deleteArtifactFileInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete artifact file in team", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in team", + "operationId": "downloadArtifactFileInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile" + ] + } + ], + "summary": "Download artifact file in team", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "description": "Create artifact version file deployment url in team", + "operationId": "createArtifactVersionFileDeploymentUrlInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact version file deployment url in team", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/zip/download": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in team as zip", + "operationId": "downloadArtifactFileInTeamAsZip", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Download artifact file in team as zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", + "operationId": "getArtifactVersionSignature_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [] + }, + "put": { + "description": "Request to sign artifact version", + "operationId": "signArtifactVersion_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "signArtifactVersion" + ] + } + ], + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [ + "signArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "deprecated": true, + "description": "Download all files of a team artifact in a zip", + "operationId": "downloadAllFilesInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Download all files of a team artifact in a zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}": { + "get": { + "description": "List artifacts the user can access in the specified org", + "operationId": "listArtifactsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "listArtifacts" + ] + } + ], + "summary": "List artifacts in org", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "listArtifacts", + "kas" + ] + }, + "post": { + "description": "Create artifact in org", + "operationId": "createArtifactInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "createArtifact" + ] + } + ], + "summary": "Create artifact in org", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "createArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Delete artifact in org", + "operationId": "deleteArtifactInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifact" + ] + } + ], + "summary": "Delete artifact in org", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "deleteArtifact", + "kas" + ] + }, + "get": { + "description": "Get artifact details in org", + "operationId": "getArtifactInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "summary": "Get artifact in org", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "patch": { + "description": "Update artifact details in org", + "operationId": "updateArtifactInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Update artifact in org", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + }, + "put": { + "description": "Replace artifact details in org", + "operationId": "replaceArtifactInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "updateArtifact" + ] + } + ], + "summary": "Replace artifact in org", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "updateArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/catalog/flags": { + "get": { + "description": "Get the Catalog Public flags for artifact in org", + "operationId": "getPublicFlagsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactCatalogFlags" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "getPublicFlags" + ] + } + ], + "summary": "Get Catalog flags", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "getPublicFlags" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections": { + "get": { + "description": "List artifact collections the user can access in the specified org", + "operationId": "listArtifactCollectionsInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact collections in org", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/collections/sync-release-type-labels": { + "post": { + "description": "Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication.", + "operationId": "syncCollectionReleaseTypeLabelsForArtifact", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "syncReleaseTypeLabels" + ] + } + ], + "summary": "Sync collection release type labels for artifact", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas", + "syncReleaseTypeLabels" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/params": { + "get": { + "description": "List artifact deployment parameters in org", + "operationId": "listArtifactDeploymentParametersInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/deployments/{csp-name}/params": { + "delete": { + "description": "Delete artifact deployment parameters in org", + "operationId": "deleteArtifactDeploymentParametersInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "description": "Get artifact deployment parameters details in org", + "operationId": "getArtifactDeploymentParametersInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Inherit CSP parameters", + "in": "query", + "name": "inherit-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Get artifact deployment parameters details in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "patch": { + "description": "Update artifact deployment parameters in org", + "operationId": "updateArtifactDeploymentParametersInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Update artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Create artifact deployment parameters in org", + "operationId": "createArtifactDeploymentParametersInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "No auto labels", + "in": "query", + "name": "no-auto-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Merge CSP parameters in response", + "in": "query", + "name": "merge-csp-parameters", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParametersCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentParameters" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact deployment parameters in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/files": { + "post": { + "description": "Check if file exists based on checksum provided in request", + "operationId": "checkArtifactFilesExistByChecksum", + "parameters": [ + { + "description": "Org Name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact Type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact Name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesChecksumExistsResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Check if file exists based on checksum", + "tags": [ + "ArtifactChecksum" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/license/acceptance": { + "get": { + "description": "Check if user needs to accept license. Checks against uam", + "operationId": "getOrgArtifactLicenseAcceptance", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Check if user needs to accept license", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Record license acceptance for an org artifact.", + "operationId": "acceptArtifactLicense", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptArtifactLicenseRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Accept artifact license", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/release-type": { + "put": { + "description": "Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.", + "operationId": "updateReleaseLabel", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateReleaseTypeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "publishArtifact" + ] + } + ], + "summary": "Update artifact version release type", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/share": { + "delete": { + "description": "Undo publishing of artifact to public", + "operationId": "undoPublishArtifact", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "summary": "Undo publishing of artifact to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + }, + "put": { + "description": "Publish artifact to public", + "operationId": "publishArtifact", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Indicates if guest users can download this artifact", + "in": "query", + "name": "guest-can-download", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "description": "Indicates if artifact is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact to public", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/share/product": { + "delete": { + "description": "Undo publishing of product artifacts", + "operationId": "undoPublishProduct", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "undoPublishArtifact" + ] + } + ], + "summary": "Undo publishing of product artifacts", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "undoPublishArtifact" + ] + }, + "put": { + "description": "Publish artifact to product", + "operationId": "publishArtifactFromRequest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact to product", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/terms-of-service": { + "put": { + "description": "Update artifact terms of service", + "operationId": "updateTermsOfService", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactPublishRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact", + "kas" + ] + } + ], + "summary": "Update artifact terms of service", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}": { + "delete": { + "description": "Delete a artifact version in org", + "operationId": "deleteArtifactVersionInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifactVersion" + ] + } + ], + "summary": "Delete a artifact version in org", + "tags": [ + "Artifact Versions" + ], + "x-ssa-scopes": [ + "deleteArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/configs": { + "patch": { + "description": "Update artifact version with configs like policy badge", + "operationId": "updateTagLevelPublishConfigs", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateArtifactVersionConfigs" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "publishArtifact" + ] + } + ], + "summary": "Publish artifact version with configs like policy badge", + "tags": [ + "Publish" + ], + "x-ssa-scopes": [ + "publishArtifact" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/deployments/{csp-name}": { + "post": { + "description": "Create artifact version deployment url in org", + "operationId": "createArtifactDeploymentUrlInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact version deployment url in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the artifact version in org", + "operationId": "listArtifactFilesInOrg", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "listArtifactVersionFiles" + ] + }, + { + "ssa": [ + "listArtifactVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + } + ], + "summary": "List artifact files in org", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "listArtifactVersionFiles", + "kas", + "listArtifactVersionFilesFilterByOrgEnablement" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**": { + "delete": { + "description": "Delete artifact file in org", + "operationId": "deleteArtifactFileInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Delete artifact file in org", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in org", + "operationId": "downloadArtifactFileInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile" + ] + } + ], + "summary": "Download artifact file in org", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/**/deployments/{csp-name}": { + "post": { + "description": "Create artifact version file deployment url in org", + "operationId": "createArtifactVerionFileDeploymentUrlInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "repositories", + "recipes", + "models" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Cloud service provider name", + "in": "path", + "name": "csp-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeploymentUrlResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Conflict" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Create artifact version file deployment url in org", + "tags": [ + "Artifact deployment parameters" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/files/*/zip/download": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in org as zip", + "operationId": "downloadArtifactFileInOrgAsZip", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Download artifact file in org as zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version", + "operationId": "getArtifactVersionSignature", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [] + }, + "put": { + "description": "Request to sign artifact version", + "operationId": "signArtifactVersion", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "signArtifactVersion" + ] + } + ], + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [ + "signArtifactVersion", + "kas" + ] + } + }, + "/v1/org/{org-name}/{artifact-type}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "deprecated": true, + "description": "Download all files of an org artifact in a zip", + "operationId": "downloadAllFilesInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Download all files of an org artifact in a zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan": { + "post": { + "description": "Initiates malwares can for the artifact", + "operationId": "initiateMalwareScan_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Contact email", + "in": "query", + "name": "contact-email", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 320, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Nspect identifier", + "in": "query", + "name": "nspect-id", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 64, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Initiates malwares can for the artifact", + "tags": [ + "MalwareScan" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/playground": { + "post": { + "deprecated": true, + "description": "Create AI Playground for model", + "operationId": "createModelAIPlayground_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/playground/{artifactName}": { + "delete": { + "deprecated": true, + "description": "Delete AI Playground for model", + "operationId": "deleteModelAIPlayground_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + }, + "get": { + "deprecated": true, + "description": "Get AI Playground for model", + "operationId": "getModelAIPlayground_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Update AI Playground for model", + "operationId": "updateModelAIPlayground_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/spec": { + "post": { + "description": "Create AI Playground for artifactType", + "operationId": "createModelArtifactsSpec_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "summary": "Create AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/purge": { + "delete": { + "description": "Purge Search DB for deleted artifacts", + "operationId": "purgeDeletedArtifact_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "purgeArtifact" + ] + } + ], + "summary": "Purge Search DB", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "kas", + "purgeArtifact" + ] + } + }, + "/v1/org/{orgName}/team/{teamName}/{artifactType}/{artifactName}/spec": { + "delete": { + "description": "Delete AI Playground for artifactType", + "operationId": "deleteModelArtifactsSpec_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "summary": "Delete AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + }, + "get": { + "description": "Get AI Playground for artifactType", + "operationId": "getModelArtifactsSpec_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "summary": "Get AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "description": "Update AI Playground for artifactType", + "operationId": "updateModelArtifactsSpec_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "summary": "Update AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifact-type}/{artifact-name}/versions/{version-id}/malware-scan": { + "post": { + "description": "Initiates malwares can for the artifact", + "operationId": "initiateMalwareScan", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Contact email", + "in": "query", + "name": "contact-email", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 320, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Nspect identifier", + "in": "query", + "name": "nspect-id", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 64, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Initiates malwares can for the artifact", + "tags": [ + "MalwareScan" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/playground": { + "post": { + "deprecated": true, + "description": "Create AI Playground for model", + "operationId": "createModelAIPlayground", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/playground/{artifactName}": { + "delete": { + "deprecated": true, + "description": "Delete AI Playground for model", + "operationId": "deleteModelAIPlayground", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + }, + "get": { + "deprecated": true, + "description": "Get AI Playground for model", + "operationId": "getModelAIPlayground", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "deprecated": true, + "description": "Update AI Playground for model", + "operationId": "updateModelAIPlayground", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/spec": { + "post": { + "description": "Create AI Playground for artifactType", + "operationId": "createModelArtifactsSpec", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "summary": "Create AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/{artifactName}/purge": { + "delete": { + "description": "Purge Search DB for deleted artifacts", + "operationId": "purgeDeletedArtifact", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "purgeArtifact" + ] + } + ], + "summary": "Purge Search DB", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [ + "kas", + "purgeArtifact" + ] + } + }, + "/v1/org/{orgName}/{artifactType}/{artifactName}/spec": { + "delete": { + "description": "Delete AI Playground for artifactType", + "operationId": "deleteModelArtifactsSpec", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "deleteArtifacts" + ] + } + ], + "summary": "Delete AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "deleteArtifacts", + "kas" + ] + }, + "get": { + "description": "Get AI Playground for artifactType", + "operationId": "getModelArtifactsSpec", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "getArtifact" + ] + } + ], + "summary": "Get AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "getArtifact", + "kas" + ] + }, + "put": { + "description": "Update AI Playground for artifactType", + "operationId": "updateModelArtifactsSpec", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "writeArtifacts" + ] + } + ], + "summary": "Update AI Playground for artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [ + "writeArtifacts", + "kas" + ] + } + }, + "/v1/org/{org}/files/clone": { + "put": { + "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", + "operationId": "cloneArtifactVersionFiles", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/files/clone/status": { + "put": { + "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", + "operationId": "cloneArtifactVersionFilesStatus", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactFilesStatusResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files Status", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/files/multipart": { + "delete": { + "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", + "operationId": "abortFileUpload", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadAbortRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Abort a multipart upload for an artifact file.", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", + "operationId": "fileUpload", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Initiate a multipart upload for an artifact file.", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", + "operationId": "completeFileUpload", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCompleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Complete a multipart upload for an artifact file.", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org}/team/{team}/files/clone": { + "put": { + "description": "Synchronously copies the files of a source artifact version into a target artifact version within the organization (and optional team).", + "operationId": "cloneArtifactVersionFiles_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/team/{team}/files/clone/status": { + "put": { + "description": "Returns the current status (pending, running, completed, or failed) of an asynchronous artifact file clone workflow.", + "operationId": "cloneArtifactVersionFilesStatus_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneArtifactFilesStatusResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files Status", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas", + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/team/{team}/files/multipart": { + "delete": { + "description": "Cancels an in-progress multipart upload and releases any partially uploaded parts associated with the upload session.", + "operationId": "abortFileUpload_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadAbortRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Abort a multipart upload for an artifact file.", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "post": { + "description": "Starts a multipart upload session for a file belonging to an artifact version and returns the pre-signed URLs needed to upload each part.", + "operationId": "fileUpload_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCreateResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Initiate a multipart upload for an artifact file.", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas" + ] + }, + "put": { + "description": "Finalizes a previously initiated multipart upload by assembling the uploaded parts into the target artifact file and validating checksums.", + "operationId": "completeFileUpload_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipartUploadCompleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Complete a multipart upload for an artifact file.", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org}/team/{team}/{type}/{name}/versions/{version}/async-clone": { + "put": { + "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", + "operationId": "cloneArtifactVersionFilesAsync_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files asynchronously", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/team/{team}/{type}/{name}/{version}/files": { + "get": { + "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", + "operationId": "downloadAllArtifactFiles_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "File path", + "in": "query", + "name": "path", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadAllResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile", + "downloadArtifactVersionFileFilterByOrgEnablement" + ] + } + ], + "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "downloadArtifactVersionFileFilterByOrgEnablement", + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v1/org/{org}/{type}/{name}/versions/{version}/async-clone": { + "put": { + "description": "Starts an asynchronous Temporal workflow to clone the files of a source artifact version into the target artifact version and returns a URL to poll for workflow status.", + "operationId": "cloneArtifactVersionFilesAsync", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Target version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AsyncCloneArtifactVersionFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + } + } + }, + "description": "Accepted" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "cloneArtifact" + ] + } + ], + "summary": "Clone Artifact files asynchronously", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "cloneArtifact" + ] + } + }, + "/v1/org/{org}/{type}/{name}/{version}/files": { + "get": { + "description": "Returns pre-signed download URLs for every file of a given artifact version, enabling authenticated clients to download the complete contents of the version.", + "operationId": "downloadAllArtifactFiles", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "File path", + "in": "query", + "name": "path", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactDownloadAllResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas", + "downloadArtifactVersionFile", + "downloadArtifactVersionFileFilterByOrgEnablement" + ] + } + ], + "summary": "Provide a list of presigned urls for the download of all files belonging to an artifact version", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [ + "downloadArtifactVersionFileFilterByOrgEnablement", + "kas", + "downloadArtifactVersionFile" + ] + } + }, + "/v1/recipes": { + "get": { + "description": "List public recipes", + "operationId": "listPublicRecipes", + "parameters": [ + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public recipes", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}": { + "get": { + "description": "Get recipe details in org as guest", + "operationId": "getRecipeInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe in org as guest", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in org as guest", + "operationId": "listRecipeVersionsInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe versions in org as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in org as guest", + "operationId": "getRecipeVersionInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe version in org as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the recipe version in org as guest", + "operationId": "listModeFilesInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe files in org as guest", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}": { + "get": { + "description": "Get recipe details in team as guest", + "operationId": "getRecipeInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe in team as guest", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in team as guest", + "operationId": "listRecipeVersionsInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe versions in team as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in team as guest", + "operationId": "getRecipeVersionInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe version in team as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/recipes/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the recipe version in team as guest", + "operationId": "listModeFilesInTeamAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe files in team as guest", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources": { + "get": { + "description": "List public recipes", + "operationId": "listPublicRecipes_1", + "parameters": [ + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public recipes", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}": { + "get": { + "description": "Get recipe details in org as guest", + "operationId": "getRecipeInOrgAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe in org as guest", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in org as guest", + "operationId": "listRecipeVersionsInOrgAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe versions in org as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in org as guest", + "operationId": "getRecipeVersionInOrgAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe version in org as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the recipe version in org as guest", + "operationId": "listModeFilesInOrgAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe files in org as guest", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}": { + "get": { + "description": "Get recipe details in team as guest", + "operationId": "getRecipeInTeamAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe in team as guest", + "tags": [ + "Resources" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions": { + "get": { + "description": "List recipe versions in team as guest", + "operationId": "listRecipeVersionsInTeamAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe versions in team as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}": { + "get": { + "description": "Get recipe version in team as guest", + "operationId": "getRecipeVersionInTeamAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get recipe version in team as guest", + "tags": [ + "Resource Versions" + ], + "x-ssa-scopes": [] + } + }, + "/v1/resources/{org-name}/{team-name}/{recipe-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the recipe version in team as guest", + "operationId": "listModeFilesInTeamAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List recipe files in team as guest", + "tags": [ + "Resource Version Files endpoints" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}": { + "get": { + "description": "List public artifacts", + "operationId": "listPublicArtifacts", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List public artifacts", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/org/{org-name}/team/{team-name}/{artifact-name}/collections": { + "get": { + "description": "List artifact collections the user can access in the specified org and team as guest", + "operationId": "listArtifactCollectionsInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List artifact collections in org and team as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/org/{org-name}/{artifact-name}/collections": { + "get": { + "description": "List artifact collections the user can access in the specified org as guest", + "operationId": "listArtifactCollectionsInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List artifact collections in org as guest", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}": { + "get": { + "description": "Get artifact details in org as guest", + "operationId": "getArtifactInOrgAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get artifact in org as guest", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/latest-version/zip": { + "get": { + "deprecated": true, + "description": "Download all files of an org artifact's latest version in a zip as guest", + "operationId": "downloadAllFilesOfLatestVersionInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download all files of an org artifact's latest version in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the artifact version in org as guest", + "operationId": "listArtifactFilesInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List artifact files in org as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in org as guest", + "operationId": "downloadArtifactFileInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download artifact file in org as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/files/**/zip/download": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in org as guest as zip", + "operationId": "downloadArtifactFileInOrgAsGuestAsZip", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download artifact file in org as guest as zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", + "operationId": "getArtifactVersionSignatureAsGuest", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "deprecated": true, + "description": "Download all files of an org artifact in a zip as guest", + "operationId": "downloadAllFilesInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download all files of an org artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{artifact-name}/versions/{version-id}/zip/download": { + "get": { + "deprecated": true, + "description": "Direct download all files of a org artifact in a zip as guest", + "operationId": "directDownloadAllFilesInOrgAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + }, + "application/zip": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Direct download all files of a org artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}": { + "get": { + "description": "Get artifact details in team as guest", + "operationId": "getChartInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get artifact in team as guest", + "tags": [ + "Artifacts" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/latest-version/zip": { + "get": { + "deprecated": true, + "description": "Download all files of a team artifact's latest version in a zip as guest", + "operationId": "downloadAllFilesInTeamAsGuest_1", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download all files of a team artifact's latest version in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files": { + "get": { + "description": "List files of the artifact version in team as guest", + "operationId": "listArtifactFilesInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionFileListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "List artifact files in team as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in team as guest", + "operationId": "downloadArtifactFileInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download artifact file in team as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/files/**/zip/download": { + "get": { + "deprecated": true, + "description": "Download the specified file of the artifact version in team as guest as zip", + "operationId": "downloadArtifactFileInTeamAsGuestAsZip", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download artifact file in team as guest as zip", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/signature": { + "get": { + "description": "Request to retrieve a pre-signed Download URL for the signature of an artifact version as a guest.", + "operationId": "getArtifactVersionSignatureAsGuest_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "ArtifactSigning" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip": { + "get": { + "deprecated": true, + "description": "Download all files of a team artifact in a zip as guest", + "operationId": "downloadAllFilesInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Download all files of a team artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifact-type}/{org-name}/{team-name}/{artifact-name}/versions/{version-id}/zip/download": { + "get": { + "deprecated": true, + "description": "Direct download all files of a team artifact in a zip as guest", + "operationId": "directDownloadAllFilesInTeamAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "binary", + "type": "string" + } + }, + "application/zip": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Direct download all files of a team artifact in a zip as guest", + "tags": [ + "Artifact Version Files" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{artifactName}/playground": { + "get": { + "deprecated": true, + "description": "Get AI Playground for public model", + "operationId": "getPublicModelAIPlayground", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{artifactName}/spec": { + "get": { + "description": "Get AI Playground for public artifactType", + "operationId": "getPublicModelArtifactsSpec", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get AI Playground for public artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/playground": { + "get": { + "deprecated": true, + "description": "Get AI Playground for public model", + "operationId": "getPublicModelAIPlayground_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{artifactType}/{orgName}/{teamName}/{artifactName}/spec": { + "get": { + "description": "Get AI Playground for public artifactType", + "operationId": "getPublicModelArtifactsSpec_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "orgName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "teamName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifactType", + "required": true, + "schema": { + "enum": [ + "models", + "helm-charts", + "endpoints", + "agents", + "blueprints", + "apis", + "playbooks", + "skills" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "artifactName", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AIPlaygroundResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "Get AI Playground for public artifactType", + "tags": [ + "AIPlayground" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{type}/org/{org}/team/{team}/{name}/{version}/files": { + "get": { + "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", + "operationId": "downloadAllArtifactFilesAsGuest_1", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "File path", + "in": "query", + "name": "path", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [] + } + }, + "/v1/{type}/org/{org}/{name}/{version}/files": { + "get": { + "description": "Returns pre-signed download URLs for every file of a public artifact version, allowing unauthenticated guest clients to download the version's contents.", + "operationId": "downloadAllArtifactFilesAsGuest", + "parameters": [ + { + "description": "Artifact type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "File path", + "in": "query", + "name": "path", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Get redirect URL", + "in": "query", + "name": "redirect", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "summary": "As a guest provide a list of presigned urls for the download of all files belonging to a public artifact version", + "tags": [ + "Artifact File" + ], + "x-ssa-scopes": [] + } + } + }, + "servers": [ + { + "description": "Generated server url - production", + "url": "https://models.ngc.nvidia.com", + "x-internal": true + } + ], + "tags": [ + { + "description": "Artifact file checksum verification and commit endpoints", + "name": "ArtifactChecksum" + }, + { + "description": "Artifact-level overrides for cloud deployment parameters", + "name": "Artifact deployment parameters" + }, + { + "description": "Artifact signing and signature verification", + "name": "ArtifactSigning" + }, + { + "description": "Publish artifacts to the NGC catalog", + "name": "Publish" + }, + { + "description": "Artifact (resource, model, helm chart) Version endpoints", + "name": "Artifact Versions" + }, + { + "description": "App-to-artifact associations", + "name": "Apps" + }, + { + "description": "NIM profile metadata registration (placeholder)", + "name": "NIM Metadata" + }, + { + "description": "Metadata describing cloud deployment parameter schemas", + "name": "Deployment parameters meta" + }, + { + "description": "AI Playground demo metadata endpoints", + "name": "AIPlayground" + }, + { + "description": "Collections endpoints", + "name": "Collections" + }, + { + "description": "Model endpoints", + "name": "Models" + }, + { + "description": "Default CSP-level cloud deployment parameters", + "name": "Cloud service provider deployment parameters" + }, + { + "description": "Service health checks", + "name": "Health" + }, + { + "description": "Model endpoints", + "name": "Model Version Files" + }, + { + "description": "Artifact (resource, model, helm chart) endpoints", + "name": "Artifacts" + }, + { + "description": "Resources endpoints, previously known as 'recipes'", + "name": "Resources" + }, + { + "description": "Malware scan status for artifact files", + "name": "MalwareScan" + }, + { + "description": "Asynchronous artifact-registry workflow status endpoints", + "name": "Workflows" + }, + { + "description": "GPU metadata lookup by PCI identifier", + "name": "GpuByPci" + }, + { + "description": "Helm chart version management", + "name": "Helm Charts" + }, + { + "description": "Cloud service provider registry entries", + "name": "Cloud service providers" + }, + { + "description": "Artifact (resource, model, helm chart) Version File endpoints", + "name": "Artifact Version Files" + }, + { + "description": "Customer-managed encryption keys for artifact storage", + "name": "Encryption Keys" + }, + { + "description": "Resource and Model File endpoints", + "name": "Artifact File" + }, + { + "description": "Resource Versions endpoints, previously known as 'recipes'", + "name": "Resource Versions" + }, + { + "description": "Resource Version File endpoints, previously known as 'recipes'", + "name": "Resource Version Files endpoints" + }, + { + "description": "Model endpoints", + "name": "Model Version" + }, + { + "description": "NSPECT-LOEJ-50BP", + "name": "nspect_id" + } + ] +} diff --git a/provider-dev/downloaded/ngc_sdk_schemas.json b/provider-dev/downloaded/ngc_sdk_schemas.json new file mode 100644 index 0000000..dc64e17 --- /dev/null +++ b/provider-dev/downloaded/ngc_sdk_schemas.json @@ -0,0 +1,4852 @@ +{ + "package": "ngcsdk", + "version": "4.36.6", + "wheel": "ngcsdk-4.36.6-py3-none-any.whl", + "url": "https://files.pythonhosted.org/packages/3c/cf/e4901fd5a50621d3f058d0ba4f732651a86d672fb76b7a404473b2b23ac1/ngcsdk-4.36.6-py3-none-any.whl", + "sha256": "8cf4ce3bd071b3d2e24d40f2c66abc2c2b49022b53d400a2eb9fe6018fe3f343", + "packages": [ + "registry/data/model/" + ], + "classes": 149, + "enumModulesSkipped": [ + "AccessTypeEnum", + "ApplicationType", + "ArtifactFileCommitType", + "ArtifactTypeEnum", + "AssetCdnProviderTypeEnum", + "AssetStatusTypeEnum", + "AssetStorageTypeEnum", + "CollectionCategoryType", + "CollectionOperationType", + "FrameworkType", + "MalwareScanStatusEnum", + "ModelFormatType", + "PolicyEnum", + "PrecisionType", + "ReleaseTypeEnum", + "SortOrderEnum", + "StatusCode", + "VersionStatusEnum" + ], + "schemas": { + "AIFoundationModel": { + "type": "object", + "description": "Get AI Playground Response", + "properties": { + "artifactName": { + "type": "string", + "description": "Unique name of the model" + }, + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "namespace": { + "type": "string", + "description": "org/team of the model" + }, + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "AIPlaygroundCreateRequest": { + "type": "object", + "description": "Request to create a new AI Playground config", + "properties": { + "artifactName": { + "type": "string", + "description": "Unique name of the model" + }, + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + } + } + }, + "AIPlaygroundResponse": { + "type": "object", + "description": "Request to fetch an AI Playground config", + "properties": { + "artifactName": { + "type": "string", + "description": "Unique name of the model" + }, + "artifactType": { + "type": "string", + "description": "ArtifactTypeEnum of the artifact" + }, + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "namespace": { + "type": "string", + "description": "org/team of the model" + }, + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "AIPlaygroundUpdateRequest": { + "type": "object", + "description": "Request to update an AI Playground config", + "properties": { + "attributes": { + "type": "string", + "description": "Metadata json string" + }, + "nvcfFunctionId": { + "type": "string", + "description": "NVCF function id for the model playground" + }, + "openAPISpec": { + "type": "string", + "description": "OpenAPI specification for this model" + } + } + }, + "AcceptArtifactLicenseRequest": { + "type": "object", + "description": "Request body to accept an org-scoped artifact license.", + "properties": { + "licenseId": { + "type": "string", + "description": "License identifier to accept (must match a licenseId from the \n artifact's published licenseTerms)." + }, + "licenseVersion": { + "type": "string", + "description": "License version to accept (must match licenseVersion for that \n license on the artifact)." + } + } + }, + "Artifact": { + "type": "object", + "description": "Artifact object", + "properties": { + "accessType": { + "type": "string" + }, + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "bias": { + "type": "string", + "description": "Text describing bias in the artifact" + }, + "builtBy": { + "type": "string", + "description": "Organization that built the helm chart" + }, + "canGuestDownload": { + "type": "boolean", + "description": "Indicates if a guest user can download" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the helm chart" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "encryptionKeyId": { + "type": "string", + "description": "ID of the customer managed encryption key associated with this\n artifact" + }, + "explainability": { + "type": "string", + "description": "Text describing the explainability for this artifact" + }, + "hasSignedVersion": { + "type": "boolean", + "description": "Indicates if the artifact has any signed versions" + }, + "isFavourite": { + "type": "boolean", + "description": "Flag indicating if helm chart is user's favorite" + }, + "isPublic": { + "type": "boolean", + "description": "Determines if this helm chart is publicly accessible" + }, + "isReadOnly": { + "type": "boolean", + "description": "indicate if current user has read only permissions" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "latestVersionId": { + "type": "string", + "description": "ID of the latest version" + }, + "latestVersionSizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size of the latest version in bytes" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "name": { + "type": "string", + "description": "Unique name of the helm chart" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the helm chart belongs to" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version" + }, + "policyLabels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "list of policy labels on the artifact" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this artifact" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "publisher": { + "type": "string", + "description": "Organization that published this helm chart" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the artifact" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the helm chart" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the helm chart belongs to" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "ArtifactAttribute": { + "type": "object", + "description": "Attribute on the artifact", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "ArtifactCatalogFlags": { + "type": "object", + "description": "Artifact Catalog Flags object", + "properties": { + "canGuestDownload": { + "type": "boolean", + "description": "Indicates if a guest user can download" + }, + "isListedToPublic": { + "type": "boolean", + "description": "Flag indicating if artifact is listed and searchable" + }, + "isPublic": { + "type": "boolean", + "description": "Determines if this artifact is publicly accessible" + } + } + }, + "ArtifactCreateRequest": { + "type": "object", + "description": "Request to create a new artifact", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "builtBy": { + "type": "string", + "description": "organization that built the artifact" + }, + "description": { + "type": "string", + "description": "Description of the artifact" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "name": { + "type": "string", + "description": "Unique name of the artifact" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "publisher": { + "type": "string", + "description": "organization that published the artifact" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the artifact" + } + } + }, + "ArtifactDeploymentParameters": { + "type": "object", + "description": "Artifact Deployment Parameters object", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "x-description": "Deployment CPU Parameters object" + }, + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "x-description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "x-description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "x-description": "Deployment Storage Parameters object" + } + } + }, + "ArtifactDownloadAllRequest": { + "type": "object", + "description": "Request to download all files of an artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "ArtifactDownloadAllResponse": { + "type": "object", + "description": "Response body to download all files of an artifact", + "properties": { + "filepath": { + "type": "array", + "items": { + "type": "string" + }, + "description": "All of the filepath of the artifact" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "sha256_base64": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of base64 encoded sha256 hash of the files" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of presigned urls of download" + } + } + }, + "ArtifactDownloadRequest": { + "type": "object", + "description": "Request to download a single file of an artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "filePath": { + "type": "string", + "description": "The file path of the artifact" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "ArtifactDownloadResponse": { + "type": "object", + "description": "Response body to download a single file of an artifact", + "properties": { + "filepath": { + "type": "string", + "description": "The filepath of the artifact" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "url": { + "type": "string", + "description": "Presigned url for single file download" + } + } + }, + "ArtifactEvent": { + "type": "object", + "description": "This event in the topic means that some change happened to the artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "eventType": { + "type": "string", + "description": "Artifact event type" + }, + "name": { + "type": "string", + "description": "Artifact name" + }, + "namespace": { + "type": "string", + "description": "Artifact namespace" + } + } + }, + "ArtifactFileChecksumToValidate": { + "type": "object", + "description": "Artifact file checksum object in request to validate artifact file chec\n ksum exists or not", + "properties": { + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file" + } + } + }, + "ArtifactFileChecksumValidated": { + "type": "object", + "properties": { + "exists": { + "type": "boolean", + "description": "Boolean to indicate whether sha256 exists or not" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file" + }, + "size": { + "type": "integer", + "format": "int64", + "description": "Size of the artifact file" + } + } + }, + "ArtifactFileCommitMetadata": { + "type": "object", + "properties": { + "commitType": { + "type": "string" + }, + "filePath": { + "type": "string", + "description": "Artifact file path" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file. Required for \n addition and not required for deletion" + } + } + }, + "ArtifactFilesChecksumExistsRequest": { + "type": "object", + "description": "Request to check if files exist by checksum", + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactFileChecksumToValidate" + }, + "description": "An array of file checksums" + } + } + }, + "ArtifactFilesChecksumExistsResponse": { + "type": "object", + "description": "Request to check if file exists by checksum", + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactFileChecksumValidated" + }, + "description": "An array of file checksums and checksum metadata" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ArtifactFilesCommitRequest": { + "type": "object", + "description": "Request to commit the artifact files metadata to database", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type - could be either model or resource" + }, + "baseVersion": { + "type": "string", + "description": "Artifact version that the commit is based on" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactFileCommitMetadata" + }, + "description": "An array of artifact files identified by their base64 encoded\n SHA256 hash" + }, + "name": { + "type": "string", + "description": "Artifact name" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "ArtifactItem": { + "type": "object", + "description": "Artifact item with name and description", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "description": { + "type": "string", + "description": "Description of the artifact" + }, + "displayName": { + "type": "string", + "description": "Display name of the artifact" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + } + } + }, + "ArtifactListResponse": { + "type": "object", + "description": "Response to list artifacts request", + "properties": { + "artifacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Artifact" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ArtifactOwnerDetails": { + "type": "object", + "properties": { + "createdDate": { + "type": "string", + "description": "Version pushed date in ISO-8601 format" + }, + "creatorUserEmail": { + "type": "string", + "description": "Email address of account used to create" + }, + "orgAlternateContact": { + "type": "string", + "description": "Email address of alternate contact for organization the image \n was pushed to" + }, + "orgOwnersEmails": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Email addresses of all owners of organization the image was p\n ushed to" + }, + "pushedByUserEmail": { + "type": "string", + "description": "Email address of account used to create the Version" + }, + "repositoryName": { + "type": "string", + "description": "The repository name" + }, + "updatedDate": { + "type": "string", + "description": "Version update date in ISO-8601 format" + }, + "version": { + "type": "string", + "description": "Version" + } + } + }, + "ArtifactPublishRequest": { + "type": "object", + "description": "Request to publish an artifact", + "properties": { + "accessType": { + "type": "string" + }, + "canGuestPull": { + "type": "boolean" + }, + "canPublicList": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + } + } + }, + "ArtifactResponse": { + "type": "object", + "description": "Response to artifact request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "x-description": "Artifact object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ArtifactUpdateRequest": { + "type": "object", + "description": "Request to update a artifact", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "builtBy": { + "type": "string", + "description": "organization that built the artifact" + }, + "description": { + "type": "string", + "description": "Description of the artifact" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "publisher": { + "type": "string", + "description": "organization that published the artifact" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the artifact" + } + } + }, + "ArtifactVersion": { + "type": "object", + "description": "Artifact version object", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "createdByUser": { + "type": "string", + "description": "Id of the user who created this version" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "description": "Custom Metrics key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the version" + }, + "id": { + "type": "string", + "description": "Unique ID of the version" + }, + "isSigned": { + "type": "boolean", + "description": "Indicates if the version is signed" + }, + "malwareScanDate": { + "type": "string", + "description": "Scan date in ISO-8601 format" + }, + "malwareScanStatus": { + "type": "string", + "description": "Malware scan status" + }, + "policy": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Policy label to be added to a specific version" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + }, + "status": { + "type": "string", + "description": "Version status" + }, + "storageVersion": { + "type": "string", + "description": "The storage version i.e. the format the file and their content\n s are persisted in in object store. Possible values include V1\n - for legacy artifact versions with files, V2 - for new artifact vers\n ions with blob registry, `` - for artifact versions without any files." + }, + "totalFileCount": { + "type": "integer", + "format": "int64", + "description": "Total file count" + }, + "totalSizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Total size of the version in bytes" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "ArtifactVersionCreateRequest": { + "type": "object", + "description": "Request to create a new artifact version", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the artifact version" + }, + "id": { + "type": "string", + "description": "Unique ID of the version" + } + } + }, + "ArtifactVersionFileListResponse": { + "type": "object", + "description": "Response to list files for artifact version request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "x-description": "Artifact object" + }, + "artifactFiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/File" + } + }, + "artifactVersion": { + "$ref": "#/components/schemas/ArtifactVersion", + "x-description": "Artifact version object" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ArtifactVersionListResponse": { + "type": "object", + "description": "Response to list artifact versions request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "x-description": "Artifact object" + }, + "artifactVersions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactVersion" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ArtifactVersionResponse": { + "type": "object", + "description": "Response to artifact version request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/Artifact", + "x-description": "Artifact object" + }, + "artifactVersion": { + "$ref": "#/components/schemas/ArtifactVersion", + "x-description": "Artifact version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ArtifactVersionUpdateRequest": { + "type": "object", + "description": "Request to create a new artifact version", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the artifact version" + }, + "status": { + "type": "string", + "description": "Version status" + } + } + }, + "Asset": { + "type": "object", + "description": "Asset object", + "properties": { + "artifactName": { + "type": "string", + "description": "Artifact name that asset belongs to" + }, + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "cdnProvider": { + "type": "string", + "description": "Asset content delivery network provider t\n ype" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "fileName": { + "type": "string", + "description": "Asset file name" + }, + "hostedAt": { + "type": "array", + "items": { + "type": "string" + }, + "description": "URLs where the asset is hosted" + }, + "mimeType": { + "type": "string", + "description": "Asset mime type" + }, + "name": { + "type": "string", + "description": "Unique name of the asset" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the collection belongs to" + }, + "originUrl": { + "type": "string", + "description": "Asset origin URL" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version" + }, + "sizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size in bytes" + }, + "status": { + "type": "string", + "description": "Asset status type" + }, + "storageProvider": { + "type": "string", + "description": "Asset storage provider type" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the collection belongs to" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + }, + "uploadUrl": { + "type": "string", + "description": "Asset upload URL" + } + } + }, + "AssetResponse": { + "type": "object", + "description": "Response to asset request", + "properties": { + "asset": { + "$ref": "#/components/schemas/Asset", + "x-description": "Asset object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "AssetSimplified": { + "type": "object", + "description": "Asset object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the asset" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the asset belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the asset belongs to" + } + } + }, + "AssetStorageEvent": { + "type": "object", + "description": "This event in the topic means that some change happened to the asset st\n orage object", + "properties": { + "asset": { + "$ref": "#/components/schemas/Asset", + "x-description": "Asset object" + }, + "eventType": { + "type": "string", + "description": "Asset storage event type" + }, + "timestamp": { + "type": "string", + "description": "Timestamp in ISO-8601 format" + } + } + }, + "AssetUpdateRequest": { + "type": "object", + "description": "Request to update an asset", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "fileName": { + "type": "string", + "description": "Asset file name" + }, + "mimeType": { + "type": "string", + "description": "MIME type" + }, + "originUrl": { + "type": "string", + "description": "Asset origin URL" + }, + "owner": { + "type": "string", + "description": "Owner of asset" + }, + "sizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size in bytes" + } + } + }, + "AsyncCloneArtifactVersionFilesRequest": { + "type": "object", + "description": "Request to asynchronously clone artifact version files. Artifact type, \n target artifact name, version, org, and team are provided via URL path\n parameters.", + "properties": { + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "x-description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "type": "boolean", + "description": "Allow the cloned model version to continue to be updated with\n files. A follow up commit is needed to update status to 'Uplo\n ad Complete'." + } + } + }, + "BlobMetadata": { + "type": "object", + "description": "Blob metadata - its size, dek-metadata (if applicable)", + "properties": { + "blobSize": { + "type": "integer", + "format": "int64", + "description": "BLOB size" + }, + "dekMetadata": { + "type": "string", + "description": "DEK metadata of the blob" + } + } + }, + "CatalogArtifactMetadata": { + "type": "object", + "properties": { + "accessType": { + "type": "string" + }, + "canGuestPull": { + "type": "boolean", + "description": "Guest users can download from the Catalog registry" + }, + "canPublicList": { + "type": "boolean", + "description": "Publicly listed/searchable in the Catalog registry" + }, + "isPublic": { + "type": "boolean", + "description": "Publicly available in the Catalog registry" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CatalogLicenseMetadata" + }, + "description": "License information for the model" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + } + } + }, + "CatalogArtifactVersionMetadata": { + "type": "object", + "properties": { + "accessType": { + "type": "string" + }, + "canGuestPull": { + "type": "boolean", + "description": "Guest users can download from the Catalog registry" + }, + "canPublicList": { + "type": "boolean", + "description": "Publicly listed/searchable in the Catalog registry" + }, + "isPublic": { + "type": "boolean", + "description": "Publicly available in the Catalog registry" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + } + } + }, + "CatalogLicenseMetadata": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "licenseId": { + "type": "string", + "description": "License ID" + }, + "licenseVersion": { + "type": "string", + "description": "License version ID" + }, + "needsAcceptance": { + "type": "boolean", + "description": "Indicator if user needs to accept this license" + } + } + }, + "CloneArtifactFilesStatusResponse": { + "type": "object", + "description": "Progress of cloning artifact version files", + "properties": { + "filesCopied": { + "type": "integer", + "format": "int64", + "description": "Number of files copied" + }, + "percentageCloned": { + "type": "number", + "description": "Percentage of files cloned" + }, + "sizeCopied": { + "type": "integer", + "format": "int64", + "description": "Combined file size copied" + }, + "totalFiles": { + "type": "integer", + "format": "int64", + "description": "Total files at source" + }, + "totalSize": { + "type": "integer", + "format": "int64", + "description": "Combined file size at source" + } + } + }, + "CloneArtifactVersionFilesRequest": { + "type": "object", + "description": "Request to clone artifact version files", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "sourceArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "x-description": "Cloneable Artifact Parameters object" + }, + "targetArtifact": { + "$ref": "#/components/schemas/CloneableArtifact", + "x-description": "Cloneable Artifact Parameters object" + }, + "uploadPending": { + "type": "boolean", + "description": "Allow the cloned model version to continue to be updated with\n files. A follow up commit is needed to update status to 'Uplo\n ad Complete'." + } + } + }, + "CloneStatus": { + "type": "object", + "description": "Progress of cloning artifact version files", + "properties": { + "filesCopied": { + "type": "integer", + "format": "int64", + "description": "Number of files copied" + }, + "internalCheckpointStateCleanup": { + "type": "string", + "description": "Internal-only: When the async c\n lone workflow is completed, this field shows if the internal c\n heckpoint files were successfully cleaned up in the storage - CLEAN if\n no objects remain (cleanup succeeded or unused), NOT_EMPTY if objects\n remain, ERROR if verification could not be performed. Omitted when no\n t applicable." + }, + "percentageFilesCloned": { + "type": "number", + "description": "Percentage of files cloned" + }, + "sizeCopied": { + "type": "integer", + "format": "int64", + "description": "Combined file size copied" + }, + "totalFiles": { + "type": "integer", + "format": "int64", + "description": "Total files at source" + }, + "totalSize": { + "type": "integer", + "format": "int64", + "description": "Combined file size at source" + } + } + }, + "CloneableArtifact": { + "type": "object", + "description": "Cloneable Artifact Parameters object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the artifact" + }, + "org": { + "type": "string", + "description": "Name of the org that the artifact belongs to" + }, + "team": { + "type": "string", + "description": "Name of the team that the artifact belongs to" + }, + "version": { + "type": "string", + "description": "ID of the version or tag" + } + } + }, + "CloudServiceProvider": { + "type": "object", + "description": "Cloud Service Provider object", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the Cloud Service Provider" + }, + "displayName": { + "type": "string", + "description": "Display name of the Cloud Service Provider" + }, + "isDeployable": { + "type": "boolean", + "description": "Determines if this Cloud Service Provider can be used to depl\n oy artifacts" + }, + "isEnabled": { + "type": "boolean", + "description": "Determines if this Cloud Service Provider is enabled" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Labels that are associated with the Cloud Service Provider" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "name": { + "type": "string", + "description": "Unique name of the Cloud Service Provider" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "CloudServiceProviderCreateRequest": { + "type": "object", + "description": "Request to create a new Cloud Service Provider", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the Cloud Service Provider" + }, + "displayName": { + "type": "string", + "description": "Display name of the Cloud Service Provider" + }, + "isEnabled": { + "type": "boolean", + "description": "Determines if this Cloud Service Provider is enabled" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Labels that are associated with the Cloud Service Provider" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "name": { + "type": "string", + "description": "Unique name of the Cloud Service Provider" + } + } + }, + "CloudServiceProviderListResponse": { + "type": "object", + "description": "Response to list Cloud Service Providers request", + "properties": { + "cloudServiceProviders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CloudServiceProvider" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "CloudServiceProviderUpdateRequest": { + "type": "object", + "description": "Request to update existing Cloud Service Provider", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the Cloud Service Provider" + }, + "displayName": { + "type": "string", + "description": "Display name of the Cloud Service Provider" + }, + "isEnabled": { + "type": "boolean", + "description": "Determines if this Cloud Service Provider is enabled" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Labels that are associated with the Cloud Service Provider" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + } + } + }, + "Collection": { + "type": "object", + "description": "Collection object", + "properties": { + "accessType": { + "type": "string" + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "builtBy": { + "type": "string", + "description": "Organization that built the collection" + }, + "canGuestDownload": { + "type": "boolean", + "description": "Indicates if a guest user can download" + }, + "category": { + "type": "string" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the collection" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "isPublic": { + "type": "boolean", + "description": "Determines if this collection is publicly accessible" + }, + "isReadOnly": { + "type": "boolean", + "description": "indicate if current user has read only permissions" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "name": { + "type": "string", + "description": "Unique name of the collection" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the collection belongs to" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version" + }, + "policyLabels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "list of policy labels on the collection" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "publisher": { + "type": "string", + "description": "Organization that published this collection" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the collection" + }, + "size": { + "type": "integer", + "format": "int64", + "description": "Total count of collection items" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the collection belongs to" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "CollectionCreateRequest": { + "type": "object", + "description": "Request to create a new collection", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "builtBy": { + "type": "string", + "description": "organization that built the collection" + }, + "category": { + "type": "string" + }, + "description": { + "type": "string", + "description": "Description of the collection" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "name": { + "type": "string", + "description": "Unique name of the collection" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this collection" + }, + "publisher": { + "type": "string", + "description": "organization that published the collection" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the collection" + } + } + }, + "CollectionListResponse": { + "type": "object", + "description": "Response to list collections request", + "properties": { + "collections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Collection" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "CollectionOperation": { + "type": "object", + "description": "Collection operation object", + "properties": { + "operation": { + "type": "string", + "description": "Collection operation" + }, + "path": { + "type": "string", + "description": "Path to a collection item in a scoped format" + } + } + }, + "CollectionPatchRequest": { + "type": "object", + "description": "Request to patch a collection", + "properties": { + "operations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionOperation" + } + } + } + }, + "CollectionPublishRequest": { + "type": "object", + "description": "Request to publish a collection", + "properties": { + "accessType": { + "type": "string" + }, + "canGuestPull": { + "type": "boolean" + }, + "canPublicList": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + } + } + }, + "CollectionResponse": { + "type": "object", + "description": "Response to create collection request", + "properties": { + "collection": { + "$ref": "#/components/schemas/Collection", + "x-description": "Collection object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "CollectionSimplified": { + "type": "object", + "description": "Collection object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the collection" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the collection belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the collection belongs to" + } + } + }, + "CollectionUpdateRequest": { + "type": "object", + "description": "Request to update a collection", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "Attribute key/value pairs" + }, + "builtBy": { + "type": "string", + "description": "organization that built the collection" + }, + "category": { + "type": "string" + }, + "description": { + "type": "string", + "description": "Description of the collection" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this collection" + }, + "publisher": { + "type": "string", + "description": "organization that published the collection" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the collection" + } + } + }, + "ConfiguredLicenseTerm": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "generatedHtml": { + "type": "string", + "description": "Generated html" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseTag" + } + } + } + }, + "ConfiguredLicenseTerms": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "download": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "x-description": "License information for the artifact" + }, + "hosting": { + "$ref": "#/components/schemas/ConfiguredLicenseTerm", + "x-description": "License information for the artifact" + } + } + }, + "CountableResource": { + "type": "object", + "description": "Countable Resource object", + "properties": { + "defaultValue": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Default value. Please use actual CloudServiceProv\n ider values instead" + }, + "maxValue": { + "type": "integer", + "format": "int64", + "description": "Maximum value" + }, + "minValue": { + "type": "integer", + "format": "int64", + "description": "Minimum value" + } + } + }, + "CustomMetric": { + "type": "object", + "description": "Custom metrics", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "CustomMetricGroup": { + "type": "object", + "description": "Defines the group of custom metrics.", + "properties": { + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetric" + }, + "description": "Custom Metric key/value pairs" + }, + "name": { + "type": "string" + } + } + }, + "Dataset": { + "type": "object", + "properties": { + "license": { + "type": "string", + "description": "License of the dataset" + }, + "link": { + "type": "string", + "description": "Link to the dataset" + }, + "name": { + "type": "string", + "description": "Name of the dataset" + } + } + }, + "DeploymentArtifactParameters": { + "type": "object", + "description": "Deployment Artifact Parameters object", + "properties": { + "artifactType": { + "type": "string", + "description": "Artifact type" + }, + "displayName": { + "type": "string", + "description": "Display name of the artifact" + }, + "filePath": { + "type": "string", + "description": "Path to a file in an artifact version" + }, + "name": { + "type": "string", + "description": "Unique name of the artifact" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the artifact belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the artifact belongs to" + }, + "versionId": { + "type": "string", + "description": "ID of the version or tag" + } + } + }, + "DeploymentCpuParameters": { + "type": "object", + "description": "Deployment CPU Parameters object", + "properties": { + "count": { + "type": "integer", + "format": "int64", + "description": "Total count of CPUs" + } + } + }, + "DeploymentCpuParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment CPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "x-description": "Countable Resource object" + } + } + }, + "DeploymentGpuParameters": { + "type": "object", + "description": "Deployment GPU Parameters object", + "properties": { + "count": { + "type": "integer", + "format": "int64", + "description": "Total count of GPUs" + }, + "type": { + "type": "string", + "description": "GPU Type" + } + } + }, + "DeploymentGpuParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment GPU Parameters object", + "properties": { + "count": { + "$ref": "#/components/schemas/CountableResource", + "x-description": "Countable Resource object" + }, + "type": { + "$ref": "#/components/schemas/EnumerableResource", + "x-description": "Enumerable Resource object" + } + } + }, + "DeploymentMemoryParameters": { + "type": "object", + "description": "Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "type": "integer", + "format": "int64", + "description": "Capacity in GB" + } + } + }, + "DeploymentMemoryParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment Memory Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "x-description": "Countable Resource object" + } + } + }, + "DeploymentParameters": { + "type": "object", + "description": "Deployment Artifact Parameters object", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "x-description": "Deployment CPU Parameters object" + }, + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "x-description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "x-description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "x-description": "Deployment Storage Parameters object" + } + } + }, + "DeploymentParametersCreateRequest": { + "type": "object", + "description": "Request to create a new deployment parameters", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "x-description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "x-description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "x-description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "x-description": "Deployment Storage Parameters object" + } + } + }, + "DeploymentParametersListResponse": { + "type": "object", + "description": "Response to list deployment parameters request", + "properties": { + "artifact": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "deploymentParameters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeploymentParameters" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "DeploymentParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment Parameters object", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "x-description": "Cloud Service Provider Deployment CPU \n Parameters object" + }, + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "x-description": "Cloud Service Provider Deployment GPU \n Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "x-description": "Cloud Service Provider Deployment M\n emory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "x-description": "Cloud Service Provider Deployment \n Storage Parameters object" + } + } + }, + "DeploymentParametersMetaCreateRequest": { + "type": "object", + "description": "Request to create a new Cloud Service Provider deployment parameters", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "x-description": "Cloud Service Provider Deployment CPU \n Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "x-description": "Cloud Service Provider Deployment GPU \n Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "x-description": "Cloud Service Provider Deployment M\n emory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "x-description": "Cloud Service Provider Deployment \n Storage Parameters object" + } + } + }, + "DeploymentParametersMetaListResponse": { + "type": "object", + "description": "Response to list deployment parameters metadata request", + "properties": { + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "deploymentParametersMetas": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeploymentParametersMeta" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "DeploymentParametersMetaUpdateRequest": { + "type": "object", + "description": "Request to create a new Cloud Service Provider deployment parameters me\n tadata", + "properties": { + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParametersMeta", + "x-description": "Cloud Service Provider Deployment CPU \n Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParametersMeta", + "x-description": "Cloud Service Provider Deployment GPU \n Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParametersMeta", + "x-description": "Cloud Service Provider Deployment M\n emory Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParametersMeta", + "x-description": "Cloud Service Provider Deployment \n Storage Parameters object" + } + } + }, + "DeploymentParametersUpdateRequest": { + "type": "object", + "description": "Request to update existing deployment parameters", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "x-description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "x-description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "x-description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "x-description": "Deployment Storage Parameters object" + } + } + }, + "DeploymentStorageParameters": { + "type": "object", + "description": "Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "type": "integer", + "format": "int64", + "description": "Capacity in GB" + } + } + }, + "DeploymentStorageParametersMeta": { + "type": "object", + "description": "Cloud Service Provider Deployment Storage Parameters object", + "properties": { + "capacityInGB": { + "$ref": "#/components/schemas/CountableResource", + "x-description": "Countable Resource object" + } + } + }, + "DeploymentUrlCreateRequest": { + "type": "object", + "description": "Request to create a new deployment url", + "properties": { + "container": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "cpu": { + "$ref": "#/components/schemas/DeploymentCpuParameters", + "x-description": "Deployment CPU Parameters object" + }, + "gpu": { + "$ref": "#/components/schemas/DeploymentGpuParameters", + "x-description": "Deployment GPU Parameters object" + }, + "memory": { + "$ref": "#/components/schemas/DeploymentMemoryParameters", + "x-description": "Deployment Memory Parameters object" + }, + "model": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "resource": { + "$ref": "#/components/schemas/DeploymentArtifactParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "storage": { + "$ref": "#/components/schemas/DeploymentStorageParameters", + "x-description": "Deployment Storage Parameters object" + } + } + }, + "DeploymentUrlResponse": { + "type": "object", + "description": "Response to create a new deployment url", + "properties": { + "csp": { + "type": "string", + "description": "Cloud Service Provider name" + }, + "deploymentParameters": { + "$ref": "#/components/schemas/DeploymentParameters", + "x-description": "Deployment Artifact Parameters object" + }, + "deploymentUrl": { + "type": "string", + "description": "Deployment URL" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "EncryptionKey": { + "type": "object", + "description": "Customer Managed Key shard configuration for the model", + "properties": { + "description": { + "type": "string", + "description": "Description for a new customer key shard" + }, + "encryptionKeyId": { + "type": "string", + "description": "ID of the existing customer key shard to use" + }, + "useExistingKey": { + "type": "boolean", + "description": "Whether to use an existing customer key shard or should a new\n one be created" + } + } + }, + "EnumerableResource": { + "type": "object", + "description": "Enumerable Resource object", + "properties": { + "defaultItemName": { + "type": "string", + "description": "Deprecated: Default item name. Please use actual CloudServiceP\n rovider values instead" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumerableResourceItem" + } + } + } + }, + "EnumerableResourceItem": { + "type": "object", + "description": "Enumerable Resource Item object", + "properties": { + "displayName": { + "type": "string", + "description": "Display name" + }, + "logo": { + "type": "string", + "description": "Logo URL" + }, + "name": { + "type": "string", + "description": "Name" + } + } + }, + "File": { + "type": "object", + "description": "File object", + "properties": { + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the file" + }, + "path": { + "type": "string", + "description": "Relative file path from the root of the object" + }, + "sizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size of the file in bytes" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "GpuByPciCreateRequest": { + "type": "object", + "description": "Request to create a new GPU by PCI ID mapping", + "properties": { + "cudaMajorVersion": { + "type": "string", + "description": "CUDA major version" + }, + "cudaMinorVersion": { + "type": "string", + "description": "CUDA minor version" + }, + "displayName": { + "type": "string", + "description": "Display name for the GPU" + }, + "formFactor": { + "type": "string", + "description": "GPU form factor" + }, + "gpuCounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Set of GPU counts (tinyint range)" + }, + "labelName": { + "type": "string", + "description": "Label name for the GPU" + }, + "memorySizeGb": { + "type": "integer", + "description": "Memory size in GB (smallint range)" + }, + "pciDeviceId": { + "type": "string", + "description": "PCI Device ID" + }, + "pciSubsystemDeviceId": { + "type": "string", + "description": "PCI Subsystem Device ID" + }, + "pciVendorId": { + "type": "string", + "description": "PCI Vendor ID" + } + } + }, + "GpuByPciResponse": { + "type": "object", + "description": "Response for GPU by PCI ID lookup", + "properties": { + "createdAt": { + "type": "string", + "description": "Creation timestamp" + }, + "cudaMajorVersion": { + "type": "string", + "description": "CUDA major version" + }, + "cudaMinorVersion": { + "type": "string", + "description": "CUDA minor version" + }, + "displayName": { + "type": "string", + "description": "Display name for the GPU" + }, + "formFactor": { + "type": "string", + "description": "GPU form factor" + }, + "gpuCounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Set of GPU counts (tinyint range)" + }, + "labelName": { + "type": "string", + "description": "Label name for the GPU" + }, + "memorySizeGb": { + "type": "integer", + "description": "Memory size in GB (smallint range)" + }, + "pciDeviceId": { + "type": "string", + "description": "PCI Device ID" + }, + "pciSubsystemDeviceId": { + "type": "string", + "description": "PCI Subsystem Device ID" + }, + "pciVendorId": { + "type": "string", + "description": "PCI Vendor ID" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "updatedAt": { + "type": "string", + "description": "Last update timestamp" + } + } + }, + "GpuByPciUpdateRequest": { + "type": "object", + "description": "Request to update a GPU by PCI ID mapping", + "properties": { + "cudaMajorVersion": { + "type": "string", + "description": "CUDA major version" + }, + "cudaMinorVersion": { + "type": "string", + "description": "CUDA minor version" + }, + "displayName": { + "type": "string", + "description": "Display name for the GPU" + }, + "formFactor": { + "type": "string", + "description": "GPU form factor" + }, + "gpuCounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Set of GPU counts (tinyint range)" + }, + "labelName": { + "type": "string", + "description": "Label name for the GPU" + }, + "memorySizeGb": { + "type": "integer", + "description": "Memory size in GB (smallint range)" + } + } + }, + "Health": { + "type": "object", + "description": "object that describes health of the service", + "properties": { + "healthCode": { + "type": "string", + "description": "Enum that describes health of the service" + }, + "healthCodeDescription": { + "type": "string", + "description": "Human readable description" + }, + "metaData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetaData" + } + } + } + }, + "HealthResponse": { + "type": "object", + "description": "This API is invoked by monitoring tools, other services and infrastruct\n ure to retrieve health status the targeted service, this is unprotecte\n d method", + "properties": { + "health": { + "$ref": "#/components/schemas/Health", + "x-description": "object that describes health of the service" + } + } + }, + "HelmApiErrorResponse": { + "type": "object", + "description": "Helm API error response", + "properties": { + "error": { + "type": "string" + } + } + }, + "HelmChartDependency": { + "type": "object", + "description": "Helm chart dependency object", + "properties": { + "name": { + "type": "string", + "description": "The name of the chart (example: nginx)" + }, + "repository": { + "type": "string", + "description": "The repository URL (example: https://example.com/charts)" + }, + "version": { + "type": "string", + "description": "The version of the chart (example: 1.2.3)" + } + } + }, + "HelmChartMaintainer": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "The maintainer's email (optional for each maintainer)" + }, + "name": { + "type": "string", + "description": "The maintainer's name (required for each maintainer)" + }, + "url": { + "type": "string", + "description": "A URL for the maintainer (optional for each maintainer)" + } + } + }, + "HelmChartVersion": { + "type": "object", + "description": "Helm chart version object", + "properties": { + "apiVersion": { + "type": "string", + "description": "The chart API version (required)" + }, + "appVersion": { + "type": "string", + "description": "The version of the app that this contains (optional). This nee\n dn't be SemVer." + }, + "dependencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HelmChartDependency" + }, + "description": "A list of the chart requirements (optional)" + }, + "deprecated": { + "type": "boolean", + "description": "Whether this chart is deprecated (optional, boolean)" + }, + "description": { + "type": "string", + "description": "A single-sentence description of this project (optional)" + }, + "home": { + "type": "string", + "description": "The URL of this project's home page (optional)" + }, + "icon": { + "type": "string", + "description": "A URL to an SVG or PNG image to be used as an icon (optional)." + }, + "keywords": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of keywords about this project (optional)" + }, + "kubeVersion": { + "type": "string", + "description": "A SemVer range of compatible Kubernetes versions (optional)" + }, + "maintainers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HelmChartMaintainer" + } + }, + "name": { + "type": "string", + "description": "The name of the chart (required)" + }, + "sources": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of URLs to source code for this project (optional)" + }, + "type": { + "type": "string", + "description": "It is the type of chart (optional)" + }, + "version": { + "type": "string", + "description": "A SemVer 2 version (required)" + } + } + }, + "HelmChartVersionCreateResponse": { + "type": "object", + "description": "Helm chart version creation response", + "properties": { + "saved": { + "type": "boolean" + } + } + }, + "KeyArtifactListResponse": { + "type": "object", + "description": "Response containing a list of artifacts associated with a key", + "properties": { + "artifacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactItem" + }, + "description": "List of artifacts associated with the key" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "KeyItem": { + "type": "object", + "description": "Key item with ID and create timestamp string", + "properties": { + "created": { + "type": "string", + "description": "The creation timestamp of the key item in ISO-8601 format. For\n mat: YYYY-MM-DDTHH:mm:ss.sssZ." + }, + "description": { + "type": "string", + "description": "Description of the encryption key" + }, + "encryptionKeyId": { + "type": "string", + "description": "The encryption key identifier in UUID format." + } + } + }, + "KeyListResponse": { + "type": "object", + "description": "Response to list keys request", + "properties": { + "encryptionKeys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyItem" + } + } + } + }, + "LicenseMetadata": { + "type": "object", + "description": "License information for the artifact", + "properties": { + "configuredLicenseTerms": { + "$ref": "#/components/schemas/ConfiguredLicenseTerms", + "x-description": "License information for the artifact" + }, + "governingTerms": { + "type": "string", + "description": "Comprehensive terms and links related to the license" + }, + "licenseId": { + "type": "string", + "description": "License ID" + }, + "licenseVersion": { + "type": "string", + "description": "License version ID" + }, + "needsAcceptance": { + "type": "boolean", + "description": "Indicator if user needs to accept this license" + } + } + }, + "LicenseTag": { + "type": "object", + "description": "License tag information for individual term", + "properties": { + "category": { + "type": "string", + "description": "Category of the tag" + }, + "key": { + "type": "string", + "description": "Key identifier for the tag" + }, + "label": { + "type": "string", + "description": "License Label" + }, + "tag": { + "type": "string", + "description": "License tag name" + }, + "url": { + "type": "string", + "description": "Link to the hosted license" + } + } + }, + "MetaData": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "Model": { + "type": "object", + "description": "Model object", + "properties": { + "accessType": { + "type": "string" + }, + "application": { + "type": "string", + "description": "Application of the model" + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "builtBy": { + "type": "string", + "description": "organization that built the repository" + }, + "canGuestDownload": { + "type": "boolean", + "description": "Indicates if a guest user can download" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the model" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "encryptionKeyId": { + "type": "string", + "description": "ID of the customer managed encryption key associated with this\n artifact" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "framework": { + "type": "string", + "description": "Framework used to train this model" + }, + "hasPlayground": { + "type": "boolean", + "description": "indicate if the Model has AI Playground configured" + }, + "hasSignedVersion": { + "type": "boolean", + "description": "Indicates if the model has any signed versions" + }, + "isFavourite": { + "type": "boolean", + "description": "Flag indicating if model is user's favorite" + }, + "isPlaygroundEnabled": { + "type": "boolean", + "description": "indicate if AI Playground is enabled in the catalog" + }, + "isPublic": { + "type": "boolean", + "description": "Determines if model is publicly accessible" + }, + "isReadOnly": { + "type": "boolean", + "description": "indicate if current user has read only permissions" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "latestVersionGpuModel": { + "type": "string", + "description": "GPU model and memory used for the latest version" + }, + "latestVersionId": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use latestVersionIdStr instead. ID of the \n latest version" + }, + "latestVersionIdStr": { + "type": "string", + "description": "ID of the latest version" + }, + "latestVersionSizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size of the latest version in bytes" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "modelFormat": { + "type": "string", + "description": "Format of the model" + }, + "name": { + "type": "string", + "description": "Unique name of the model" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the model belongs to" + }, + "ownerName": { + "type": "string", + "description": "Name of model's owner" + }, + "policyLabels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "list of policy labels on the artifact" + }, + "precision": { + "type": "string", + "description": "Precision this model was trained with" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "type": "string", + "description": "organization that published the repository" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the model" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the model belongs to" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + }, + "versions": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ModelCreateRequest": { + "type": "object", + "description": "Request to create a new model", + "properties": { + "application": { + "type": "string", + "description": "Application of the model" + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "builtBy": { + "type": "string", + "description": "organization that built the repository" + }, + "description": { + "type": "string", + "description": "Description of the model" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "encryptionKey": { + "$ref": "#/components/schemas/EncryptionKey", + "x-description": "Customer Managed Key shard configuration for the mod\n el" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "framework": { + "type": "string", + "description": "Framework used to train this model" + }, + "hasPlayground": { + "type": "boolean", + "description": "indicate if the Model has AI Playground configured" + }, + "isPlaygroundEnabled": { + "type": "boolean", + "description": "indicate if AI Playground is enabled in the catalog" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "modelFormat": { + "type": "string", + "description": "Format of the model" + }, + "name": { + "type": "string", + "description": "Unique name of the model" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this model" + }, + "precision": { + "type": "string", + "description": "Precision this model was trained with" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "type": "string", + "description": "organization that published the repository" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the model" + } + } + }, + "ModelCreateResponse": { + "type": "object", + "description": "DEPRECATED - use ModelResponse schema", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelFile": { + "type": "object", + "description": "Model file object", + "properties": { + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the file" + }, + "path": { + "type": "string", + "description": "Relative file path from the root of the model" + }, + "sha256_base64": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file" + }, + "sizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size of the file in bytes" + } + } + }, + "ModelListResponse": { + "type": "object", + "description": "Response to list models request", + "properties": { + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Model" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelResponse": { + "type": "object", + "description": "Response to create model request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelSimplified": { + "type": "object", + "description": "Model object", + "properties": { + "name": { + "type": "string", + "description": "Unique name of the model" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the model belongs to" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the model belongs to" + } + } + }, + "ModelUpdateRequest": { + "type": "object", + "description": "Request to create a new model", + "properties": { + "application": { + "type": "string", + "description": "Application of the model" + }, + "bias": { + "type": "string", + "description": "Text describing bias in the model" + }, + "builtBy": { + "type": "string", + "description": "organization that built the repository" + }, + "description": { + "type": "string", + "description": "Description of the model" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "explainability": { + "type": "string", + "description": "Text describing explainability for this model" + }, + "framework": { + "type": "string", + "description": "Framework used to train this model" + }, + "hasPlayground": { + "type": "boolean", + "description": "indicate if the Model has AI Playground configured" + }, + "isPlaygroundEnabled": { + "type": "boolean", + "description": "indicate if AI Playground is enabled in the catalog" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "modelFormat": { + "type": "string", + "description": "Format of the model" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this model" + }, + "precision": { + "type": "string", + "description": "Precision this model was trained with" + }, + "privacy": { + "type": "string", + "description": "Text describing the privacy for this model" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "type": "string", + "description": "organization that published the repository" + }, + "safetyAndSecurity": { + "type": "string", + "description": "Text for describing the safety and security in the model" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the model" + } + } + }, + "ModelVersion": { + "type": "object", + "description": "Model version object", + "properties": { + "accuracyReached": { + "type": "number", + "description": "Accuracy this model reached" + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this model was trained with" + }, + "createdByUser": { + "type": "string", + "description": "Id of the user who created this model" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "description": "Custom Metrics key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the model version" + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use versionId instead. Unique ID of the ve\n rsion" + }, + "isSigned": { + "type": "boolean", + "description": "Indicates if the version is signed" + }, + "malwareScanDate": { + "type": "string", + "description": "Scan date in ISO-8601 format" + }, + "malwareScanStatus": { + "type": "string", + "description": "Malware scan status" + }, + "memoryFootprint": { + "type": "string", + "description": "Model size/memory footprint for inference" + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this model trained" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "x-description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "x-description": "NVCF deployment specification" + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "List of external contents" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version" + }, + "policy": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Policy label to be added to a specific version" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + }, + "status": { + "type": "string", + "description": "Version status" + }, + "storageVersion": { + "type": "string", + "description": "The storage version i.e. the format the file and their content\n s are persisted in in object store. Possible values include V1\n - for legacy artifact versions with files, V2 - for new artifact vers\n ions with blob registry, `` - for artifact versions without any files." + }, + "totalFileCount": { + "type": "integer", + "format": "int64", + "description": "Total file count" + }, + "totalSizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Total size of the model in bytes" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + }, + "versionId": { + "type": "string", + "description": "Unique version id. Please use this instead of 'id'" + } + } + }, + "ModelVersionCreateRequest": { + "type": "object", + "description": "Request to create a new model version", + "properties": { + "accuracyReached": { + "type": "number", + "description": "Accuracy this model reached" + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this model was trained with" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "description": "Custom Metrics key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the model version" + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use version instead. Unique ID of the vers\n ion" + }, + "memoryFootprint": { + "type": "string", + "description": "Model size/memory footprint for inference" + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this model trained" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "x-description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "x-description": "NVCF deployment specification" + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "List of external contents" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version" + }, + "versionId": { + "type": "string", + "description": "Unique version id. Please use this instead of 'id'" + } + } + }, + "ModelVersionCreateResponse": { + "type": "object", + "description": "DEPRECATED - use ModelVersionResponse", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "x-description": "Model version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelVersionFileListResponse": { + "type": "object", + "description": "Response to list files for model version request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "modelFiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelFile" + } + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "x-description": "Model version object" + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelVersionListResponse": { + "type": "object", + "description": "Response to list model versions request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "modelVersions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelVersion" + } + }, + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelVersionResponse": { + "type": "object", + "description": "Response to create a model version request", + "properties": { + "model": { + "$ref": "#/components/schemas/Model", + "x-description": "Model object" + }, + "modelVersion": { + "$ref": "#/components/schemas/ModelVersion", + "x-description": "Model version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "ModelVersionUpdateRequest": { + "type": "object", + "description": "Request to create a new model version", + "properties": { + "accuracyReached": { + "type": "number", + "description": "Accuracy this model reached" + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this model was trained with" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "description": "Custom Metrics key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the model version" + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory" + }, + "memoryFootprint": { + "type": "string", + "description": "Model size/memory footprint for inference" + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this model trained" + }, + "nvcfContainerConfiguration": { + "$ref": "#/components/schemas/NvcfContainerConfiguration", + "x-description": "NVCF container configuration parameters" + }, + "nvcfDeploymentSpecification": { + "$ref": "#/components/schemas/NvcfDeploymentSpecification", + "x-description": "NVCF deployment specification" + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "List of external contents" + }, + "ownerName": { + "type": "string", + "description": "Name of the user who owns this version" + }, + "status": { + "type": "string", + "description": "Version status" + } + } + }, + "MultipartUploadAbortRequest": { + "type": "object", + "description": "Request body for aborting a multipart upload for artifacts", + "properties": { + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "filePath": { + "type": "string", + "description": "The file path for the artifact upload" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "uploadID": { + "type": "string", + "description": "The unique ID assigned for this multipart upload to associate \n all upload parts. This is the basic base64 encoded data of the\n MultipartUploadIDSchema" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "MultipartUploadCompleteRequest": { + "type": "object", + "description": "Request body for completing a multipart upload for artifacts", + "properties": { + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "filePath": { + "type": "string", + "description": "The file path for the artifact upload" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the entire file" + }, + "uploadID": { + "type": "string", + "description": "The unique ID assigned for this multipart upload to associate \n all upload parts. This is the basic base64 encoded data of the\n MultipartUploadIDSchema" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "MultipartUploadCreateRequest": { + "type": "object", + "description": "Request body for creating a multipart upload for artifacts", + "properties": { + "artifactType": { + "type": "string", + "description": "Type of artifact" + }, + "customPartSize": { + "type": "integer", + "format": "int64", + "description": "Custom chunk size of the file to be uploaded, in bytes. shoul\n d be >= 5MB and <= 500MB. default is 500 in MB." + }, + "filePath": { + "type": "string", + "description": "The file path for the artifact upload" + }, + "name": { + "type": "string", + "description": "Name of the artifact" + }, + "partNumberList": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of parts to re-generate urls for" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file to be uploaded" + }, + "size": { + "type": "integer", + "format": "int64", + "description": "total size of the artifact, in bytes" + }, + "uploadID": { + "type": "string", + "description": "Upload id of an already initiated Multipart upload" + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "MultipartUploadCreateResponse": { + "type": "object", + "description": "Response body for creating a multipart upload for artifacts", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "partSize": { + "type": "integer", + "format": "int64", + "description": "The size of each part upload in bytes" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "uploadID": { + "type": "string", + "description": "The unique ID assigned for this multipart upload to associate \n all upload parts. This is the basic base64 encoded data of the\n MultipartUploadIDSchema" + }, + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of presigned urls for upload" + } + } + }, + "MultipartUploadIDSchema": { + "type": "object", + "description": "Schema for base64 encoded stringified Upload ID that is relayed during \n multipart upload of artifacts", + "properties": { + "dekMeta": { + "type": "string", + "description": "DEK metadata for encrypted enabled orgs" + }, + "sha256": { + "type": "string", + "description": "Base64 encoded sha256 hash of the entire file" + }, + "uploadID": { + "type": "string", + "description": "CSP upload ID" + } + } + }, + "NotifyMalwareScanResultResponse": { + "type": "object", + "description": "Notify malware scan result response", + "properties": { + "status": { + "type": "string", + "description": "Malware scan status" + } + } + }, + "NvcfContainerConfiguration": { + "type": "object", + "description": "NVCF container configuration parameters", + "properties": { + "apiBodyFormat": { + "type": "string", + "description": "API body format" + }, + "containerArgs": { + "type": "string", + "description": "Container arguments" + }, + "containerEnvironment": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetaData" + }, + "description": "Container environment consisting of key value pair" + }, + "containerImage": { + "type": "string", + "description": "Container Image" + }, + "healthUri": { + "type": "string", + "description": "Health URI" + }, + "inferencePort": { + "type": "string", + "description": "Inference port" + }, + "inferenceUrl": { + "type": "string", + "description": "Inference url" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NvcfContainerModel" + }, + "description": "Models version object metadata" + } + } + }, + "NvcfContainerModel": { + "type": "object", + "description": "Models version object metadata", + "properties": { + "name": { + "type": "string", + "description": "Model name" + }, + "uri": { + "type": "string", + "description": "Model URI" + }, + "version": { + "type": "string", + "description": "Model version" + } + } + }, + "NvcfDeploymentSpecification": { + "type": "object", + "description": "NVCF deployment specification", + "properties": { + "gpuCount": { + "type": "integer", + "description": "GPU count" + }, + "gpuType": { + "type": "string", + "description": "GPU type" + }, + "instanceType": { + "type": "string", + "description": "Instance type" + }, + "maxConcurrency": { + "type": "integer", + "description": "Maximum concurrency" + } + } + }, + "PaginationInfo": { + "type": "object", + "description": "Pagination Information", + "properties": { + "index": { + "type": "integer", + "description": "Page index of results" + }, + "nextPage": { + "type": "string", + "description": "Serialized pointer to the next results page. Should be used fo\n r fetching next page. Can be empty" + }, + "size": { + "type": "integer", + "description": "Number of results in page" + }, + "totalPages": { + "type": "integer", + "format": "int64", + "description": "Total number of pages available" + }, + "totalResults": { + "type": "integer", + "format": "int64", + "description": "Total number of results available" + } + } + }, + "Recipe": { + "type": "object", + "description": "Recipe object", + "properties": { + "accessType": { + "type": "string" + }, + "advanced": { + "type": "string", + "description": "Text for describing advanced information" + }, + "application": { + "type": "string" + }, + "builtBy": { + "type": "string", + "description": "Organization that built the recipe" + }, + "canGuestDownload": { + "type": "boolean", + "description": "Indicates if a guest user can download" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the recipe" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "hasSignedVersion": { + "type": "boolean", + "description": "Indicates if the recipe has any signed versions" + }, + "isFavourite": { + "type": "boolean", + "description": "Flag indicating if recipe is user's favorite" + }, + "isPublic": { + "type": "boolean", + "description": "Determines if this recipe is publicly accessible" + }, + "isReadOnly": { + "type": "boolean", + "description": "indicate if current user has read only permissions" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "latestVersionId": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use latestVersionIdStr instead. ID of the \n latest version" + }, + "latestVersionIdStr": { + "type": "string", + "description": "ID of the latest version" + }, + "latestVersionSizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size of the latest version in bytes" + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the model" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "modelFormat": { + "type": "string", + "description": "Format of the model this recipe produces" + }, + "name": { + "type": "string", + "description": "Unique name of the recipe" + }, + "orgName": { + "type": "string", + "description": "Name of the org that the recipe belongs to" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "policyLabels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "list of policy labels on the artifact" + }, + "precision": { + "type": "string" + }, + "productNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Product names" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "type": "string", + "description": "Organization that published this recipe" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "relatedModels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Model" + } + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the recipe" + }, + "teamName": { + "type": "string", + "description": "Name of the team that the recipe belongs to" + }, + "trainingFramework": { + "type": "string" + }, + "updatedDate": { + "type": "string", + "description": "Updated date in ISO-8601 format" + } + } + }, + "RecipeCreateRequest": { + "type": "object", + "description": "Request to create a new recipe", + "properties": { + "advanced": { + "type": "string", + "description": "Text for describing advanced information" + }, + "application": { + "type": "string" + }, + "builtBy": { + "type": "string", + "description": "organization that built the recipe" + }, + "description": { + "type": "string", + "description": "Description of the recipe" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the recipe" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "modelFormat": { + "type": "string", + "description": "Format of the model this recipe produces" + }, + "name": { + "type": "string", + "description": "Unique name of the recipe" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "precision": { + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "type": "string", + "description": "organization that published the recipe" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the recipe" + }, + "trainingFramework": { + "type": "string" + } + } + }, + "RecipeFile": { + "type": "object", + "description": "Recipe file object", + "properties": { + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "description": { + "type": "string", + "description": "Description of the file" + }, + "path": { + "type": "string", + "description": "Relative file path from the root of the recipe" + }, + "sha256_base64": { + "type": "string", + "description": "Base64 encoded sha256 hash of the artifact file" + }, + "sizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Size of the file in bytes" + } + } + }, + "RecipeListResponse": { + "type": "object", + "description": "Response to list recipes request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "recipes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Recipe" + } + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "RecipeResponse": { + "type": "object", + "description": "Response to recipe request", + "properties": { + "recipe": { + "$ref": "#/components/schemas/Recipe", + "x-description": "Recipe object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "RecipeUpdateRequest": { + "type": "object", + "description": "Request to create a new recipe", + "properties": { + "advanced": { + "type": "string", + "description": "Text for describing advanced information" + }, + "application": { + "type": "string" + }, + "builtBy": { + "type": "string", + "description": "organization that built the recipe" + }, + "description": { + "type": "string", + "description": "Description of the recipe" + }, + "displayName": { + "type": "string", + "description": "Display name" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "labelsV2": { + "type": "array", + "items": { + "type": "string" + } + }, + "licenseTerms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LicenseMetadata" + }, + "description": "License information for the recipe" + }, + "logo": { + "type": "string", + "description": "URL for the logo image" + }, + "modelFormat": { + "type": "string", + "description": "Format of the model this recipe produces" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "precision": { + "type": "string" + }, + "publicDatasetUsed": { + "$ref": "#/components/schemas/Dataset" + }, + "publisher": { + "type": "string", + "description": "organization that published the recipe" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "relatedModels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelSimplified" + } + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "shortDescription": { + "type": "string", + "description": "Short description of the recipe" + }, + "trainingFramework": { + "type": "string" + } + } + }, + "RecipeVersion": { + "type": "object", + "description": "Recipe version object", + "properties": { + "accuracyReached": { + "type": "number", + "description": "Accuracy this recipe reached" + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this recipe was trained with" + }, + "createdByUser": { + "type": "string", + "description": "Id of the user who created this recipe" + }, + "createdDate": { + "type": "string", + "description": "Creation date in ISO-8601 format" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "description": "Custom Metrics key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the recipe version" + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use versionId instead. Unique ID of the ve\n rsion" + }, + "isSigned": { + "type": "boolean", + "description": "Indicates if the version is signed" + }, + "malwareScanDate": { + "type": "string", + "description": "Scan date in ISO-8601 format" + }, + "malwareScanStatus": { + "type": "string", + "description": "Malware scan status" + }, + "memoryFootprint": { + "type": "string", + "description": "recipe size/memory footprint for inference" + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this recipe trained" + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "List of external contents" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "policy": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Policy label to be added to a specific version" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "releaseNotes": { + "type": "string", + "description": "Text describing this release" + }, + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "status": { + "type": "string", + "description": "Version status" + }, + "storageVersion": { + "type": "string", + "description": "The storage version i.e. the format the file and their content\n s are persisted in in object store. Possible values include V1\n - for legacy artifact versions with files, V2 - for new artifact vers\n ions with blob registry, `` - for artifact versions without any files." + }, + "totalFileCount": { + "type": "integer", + "format": "int64", + "description": "Total file count" + }, + "totalSizeInBytes": { + "type": "integer", + "format": "int64", + "description": "Total size of the recipe in bytes" + }, + "versionId": { + "type": "string", + "description": "Unique version id. Please use this instead of 'id'" + } + } + }, + "RecipeVersionCreateRequest": { + "type": "object", + "description": "Request to create a new recipe version", + "properties": { + "accuracyReached": { + "type": "number", + "description": "Accuracy this recipe reached" + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this recipe was trained with" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "description": "Custom Metrics key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the recipe version" + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "Deprecated: Please use version instead. Unique ID of the vers\n ion" + }, + "memoryFootprint": { + "type": "string", + "description": "Recipe size/memory footprint for inference" + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this recipe trained" + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "List of external contents" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "releaseNotes": { + "type": "string", + "description": "Text describing this release" + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "versionId": { + "type": "string", + "description": "Unique version id. Please use this instead of 'id'" + } + } + }, + "RecipeVersionFileListResponse": { + "type": "object", + "description": "Response to list files for recipe version request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "recipe": { + "$ref": "#/components/schemas/Recipe", + "x-description": "Recipe object" + }, + "recipeFiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecipeFile" + } + }, + "recipeVersion": { + "$ref": "#/components/schemas/RecipeVersion", + "x-description": "Recipe version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "RecipeVersionListResponse": { + "type": "object", + "description": "Response to list recipe versions request", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "recipe": { + "$ref": "#/components/schemas/Recipe", + "x-description": "Recipe object" + }, + "recipeVersions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecipeVersion" + } + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "RecipeVersionResponse": { + "type": "object", + "description": "Response to recipe version request", + "properties": { + "recipe": { + "$ref": "#/components/schemas/Recipe", + "x-description": "Recipe object" + }, + "recipeVersion": { + "$ref": "#/components/schemas/RecipeVersion", + "x-description": "Recipe version object" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "RecipeVersionUpdateRequest": { + "type": "object", + "description": "Request to create a new recipe version", + "properties": { + "accuracyReached": { + "type": "number", + "description": "Accuracy this recipe reached" + }, + "batchSize": { + "type": "integer", + "format": "int64", + "description": "Batch size this recipe was trained with" + }, + "customMetrics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomMetricGroup" + }, + "description": "Custom Metrics key/value pairs" + }, + "description": { + "type": "string", + "description": "Description of the recipe version" + }, + "gpuModel": { + "type": "string", + "description": "GPU model and memory" + }, + "memoryFootprint": { + "type": "string", + "description": "Recipe size/memory footprint for inference" + }, + "numberOfEpochs": { + "type": "integer", + "format": "int64", + "description": "Number of epochs this recipe trained" + }, + "otherContents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactAttribute" + }, + "description": "List of external contents" + }, + "performance": { + "type": "string", + "description": "Text describing performance of the recipe results" + }, + "quickStartGuide": { + "type": "string", + "description": "Text with a guide to getting started" + }, + "releaseNotes": { + "type": "string", + "description": "Text describing this release" + }, + "setup": { + "type": "string", + "description": "Text describing recipe setup" + }, + "status": { + "type": "string", + "description": "Version status" + } + } + }, + "RequestStatus": { + "type": "object", + "description": "Request status information", + "properties": { + "requestId": { + "type": "string", + "description": "Request ID" + }, + "serverId": { + "type": "string", + "description": "Server ID" + }, + "statusCode": { + "type": "string", + "description": "Describes response status reported by the server." + }, + "statusDescription": { + "type": "string", + "description": "Status description" + } + } + }, + "Response": { + "type": "object", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + } + } + }, + "UpdateArtifactVersionConfigs": { + "type": "object", + "description": "Request to publish an artifact", + "properties": { + "policy": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Policy label to be added to a specific version" + } + } + }, + "UpdateReleaseTypeRequest": { + "type": "object", + "description": "Request to update release type of an artifact version", + "properties": { + "releaseType": { + "type": "string", + "description": "Release type enum for the artifact version in the \n product lifecycle." + }, + "version": { + "type": "string", + "description": "Artifact version" + } + } + }, + "VersionsOwnersListResponse": { + "type": "object", + "description": "Response to list versions owners", + "properties": { + "paginationInfo": { + "$ref": "#/components/schemas/PaginationInfo", + "x-description": "Pagination Information" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "versionsOwnersList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArtifactOwnerDetails" + } + } + } + }, + "WorkflowStatusResponse": { + "type": "object", + "description": "Response containing workflow status information", + "properties": { + "cloneStatus": { + "$ref": "#/components/schemas/CloneStatus", + "x-description": "Progress of cloning artifact version files" + }, + "duration": { + "type": "string", + "description": "Wall-clock execution duration as an ISO-8601 duration (e.g. PT\n 1H30M5S, PT0.001S); Omitted while IN_PROGRESS." + }, + "endTime": { + "type": "string", + "description": "UTC instant when the workflow reached a closed state; omitted \n while IN_PROGRESS." + }, + "message": { + "type": "string", + "description": "Human-readable message about the workflow status" + }, + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "startTime": { + "type": "string", + "description": "UTC instant when the workflow execution started." + }, + "status": { + "type": "string", + "description": "Current status of the workflow" + }, + "workflowType": { + "type": "string", + "description": "Workflow type." + } + } + }, + "WorkflowStatusUrlResponse": { + "type": "object", + "description": "Response containing workflow status URL and ID", + "properties": { + "requestStatus": { + "$ref": "#/components/schemas/RequestStatus", + "x-description": "Request status information" + }, + "statusUrl": { + "type": "string", + "description": "URL to check the workflow status" + }, + "workflowId": { + "type": "string", + "description": "ID of the workflow" + } + } + } + } +} diff --git a/provider-dev/downloaded/nvcf_openapi.json b/provider-dev/downloaded/nvcf_openapi.json index e240309..afb5a83 100644 --- a/provider-dev/downloaded/nvcf_openapi.json +++ b/provider-dev/downloaded/nvcf_openapi.json @@ -1 +1,6146 @@ -{"openapi":"3.1.0","info":{"title":"Cloud Functions","termsOfService":"https://www.nvidia.com/en-us/legal_info","contact":{"name":"NVIDIA","url":"https://www.nvidia.com/"},"version":"2.245.1"},"servers":[{"url":"https://api.nvcf.nvidia.com","description":"Generated server url"}],"tags":[{"name":"Function Invocation","description":"Defines function pass-through invocation endpoints where the invocation payload is passed as-is without any wrapper. All the endpoints defined in this API require a bearer token with 'invoke_function' scope in the HTTP Authorization header. "},{"name":"Asset Management","description":"Deprecated. Users can provide assets directly as part of the input during function invocation. There is no need to upload assets and then include the asset-id as part of input to the function invocation. Defines Asset Management endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token in the HTTP Authorization header with 'invoke_function' scope."},{"name":"User Ratelimit Management","description":"Defines User Ratelimit Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_function' scope in the HTTP Authorization header. "},{"name":"Queue Details","description":"Defines Queue Details endpoints for Account Admins/Users. All the endpoints defined in this API require a bearer token with 'queue_details' scope in the HTTP Authorization header. "},{"name":"Function Sharing","description":"Defines endpoints related to authorizing other accounts to invoke a function for Account Admins. All the endpoints defined in this API require a bearer token with 'authorize_clients' scope in HTTP Authorization header."},{"name":"Telemetry Management","description":"Defines Telemetry Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token or an api-key with appropriate scope in the HTTP Authorization header. "},{"name":"Cluster Groups and GPUs","description":"Deprecated. Please use corresponding ICMS endpoints directly. These endpoints will be removed. Defines endpoints to list Cluster Groups and GPUs for Account Admins. All tne endpoints defined in this API require a bearer token with 'list_cluster_groups' scope in the HTTP Authorization header."},{"name":"Function Deployment","description":"Defines Function Deployment endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'deploy_function' scope in the HTTP Authorization header."},{"name":"User Secret Management","description":"Defines User Secret Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with 'update_secrets' scope in the HTTP Authorization header. "},{"name":"Function Management","description":"Defines Function Management endpoints for Account Admins. All the endpoints defined in this API require a bearer token with appropriate scope in the HTTP Authorization header. The scope is specified in the documentation for each of the endpoints. "},{"name":"Function Invocation Assertion Token","description":"Defines endpoints that issue an assertion token from Notary Service to be used for function invocation later "},{"name":"Registry Credential Management","description":"Defines Registry Credential Management endpoints. These endpoints can only be invoked by Account Admins and require a bearer token in HTTP Authorization header with 'manage_registry_credentials' scope. "},{"name":"nspect_id","description":"NSPECT-F7NT-ONT3"}],"paths":{"/v2/nvcf/secrets/telemetries/{telemetryId}":{"put":{"tags":["User Secret Management"],"summary":"Update secret for a specific Telemetry Id","description":"Updates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ","operationId":"updateTelemetrySecret","parameters":[{"name":"telemetryId","in":"path","description":"NVIDIA Cloud Account Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTelemetrySecretRequest"}}},"required":true},"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/secrets/functions/{functionId}/versions/{versionId}":{"put":{"tags":["User Secret Management"],"summary":"Update user secrets for a function version","description":"Updates secrets for the specified function version. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. ","operationId":"updateFunctionSecrets","parameters":[{"name":"functionId","in":"path","description":"Function Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function Version Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionSecretsRequest"}}},"required":true},"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId}":{"put":{"tags":["User Ratelimit Management"],"summary":"Update user ratelimit for a function version","description":"Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{versionId} to update ratelimit and other mutable function fields. This legacy endpoint only updates ratelimit for the specified function version and requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"updateRateLimit","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionRequest"}}},"required":true},"responses":{"204":{"description":"No Content"}},"deprecated":true},"delete":{"tags":["User Ratelimit Management"],"summary":"Delete user ratelimit for a function version","description":"Delete ratelimit for the specified function version. This endpoint requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"deleteRateLimit","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId}":{"put":{"tags":["Function Management"],"summary":"Update Function Metadata","description":"Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update tags, rate limit, model-specific LLM config, and other mutable function fields. This legacy endpoint updates the same mutable function version fields for the authenticated NVIDIA Cloud Account and requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"updateFunctionMetadata","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}},"deprecated":true}},"/v2/nvcf/functions/{functionId}/versions/{functionVersionId}":{"get":{"tags":["Function Management"],"summary":"Get Function Version Details","description":"Retrieves detailed information of the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ","operationId":"getFunction","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id ","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"includeSecrets","in":"query","description":"Query param 'includeSecrets' indicates whether to include secret names\n for the function in the response.\n","required":false,"schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}}},"put":{"tags":["Function Management"],"summary":"Updates mutable fields of the specified function version.","description":"Updates mutable fields of the specified function version within the authenticated NVIDIA Cloud Account. The current request payload supports tags updates, rate limit updates, and model-specific LLM config updates. Requires a bearer token with 'update_function' scope in the HTTP Authorization header. ","operationId":"updateFunction","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}}},"delete":{"tags":["Function Management"],"summary":"Delete Function","description":"Deletes the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'delete_function' scope in the HTTP Authorization header. If the function version is public, then Account Admin cannot delete the function. ","operationId":"deleteFunction","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}}}},"/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}":{"get":{"tags":["Function Deployment"],"summary":"Get Function Deployment Details","description":"Allows Account Admins to retrieve the deployment details of the specified function version. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"getFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}}},"put":{"tags":["Function Deployment"],"summary":"Update Function Deployment","description":" Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"updateFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunctionDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}},"deprecated":true},"post":{"tags":["Function Deployment"],"summary":"Deploy Function","description":"Initiates deployment for the specified function version. Upon invocation of this endpoint, the function's status transitions to 'DEPLOYING'. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"createFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}}},"delete":{"tags":["Function Deployment"],"summary":"Delete Function Deployment","description":"Deletes the deployment associated with the specified function. Upon deletion, any active instances will be terminated, and the function's status will transition to 'INACTIVE'. To undeploy a function version gracefully, specify 'graceful=true' query parameter, allowing current tasks to complete before terminating the instances. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"deleteFunctionDeployment","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"graceful","in":"query","description":"Query param to deactivate function for graceful shutdown","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionResponse"}}}}}}},"/v2/nvcf/tokens/functions":{"post":{"tags":["Function Invocation Assertion Token"],"summary":"Issue Function Invocation Token","description":"Issues an assertion token from Notary Service for specified functionIds and/or functionVersionIds ","operationId":"issueMultiFunctionsInvocationToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiFunctionsInvocationTokenRequest"}}},"required":true},"responses":{"200":{"description":"Invocation assertion token is issued","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}}}}},"/v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId}":{"post":{"tags":["Function Invocation Assertion Token"],"summary":"Issue Function Invocation Token","description":"Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ","operationId":"issueInvocationToken","parameters":[{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvocationTokenRequest"}}},"required":true},"responses":{"200":{"description":"Invocation assertion token is issued","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}}}}},"/v2/nvcf/tokens/functions/{functionId}":{"post":{"tags":["Function Invocation Assertion Token"],"summary":"Issue Function Invocation Token","description":"Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ","operationId":"issueInvocationToken_1","parameters":[{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvocationTokenRequest"}}},"required":true},"responses":{"200":{"description":"Invocation assertion token is issued","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvocationTokenResponse"}}}}}}},"/v2/nvcf/telemetries":{"get":{"tags":["Telemetry Management"],"summary":"List Telemetries","description":"Retrieves telemetry configurations for a specific NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ","operationId":"getTelemetriesByAccount","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTelemetryResponse"}}}}}},"post":{"tags":["Telemetry Management"],"summary":"Create Telemetry","description":"Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ","operationId":"createTelemetry","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryResponse"}}}}}}},"/v2/nvcf/registry-credentials":{"get":{"tags":["Registry Credential Management"],"summary":"List Registry Credentials","description":"Lists all the registry credentials associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"listRegistryCredentialDetails","parameters":[{"name":"artifactType","in":"query","description":"Filters registry credentials using the specified 'artifactType' query param.\n","required":false,"schema":{"type":"array","default":["CONTAINER","HELM","MODEL","RESOURCE"],"items":{"type":"string","format":"UTF-8","enum":["CONTAINER","HELM","MODEL","RESOURCE"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}},{"name":"provisionedBy","in":"query","description":"Filters registry credentials using the specified 'provisionedBy' query param.\n","required":false,"schema":{"type":"array","default":["SYSTEM","USER"],"items":{"type":"string","format":"UTF-8","enum":["SYSTEM","USER"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistryCredentialDetailsResponse"}}}}}},"post":{"tags":["Registry Credential Management"],"summary":"Add new registry credential to the account","description":"Adds a new registry credential to the account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"addRegistryCredential","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddRegistryCredentialRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialDetailsResponse"}}}}}}},"/v2/nvcf/pexec/functions/{functionId}":{"post":{"tags":["Function Invocation"],"summary":"Call Function","description":"Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ","operationId":"invokeFunction","parameters":[{"name":"NVCF-INPUT-ASSET-REFERENCES","in":"header","required":false,"schema":{"type":"array","items":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0}},{"name":"NVCF-POLL-SECONDS","in":"header","required":false,"schema":{"type":"integer","format":"int32","maximum":300,"minimum":0}},{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Invocation is fulfilled","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"202":{"description":"Result is pending. Client should poll using the requestId.","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"302":{"description":"Client should use the URL specified in the 'Location' response header to fetch\n large result.\n","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}},"Location":{"description":"URL to get the result","style":"simple","schema":{"type":"string"}}}},"402":{"description":"Cloud credits expired for public functions. Please contact NVIDIA representatives.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}}},"deprecated":true}},"/v2/nvcf/pexec/functions/{functionId}/versions/{versionId}":{"post":{"tags":["Function Invocation"],"summary":"Call Function","description":"Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ","operationId":"invokeFunction_1","parameters":[{"name":"NVCF-INPUT-ASSET-REFERENCES","in":"header","required":false,"schema":{"type":"array","items":{"type":"string","format":"UTF-8","maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0}},{"name":"NVCF-POLL-SECONDS","in":"header","required":false,"schema":{"type":"integer","format":"int32","maximum":300,"minimum":0}},{"name":"functionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Invocation is fulfilled","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"202":{"description":"Result is pending. Client should poll using the requestId.","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"302":{"description":"Client should use the URL specified in the 'Location' response header to fetch\n large result.\n","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}},"Location":{"description":"URL to get the result","style":"simple","schema":{"type":"string"}}}},"402":{"description":"Cloud credits expired for public functions. Please contact NVIDIA representatives.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"429":{"description":"Client is doing too many requests per second and should slow down request rate.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}}},"deprecated":true}},"/v2/nvcf/functions":{"get":{"tags":["Function Management"],"summary":"List Functions","description":"Lists all the functions associated with the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scope in the HTTP Authorization header.","operationId":"getFunctions","parameters":[{"name":"visibility","in":"query","description":"Query param 'visibility' indicates the kind of functions to be included\n in the response.\n","required":false,"schema":{"type":"array","default":["authorized","private","public"],"items":{"type":"string","format":"UTF-8","enum":["authorized","private","public"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFunctionsResponse"}}}}}},"post":{"tags":["Function Management"],"summary":"Create Function","description":"Creates a new function within the authenticated NVIDIA Cloud Account. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. ","operationId":"createFunction","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionResponse"}}}}}}},"/v2/nvcf/functions/{functionId}/versions":{"get":{"tags":["Function Management"],"summary":"List Function Versions","description":"Lists details of all the versions of the specified function in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ","operationId":"getFunctions_1","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFunctionsResponse"}}}}}},"post":{"tags":["Function Management"],"summary":"Create Function Version","description":"Creates a version of the specified function within the authenticated NVIDIA Cloud Account. If the function is public, then Account Admin cannot create a version. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. ","operationId":"createFunction_1","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFunctionResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}":{"get":{"tags":["Function Sharing"],"summary":"List Account Authorizations For Function","description":"Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"getAuthorizedPartiesForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedPartiesResponse"}}}}}},"post":{"tags":["Function Sharing"],"summary":"Authorize Accounts To Invoke Function","description":"Authorizes additional NVIDIA Cloud Accounts to invoke any version of the specified function. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"createAuthorizedPartiesForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}},"delete":{"tags":["Function Sharing"],"summary":"Delete All Authorizations At Function Level","description":"Deletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"deleteAuthorizedPartiesForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}":{"get":{"tags":["Function Sharing"],"summary":"Get Account Authorizations For Function Version","description":"Gets NVIDIA Cloud Account IDs that are authorized to invoke specified function version. Response includes authorized accounts that were added specifically at the version level and the authorized accounts that were inherited from function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"getAuthorizedPartiesForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}},"post":{"tags":["Function Sharing"],"summary":"Authorize Accounts To Invoke/List Function Version","description":"Authorizes additional NVIDIA Cloud Accounts to invoke a specific function version. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Note that the response does NOT include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"createAuthorizedPartiesForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}},"delete":{"tags":["Function Sharing"],"summary":"Delete All Authorizations At Version Level","description":"Deletes all the authorized accounts that are directly associated with the specified function version. Authorized parties that are inherited by the function version are not deleted. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"deleteAuthorizedPartiesForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/assets":{"get":{"tags":["Asset Management"],"summary":"List Assets","description":"List assets owned by the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"getAssets","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResponse"}}}}},"deprecated":true},"post":{"tags":["Asset Management"],"summary":"Create Asset","description":"Creates a unique id representing an asset and a pre-signed URL to upload the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"createAsset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssetRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssetResponse"}}}}},"deprecated":true}},"/v2/nvcf/registry-credentials/{registryCredentialId}":{"get":{"tags":["Registry Credential Management"],"summary":"Get Registry Credential Details","description":"Retrieves detailed information of the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"getRegistryCredentialDetails","parameters":[{"name":"registryCredentialId","in":"path","description":"Registry Credential id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialDetailsResponse"}}}}}},"delete":{"tags":["Registry Credential Management"],"summary":"Delete Registry Credential","description":"Deletes the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"deleteRegistryCredential","parameters":[{"name":"registryCredentialId","in":"path","description":"Registry Credential id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}}},"patch":{"tags":["Registry Credential Management"],"summary":"Update registry credential","description":"Updates the secret and/or the artifact types associated with the specified registry credential. Artifact types specified in the request body are added to the set of artifact types that already exist for the specified registry credential. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"updateRegistryCredential","parameters":[{"name":"registryCredentialId","in":"path","description":"Registry Credential id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRegistryCredentialRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialDetailsResponse"}}}}}}},"/v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId}":{"patch":{"tags":["Function Deployment"],"summary":"Update the specified GPU specification under the specified deployment","description":" Updates the GPU specification of the specified function version's deployment. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"updateGpuSpecification","parameters":[{"name":"deploymentId","in":"path","description":"Deployment id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"gpuSpecId","in":"path","description":"GPU Specification id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGpuSpecificationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGpuSpecificationResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove":{"patch":{"tags":["Function Sharing"],"summary":"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function Version","description":"Removes the specified NVIDIA Cloud Account from the set of authorized accounts that are directly associated with specified function version. If the specified function version does not have any of its own(not inherited) authorized accounts, it results in a response with status 404. Also, if the specified authorized account is not in the set of existing authorized parties that are directly associated with the specified function version, it results in a response with status code 404. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"removeAuthorizedPartyForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add":{"patch":{"tags":["Function Sharing"],"summary":"Authorize Another Account To Invoke, List, and Check Queue Details of Function Version","description":"Adds the specified NVIDIA Cloud Account to the set of authorized accounts that can invoke the specified function version. If the specified function version does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing authorized accounts that are directly associated with the function version, it results in a response wit status code 409. If a function is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"addAuthorizedPartyForSpecificVersion","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"functionVersionId","in":"path","description":"Function version","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/remove":{"patch":{"tags":["Function Sharing"],"summary":"Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function","description":"Removes the specified NVIDIA Cloud Account from the set of authorized accounts that can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized parties, it results in a response with status 404. Also, if the specified account is not in the existing set of inheritable authorized accounts, it results in a response with status 404. If the specified function is public, then Account Admin cannot perform this operation. Note that response only includes the remaining authorized accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"removeAuthorizedPartyForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/authorizations/functions/{functionId}/add":{"patch":{"tags":["Function Sharing"],"summary":"Authorize Another Account To Invoke, List, and Check Queue Details of Function","description":"Adds the specified NVIDIA Cloud Account to the set of authorized accounts that are can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing inheritable authorized accounts, it results in a response with status code 409. If a function is public, then Account Admin cannot perform this operation. Note that response only includes authz accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ","operationId":"addAuthorizedPartyForAllVersions","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAuthorizedPartyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizedPartiesResponse"}}}}}}},"/v2/nvcf/telemetries/{telemetryId}":{"get":{"tags":["Telemetry Management"],"summary":"Get Telemetry Details","description":"Retrieves the details of a specific telemetry configuration by its ID. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. ","operationId":"getTelemetry","parameters":[{"name":"telemetryId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryResponse"}}}}}},"delete":{"tags":["Telemetry Management"],"summary":"Delete Telemetry","description":"Deletes a specific telemetry configuration for a NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. If there any functions that are dependent on the Telemetry that is being deleted, then response with 400 status code will be returned. ","operationId":"deleteTelemetry","parameters":[{"name":"telemetryId","in":"path","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Cannot be deleted till Functions depend on it"}}}},"/v2/nvcf/recognized-registries":{"get":{"tags":["Registry Credential Management"],"summary":"List Recognized Registries","description":"Lists all the registries that are recognized by NVCF. Only when a registry is recognized by NVCF that the users can add its credential to their account and then use it to create functions. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. ","operationId":"getRecognizedRegistries","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecognizedRegistriesResponse"}}}}}}},"/v2/nvcf/queues/{requestId}/position":{"get":{"tags":["Queue Details"],"summary":"Queue Position","description":"Using the specified function invocation request id, returns the estimated position of the corresponding message up to 1000 in the queue. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ","operationId":"getPositionInQueue","parameters":[{"name":"requestId","in":"path","description":"Function invocation request id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPositionInQueueResponse"}}}}}}},"/v2/nvcf/queues/functions/{functionId}/versions/{versionId}":{"get":{"tags":["Queue Details"],"summary":"Queue Details","description":"Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ","operationId":"getQueuesDetails","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}},{"name":"versionId","in":"path","description":"Function version id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetQueuesResponse"}}}}}}},"/v2/nvcf/queues/functions/{functionId}":{"get":{"tags":["Queue Details"],"summary":"Queue Details","description":"Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. ","operationId":"getQueuesDetails_1","parameters":[{"name":"functionId","in":"path","description":"Function id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetQueuesResponse"}}}}}}},"/v2/nvcf/pexec/status/{requestId}":{"get":{"tags":["Function Invocation"],"summary":"Poll For Result Using Function Invocation Request","description":"Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function and stream results without polling. Retrieves the status of an in-progress or pending request using its unique invocation request ID. If the result is available, it will be included in the response, marking the request as fulfilled. Conversely, if the result is not yet available, the request is deemed pending. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ","operationId":"getFunctionInvocationResult","parameters":[{"name":"requestId","in":"path","description":"Invocation Request Id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"Invocation is fulfilled","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"202":{"description":"Result is pending. Client should poll using the requestId.","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"302":{"description":"Client should use the URL specified in the 'Location' response header to fetch\n large result.\n","headers":{"NVCF-REQID":{"description":"Invocation Request Id","style":"simple","schema":{"type":"string"}},"NVCF-PERCENT-COMPLETE":{"description":"Percentage complete","style":"simple","schema":{"type":"string"}},"NVCF-STATUS":{"description":"Invocation status","style":"simple","schema":{"type":"string"}},"Location":{"description":"URL to get the result","style":"simple","schema":{"type":"string"}}}},"402":{"description":"Cloud credits expired for public functions. Please contact NVIDIA representatives.","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}},"403":{"description":"Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry\n in the ApiKey for the function.\n","content":{"*/*":{"schema":{"type":"object","properties":{"short":{"type":"integer","format":"int32"},"char":{"type":"string"},"int":{"type":"integer","format":"int32"},"long":{"type":"integer","format":"int64"},"float":{"type":"number","format":"float"},"double":{"type":"number","format":"double"},"direct":{"type":"boolean"},"readOnly":{"type":"boolean"}}}}}}},"deprecated":true}},"/v2/nvcf/functions/ids":{"get":{"tags":["Function Management"],"summary":"List Function Ids","description":"Lists ids of all the functions in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. ","operationId":"getFunctionIds","parameters":[{"name":"visibility","in":"query","description":"Query param 'visibility' indicates the kind of functions to be included\n in the response.\n","required":false,"schema":{"type":"array","default":["authorized","private","public"],"items":{"type":"string","format":"UTF-8","enum":["authorized","private","public"],"maxLength":262144,"minLength":0},"maxItems":2147483647,"minItems":0,"uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFunctionIdsResponse"}}}}}}},"/v2/nvcf/deployments/{deploymentId}":{"get":{"tags":["Function Deployment"],"summary":"Get Function Deployment Details","description":"Allows Account Admins to retrieve the deployment details of the specified deployment id. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. ","operationId":"getFunctionDeployment_1","parameters":[{"name":"deploymentId","in":"path","description":"Deployment id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}}}}},"/v2/nvcf/clusterGroups":{"get":{"tags":["Cluster Groups and GPUs"],"summary":"List Cluster Groups","description":"Lists Cluster Groups for the current account. The response includes cluster groups defined specifically in the current account and publicly available cluster groups such as GFN, OCI, etc. Requires a bearer token with 'list_cluster_groups' scope in HTTP Authorization header. ","operationId":"getClusterGroups","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterGroupsResponse"}}}}},"deprecated":true}},"/v2/nvcf/assets/{assetId}":{"get":{"tags":["Asset Management"],"summary":"Show Asset Details","description":"Returns details for the specified asset-id belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"getAsset","parameters":[{"name":"assetId","in":"path","description":"Asset id","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}}},"deprecated":true},"delete":{"tags":["Asset Management"],"summary":"Delete Asset","description":"Deletes asset belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. ","operationId":"deleteAsset","parameters":[{"name":"assetId","in":"path","description":"Id of the asset to be deleted","required":true,"schema":{"type":"string","format":"uuid","maxLength":36,"minLength":36}}],"responses":{"204":{"description":"No Content"}},"deprecated":true}},"/health":{"get":{"tags":["health-controller"],"operationId":"getHealth","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/HealthComponent"}}}}}}}},"components":{"schemas":{"JsonNode":{},"SecretDto":{"type":"object","description":"Data Transfer Object(DTO) representing secret name/value pair","properties":{"name":{"type":"string","format":"UTF-8","description":"Secret name","maxLength":48,"minLength":1,"pattern":"^[a-z0-9A-Z][a-z0-9A-Z\\_\\.\\-]*$"},"value":{"$ref":"#/components/schemas/JsonNode","description":"Secret value must be 1 - 32768 chars long"}},"required":["name"]},"UpdateTelemetrySecretRequest":{"type":"object","description":"Request payload to update secret","properties":{"secret":{"$ref":"#/components/schemas/SecretDto","description":"Telemetry secret"}},"required":["secret"]},"UpdateFunctionSecretsRequest":{"type":"object","description":"Request payload to update secrets","properties":{"secrets":{"type":"array","description":"Secrets","items":{"$ref":"#/components/schemas/SecretDto"},"maxItems":2147483647,"minItems":0,"uniqueItems":true}},"required":["secrets"]},"LlmConfigUpdateDto":{"type":"object","description":"Partial update payload for LLM-specific model configuration fields.","properties":{"tokenRateLimit":{"type":"string","format":"UTF-8","description":"Updated token-level rate limit for the model. When omitted, the existing value is preserved.","maxLength":262144,"minLength":0},"routingMethod":{"type":"string","format":"UTF-8","description":"Updated routing method for the model. When omitted, the existing value is preserved.","maxLength":262144,"minLength":0}}},"ModelUpdateDto":{"type":"object","description":"Model-specific update request.","properties":{"modelName":{"type":"string","format":"UTF-8","description":"Name of the model to update.","maxLength":262144,"minLength":1},"llmConfig":{"$ref":"#/components/schemas/LlmConfigUpdateDto","description":"Optional updates to this model's LLM config fields."}},"required":["modelName"]},"RateLimitDto":{"type":"object","description":"Data Transfer Object(DTO) representing Rate limit config","properties":{"rateLimit":{"type":"string","format":"UTF-8","description":"Rate","maxLength":262144,"minLength":0,"pattern":"^(?!.*-([SMHD]).*-\\1)[1-9]\\d*-[SMHD](,\\s*[1-9]\\d*-[SMHD])*$"},"exemptedNcaIds":{"type":"array","description":"NCA ID Exemptions","items":{"type":"string"},"maxItems":32,"minItems":0,"uniqueItems":true},"perNcaIdRate":{"type":"object","additionalProperties":{"type":"string"},"description":"Per NCA ID Rate"},"syncCheck":{"type":"boolean","description":"Sync check. Defaults to false"},"perUserRate":{"type":"string","format":"UTF-8","description":"Per-user rate, intended for traffic authenticated with an invocation delegation token (InvocationToken). When set, this single rate is enforced individually against every unique caller identity, in addition to the NCA-tier limit.","maxLength":262144,"minLength":0,"pattern":"^(?!.*-([SMHD]).*-\\1)[1-9]\\d*-[SMHD](,\\s*[1-9]\\d*-[SMHD])*$"}}},"UpdateFunctionRequest":{"type":"object","description":"Request payload to update mutable function configuration fields.","properties":{"tags":{"type":"array","description":"Optional set of function tags. When omitted, the existing value is preserved.","items":{"type":"string","pattern":"[a-zA-Z0-9\\-_:=]+"},"maxItems":64,"minItems":0,"uniqueItems":true},"rateLimit":{"$ref":"#/components/schemas/RateLimitDto","description":"Optional full replacement for the function rate limit configuration. When omitted, the existing value is preserved. Use the delete rate-limit endpoint to clear it."},"modelUpdates":{"type":"array","description":"Optional list of model-specific updates.","items":{"$ref":"#/components/schemas/ModelUpdateDto"},"maxItems":2147483647,"minItems":0}}},"ArtifactDto":{"type":"object","description":"Data Transfer Object(DTO) representing an artifact","properties":{"name":{"type":"string","format":"UTF-8","description":"Artifact name","maxLength":262144,"minLength":0},"version":{"type":"string","format":"UTF-8","description":"Artifact version","maxLength":262144,"minLength":0},"uri":{"type":"string","format":"uri","description":"Artifact URI"}},"required":["name","uri","version"]},"ContainerEnvironmentEntryDto":{"type":"object","description":"Data Transfer Object(DTO) representing a container environment entry","properties":{"key":{"type":"string","format":"UTF-8","description":"Container environment key","maxLength":262144,"minLength":0},"value":{"type":"string","format":"UTF-8","description":"Container environment value","maxLength":262144,"minLength":0}},"required":["key","value"]},"FunctionDto":{"type":"object","description":"Data Transfer Object (DTO) representing a function","properties":{"id":{"type":"string","format":"uuid","description":"Unique function id","maxLength":36,"minLength":36},"ncaId":{"type":"string","format":"UTF-8","description":"NVIDIA Cloud Account Id","maxLength":262144,"minLength":0},"versionId":{"type":"string","format":"uuid","description":"Unique function version id","maxLength":36,"minLength":36},"name":{"type":"string","format":"UTF-8","description":"Function name","maxLength":262144,"minLength":0},"status":{"type":"string","format":"UTF-8","description":"Function status","enum":["ACTIVE","DEPLOYING","ERROR","INACTIVE","DELETED","DEGRADED","DEGRADING"],"maxLength":262144,"minLength":0},"inferenceUrl":{"type":"string","format":"uri","description":"Entrypoint for invoking the container to process requests"},"ownedByDifferentAccount":{"type":"boolean","description":"Indicates whether the function is owned by another account. If the account\n that is being used to lookup functions happens to be authorized to invoke/list\n this function which is owned by a different account, then this field is set\n to true and ncaId will contain the id of the account that owns the function.\n Otherwise, this field is not set as it defaults to false.\n"},"inferencePort":{"type":"integer","format":"int32","description":"Optional port number where the inference listener is running - defaults to 8000 for Triton","maximum":2147483647,"minimum":-2147483648},"containerArgs":{"type":"string","format":"UTF-8","description":"Args used to launch the container","maxLength":262144,"minLength":0},"containerEnvironment":{"type":"array","description":"Environment settings used to launch the container","items":{"$ref":"#/components/schemas/ContainerEnvironmentEntryDto"},"maxItems":2147483647,"minItems":0},"models":{"type":"array","description":"Optional list of models","items":{"$ref":"#/components/schemas/FunctionModelDto"},"maxItems":2147483647,"minItems":0},"containerImage":{"type":"string","format":"uri","description":"Optional custom container"},"apiBodyFormat":{"type":"string","format":"UTF-8","description":"Invocation request body format","enum":["PREDICT_V2","CUSTOM"],"maxLength":262144,"minLength":0},"helmChart":{"type":"string","format":"uri","description":"Optional Helm Chart"},"helmChartServiceName":{"type":"string","format":"UTF-8","description":"Helm Chart Service Name specified only when helmChart property is specified\n","maxLength":262144,"minLength":0},"healthUri":{"type":"string","format":"uri","deprecated":true,"description":"Health endpoint for the container or helmChart. Deprecated, use health.uri instead."},"createdAt":{"type":"string","format":"date-time","description":"Function creation timestamp","maxLength":30,"minLength":8},"activeInstances":{"type":"array","description":"List of active instances for this function.","items":{"$ref":"#/components/schemas/InstanceDto"},"maxItems":2147483647,"minItems":0},"resources":{"type":"array","description":"Optional set of resources.","items":{"$ref":"#/components/schemas/ArtifactDto"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"tags":{"type":"array","description":"Optional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars.","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"description":{"type":"string","format":"UTF-8","description":"Function/version description","maxLength":262144,"minLength":0},"health":{"$ref":"#/components/schemas/HealthDto","description":"Function health configuration"},"functionType":{"type":"string","format":"UTF-8","description":"Used to indicate a STREAMING function. Defaults to DEFAULT.","enum":["DEFAULT","STREAMING","LLM"],"maxLength":262144,"minLength":0},"secrets":{"type":"array","description":"Optional secret names","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"rateLimit":{"$ref":"#/components/schemas/RateLimitDto","description":"Optional rate limit policy"},"telemetries":{"$ref":"#/components/schemas/TelemetriesDto","description":"Optional telemetry configuration for the function"}},"required":["createdAt","functionType","healthUri","id","name","ncaId","status","versionId"]},"FunctionModelDto":{"type":"object","description":"Model associated with a function, including optional LLM routing metadata","properties":{"name":{"type":"string","format":"UTF-8","description":"Model name","maxLength":262144,"minLength":0},"version":{"type":"string","format":"UTF-8","description":"Model version. Optional for LLM-type functions.","maxLength":262144,"minLength":0},"uri":{"type":"string","format":"uri","description":"Model URI. Optional for LLM-type functions."},"llmConfig":{"$ref":"#/components/schemas/LlmConfigDto","description":"LLM-specific configuration for this model. Only relevant for LLM-type functions."}},"required":["name"]},"FunctionResponse":{"type":"object","description":"Response body with function details","properties":{"function":{"$ref":"#/components/schemas/FunctionDto","description":"Function details"}},"required":["function"]},"HealthDto":{"type":"object","description":"Data Transfer Object(DTO) representing a function ne","properties":{"protocol":{"type":"string","format":"UTF-8","description":"HTTP/gPRC protocol type for health endpoint","enum":["HTTP","gRPC"],"maxLength":262144,"minLength":0},"uri":{"type":"string","format":"uri","description":"Health endpoint for the container or the helmChart"},"port":{"type":"integer","format":"int32","description":"Port number where the health listener is running","maximum":2147483647,"minimum":-2147483648},"timeout":{"type":"string","format":"duration","description":"ISO 8601 duration string in PnDTnHnMn.nS format","example":"PT10S"},"expectedStatusCode":{"type":"integer","format":"int32","description":"Expected return status code considered as successful.","maximum":2147483647,"minimum":-2147483648}},"required":["expectedStatusCode","port","protocol","timeout","uri"]},"InstanceDto":{"type":"object","description":"Data Transfer Object(DTO) representing an instance","properties":{"instanceId":{"type":"string","format":"UTF-8","description":"Unique id of the instance","maxLength":262144,"minLength":0},"functionId":{"type":"string","format":"uuid","description":"Function executing on the instance","maxLength":36,"minLength":36},"functionVersionId":{"type":"string","format":"uuid","description":"Function version executing on the instance","maxLength":36,"minLength":36},"instanceType":{"type":"string","format":"UTF-8","description":"GPU instance-type powering the instance","maxLength":262144,"minLength":0},"instanceStatus":{"type":"string","format":"UTF-8","description":"Instance status","enum":["ACTIVE","STARTING","RUNNING","ERRORED","PREEMPTED","DELETED","TERMINATED"],"maxLength":262144,"minLength":0},"icmsRequestId":{"type":"string","format":"uuid","description":"ICMS request-id used to launch this instance","maxLength":36,"minLength":36},"ncaId":{"type":"string","format":"UTF-8","description":"NVIDIA Cloud Account Id that owns the function running on the instance","maxLength":262144,"minLength":0},"gpu":{"type":"string","format":"UTF-8","description":"GPU name powering the instance","maxLength":262144,"minLength":0},"backend":{"type":"string","format":"UTF-8","description":"Backend where the instance is running","maxLength":262144,"minLength":0},"location":{"type":"string","format":"UTF-8","description":"Location such as zone name or region where the instance is running","maxLength":262144,"minLength":0},"instanceCreatedAt":{"type":"string","format":"date-time","description":"Instance creation timestamp","maxLength":30,"minLength":8},"instanceUpdatedAt":{"type":"string","format":"date-time","description":"Instance's last updated timestamp","maxLength":30,"minLength":8}}},"LlmConfigDto":{"type":"object","description":"LLM-specific configuration for a model","properties":{"uris":{"type":"array","description":"OpenAI-compatible URIs supported by this model (e.g. /v1/chat/completions). Required for LLM models.","items":{"type":"string"},"maxItems":2147483647,"minItems":1},"tokenRateLimit":{"type":"string","format":"UTF-8","description":"Token-level rate limit for this model.","maxLength":262144,"minLength":0},"tokenizer":{"type":"string","format":"UTF-8","description":"Tokenizer identifier for this model.","maxLength":262144,"minLength":0},"routingMethod":{"type":"string","format":"UTF-8","description":"Routing method for this model.","maxLength":262144,"minLength":0}},"required":["uris"]},"TelemetriesDto":{"type":"object","description":"Telemetry configuration for logs, metrics, and traces.","properties":{"logsTelemetryId":{"type":"string","format":"uuid","description":"UUID representing the logs telemetry.","maxLength":36,"minLength":36},"metricsTelemetryId":{"type":"string","format":"uuid","description":"UUID representing the metrics telemetry.","maxLength":36,"minLength":36},"tracesTelemetryId":{"type":"string","format":"uuid","description":"UUID representing the traces telemetry.","maxLength":36,"minLength":36}}},"UpdateFunctionDeploymentRequest":{"type":"object","description":"Request to update function deployment spec","properties":{"deploymentSpecifications":{"type":"array","description":"Deployment specs with GPU, instance-type, etc. details for update request","items":{"$ref":"#/components/schemas/UpdateGpuSpecificationDto"},"maxItems":2147483647,"minItems":1}},"required":["deploymentSpecifications"]},"UpdateGpuSpecificationDto":{"type":"object","description":"Data Transfer Object (DTO) representing GPU specification for Deployment Update case.","properties":{"gpuSpecificationId":{"type":"string","format":"uuid","description":"GPU specification id","maxLength":36,"minLength":36},"gpu":{"type":"string","format":"UTF-8","description":"GPU name from the cluster. Deprecated: this is read-only field, should not be specified in update request.","maxLength":262144,"minLength":0},"backend":{"type":"string","format":"UTF-8","description":"Backend/CSP where the GPU powered instance has been launched. The original value\nwould not be updated and it should be the same as original. The field is required\nonly for validation.\n","maxLength":262144,"minLength":0},"clusters":{"type":"array","description":"Specific clusters within instance or worker node powered by the selected\ninstance-type to deploy function. The original value would not be updated and it\nshould be the same as original. The field is required only for validation.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"maxInstances":{"type":"integer","format":"int32","description":"Maximum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"minInstances":{"type":"integer","format":"int32","description":"Minimum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"instanceType":{"type":"string","format":"UTF-8","description":"Instance type, based on GPU, assigned to a Worker. Deprecated: this is read-only field, should not be specified in update request.","maxLength":262144,"minLength":0},"maxRequestConcurrency":{"type":"integer","format":"int32","description":"Max request concurrency between 1 (default) and 16384.","maximum":16384,"minimum":1}},"required":["maxInstances","minInstances"]},"AutoscalingConfigurationDto":{"type":"object","description":"Data Transfer Object(DTO) representing autoscaling configuration","properties":{"scaleUpDetails":{"$ref":"#/components/schemas/ScalingDetails","description":"Configuration for scaling up"},"scaleDownDetails":{"$ref":"#/components/schemas/ScalingDetails","description":"Configuration for scaling down"}}},"DeploymentHealthDto":{"type":"object","description":"Data Transfer Object(DTO) representing deployment error","properties":{"icmsRequestId":{"type":"string","format":"uuid","description":"ICMS Request ID","maxLength":36,"minLength":36},"gpu":{"type":"string","format":"UTF-8","description":"GPU Type as per SDD","maxLength":262144,"minLength":1},"backend":{"type":"string","format":"UTF-8","description":"Backend/CSP where the GPU powered instance will be launched","maxLength":262144,"minLength":1},"instanceType":{"type":"string","format":"UTF-8","description":"Instance type","maxLength":262144,"minLength":0},"error":{"type":"string","format":"UTF-8","description":"Deployment error","maxLength":262144,"minLength":1}},"required":["backend","error","gpu","icmsRequestId"]},"DeploymentResponse":{"type":"object","description":"Function Deployment Response","properties":{"deployment":{"$ref":"#/components/schemas/FunctionDeploymentDto","description":"Deployment details"}},"required":["deployment"]},"FunctionDeploymentDto":{"type":"object","description":"Function deployment response","properties":{"functionId":{"type":"string","format":"uuid","description":"Function id","maxLength":36,"minLength":36},"functionVersionId":{"type":"string","format":"uuid","description":"Function version id","maxLength":36,"minLength":36},"deploymentId":{"type":"string","format":"uuid","description":"Last deployment id","maxLength":36,"minLength":36},"functionName":{"type":"string","format":"UTF-8","description":"Function name","maxLength":262144,"minLength":1},"ncaId":{"type":"string","format":"UTF-8","description":"NVIDIA Cloud Account Id","maxLength":262144,"minLength":1},"functionStatus":{"type":"string","format":"UTF-8","description":"Function status","enum":["ACTIVE","DEPLOYING","ERROR","INACTIVE","DELETED","DEGRADED","DEGRADING"],"maxLength":262144,"minLength":0},"healthInfo":{"type":"array","description":"Health info for a deployment specification is included only if there are any\n issues/errors.\n","items":{"$ref":"#/components/schemas/DeploymentHealthDto"},"maxItems":2147483647,"minItems":0},"deploymentSpecifications":{"type":"array","description":"Function deployment details","items":{"$ref":"#/components/schemas/GpuSpecificationDto"},"maxItems":2147483647,"minItems":0},"createdAt":{"type":"string","format":"date-time","description":"Function deployment creation timestamp","maxLength":30,"minLength":8},"lastUpdatedAt":{"type":"string","format":"date-time","description":"Function deployment modification timestamp","maxLength":30,"minLength":8}},"required":["createdAt","deploymentId","deploymentSpecifications","functionId","functionName","functionStatus","functionVersionId","lastUpdatedAt","ncaId"]},"GpuSpecificationDto":{"type":"object","description":"Data Transfer Object(DTO) representing GPU specification.","properties":{"gpuSpecificationId":{"type":"string","format":"uuid","description":"GPU specification id","maxLength":36,"minLength":36},"gpu":{"type":"string","format":"UTF-8","description":"GPU name from the cluster","maxLength":262144,"minLength":1},"backend":{"type":"string","format":"UTF-8","description":"Use clusters instead of this property. Legacy property typically used when deploying a function to GFN.","maxLength":262144,"minLength":0},"maxInstances":{"type":"integer","format":"int32","description":"Maximum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"minInstances":{"type":"integer","format":"int32","description":"Minimum number of instances for the deployment","maximum":2147483647,"minimum":-2147483648},"instanceType":{"type":"string","format":"UTF-8","description":"Instance type, based on GPU, assigned to a Worker","maxLength":262144,"minLength":1},"availabilityZones":{"type":"array","description":"List of availability-zones(or clusters) in the cluster group","items":{"type":"string"},"maxItems":2147483647,"minItems":0},"maxRequestConcurrency":{"type":"integer","format":"int32","description":"Max request concurrency between 1 (default) and 16384.","maximum":16384,"minimum":1},"configuration":{"type":"object","description":"Typically used when the function is based on Helm Charts to substitute\n placeholders in values yaml.\n"},"clusters":{"type":"array","description":"Specific clusters powered by the selected instance-type to deploy function.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"regions":{"type":"array","description":"List of regions allowed to deploy. The instance or worker node will be in one of\nthe specified geographical regions.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"attributes":{"type":"array","description":"Specific cluster attributes/capabilities to deploy functions. For example,\nHIPPA Compliant, Confidential Compute Compliant, etc.\n","items":{"type":"string"},"maxItems":2147483647,"minItems":0,"uniqueItems":true},"cpuArch":{"type":"string","format":"UTF-8","description":"CPU Architecture details","maxLength":262144,"minLength":0},"os":{"type":"string","format":"UTF-8","description":"Operating System details","maxLength":262144,"minLength":0},"driverVersion":{"type":"string","format":"UTF-8","description":"GPU driver version","maxLength":262144,"minLength":0},"storage":{"type":"string","format":"UTF-8","description":"Amount of available storage, e.g. 80G","maxLength":262144,"minLength":0},"systemMemory":{"type":"string","format":"UTF-8","description":"Amount of RAM","maxLength":262144,"minLength":0},"gpuMemory":{"type":"string","format":"UTF-8","description":"Amount of GPU memory","maxLength":262144,"minLength":0},"autoscalingConfiguration":{"$ref":"#/components/schemas/AutoscalingConfigurationDto","description":"Customizable autoscaling configuration"},"helmValidationPolicy":{"$ref":"#/components/schemas/HelmValidationPolicyDto","description":"Helm validation policy"}},"required":["gpu","instanceType","maxInstances","minInstances"]},"HelmValidationPolicyDto":{"type":"object","description":"Data Transfer Object(DTO) representing Helm validation policy","properties":{"name":{"type":"string","format":"UTF-8","description":"Helm validation policy name.","enum":["Default","Unrestricted"],"maxLength":262144,"minLength":0},"extraKubernetesTypes":{"type":"array","description":"An API Group in Kubernetes is a collection of related functionality.\nWhen present, must contain at least one entry; each entry must be a valid\nKubernetesType (group, version, kind).\n","items":{"$ref":"#/components/schemas/KubernetesType"},"maxItems":2147483647,"minItems":1}},"required":["name"]},"KubernetesType":{"type":"object","properties":{"group":{"type":"string","format":"UTF-8","description":"Name of API Group","maxLength":262144,"minLength":1},"version":{"type":"string","format":"UTF-8","description":"Version of API Group","maxLength":262144,"minLength":1},"kind":{"type":"string","format":"UTF-8","description":"API Group resource or Kind","maxLength":262144,"minLength":1}},"required":["group","kind","version"]},"ScalingDetails":{"type":"object","properties":{"metric":{"type":"string","format":"UTF-8","description":"Scaling metric","maxLength":262144,"minLength":0},"factor":{"type":"number","format":"float","description":"Scaling factor must be greater-than 1.0 for scale up and less-than 1.0 for scale down. This factor is used to multiply the currentinstance count when specified threshold is met."},"threshold":{"type":"integer","format":"int32","description":"Scaling threshold (0-100) as a percentage of utilizationupon which the number of current instances are multiplied with thespecified factor.","maximum":2147483647,"minimum":-2147483648},"stickiness":{"$ref":"#/components/schemas/StickinessWindow","description":"Stickiness window configuration"}},"required":["factor","threshold"]},"StickinessWindow":{"type":"object","properties":{"size":{"type":"string","format":"duration","description":"Window size must be less than or equal to PT1H and will berounded to the nearest minute","example":"PT30M"},"threshold":{"type":"string","format":"duration","description":"Window threshold must be less than size","example":"PT5M"}},"required":["size","threshold"]},"BasicFunctionDto":{"type":"object","description":"Basic Data Transfer Object (DTO) representing a function","properties":{"functionId":{"type":"string","format":"uuid","description":"Unique function id","maxLength":36,"minLength":36},"functionVersionId":{"type":"string","format":"uuid","description":"Unique function version id","maxLength":36,"minLength":36}},"required":["functionId"]},"MultiFunctionsInvocationTokenRequest":{"type":"object","description":"Request body for issuing a function invocation token","properties":{"functions":{"type":"array","description":"Functions to invoke","items":{"$ref":"#/components/schemas/BasicFunctionDto"},"maxItems":4,"minItems":0},"clientId":{"type":"string","format":"UTF-8","description":"ClientId for client to pass in to track who will eventually use the token","maxLength":262144,"minLength":1}},"required":["clientId","functions"]},"InvocationTokenResponse":{"type":"object","description":"Function invocation token response","properties":{"access_token":{"type":"string","format":"UTF-8","description":"Token issued by Notary Service","maxLength":262144,"minLength":0},"expires_in":{"type":"integer","format":"int32","description":"Token expiration time in seconds","maximum":2147483647,"minimum":-2147483648}}},"InvocationTokenRequest":{"type":"object","description":"Request body for issuing a function invocation token","properties":{"clientId":{"type":"string","format":"UTF-8","description":"ClientId for client to pass in to track who will eventually use the token","maxLength":262144,"minLength":1}},"required":["clientId"]},"TelemetryRequest":{"type":"object","description":"Data Transfer Object (DTO) representing a telemetry request","properties":{"endpoint":{"type":"string","format":"UTF-8","description":"Telemetry endpoint URL","maxLength":262144,"minLength":1},"protocol":{"type":"string","format":"UTF-8","description":"Protocol used for communication","enum":["HTTP","GRPC"],"maxLength":262144,"minLength":0},"provider":{"type":"string","format":"UTF-8","description":"Telemetry provider","enum":["PROMETHEUS","GRAFANA_CLOUD","SPLUNK","DATADOG","SERVICENOW","KRATOS","KRATOS_THANOS","TIMESTREAM","VICTORIAMETRICS","AZURE_MONITOR","OTEL_COLLECTOR"],"maxLength":262144,"minLength":0},"types":{"type":"array","description":"Set of telemetry data types","items":{"type":"string","enum":["LOGS","METRICS","TRACES"]},"maxItems":2147483647,"minItems":1,"uniqueItems":true},"secret":{"$ref":"#/components/schemas/SecretDto","description":"Single secret associated with the telemetry configuration"}},"required":["endpoint","protocol","provider","secret","types"]},"TelemetryDto":{"type":"object","description":"Data Transfer Object (DTO) for Telemetry configurations","properties":{"telemetryId":{"type":"string","format":"uuid","description":"Unique telemetry ID","maxLength":36,"minLength":36},"name":{"type":"string","format":"UTF-8","description":"Telemetry name","maxLength":262144,"minLength":1},"endpoint":{"type":"string","format":"UTF-8","description":"URL for the telemetry endpoint","maxLength":262144,"minLength":1},"protocol":{"type":"string","format":"UTF-8","description":"Protocol used for communication","enum":["HTTP","GRPC"],"maxLength":262144,"minLength":0},"provider":{"type":"string","format":"UTF-8","description":"Telemetry provider","enum":["PROMETHEUS","GRAFANA_CLOUD","SPLUNK","DATADOG","SERVICENOW","KRATOS","KRATOS_THANOS","TIMESTREAM","VICTORIAMETRICS","AZURE_MONITOR","OTEL_COLLECTOR"],"maxLength":262144,"minLength":0},"types":{"type":"array","description":"Set of telemetry data types","items":{"type":"string","enum":["LOGS","METRICS","TRACES"]},"maxItems":2147483647,"minItems":1,"uniqueItems":true},"createdAt":{"type":"string","format":"date-time","description":"Telemetry creation timestamp","maxLength":30,"minLength":8}},"required":["createdAt","endpoint","name","protocol","provider","telemetryId","types"]},"TelemetryResponse":{"type":"object","description":"Data Transfer Object (DTO) representing a telemetry response","properties":{"telemetry":{"$ref":"#/components/schemas/TelemetryDto","description":"Telemetry details"}}},"AddRegistryCredentialRequest":{"type":"object","description":"Request body to add a registry credential to an account","properties":{"registryHostname":{"type":"string","format":"UTF-8","description":"Registry hostname","maxLength":255,"minLength":1,"pattern":"(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?- + The public NGC catalog: guest reads of models, resources, recipes, helm + charts, collections and generic artifacts, plus the GPU and cloud service + provider catalogs (no organization scope; public artifacts read without + credentials). + nvcf_deployments: + id: nvcf_deployments:v00.00.00000 + name: nvcf_deployments + preferred: true + service: + $ref: nvidia/v00.00.00000/services/nvcf_deployments.yaml + title: NVIDIA Cloud Functions - Deployments + version: v00.00.00000 + description: >- + NVCF deployments and GPU specifications, cluster groups and GPU inventory, + registry credentials and telemetry endpoints (source: the published NVCF + OpenAPI specification; served from api.ngc.nvidia.com). + nvcf_functions: + id: nvcf_functions:v00.00.00000 + name: nvcf_functions + preferred: true + service: + $ref: nvidia/v00.00.00000/services/nvcf_functions.yaml + title: NVIDIA Cloud Functions - Functions + version: v00.00.00000 + description: >- + NVCF functions and versions, function metadata, authorizations (function + sharing grants), secrets and rate limits (source: the published NVCF + OpenAPI specification; management operations served from + api.ngc.nvidia.com). + nvcf_invocation: + id: nvcf_invocation:v00.00.00000 + name: nvcf_invocation + preferred: true + service: + $ref: nvidia/v00.00.00000/services/nvcf_invocation.yaml + title: NVIDIA Cloud Functions - Invocation + version: v00.00.00000 + description: >- + NVCF HTTP-polling invocation (pexec and status), assets and invocation + assertion tokens (served from api.nvcf.nvidia.com). + nvcf_queues: + id: nvcf_queues:v00.00.00000 + name: nvcf_queues + preferred: true + service: + $ref: nvidia/v00.00.00000/services/nvcf_queues.yaml + title: NVIDIA Cloud Functions - Queues + version: v00.00.00000 + description: >- + NVCF request queue details per function and version, and queue position + per request (served from api.nvcf.nvidia.com). + orgs: + id: orgs:v00.00.00000 + name: orgs + preferred: true + service: + $ref: nvidia/v00.00.00000/services/orgs.yaml + title: NVIDIA NGC Organizations + version: v00.00.00000 + description: >- + NGC organizations, teams, users and team members, role grants, invitations + and the current user (source: the NGC API definition harvested from the + API explorer). + private_registry: + id: private_registry:v00.00.00000 + name: private_registry + preferred: true + service: + $ref: nvidia/v00.00.00000/services/private_registry.yaml + title: NVIDIA NGC Private Registry + version: v00.00.00000 + description: >- + Org-scoped artifact metadata in the NGC private registry: models, + resources, recipes, generic artifacts (containers, helm charts), versions + and files, collections, shares, deployment parameters, encryption keys and + workflows. Team-scoped twins are mapped as *_by_team methods (source: the + Private Artifacts (Models) API definition, responses from the ngcsdk data + classes). +config: + auth: + type: bearer + credentialsenvvar: NGC_API_KEY + snake_case_aliases: true diff --git a/provider-dev/source/registry.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/catalog.yaml similarity index 55% rename from provider-dev/source/registry.yaml rename to provider-dev/openapi/src/nvidia/v00.00.00000/services/catalog.yaml index 7002882..7a6deea 100644 --- a/provider-dev/source/registry.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/catalog.yaml @@ -1,414 +1,179 @@ openapi: 3.1.0 info: - title: registry API - description: nvidia registry API + title: NVIDIA NGC Catalog + description: 'The public NGC catalog: guest reads of models, resources, recipes, helm charts, collections and generic artifacts, plus the GPU and cloud service provider catalogs (no organization scope; public artifacts read without credentials).' version: 0.0.1-SNAPSHOT paths: - /v1/org/{orgName}/{artifactType}/{artifactName}/spec: + /v2/collections: get: - tags: - - AIPlayground - summary: Get AI Playground for artifactType - description: Get AI Playground for artifactType - operationId: getModelArtifactsSpec - parameters: - - name: orgName - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifactType - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - models - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 - minLength: 0 - - name: artifactName - in: path - description: Model name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AIPlaygroundResponse' - security: - - ssa: - - kas - - getArtifact - x-ssa-scopes: - - getArtifact - - kas - put: - tags: - - AIPlayground - summary: Update AI Playground for artifactType - description: Update AI Playground for artifactType - operationId: updateModelArtifactsSpec + description: List public collections + operationId: listPublicCollections parameters: - - name: orgName - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifactType - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - models - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 - minLength: 0 - - name: artifactName - in: path - description: Model name - required: true + - description: Page size + in: query + name: page-size + required: false schema: - type: string format: UTF-8 maxLength: 262144 + maximum: 5000 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AIPlaygroundUpdateRequest' - required: true - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AIPlaygroundResponse' - security: - - ssa: - - kas - - writeArtifacts - x-ssa-scopes: - - writeArtifacts - - kas - delete: - tags: - - AIPlayground - summary: Delete AI Playground for artifactType - description: Delete AI Playground for artifactType - operationId: deleteModelArtifactsSpec - parameters: - - name: orgName - in: path - description: Organization name - required: true - schema: + minimum: 1 type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifactType - in: path - description: Artifact type - required: true + - description: Page number - zero based index + in: query + name: page-number + required: false schema: - type: string format: UTF-8 - enum: - - models - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills maxLength: 262144 + maximum: 10000 minLength: 0 - - name: artifactName - in: path - description: Model name - required: true - schema: + minimum: 0 type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - deleteArtifacts - x-ssa-scopes: - - deleteArtifacts - - kas - /v1/org/{orgName}/{artifactType}/spec: - post: - tags: - - AIPlayground - summary: Create AI Playground for artifactType - description: Create AI Playground for artifactType - operationId: createModelArtifactsSpec - parameters: - - name: orgName - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifactType - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - models - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 - minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AIPlaygroundCreateRequest' - required: true - responses: - '200': + $ref: '#/components/schemas/CollectionListResponse' description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AIPlaygroundResponse' - security: - - ssa: - - kas - - writeArtifacts - x-ssa-scopes: - - writeArtifacts - - kas - /v1/artifact-registry/org/{org}/workflows/{workflowId}: - get: - tags: - - Workflows - summary: Get workflow status - description: >- - Returns the current status (pending, running, completed, or failed) of - an artifact-registry Temporal workflow execution within the specified - organization. - operationId: getWorkflowStatus - parameters: - - name: org - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: workflowId - in: path - description: Workflow identifier - required: true - schema: - type: string - format: UTF-8 - maxLength: 512 - minLength: 0 - responses: '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - cloneArtifact - x-ssa-scopes: - - kas - - cloneArtifact - /v1/org/{orgName}/{artifactType}/{artifactName}/purge: - delete: + description: Internal Error + summary: List public collections tags: - - Artifacts - summary: Purge Search DB - description: Purge Search DB for deleted artifacts - operationId: purgeDeletedArtifact + - Collections + /v2/collections/{org_name}/{collection_name}: + get: + description: Get collection details in org as guest + operationId: getCollectionInOrgAsGuest parameters: - - name: orgName + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: artifactType - in: path - description: Artifact type - required: true - schema: type: string - format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 - minLength: 0 - - name: artifactName + - description: Collection name in: path - description: Artifact name + name: collection_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - purgeArtifact - x-ssa-scopes: - - kas - - purgeArtifact - /v1/org/{org_name}/{artifact_type}/{artifact_name}/terms-of-service: - put: + description: Internal Error + summary: Get collection in org as guest tags: - - Publish - summary: Update artifact terms of service - description: Update artifact terms of service - operationId: updateTermsOfService + - Collections + /v2/collections/{org_name}/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org as guest + operationId: listCollectionArtifactsInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Collection name in: path - description: Artifact type + name: collection_name required: true schema: - type: string format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: enum: - MODEL - MODEL_SCRIPT @@ -421,179 +186,231 @@ paths: - AGENT - API - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ArtifactPublishRequest' - required: true + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - publishArtifact - - kas - x-ssa-scopes: - - publishArtifact - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/share: - put: + description: Internal Error + summary: List collection artifacts in org as guest tags: - - Publish - summary: Publish artifact to public - description: Publish artifact to public - operationId: publishArtifact + - Collections + /v2/collections/{org_name}/{team_name}/{collection_name}: + get: + description: Get collection details in team as guest + operationId: getCollectionInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Team name in: path - description: Artifact type + name: team_name required: true schema: - type: string format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: artifact_name + type: string + - description: Collection name in: path - description: Artifact name + name: collection_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: guest-can-download + type: string + - description: Resolve labels in: query - description: Indicates if guest users can download this artifact - required: true + name: resolve-labels + required: false schema: type: boolean - - name: public-can-list + - description: Remove unresolved labels in: query - description: Indicates if artifact is listed publicly + name: remove-unresolved-labels required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - publishArtifact - x-ssa-scopes: - - publishArtifact - delete: + description: Internal Error + summary: Get collection in team as guest tags: - - Publish - summary: Undo publishing of artifact to public - description: Undo publishing of artifact to public - operationId: undoPublishArtifact + - Collections + /v2/collections/{org_name}/{team_name}/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org and team as guest + operationId: listCollectionArtifactsInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Team name in: path - description: Artifact type + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: enum: - MODEL - MODEL_SCRIPT @@ -606,2933 +423,2470 @@ paths: - AGENT - API - SKILL + format: UTF-8 maxLength: 262144 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC format: UTF-8 maxLength: 262144 minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - undoPublishArtifact - x-ssa-scopes: - - undoPublishArtifact - /v1/org/{org_name}/{artifact_type}/{artifact_name}/share/product: - put: + description: Internal Error + summary: List collection artifacts in org and team as guest tags: - - Publish - summary: Publish artifact to product - description: Publish artifact to product - operationId: publishArtifactFromRequest + - Collections + /v2/csps: + get: + description: List cloud service providers + operationId: listCloudServiceProviders parameters: - - name: org_name - in: path - description: Organization name - required: true + - description: Page size + in: query + name: page-size + required: false schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true + maximum: 5000 + minimum: 1 + type: integer + - description: Page number - zero based index + in: query + name: page-number + required: false schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true + maximum: 10000 + minimum: 0 + type: integer + - description: Include disabled + in: query + name: include-disabled + required: false schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ArtifactPublishRequest' - required: true + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProviderListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - publishArtifact - x-ssa-scopes: - - publishArtifact - delete: + description: Internal Error + summary: List cloud service providers tags: - - Publish - summary: Undo publishing of product artifacts - description: Undo publishing of product artifacts - operationId: undoPublishProduct - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 + - Cloud service providers + post: + description: Create cloud service provider + operationId: createCloudServiceProvider + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProviderCreateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProvider' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - undoPublishArtifact - x-ssa-scopes: - - undoPublishArtifact - /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature: - get: + description: Internal Error + summary: Create cloud service provider tags: - - ArtifactSigning - description: >- - Request to retrieve a pre-signed Download URL for the signature of an - artifact version - operationId: getArtifactVersionSignature + - Cloud service providers + parameters: [] + /v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params: + get: + description: List public artifact deployment parameters in org + operationId: listPublicArtifactDeploymentParametersInOrg parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name + - description: Artifact type in: path - description: Artifact name + name: artifact_type required: true schema: - type: string + enum: + - repositories + - recipes + - models format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Artifact name in: path - description: Version ID + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: redirect + type: string + - description: Inherit CSP parameters in: query - description: Get redirect URL + name: inherit-csp-parameters required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - put: + description: Internal Error + summary: List public artifact deployment parameters in org tags: - - ArtifactSigning - description: Request to sign artifact version - operationId: signArtifactVersion + - Artifact deployment parameters + /v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get public artifact deployment parameters details in org + operationId: getPublicArtifactDeploymentParametersInOrg parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Artifact type in: path - description: Artifact type + name: artifact_type required: true schema: - type: string - format: UTF-8 enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL + - repositories + - recipes + - models + format: UTF-8 maxLength: 262144 minLength: 0 - - name: artifact_name + type: string + - description: Artifact name in: path - description: Artifact name + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Cloud service provider name in: path - description: Version ID + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - signArtifactVersion - x-ssa-scopes: - - signArtifactVersion - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/release-type: - put: + description: Internal Error + summary: Get public artifact deployment parameters details in org tags: - - Publish - summary: Update artifact version release type - description: >- - Updates the release type (for example GA, EA, beta) of an artifact - version within the specified organization and optional team. - operationId: updateReleaseLabel + - Artifact deployment parameters + /v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params: + get: + description: List public artifact deployment parameters in team + operationId: listPublicArtifactDeploymentParametersInTeam parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Team name in: path - description: Artifact type + name: team_name required: true schema: - type: string format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL + - repositories + - recipes + - models + format: UTF-8 maxLength: 262144 minLength: 0 - - name: artifact_name + type: string + - description: Artifact name in: path - description: Artifact name + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateReleaseTypeRequest' - required: true + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - publishArtifact - x-ssa-scopes: - - publishArtifact - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}: - get: + description: Internal Error + summary: List public artifact deployment parameters in team tags: - - Artifacts - summary: Get artifact in org - description: Get artifact details in org - operationId: getArtifactInOrg + - Artifact deployment parameters + /v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get public artifact deployment parameters details in team + operationId: getPublicArtifactDeploymentParametersInTeam parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Team name in: path - description: Artifact type + name: team_name required: true schema: - type: string format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills + - repositories + - recipes + - models + format: UTF-8 maxLength: 262144 minLength: 0 - - name: artifact_name + type: string + - description: Artifact name in: path - description: Artifact name + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true schema: - type: boolean - - name: remove-unresolved-labels + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters in: query - description: Remove unresolved labels + name: inherit-csp-parameters required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getArtifact - x-ssa-scopes: - - getArtifact - - kas - put: + description: Internal Error + summary: Get public artifact deployment parameters details in team tags: - - Artifacts - summary: Replace artifact in org - description: Replace artifact details in org - operationId: replaceArtifactInOrg + - Artifact deployment parameters + /v2/csps/{csp_name}: + get: + description: Get cloud service provider details + operationId: getCloudServiceProviderDetails parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type + - description: Cloud service provider name in: path - description: Artifact type + name: csp_name required: true schema: - type: string format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills maxLength: 262144 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ArtifactUpdateRequest' - required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProvider' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateArtifact - x-ssa-scopes: - - updateArtifact - - kas - delete: + description: Internal Error + summary: Get cloud service provider details tags: - - Artifacts - summary: Delete artifact in org - description: Delete artifact in org - operationId: deleteArtifactInOrg + - Cloud service providers + patch: + description: Update cloud service provider + operationId: updateCloudServiceProvider parameters: - - name: org_name + - description: Cloud service provider name in: path - description: Organization name + name: csp_name required: true schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills maxLength: 262144 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProviderUpdateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProvider' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - deleteArtifact - x-ssa-scopes: - - deleteArtifact - - kas - patch: + description: Internal Error + summary: Update cloud service provider tags: - - Artifacts - summary: Update artifact in org - description: Update artifact details in org - operationId: updateArtifactInOrg + - Cloud service providers + delete: + description: Delete cloud service provider + operationId: deleteCloudServiceProvider parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type + - description: Cloud service provider name in: path - description: Artifact type + name: csp_name required: true schema: - type: string format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills maxLength: 262144 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ArtifactUpdateRequest' - required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateArtifact - x-ssa-scopes: - - updateArtifact - - kas - /v1/org/{org_name}/models/{model_name}/shares/team/{target_team}: - put: + description: Internal Error + summary: Delete cloud service provider tags: - - Models - summary: Share org model with the specified team - description: This operation shares an org model with the team. - operationId: shareModelInOrgWithTeam + - Cloud service providers + /v2/csps/{csp_name}/deployments/params: + get: + description: Get cloud service provider deployment parameters details + operationId: getCloudServiceProviderDeploymentParametersDetails parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: model_name + - description: Cloud service provider name in: path - description: Model name + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: target_team - in: path - description: Target team name - required: true - schema: type: string - format: UTF-8 - maxLength: 255 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Get cloud service provider deployment parameters details tags: - - Models - summary: Revoke shared org model with the specified team - description: This operation revokes a shared org model with the team. - operationId: revokeShareModelInOrgWithTeam + - Cloud service provider deployment parameters + post: + description: Create cloud service provider deployment parameters + operationId: createCloudServiceProviderDeploymentParameters parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: model_name + - description: Cloud service provider name in: path - description: Model name + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: target_team - in: path - description: Target team name - required: true - schema: type: string - format: UTF-8 - maxLength: 255 - minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/models/{model_name}/shares/org: - put: + description: Internal Error + summary: Create cloud service provider deployment parameters tags: - - Models - summary: Share org model with the org - description: This operation shares an org model with the org. - operationId: shareModelInOrgWithOrg + - Cloud service provider deployment parameters + patch: + description: Update cloud service provider deployment parameters + operationId: updateCloudServiceProviderDeploymentParameters parameters: - - name: org_name + - description: Cloud service provider name in: path - description: Organization name + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: model_name - in: path - description: Model name - required: true - schema: type: string - format: UTF-8 - maxLength: 255 - minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersUpdateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Update cloud service provider deployment parameters tags: - - Models - summary: Revoke shared org model with the org - description: This operation revokes a shared org model with the org. - operationId: revokeShareModelInOrgWithOrg + - Cloud service provider deployment parameters + delete: + description: Delete cloud service provider deployment parameters + operationId: deleteCloudServiceProviderDeploymentParameters parameters: - - name: org_name + - description: Cloud service provider name in: path - description: Organization name + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: model_name - in: path - description: Model name - required: true - schema: type: string - format: UTF-8 - maxLength: 255 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/collections/{collection_name}/{artifact_type}/{artifact_name}: - put: + description: Internal Error + summary: Delete cloud service provider deployment parameters tags: - - Collections - summary: Add artifact to collection in org - description: Add artifact to the specified collection in the specified org - operationId: addArtifactToCollectionInOrg + - Cloud service provider deployment parameters + /v2/csps/{csp_name}/deployments/params/meta: + get: + description: Get cloud service provider deployment parameters meta details + operationId: getCloudServiceProviderDeploymentParametersMetaDetails parameters: - - name: org_name + - description: Cloud service provider name in: path - description: Organization name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMeta' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Get cloud service provider deployment parameters meta details tags: - - Collections - summary: Remove artifact from collection in org - description: Remove artifact from the specified collection in the specified org - operationId: removeArtifactFromCollectionInOrg + - Deployment parameters meta + post: + description: Create cloud service provider deployment parameters meta + operationId: createCloudServiceProviderDeploymentParametersMeta parameters: - - name: org_name + - description: Cloud service provider name in: path - description: Organization name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMetaCreateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMeta' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/collections/{collection_name}/shares/team/{target_team}: - put: + description: Internal Error + summary: Create cloud service provider deployment parameters meta tags: - - Collections - summary: Share org collection with the specified team - description: Share org collection with the specified team - operationId: shareCollectionInOrgWithTeam + - Deployment parameters meta + patch: + description: Update cloud service provider deployment parameters meta + operationId: updateCloudServiceProviderDeploymentParametersMeta parameters: - - name: org_name + - description: Cloud service provider name in: path - description: Organization name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: target_team - in: path - description: Target team name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMetaUpdateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMeta' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Update cloud service provider deployment parameters meta tags: - - Collections - summary: Revoke shared org collection with the specified team - description: Revoke shared org collection with the specified team - operationId: revokeShareCollectionInOrgWithTeam + - Deployment parameters meta + delete: + description: Delete cloud service provider deployment parameters meta + operationId: deleteCloudServiceProviderDeploymentParametersMeta parameters: - - name: org_name + - description: Cloud service provider name in: path - description: Organization name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: target_team - in: path - description: Target team name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/collections/{collection_name}/shares/org: - put: + description: Internal Error + summary: Delete cloud service provider deployment parameters meta tags: - - Collections - summary: Share org collection with the org - description: Share org collection with the org - operationId: shareCollectionInOrgWithOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 + - Deployment parameters meta + /v2/gpus: + get: + description: Get all GPU by PCI records + operationId: getGpus responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetGpusResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Get all GPUs tags: - - Collections - summary: Revoke shared org collection with the org - description: Revoke shared org collection with the org - operationId: revokeShareCollectionInOrgWithOrg + - GpuByPci + parameters: [] + /v2/gpus/pci-device-id/{pci_device_id}: + get: + description: Get all GPU records matching the given PCI Device ID + operationId: getGpuByPciDeviceId parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetGpuByPciDeviceIdResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/collections/{collection_name}/share/product: - put: + description: Internal Error + summary: Get GPU by PCI Device ID tags: - - Publish - summary: Publish collection to product - description: Publish collection to product - operationId: publishCollectionFromRequest + - GpuByPci + post: + description: Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown') + operationId: createGpuByPciDeviceId parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 requestBody: content: application/json: schema: - $ref: '#/components/schemas/CollectionPublishRequest' + $ref: '#/components/schemas/GpuByPciCreateRequest' required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - publishCollection - x-ssa-scopes: - - publishCollection - /v1/org/{org_name}/collections/{collection_name}/artifacts/org/{artifact_org-name}/{artifact_type}/{artifact_name}: - put: + description: Internal Error + summary: Create GPU by PCI Device ID only tags: - - Collections - summary: Add artifact to collection in org from another org - description: >- - Add artifact to the specified collection in the specified org from - another org - operationId: addArtifactToCollectionInOrgFromAnotherOrg + - GpuByPci + patch: + description: Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated. + operationId: updateGpuByPciDeviceId parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: artifact_org_name - in: path - description: Artifact organization name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifact_type + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Partially update GPU by PCI Device ID only + tags: + - GpuByPci + delete: + description: Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown') + operationId: deleteGpuByPciDeviceId + parameters: + - description: PCI Device ID in: path - description: Artifact type + name: pci_device_id required: true schema: - type: string format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - addArtifactToCollectionFromAnotherOrgOrTeam - x-ssa-scopes: - - addArtifactToCollectionFromAnotherOrgOrTeam - - kas - delete: + description: Internal Error + summary: Delete GPU by PCI Device ID only tags: - - Collections - summary: Remove artifact from collection in org from another org - description: >- - Remove artifact from the specified collection in the specified org from - another org - operationId: removeArtifactFromCollectionInOrgFromAnotherOrg + - GpuByPci + /v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}: + get: + description: Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID + operationId: getGpuByPciDeviceIdVendorId parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: collection_name + - description: PCI Device ID in: path - description: Collection name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: artifact_org_name - in: path - description: Artifact organization name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifact_type + - description: PCI Vendor ID in: path - description: Artifact type + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetGpuByPciDeviceIdVendorIdResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{orgName}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan: - post: + description: Internal Error + summary: Get GPUs by PCI Device ID and Vendor ID tags: - - MalwareScan - summary: Initiates malwares can for the artifact - description: Initiates malwares can for the artifact - operationId: initiateMalwareScan + - GpuByPci + /v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id}: + get: + description: Get a single GPU record matching the full PCI composite key + operationId: getGpuByPciDeviceIdVendorIdSubsystemDeviceId parameters: - - name: orgName + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name + - description: PCI Vendor ID in: path - description: Artifact name + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: version_id + type: string + - description: PCI Subsystem Device ID in: path - description: Version ID + name: pci_subsystem_device_id required: true schema: - type: string - format: UTF-8 - maxLength: 512 - minLength: 0 - - name: contact-email - in: query - description: Contact email - required: false - schema: - type: string format: UTF-8 - maxLength: 320 + maxLength: 32 minLength: 0 - - name: nspect-id - in: query - description: Nspect identifier - required: false - schema: type: string - format: UTF-8 - maxLength: 64 - minLength: 0 responses: '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' description: OK + '401': content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}: - post: + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Artifact deployment parameters - summary: Create artifact version deployment url in org - description: Create artifact version deployment url in org - operationId: createArtifactDeploymentUrlInOrg + - GpuByPci + post: + description: Create a new GPU record using the full PCI composite key + operationId: createGpuByPciFullKey parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: artifact_type + type: string + - description: PCI Vendor ID in: path - description: Artifact type + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - enum: - - repositories - - recipes - - models - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: artifact_name + type: string + - description: PCI Subsystem Device ID in: path - description: Artifact name + name: pci_subsystem_device_id required: true schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: csp_name - in: path - description: Cloud service provider name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 requestBody: content: application/json: schema: - $ref: '#/components/schemas/DeploymentUrlCreateRequest' + $ref: '#/components/schemas/GpuByPciCreateRequest' required: true responses: - '400': - description: Bad Request + '200': content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/GpuByPciResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '409': - description: Conflict content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params: - get: + description: Internal Error + summary: Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Artifact deployment parameters - summary: Get artifact deployment parameters details in org - description: Get artifact deployment parameters details in org - operationId: getArtifactDeploymentParametersInOrg + - GpuByPci + patch: + description: Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated. + operationId: updateGpuByPciFullKey parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: type: string - format: UTF-8 - enum: - - repositories - - recipes - - models - maxLength: 262144 - minLength: 0 - - name: artifact_name + - description: PCI Vendor ID in: path - description: Artifact name + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: csp_name + type: string + - description: PCI Subsystem Device ID in: path - description: Cloud service provider name + name: pci_subsystem_device_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: inherit-csp-parameters - in: query - description: Inherit CSP parameters - required: false - schema: - type: boolean + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciUpdateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - post: + description: Internal Error + summary: Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Artifact deployment parameters - summary: Create artifact deployment parameters in org - description: Create artifact deployment parameters in org - operationId: createArtifactDeploymentParametersInOrg + - GpuByPci + delete: + description: Delete a GPU record matching the full PCI composite key + operationId: deleteGpuByPciFullKey parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: type: string - format: UTF-8 - enum: - - repositories - - recipes - - models - maxLength: 262144 - minLength: 0 - - name: artifact_name + - description: PCI Vendor ID in: path - description: Artifact name + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: csp_name + type: string + - description: PCI Subsystem Device ID in: path - description: Cloud service provider name + name: pci_subsystem_device_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: no-auto-labels - in: query - description: No auto labels - required: false - schema: - type: boolean - - name: merge-csp-parameters - in: query - description: Merge CSP parameters in response - required: false - schema: - type: boolean - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeploymentParametersCreateRequest' - required: true + type: string responses: - '400': - description: Bad Request + '200': content: application/json: schema: $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '409': - description: Conflict content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Artifact deployment parameters - summary: Delete artifact deployment parameters in org - description: Delete artifact deployment parameters in org - operationId: deleteArtifactDeploymentParametersInOrg + - GpuByPci + /v2/helm-charts/{org_name}/{artifact_name}/versions: + get: + description: List chart versions in org as guest + operationId: listHelmChartVersionsInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Artifact name in: path - description: Artifact type + name: artifact_name required: true schema: - type: string format: UTF-8 - enum: - - repositories - - recipes - - models maxLength: 262144 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true + type: string + - description: Page size + in: query + name: page-size + required: false schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 10000 minLength: 0 - - name: csp_name - in: path - description: Cloud service provider name - required: true + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: - '400': - description: Bad Request + '200': content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '409': - description: Conflict content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - patch: + description: Internal Error + summary: List chart versions in org as guest tags: - - Artifact deployment parameters - summary: Update artifact deployment parameters in org - description: Update artifact deployment parameters in org - operationId: updateArtifactDeploymentParametersInOrg + - Helm Charts + /v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in org as guest + operationId: getHelmChartVersionInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: type: string - format: UTF-8 - enum: - - repositories - - recipes - - models - maxLength: 262144 - minLength: 0 - - name: artifact_name + - description: Artifact name in: path - description: Artifact name + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: csp_name + type: string + - description: Version ID in: path - description: Cloud service provider name + name: version_id required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: merge-csp-parameters - in: query - description: Merge CSP parameters in response - required: false - schema: - type: boolean - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeploymentParametersUpdateRequest' - required: true + type: string responses: - '400': - description: Bad Request + '200': content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '409': - description: Conflict content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels: - post: + description: Internal Error + summary: Get chart version in org as guest tags: - - Collections - summary: Sync collection release type labels for artifact - description: >- - Sync release type labels for all collections containing this artifact. - Internal API for service-to-service communication. - operationId: syncCollectionReleaseTypeLabelsForArtifact + - Helm Charts + /v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions: + get: + description: List chart versions in team as guest + operationId: listHelmChartVersionsInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Artifact name in: path - description: Artifact type + name: artifact_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Page size + in: query + name: page-size + required: false + schema: format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL maxLength: 262144 + maximum: 5000 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - syncReleaseTypeLabels - x-ssa-scopes: - - kas - - syncReleaseTypeLabels - /v1/org/{org_name}/{artifact_type}/{artifact_name}/license/acceptance: - get: + description: Internal Error + summary: List chart versions in team as guest tags: - - Publish - summary: Check if user needs to accept license - description: Check if user needs to accept license. Checks against uam - operationId: getOrgArtifactLicenseAcceptance + - Helm Charts + /v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in team as guest + operationId: getHelmChartVersionInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Team name in: path - description: Artifact type + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL maxLength: 262144 minLength: 0 - - name: artifact_name + type: string + - description: Version ID in: path - description: Artifact name + name: version_id required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - post: + description: Internal Error + summary: Get chart version in team as guest tags: - - Publish - summary: Accept artifact license - description: Record license acceptance for an org artifact. - operationId: acceptArtifactLicense + - Helm Charts + /v2/models: + get: + description: This operation lists public models. + operationId: listPublicModels parameters: - - name: org_name - in: path - description: Organization name - required: true + - description: Page size + in: query + name: page-size + required: false schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 262144 + maximum: 1000 minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: + minimum: 1 type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 + maxLength: 1024 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 10000 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AcceptArtifactLicenseRequest' - required: true + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/{artifact_type}: - get: + description: Internal Error + summary: List public models tags: - - Artifacts - summary: List artifacts in org - description: List artifacts the user can access in the specified org - operationId: listArtifactsInOrg + - Models + /v2/models/{org_name}/{model_name}: + get: + description: This operation gets info of a model in the org as guest. + operationId: getModelInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Model name in: path - description: Artifact type + name: model_name required: true schema: - type: string - format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string format: UTF-8 - maxLength: 262144 - maximum: 5000 + maxLength: 255 minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 - - name: resolve-labels + - description: Resolve labels in: query - description: Resolve labels + name: resolve-labels required: false schema: type: boolean - - name: remove-unresolved-labels + - description: Remove unresolved labels in: query - description: Remove unresolved labels + name: remove-unresolved-labels required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listArtifacts - x-ssa-scopes: - - listArtifacts - - kas - post: + description: Internal Error + summary: Get model in org as guest tags: - - Artifacts - summary: Create artifact in org - description: Create artifact in org - operationId: createArtifactInOrg + - Models + /v2/models/{org_name}/{model_name}/versions: + get: + description: List model versions in org as guest + operationId: listModelVersionsInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Model name in: path - description: Artifact type + name: model_name required: true schema: - type: string - format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 - minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ArtifactCreateRequest' - required: true - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createArtifact - x-ssa-scopes: - - createArtifact - - kas - /v1/org/{org_name}/recipes/{recipe_name}/versions: - get: - tags: - - Resource Versions - summary: List recipe versions in org - description: List recipe versions in org - operationId: listRecipeVersionsInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB format: UTF-8 maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 - maximum: 5000 + maximum: 1000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: sort-order + type: string + - description: Sort order in: query - description: Sort order + name: sort-order required: false schema: - type: string - format: UTF-8 enum: - ALPHABETIC_ASC - ALPHABETIC_DESC @@ -3550,890 +2904,913 @@ paths: - BUILT_BY_DESC - RESOURCE_ID_ASC - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - - name: release-type - in: query - description: Release Type - required: false - schema: - type: string format: UTF-8 - enum: - - BETA - - GA - - EA - - FEATURE - - PRODUCTION - - LTSB maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listRecipeVersions - x-ssa-scopes: - - listRecipeVersions - - kas - post: + description: Internal Error + summary: List model versions in org as guest tags: - - Resource Versions - summary: Create recipe version in org - description: >- - Create recipe version in org. Please use the string versionId and not - the deprecated numeric id. Semantic Versioning is recommended - https://semver.org - operationId: createRecipeVersionInOrg + - Model Version + /v2/models/{org_name}/{model_name}/versions/{version_id}: + get: + description: Get model version in org as guest + operationId: getModelVersionInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Model name in: path - description: Recipe name + name: model_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 - maxLength: 262144 + maxLength: 512 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RecipeVersionCreateRequest' - required: true + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createRecipeVersion - x-ssa-scopes: - - createRecipeVersion - - kas - /v1/org/{org_name}/resources/{recipe_name}/versions: - get: + description: Internal Error + summary: Get model version in org as guest tags: - - Resource Versions - summary: List recipe versions in org - description: List recipe versions in org - operationId: listRecipeVersionsInOrg_1 + - Model Version + /v2/models/{org_name}/{model_name}/versions/{version_id}/files: + get: + description: List files of the model version in org as guest + operationId: listModeFilesInOrgAsGuest_2 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Model name in: path - description: Recipe name + name: model_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 maxLength: 262144 - maximum: 5000 minLength: 0 - minimum: 1 - - name: page-number + type: string + - description: Page size in: query - description: Page number - zero based index + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 - maximum: 10000 + maximum: 5000 minLength: 0 - minimum: 0 - - name: sort-order + minimum: 1 + type: string + - description: Page reference in: query - description: Sort order + name: page-reference required: false schema: - type: string format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC - maxLength: 262144 + maxLength: 1024 minLength: 0 - - name: release-type + type: string + - description: Page number - zero based index in: query - description: Release Type + name: page-number required: false schema: - type: string format: UTF-8 - enum: - - BETA - - GA - - EA - - FEATURE - - PRODUCTION - - LTSB maxLength: 262144 + maximum: 10000 minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listRecipeVersions - x-ssa-scopes: - - listRecipeVersions - - kas - post: + description: Internal Error + summary: List model files in org as guest tags: - - Resource Versions - summary: Create recipe version in org - description: >- - Create recipe version in org. Please use the string versionId and not - the deprecated numeric id. Semantic Versioning is recommended - https://semver.org - operationId: createRecipeVersionInOrg_1 + - Model Version Files + /v2/models/{org_name}/{team_name}/{model_name}: + get: + description: This operation gets info of a model in the org/team as guest. + operationId: getModelInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Team name in: path - description: Recipe name + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Model name + in: path + name: model_name + required: true + schema: format: UTF-8 - maxLength: 262144 + maxLength: 255 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RecipeVersionCreateRequest' - required: true + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createRecipeVersion - x-ssa-scopes: - - createRecipeVersion - - kas - /v1/org/{org_name}/recipes: - get: + description: Internal Error + summary: Get model in team as guest tags: - - Resources - summary: List recipes in org - description: List recipes the user can access in the specified org - operationId: listRecipesInOrg + - Models + /v2/models/{org_name}/{team_name}/{model_name}/versions: + get: + description: List model versions in team as guest + operationId: listModelVersionsInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: app-name - in: query - description: Application name - required: false + type: string + - description: Team name + in: path + name: team_name + required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Model name + in: path + name: model_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: page-size + type: string + - description: Release Type in: query - description: Page size + name: release-type required: false schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Page size + in: query + name: page-size + required: false + schema: format: UTF-8 maxLength: 262144 - maximum: 5000 + maximum: 1000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels + type: string + - description: Sort order in: query - description: Remove unresolved labels + name: sort-order required: false schema: - type: boolean + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listRecipes - x-ssa-scopes: - - listRecipes - - kas - post: + description: Internal Error + summary: List model versions in team as guest tags: - - Resources - summary: Create recipe in org - description: Create recipe in org - operationId: createRecipeInOrg + - Model Version + /v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}: + get: + description: Get model version in team as guest + operationId: getModelVersionInTeamAsGuest parameters: - - name: org_name + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name in: path - description: Organization name + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Model name + in: path + name: model_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RecipeCreateRequest' - required: true + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createRecipe - x-ssa-scopes: - - createRecipe - - kas - /v1/org/{org_name}/resources: - get: + description: Internal Error + summary: Get model version in team as guest tags: - - Resources - summary: List recipes in org - description: List recipes the user can access in the specified org - operationId: listRecipesInOrg_1 + - Model Version + /v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}/files: + get: + description: List files of the model version in team as guest + operationId: listModeFilesInTeamAsGuest_2 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: app-name - in: query - description: Application name - required: false + type: string + - description: Model name + in: path + name: model_name + required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 5000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page reference in: query - description: Page number - zero based index + name: page-reference required: false schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels - in: query - description: Remove unresolved labels - required: false - schema: - type: boolean + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listRecipes - x-ssa-scopes: - - listRecipes - - kas - post: + description: Internal Error + summary: List model files in team as guest tags: - - Resources - summary: Create recipe in org - description: Create recipe in org - operationId: createRecipeInOrg_1 + - Model Version Files + /v2/nim/{team}/{nim_name}/{tag}/metadata: + post: + description: | + Registers NIM profile metadata for the given team, NIM name, and tag. This is a placeholder that validates the supplied profiles and echoes the provided fields back to the caller. + SSA: requires the following scope `createNimMetadata` + operationId: createNimMetadata parameters: - - name: org_name + - description: Team name in: path - description: Organization name + name: team required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + pattern: ^[a-zA-Z0-9._-]+$ + type: string + - description: NIM name + in: path + name: nim_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + pattern: ^[a-zA-Z0-9._-]+$ type: string + - description: NIM tag + in: path + name: tag + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 + pattern: ^[a-zA-Z0-9._-]+$ + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/RecipeCreateRequest' + $ref: '#/components/schemas/NimManifestMetadataRequest' required: true responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/NimManifestMetadataResponse' + description: Created '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createRecipe - x-ssa-scopes: - - createRecipe - - kas - /v1/org/{org_name}/models: - get: + description: Internal Error + summary: Create NIM metadata tags: - - Models - summary: List models in org - description: This operation lists models the user can access in the org. - operationId: listModelsInOrg + - NIM Metadata + /v2/recipes: + get: + description: List public recipes + operationId: listPublicRecipes parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: app-name - in: query - description: Application name - required: false - deprecated: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: page-size + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 - maximum: 1000 + maximum: 5000 minLength: 0 minimum: 1 - - name: page-reference - in: query - description: '[Deprecated] Page reference, Use page-number instead' - required: false - deprecated: true - schema: type: string - format: UTF-8 - maxLength: 1024 - minLength: 0 - - name: page-number + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels - in: query - description: Remove unresolved labels - required: false - schema: - type: boolean + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listModels - x-ssa-scopes: - - kas - - listModels - post: + description: Internal Error + summary: List public recipes tags: - - Models - summary: Create model in org - description: This operation creates a model in the org. - operationId: createModelInOrg + - Resources + /v2/recipes/{org_name}/{recipe_name}: + get: + description: Get recipe details in org as guest + operationId: getRecipeInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ModelCreateRequest' - required: true + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createModel - x-ssa-scopes: - - createModel - - kas - /v1/org/{org_name}/models/{model_name}/versions: - get: + description: Internal Error + summary: Get recipe in org as guest tags: - - Model Version - summary: List model versions in org - description: List model versions in org - operationId: listModelVersionsInOrg + - Resources + /v2/recipes/{org_name}/{recipe_name}/versions: + get: + description: List recipe versions in org as guest + operationId: listRecipeVersionsInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Recipe name in: path - description: Model name + name: recipe_name required: true schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: release-type - in: query - description: Release Type - required: false - schema: - type: string format: UTF-8 - enum: - - BETA - - GA - - EA - - FEATURE - - PRODUCTION - - LTSB maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 - maximum: 1000 + maximum: 5000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: sort-order + type: string + - description: Sort order in: query - description: Sort order + name: sort-order required: false schema: - type: string - format: UTF-8 enum: - ALPHABETIC_ASC - ALPHABETIC_DESC @@ -4451,4103 +3828,3582 @@ paths: - BUILT_BY_DESC - RESOURCE_ID_ASC - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listModelVersions - x-ssa-scopes: - - listModelVersions - - kas - post: + description: Internal Error + summary: List recipe versions in org as guest tags: - - Model Version - summary: Create model version in org - description: >- - Create a new and empty model version in org. Please use the string - versionId and not the deprecated numeric id. Semantic Versioning is - recommended https://semver.org - operationId: createModelVersionInOrg + - Resource Versions + /v2/recipes/{org_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org as guest + operationId: getRecipeVersionInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Recipe name in: path - description: Model name + name: recipe_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ModelVersionCreateRequest' - required: true + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createModelVersion - x-ssa-scopes: - - kas - - createModelVersion - /v1/org/{org_name}/collections: - get: + description: Internal Error + summary: Get recipe version in org as guest tags: - - Collections - summary: List collections in org - description: List collections the user can access in the specified org - operationId: listCollectionsInOrg + - Resource Versions + /v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in org as guest + operationId: listModeFilesInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: page-size + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 5000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page reference in: query - description: Page number - zero based index + name: page-reference required: false schema: - type: string format: UTF-8 - maxLength: 262144 - maximum: 10000 + maxLength: 1024 minLength: 0 - minimum: 0 - - name: order-by + type: string + - description: Page number - zero based index in: query - description: Order by + name: page-number required: false schema: - type: string format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC maxLength: 262144 + maximum: 10000 minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - post: + description: Internal Error + summary: List recipe files in org as guest tags: - - Collections - summary: Create collection in org - description: Create collection in org - operationId: createCollectionInOrg + - Resource Version Files endpoints + /v2/recipes/{org_name}/{team_name}/{recipe_name}: + get: + description: Get recipe details in team as guest + operationId: getRecipeInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CollectionCreateRequest' - required: true + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createCollection - x-ssa-scopes: - - kas - - createCollection - /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs: - patch: + description: Internal Error + summary: Get recipe in team as guest tags: - - Publish - summary: Publish artifact version with configs like policy badge - description: Update artifact version with configs like policy badge - operationId: updateTagLevelPublishConfigs + - Resources + /v2/recipes/{org_name}/{team_name}/{recipe_name}/versions: + get: + description: List recipe versions in team as guest + operationId: listRecipeVersionsInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + type: string + - description: Team name in: path - description: Artifact type + name: team_name required: true schema: - type: string format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: artifact_name + type: string + - description: Recipe name in: path - description: Artifact name + name: recipe_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Page size + in: query + name: page-size + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 5000 minLength: 0 - - name: version_id - in: path - description: Version ID - required: true + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC format: UTF-8 maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateArtifactVersionConfigs' - required: true + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - publishArtifact - x-ssa-scopes: - - publishArtifact - /v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id}: - get: + description: Internal Error + summary: List recipe versions in team as guest tags: - Resource Versions - summary: Get recipe version in org - description: Get recipe version in org - operationId: getRecipeVersionInOrg + /v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team as guest + operationId: getRecipeVersionInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Team name in: path - description: Recipe name + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Version ID in: path - description: Version ID + name: version_id required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getRecipeVersion - - getRecipeVersionFilterByOrgEnablement - x-ssa-scopes: - - getRecipeVersion - - getRecipeVersionFilterByOrgEnablement - - kas - patch: + description: Internal Error + summary: Get recipe version in team as guest tags: - Resource Versions - summary: Update recipe version in org - description: Update recipe version information in org e.g. upload status - operationId: updateRecipeVersionInOrg + /v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in team as guest + operationId: listModeFilesInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Team name in: path - description: Recipe name + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Version ID in: path - description: Version ID + name: version_id required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Page size + in: query + name: page-size + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 5000 minLength: 0 - - name: create-zip + minimum: 1 + type: string + - description: Page reference in: query - description: Create zip of version content + name: page-reference required: false schema: - type: boolean - - name: set-latest + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index in: query - description: Set version to latest + name: page-number required: false schema: - type: boolean - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RecipeVersionUpdateRequest' - required: true + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateRecipeVersion - x-ssa-scopes: - - updateRecipeVersion - - kas - /v1/org/{org_name}/resources/{recipe_name}/versions/{version_id}: - get: + description: Internal Error + summary: List recipe files in team as guest tags: - - Resource Versions - summary: Get recipe version in org - description: Get recipe version in org - operationId: getRecipeVersionInOrg_1 + - Resource Version Files endpoints + /v2/resources: + get: + description: List public recipes + operationId: listPublicRecipes_1 parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true + - description: Page size + in: query + name: page-size + required: false schema: - type: string format: UTF-8 maxLength: 262144 + maximum: 5000 minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: + minimum: 1 type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 10000 minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getRecipeVersion - - getRecipeVersionFilterByOrgEnablement - x-ssa-scopes: - - getRecipeVersion - - getRecipeVersionFilterByOrgEnablement - - kas - patch: + description: Internal Error + summary: List public recipes tags: - - Resource Versions - summary: Update recipe version in org - description: Update recipe version information in org e.g. upload status - operationId: updateRecipeVersionInOrg_1 + - Resources + /v2/resources/{org_name}/{recipe_name}: + get: + description: Get recipe details in org as guest + operationId: getRecipeInOrgAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id + - description: Recipe name in: path - description: Version ID + name: recipe_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: create-zip + type: string + - description: Resolve labels in: query - description: Create zip of version content + name: resolve-labels required: false schema: type: boolean - - name: set-latest + - description: Remove unresolved labels in: query - description: Set version to latest + name: remove-unresolved-labels required: false schema: type: boolean - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RecipeVersionUpdateRequest' - required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateRecipeVersion - x-ssa-scopes: - - updateRecipeVersion - - kas - /v1/org/{org_name}/recipes/{recipe_name}: - get: + description: Internal Error + summary: Get recipe in org as guest tags: - Resources - summary: Get recipe in org - description: Get recipe in org - operationId: getRecipeInOrg + /v2/resources/{org_name}/{recipe_name}/versions: + get: + description: List recipe versions in org as guest + operationId: listRecipeVersionsInOrgAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Recipe name in: path - description: Recipe name + name: recipe_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: resolve-labels + type: string + - description: Page size in: query - description: Resolve labels + name: page-size required: false schema: - type: boolean - - name: remove-unresolved-labels + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index in: query - description: Remove unresolved labels + name: page-number required: false schema: - type: boolean - responses: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getRecipe - x-ssa-scopes: - - getRecipe - - kas - patch: + description: Internal Error + summary: List recipe versions in org as guest tags: - - Resources - summary: Update recipe in org - description: Update recipe details in org - operationId: updateRecipeInOrg + - Resource Versions + /v2/resources/{org_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org as guest + operationId: getRecipeVersionInOrgAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Recipe name in: path - description: Recipe name + name: recipe_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RecipeUpdateRequest' - required: true + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateRecipe - x-ssa-scopes: - - updateRecipe - - kas - /v1/org/{org_name}/resources/{recipe_name}: - get: + description: Internal Error + summary: Get recipe version in org as guest tags: - - Resources - summary: Get recipe in org - description: Get recipe in org - operationId: getRecipeInOrg_1 + - Resource Versions + /v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in org as guest + operationId: listModeFilesInOrgAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Recipe name in: path - description: Recipe name + name: recipe_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - - name: resolve-labels + type: string + - description: Page size in: query - description: Resolve labels + name: page-size required: false schema: - type: boolean - - name: remove-unresolved-labels + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference in: query - description: Remove unresolved labels + name: page-reference required: false schema: - type: boolean - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getRecipe - x-ssa-scopes: - - getRecipe - - kas - patch: - tags: - - Resources - summary: Update recipe in org - description: Update recipe details in org - operationId: updateRecipeInOrg_1 - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 1024 minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 10000 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RecipeUpdateRequest' - required: true + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateRecipe - x-ssa-scopes: - - updateRecipe - - kas - /v1/org/{org_name}/models/{model_name}: - get: + description: Internal Error + summary: List recipe files in org as guest tags: - - Models - summary: Get model details in org - description: This operation gets info of a model in the org. - operationId: getModelInOrg + - Resource Version Files endpoints + /v2/resources/{org_name}/{team_name}/{recipe_name}: + get: + description: Get recipe details in team as guest + operationId: getRecipeInTeamAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Team name in: path - description: Model name + name: team_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: resolve-labels + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels in: query - description: Resolve labels + name: resolve-labels required: false schema: type: boolean - - name: remove-unresolved-labels + - description: Remove unresolved labels in: query - description: Remove unresolved labels + name: remove-unresolved-labels required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getModel - x-ssa-scopes: - - getModel - - kas - patch: + description: Internal Error + summary: Get recipe in team as guest tags: - - Models - summary: Update model in org - description: This operation updates details of a model in the org. - operationId: updateModelInOrg + - Resources + /v2/resources/{org_name}/{team_name}/{recipe_name}/versions: + get: + description: List recipe versions in team as guest + operationId: listRecipeVersionsInTeamAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Recipe name in: path - description: Model name + name: recipe_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Page size + in: query + name: page-size + required: false + schema: format: UTF-8 - maxLength: 255 + maxLength: 262144 + maximum: 5000 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ModelUpdateRequest' - required: true - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateModel - x-ssa-scopes: - - updateModel - - kas - /v1/org/{org_name}/models/{model_name}/versions/{version_id}: - get: + description: Internal Error + summary: List recipe versions in team as guest tags: - - Model Version - summary: Get model version in org - description: Get model version in org - operationId: getModelVersionInOrg + - Resource Versions + /v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team as guest + operationId: getRecipeVersionInTeamAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Team name in: path - description: Model name + name: team_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: version_id + type: string + - description: Recipe name in: path - description: Version ID + name: recipe_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 - maxLength: 512 + maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getModelVersion - - getModelVersionFilterByOrgEnablement - x-ssa-scopes: - - getModelVersionFilterByOrgEnablement - - getModelVersion - - kas - patch: + description: Internal Error + summary: Get recipe version in team as guest tags: - - Model Version - summary: Update model version in org - description: Update model version information in org e.g. upload status - operationId: updateModelVersionInOrg + - Resource Versions + /v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in team as guest + operationId: listModeFilesInTeamAsGuest_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Team name in: path - description: Model name + name: team_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: version_id + type: string + - description: Recipe name in: path - description: Version ID + name: recipe_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 - maxLength: 512 + maxLength: 262144 minLength: 0 - - name: create-zip + type: string + - description: Page size in: query - description: Create zip of version content + name: page-size required: false schema: - type: boolean - - name: set-latest + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference in: query - description: Set version to latest + name: page-reference required: false schema: - type: boolean - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ModelVersionUpdateRequest' - required: true + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateModelVersion - x-ssa-scopes: - - updateModelVersion - - kas - /v1/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash: - patch: + description: Internal Error + summary: List recipe files in team as guest tags: - - Model Version - summary: Stash artifact version in org - description: Stash artifact version information in org during upload paused state - operationId: stashArtifactVersionInOrg + - Resource Version Files endpoints + /v2/{artifact_type}: + get: + description: List public artifacts + operationId: listPublicArtifacts parameters: - - name: org_name + - description: Artifact type in: path - description: Organization name + name: artifact_type required: true schema: - type: string + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string + - description: Page size + in: query + name: page-size + required: false + schema: format: UTF-8 - maxLength: 255 + maxLength: 262144 + maximum: 5000 minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: + minimum: 1 type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 - maxLength: 512 + maxLength: 262144 + maximum: 10000 minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateModelVersion - x-ssa-scopes: - - updateModelVersion - - kas - /v1/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id}: - get: + description: Internal Error + summary: List public artifacts tags: - - Helm Charts - summary: Get chart version in org - description: Get chart version in org - operationId: getHelmChartVersionInOrg + - Artifacts + /v2/{artifact_type}/{org_name}/{artifact_name}: + get: + description: Get artifact details in org as guest + operationId: getArtifactInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_name + type: string + - description: Artifact type in: path - description: Artifact name + name: artifact_type required: true schema: - type: string + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Artifact name in: path - description: Version ID + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getArtifactVersion - x-ssa-scopes: - - getArtifactVersion - - kas - patch: + description: Internal Error + summary: Get artifact in org as guest tags: - - Helm Charts - summary: Update chart version in org - description: Update chart version information in org e.g. upload status - operationId: updateHelmChartVersionInOrg + - Artifacts + /v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in org as guest + operationId: listArtifactFilesInOrgAsGuest parameters: - - name: org_name + - description: Artifact type in: path - description: Organization name + name: artifact_type required: true schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Organization name + in: path + name: org_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_name + type: string + - description: Artifact name in: path - description: Artifact name + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Version ID in: path - description: Version ID + name: version_id required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 10000 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ArtifactVersionUpdateRequest' - required: true + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateArtifactVersion - x-ssa-scopes: - - updateArtifactVersion - - kas - /v1/org/{org_name}/collections/{collection_name}: - get: + description: Internal Error + summary: List artifact files in org as guest tags: - - Collections - summary: Get collection in org - description: Get collection details in org - operationId: getCollectionInOrg + - Artifact Version Files + /v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}: + get: + description: Get artifact details in team as guest + operationId: getChartInTeamAsGuest parameters: - - name: org_name + - description: Artifact type in: path - description: Organization name + name: artifact_type required: true schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Organization name + in: path + name: org_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name + type: string + - description: Team name in: path - description: Collection name + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - - name: resolve-labels + type: string + - description: Resolve labels in: query - description: Resolve labels + name: resolve-labels required: false schema: type: boolean - - name: remove-unresolved-labels + - description: Remove unresolved labels in: query - description: Remove unresolved labels + name: remove-unresolved-labels required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - getCollection - x-ssa-scopes: - - getCollection - - kas - delete: + description: Internal Error + summary: Get artifact in team as guest tags: - - Collections - summary: Delete collection in org - description: Delete collection in the specified org - operationId: deleteCollectionInOrg + - Artifacts + /v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in team as guest + operationId: listArtifactFilesInTeamAsGuest parameters: - - name: org_name + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID in: path - description: Collection name + name: version_id required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 10000 minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - patch: + description: Internal Error + summary: List artifact files in team as guest tags: - - Collections - summary: Update collection in org - description: Update collection details in org - operationId: updateCollectionInOrg + - Artifact Version Files + /v2/{artifact_type}/{org_name}/{artifact_name}/spec: + get: + description: Get AI Playground for public artifactType + operationId: getPublicModelArtifactsSpec parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: collection_name + type: string + - description: Artifact type in: path - description: Collection name + name: artifact_type required: true schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CollectionUpdateRequest' - required: true + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateCollection - x-ssa-scopes: - - updateCollection - - kas - /v1/org/{org_name}/collections/{collection_name}/artifacts: - patch: + description: Internal Error + summary: Get AI Playground for public artifactType tags: - - Collections - summary: Patch collection in org - description: Patch collection in the specified org - operationId: patchCollectionInOrg + - AIPlayground + /v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/spec: + get: + description: Get AI Playground for public artifactType + operationId: getPublicModelArtifactsSpec_1 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 - - name: collection_name + type: string + - description: Artifact type in: path - description: Collection name + name: artifact_type required: true schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CollectionPatchRequest' - required: true + type: string responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error + '200': content: application/json: schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - patchCollectionArtifacts - x-ssa-scopes: - - patchCollectionArtifacts - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/deployments/params: - get: - tags: - - Artifact deployment parameters - summary: List artifact deployment parameters in org - description: List artifact deployment parameters in org - operationId: listArtifactDeploymentParametersInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - repositories - - recipes - - models - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: inherit-csp-parameters - in: query - description: Inherit CSP parameters - required: false - schema: - type: boolean - responses: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/collections: - get: + description: Internal Error + summary: Get AI Playground for public artifactType tags: - - Collections - summary: List artifact collections in org - description: List artifact collections the user can access in the specified org - operationId: listArtifactCollectionsInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: + - AIPlayground +components: + schemas: + CollectionListResponse: + description: Response to list collections request + properties: + collections: + items: + $ref: '#/components/schemas/Collection' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + Response: + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionResponse: + description: Response to create collection request + properties: + collection: + $ref: '#/components/schemas/Collection' + description: Collection object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactListResponse: + description: Response to list artifacts request + properties: + artifacts: + items: + $ref: '#/components/schemas/Artifact' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CloudServiceProviderListResponse: + description: Response to list Cloud Service Providers request + properties: + cloudServiceProviders: + items: + $ref: '#/components/schemas/CloudServiceProvider' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CloudServiceProviderCreateRequest: + description: Request to create a new Cloud Service Provider + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + description: + description: Description of the Cloud Service Provider + type: string + displayName: + description: Display name of the Cloud Service Provider + type: string + isEnabled: + description: Determines if this Cloud Service Provider is enabled + type: boolean + labels: + items: type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the Cloud Service Provider + type: string + required: + - name + type: object + CloudServiceProvider: + description: Cloud Service Provider object + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the Cloud Service Provider + type: string + displayName: + description: Display name of the Cloud Service Provider + type: string + isDeployable: + description: Determines if this Cloud Service Provider can be used to deploy artifacts + type: boolean + isEnabled: + description: Determines if this Cloud Service Provider is enabled + type: boolean + labels: + items: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the Cloud Service Provider + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + required: + - name + type: object + DeploymentParametersListResponse: + description: Response to list deployment parameters request + properties: + artifact: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + csp: + description: Cloud Service Provider name + type: string + deploymentParameters: + items: + $ref: '#/components/schemas/DeploymentParameters' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + DeploymentParameters: + description: Deployment Artifact Parameters object + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + csp: + description: Cloud Service Provider name + type: string + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + CloudServiceProviderUpdateRequest: + description: Request to update existing Cloud Service Provider + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + description: + description: Description of the Cloud Service Provider + type: string + displayName: + description: Display name of the Cloud Service Provider + type: string + isEnabled: + description: Determines if this Cloud Service Provider is enabled + type: boolean + labels: + items: type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 + type: array + logo: + description: URL for the logo image + type: string + type: object + DeploymentParametersUpdateRequest: + description: Request to update existing deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersCreateRequest: + description: Request to create a new deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersMeta: + description: Cloud Service Provider Deployment Parameters object + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + csp: + description: Cloud Service Provider name + type: string + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + type: object + DeploymentParametersMetaUpdateRequest: + description: Properties for the cloud service provider deployment parameters meta to create + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + type: object + DeploymentParametersMetaCreateRequest: + description: Properties for the cloud service provider deployment parameters meta to create + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + required: + - gpu + - storage + type: object + GpuByPciResponse: + description: Response for GPU by PCI ID lookup + properties: + createdAt: + description: Creation timestamp + format: date-time + type: string + cudaMajorVersion: + description: CUDA major version + type: string + cudaMinorVersion: + description: CUDA minor version + type: string + displayName: + description: Display name for the GPU + type: string + formFactor: + description: GPU form factor + type: string + gpuCounts: + items: + format: int32 + maximum: 255 minimum: 0 - - name: order-by - in: query - description: Order by - required: false - schema: - type: string - format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels - in: query - description: Remove unresolved labels - required: false - schema: - type: boolean - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/catalog/flags: - get: - tags: - - Publish - summary: Get Catalog flags - description: Get the Catalog Public flags for artifact in org - operationId: getPublicFlagsInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - getPublicFlags - x-ssa-scopes: - - getPublicFlags - /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files: - get: - tags: - - Artifact Version Files - summary: List artifact files in org - description: List files of the artifact version in org - operationId: listArtifactFilesInOrg - parameters: - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listArtifactVersionFiles - x-ssa-scopes: - - listArtifactVersionFiles - - kas - /v1/org/{org_name}/repositories/{container_name}/associated-models: - get: - tags: - - Model Version - summary: List associated model versions by container - description: List associated model versions by container - operationId: listModelVersionsAssociatedByContainer - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: container_name - in: path - description: Container name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 1000 - minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 + type: integer + type: array + uniqueItems: true + labelName: + description: Label name for the GPU + type: string + memorySizeGb: + description: Memory size in GB (smallint range) + format: int32 + maximum: 32767 + minimum: 0 + type: integer + pciDeviceId: + description: PCI Device ID + type: string + pciSubsystemDeviceId: + description: PCI Subsystem Device ID + type: string + pciVendorId: + description: PCI Vendor ID + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + updatedAt: + description: Last update timestamp + format: date-time + type: string + required: + - displayName + - pciDeviceId + type: object + GpuByPciUpdateRequest: + description: GPU by PCI update properties + properties: + cudaMajorVersion: + description: CUDA major version + type: string + cudaMinorVersion: + description: CUDA minor version + type: string + displayName: + description: Display name for the GPU + type: string + formFactor: + description: GPU form factor + type: string + gpuCounts: + items: + format: int32 + maximum: 255 minimum: 0 - - name: sort-order - in: query - description: Sort order - required: false - schema: - type: string - format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listModelVersions - x-ssa-scopes: - - listModelVersions - - kas - /v1/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models: - get: - tags: - - Model Version - summary: List associated model versions by container - description: List associated model versions by container - operationId: listModelVersionsAssociatedByContainer_2 - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: container_name - in: path - description: Container name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: container_tag - in: path - description: Container tag - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 1000 - minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 + type: integer + type: array + uniqueItems: true + labelName: + description: Label name for the GPU + type: string + memorySizeGb: + description: Memory size in GB (smallint range) + format: int32 + maximum: 32767 + minimum: 0 + type: integer + type: object + GpuByPciCreateRequest: + description: GPU by PCI properties + properties: + cudaMajorVersion: + description: CUDA major version + type: string + cudaMinorVersion: + description: CUDA minor version + type: string + displayName: + description: Display name for the GPU + type: string + formFactor: + description: GPU form factor + type: string + gpuCounts: + items: + format: int32 + maximum: 255 minimum: 0 - - name: sort-order - in: query - description: Sort order - required: false - schema: - type: string - format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listModelVersions - x-ssa-scopes: - - listModelVersions - - kas - /v1/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files: - get: - tags: - - Resource Version Files endpoints - summary: List recipe files in org - description: List recipe files in org - operationId: listRecipeFilesInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-reference - in: query - description: Page reference - required: false - schema: - type: string - format: UTF-8 - maxLength: 1024 - minLength: 0 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listRecipeVersionFiles - x-ssa-scopes: - - listRecipeVersionFiles - - kas - /v1/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files: - get: - tags: - - Resource Version Files endpoints - summary: List recipe files in org - description: List recipe files in org - operationId: listRecipeFilesInOrg_1 - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-reference - in: query - description: Page reference - required: false - schema: - type: string - format: UTF-8 - maxLength: 1024 - minLength: 0 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listRecipeVersionFiles - x-ssa-scopes: - - listRecipeVersionFiles - - kas - /v1/org/{org_name}/models/{model_name}/versions/{version_id}/files: - get: - tags: - - Model Version Files - summary: List model files in org - description: List files of the model version in org - operationId: listModeFilesInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: model_name - in: path - description: Model name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-reference - in: query - description: Page reference - required: false - schema: - type: string - format: UTF-8 - maxLength: 1024 - minLength: 0 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listModelVersionFiles - x-ssa-scopes: - - listModelVersionFiles - - kas - /v1/org/{org_name}/helm-charts/{artifact_name}/versions: - get: - tags: - - Helm Charts - summary: List chart versions in org - description: List chart versions in org - operationId: listHelmChartVersionsInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 - - name: sort-order - in: query - description: Sort order - required: false - schema: - type: string - format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - - name: release-type - in: query - description: Release Type - required: false - schema: - type: string - format: UTF-8 - enum: - - BETA - - GA - - EA - - FEATURE - - PRODUCTION - - LTSB - maxLength: 262144 - minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listArtifactVersions - x-ssa-scopes: - - kas - - listArtifactVersions - /v1/org/{org_name}/collections/{collection_name}/artifacts/{artifact_type}: - get: - tags: - - Collections - summary: List collection artifacts in org - description: List collection artifacts the user can access in the specified org - operationId: listCollectionArtifactsInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 - - name: order-by - in: query - description: Order by - required: false - schema: - type: string - format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels - in: query - description: Remove unresolved labels - required: false - schema: - type: boolean - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - listCollectionArtifacts - x-ssa-scopes: - - kas - - listCollectionArtifacts - /v1/artifact-registry/org/{org_name}/encryption-keys: - get: - tags: - - Encryption Keys - summary: List encryption keys in org - description: List encryption keys in org - operationId: listKeysInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/artifact-registry/org/{org_name}/encryption-keys/{key_id}: - get: - tags: - - Encryption Keys - summary: List artifacts for encryption key in org - description: List artifacts for encryption key in org - operationId: listArtifactsForKeyInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: key_id - in: path - description: Key ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact-type - in: query - description: Artifact type - required: false - schema: - type: string - format: UTF-8 - default: MODEL - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: - tags: - - Encryption Keys - summary: Revoke encryption key in org - description: Revoke encryption key and disassociate from all artifacts in org - operationId: deleteKeyFromOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: key_id - in: path - description: Key ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - responses: - '202': - description: Accepted - content: - application/json: - schema: - $ref: '#/components/schemas/WorkflowStatusUrlResponse' - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/org/{org_name}/{artifact_type}/{artifact_name}/versions/{version_id}: - delete: - tags: - - Artifact Versions - summary: Delete a artifact version in org - description: Delete a artifact version in org - operationId: deleteArtifactVersionInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - deleteArtifactVersion - x-ssa-scopes: - - deleteArtifactVersion - - kas - /v1/org/{org_name}/models/{model_name}/encryption-key: - delete: - tags: - - Models - summary: Disassociate encryption key from model in org - description: >- - Disassociate encryption key from model in org and mark it for offline - deletion - operationId: disassociateKeyFromModelInOrg - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: model_name - in: path - description: Model name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - responses: - '202': - description: Accepted - content: - application/json: - schema: - $ref: '#/components/schemas/WorkflowStatusUrlResponse' - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas -components: - schemas: - AIPlaygroundResponse: + type: integer + type: array + uniqueItems: true + labelName: + description: Label name for the GPU + type: string + memorySizeGb: + description: Memory size in GB (smallint range) + format: int32 + maximum: 32767 + minimum: 0 + type: integer + pciDeviceId: + description: PCI Device ID + type: string + pciSubsystemDeviceId: + description: PCI Subsystem Device ID + type: string + pciVendorId: + description: PCI Vendor ID + type: string + required: + - displayName + - pciDeviceId + type: object + ArtifactVersionListResponse: + description: Response to list artifact versions request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersions: + items: + $ref: '#/components/schemas/ArtifactVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionResponse: + description: Response to artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelListResponse: + description: Response to list models request + properties: + models: + items: + $ref: '#/components/schemas/Model' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelResponse: + description: Response to create model request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionListResponse: + description: Response to list model versions request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersions: + items: + $ref: '#/components/schemas/ModelVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionResponse: + description: Response to create a model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionFileListResponse: + description: Response to list files for model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelFiles: + items: + $ref: '#/components/schemas/ModelFile' + type: array + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + NimManifestMetadataRequest: + description: NIM profile metadata + properties: + profiles: + items: + $ref: '#/components/schemas/NimProfile' + type: array type: object + NimManifestMetadataResponse: + properties: + profiles: + items: + $ref: '#/components/schemas/NimProfile' + type: array + type: object + RecipeListResponse: + description: Response to list recipes request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipes: + items: + $ref: '#/components/schemas/Recipe' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeResponse: + description: Response to recipe request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionListResponse: + description: Response to list recipe versions request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersions: + items: + $ref: '#/components/schemas/RecipeVersion' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionResponse: + description: Response to recipe version request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionFileListResponse: + description: Response to list files for recipe version request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeFiles: + items: + $ref: '#/components/schemas/RecipeFile' + type: array + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactResponse: + description: Response to artifact request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionFileListResponse: + description: Response to list files for artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactFiles: + items: + $ref: '#/components/schemas/File' + type: array + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + AIPlaygroundResponse: description: Request to fetch an AI Playground config properties: artifactName: - type: string description: Unique name of the model - artifactType: type: string + artifactType: description: ArtifactTypeEnum of the artifact - namespace: type: string - description: org/team of the model - nvcfFunctionId: - type: string - description: NVCF function id for the model playground attributes: - type: string description: Metadata json string - openAPISpec: type: string - description: OpenAPI specification for this model createdDate: - type: string description: Creation date in ISO-8601 format pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z - updatedDate: type: string - description: Updated date in ISO-8601 format - pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z - AIPlaygroundUpdateRequest: - type: object - description: Request to update an AI Playground config - properties: - nvcfFunctionId: + namespace: + description: org/team of the model type: string + nvcfFunctionId: description: NVCF function id for the model playground - attributes: type: string - description: Metadata json string - openAPISpec: + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground type: string + openAPISpec: description: OpenAPI specification for this model - Response: - type: object - properties: - requestStatus: - $ref: '#/components/schemas/RequestStatus' - description: Request status information - ArtifactPublishRequest: + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string type: object - description: Request to publish an artifact + Collection: + description: Collection object properties: - canGuestPull: - type: boolean - canPublicList: - type: boolean - isPublic: - type: boolean - productNames: - type: array - items: - type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ accessType: - type: string enum: - LISTED - EXCLUSIVE - NOT_LISTED - licenseTerms: - type: array - items: - $ref: '#/components/schemas/LicenseMetadata' - UpdateReleaseTypeRequest: - type: object - description: Request to update release type of an artifact version - properties: - version: type: string - description: Artifact version - releaseType: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: Organization that built the collection type: string - description: Release type enum for the artifact version in the product lifecycle. + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + category: enum: - - BETA - - GA - - EA - - FEATURE - - PRODUCTION - - LTSB - required: - - version - ArtifactUpdateRequest: - type: object - description: Properties for the artifact to update - properties: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + type: string + isPublic: + description: Determines if this collection is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the collection + type: string + orgName: + description: Name of the org that the collection belongs to + type: string + ownerName: + description: Name of the user who owns this version + type: string + policyLabels: items: type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: type: array + productNames: items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ type: string - description: + type: array + publisher: + description: Organization that published this collection type: string - description: Description of the artifact shortDescription: + description: Short description of the collection type: string - description: Short description of the artifact - maxLength: 255 - displayName: + size: + description: Total count of collection items + format: int64 + type: integer + teamName: + description: Name of the team that the collection belongs to type: string - description: Display name - maxLength: 128 - minLength: 2 - logo: + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: URL for the logo image - maxLength: 255 - builtBy: + required: + - category + type: object + PaginationInfo: + description: Pagination Information + properties: + index: + description: Page index of results + format: int32 + type: integer + nextPage: + description: Serialized pointer to the next results page. Should be used for fetching next page. Can be empty type: string - description: organization that built the artifact - maxLength: 255 - publisher: + size: + description: Number of results in page + format: int32 + type: integer + totalPages: + description: Total number of pages available + format: int64 + type: integer + totalResults: + description: Total number of results available + format: int64 + type: integer + type: object + RequestStatus: + description: Request status information + properties: + requestId: + description: Request ID + type: string + serverId: + description: Server ID + type: string + statusCode: + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + type: string + statusDescription: + description: Status description + type: string + type: object + Artifact: + description: Artifact object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL type: string - description: organization that published the artifact - maxLength: 255 attributes: - type: array items: $ref: '#/components/schemas/ArtifactAttribute' + type: array bias: + description: Text describing bias in the artifact type: string - description: Text describing bias in the model - explainability: + builtBy: + description: Organization that built the helm chart type: string - description: Text describing explainability for this model - privacy: + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Text describing the privacy for this model - safetyAndSecurity: + description: + description: Description of the helm chart type: string - description: Text for describing the safety and security in the model - licenseTerms: - type: array - items: - $ref: '#/components/schemas/LicenseMetadata' - CollectionPublishRequest: - type: object - description: Request to publish a collection - properties: - canGuestPull: + displayName: + description: Display name + type: string + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact + type: string + explainability: + description: Text describing the explainability for this artifact + type: string + hasSignedVersion: + description: Indicates if the artifact has any signed versions type: boolean - canPublicList: + isFavourite: + description: Flag indicating if helm chart is user's favorite type: boolean isPublic: + description: Determines if this helm chart is publicly accessible type: boolean - productNames: - type: array + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: items: - type: string pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - accessType: - type: string - enum: - - LISTED - - EXCLUSIVE - - NOT_LISTED - AIPlaygroundCreateRequest: - type: object - description: Request to create a new AI Playground config - properties: - artifactName: - type: string - description: Unique name of the model - nvcfFunctionId: - type: string - description: NVCF function id for the model playground - attributes: + type: string + type: array + latestVersionId: + description: ID of the latest version type: string - description: Metadata json string - openAPISpec: + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image type: string - description: OpenAPI specification for this model - required: - - artifactName - - nvcfFunctionId - DeploymentUrlCreateRequest: - type: object - description: Request to create a new deployment url - properties: - cpu: - $ref: '#/components/schemas/DeploymentCpuParameters' - description: Deployment CPU Parameters object - gpu: - $ref: '#/components/schemas/DeploymentGpuParameters' - description: Deployment GPU Parameters object - memory: - $ref: '#/components/schemas/DeploymentMemoryParameters' - description: Deployment Memory Parameters object - storage: - $ref: '#/components/schemas/DeploymentStorageParameters' - description: Deployment Storage Parameters object - container: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - model: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - resource: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - DeploymentParametersCreateRequest: - type: object - description: Request to create a new deployment parameters - properties: - cpu: - $ref: '#/components/schemas/DeploymentCpuParameters' - description: Deployment CPU Parameters object - gpu: - $ref: '#/components/schemas/DeploymentGpuParameters' - description: Deployment GPU Parameters object - memory: - $ref: '#/components/schemas/DeploymentMemoryParameters' - description: Deployment Memory Parameters object - storage: - $ref: '#/components/schemas/DeploymentStorageParameters' - description: Deployment Storage Parameters object - container: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - model: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - resource: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - DeploymentParametersUpdateRequest: - type: object - description: Request to update existing deployment parameters - properties: - cpu: - $ref: '#/components/schemas/DeploymentCpuParameters' - description: Deployment CPU Parameters object - gpu: - $ref: '#/components/schemas/DeploymentGpuParameters' - description: Deployment GPU Parameters object - memory: - $ref: '#/components/schemas/DeploymentMemoryParameters' - description: Deployment Memory Parameters object - storage: - $ref: '#/components/schemas/DeploymentStorageParameters' - description: Deployment Storage Parameters object - container: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - model: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - resource: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - AcceptArtifactLicenseRequest: - type: object - description: Request body to accept an org-scoped artifact license. - properties: - licenseId: + name: + description: Unique name of the helm chart type: string - description: >- - License identifier to accept (must match a licenseId from the - artifact's published licenseTerms). - example: NVIDIA Proprietary - maxLength: 256 - minLength: 1 - pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ - licenseVersion: + orgName: + description: Name of the org that the helm chart belongs to type: string - description: >- - License version to accept (must match licenseVersion for that - license on the artifact). - example: 1 - maxLength: 128 - minLength: 1 - pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ - required: - - licenseId - - licenseVersion - ArtifactCreateRequest: - type: object - description: Properties for the artifact to create - properties: - name: + ownerName: + description: Name of the user who owns this version type: string - description: Unique name of the artifact - maxLength: 250 - minLength: 1 - pattern: ^[a-z][a-z\d._-]*$ - labels: - type: array + policyLabels: items: type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: type: array + privacy: + description: Text describing the privacy for this artifact + type: string + productNames: items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ type: string - description: + type: array + publisher: + description: Organization that published this helm chart + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the artifact type: string - description: Description of the artifact shortDescription: + description: Short description of the helm chart type: string - description: Short description of the artifact - maxLength: 255 - displayName: + teamName: + description: Name of the team that the helm chart belongs to type: string - description: Display name - maxLength: 128 - minLength: 2 - logo: + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: URL for the logo image + type: object + ArtifactAttribute: + description: Attribute on the artifact + properties: + key: maxLength: 255 - builtBy: + pattern: '[a-zA-Z0-9]+' type: string - description: organization that built the artifact + value: maxLength: 255 - publisher: type: string - description: organization that published the artifact - maxLength: 255 - attributes: - type: array - items: - $ref: '#/components/schemas/ArtifactAttribute' - bias: + type: object + DeploymentArtifactParameters: + description: Deployment Artifact Parameters object + properties: + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL type: string - description: Text describing bias in the model - explainability: + displayName: + description: Display name of the artifact type: string - description: Text describing explainability for this model - privacy: + filePath: + description: Path to a file in an artifact version type: string - description: Text describing the privacy for this model - safetyAndSecurity: + name: + description: Unique name of the artifact + type: string + orgName: + description: Name of the org that the artifact belongs to + type: string + teamName: + description: Name of the team that the artifact belongs to + type: string + versionId: + description: ID of the version or tag type: string - description: Text for describing the safety and security in the model - licenseTerms: - type: array - items: - $ref: '#/components/schemas/LicenseMetadata' required: - name - - shortDescription - RecipeVersionCreateRequest: + - orgName + type: object + DeploymentCpuParameters: + description: Deployment CPU Parameters object + properties: + count: + description: Total count of CPUs + format: int64 + type: integer + type: object + DeploymentGpuParameters: + description: Deployment GPU Parameters object + properties: + count: + description: Total count of GPUs + format: int64 + type: integer + type: + description: GPU Type + type: string type: object - description: Properties for the recipe version to be created + DeploymentMemoryParameters: + description: Deployment Memory Parameters object properties: - id: - type: integer + capacityInGB: + description: Capacity in GB format: int64 - description: 'Deprecated: Please use version instead. Unique ID of the version' - maximum: 2147483647 - minimum: 1 - versionId: - type: string - description: Unique version id. Please use this instead of 'id' - maxLength: 255 - pattern: '[^/]+' - description: - type: string - description: Description of the recipe version - accuracyReached: - type: number - format: float - description: Accuracy this recipe reached - maximum: 100 - minimum: 0 - numberOfEpochs: type: integer + type: object + DeploymentStorageParameters: + description: Deployment Storage Parameters object + properties: + capacityInGB: + description: Capacity in GB format: int64 - description: Number of epochs this recipe trained - minimum: 0 - gpuModel: - type: string - description: GPU model and memory - maxLength: 255 - batchSize: type: integer - format: int64 - description: Batch size this recipe was trained with - minimum: 0 - memoryFootprint: - type: string - description: Recipe size/memory footprint for inference - maxLength: 255 - setup: - type: string - description: Text describing recipe setup - quickStartGuide: - type: string - description: Text with a guide to getting started - performance: + type: object + DeploymentCpuParametersMeta: + description: Cloud Service Provider Deployment CPU Parameters object + properties: + count: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - count + type: object + DeploymentGpuParametersMeta: + description: Cloud Service Provider Deployment GPU Parameters object + properties: + count: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + type: + $ref: '#/components/schemas/EnumerableResource' + description: Enumerable Resource object + required: + - type + type: object + DeploymentMemoryParametersMeta: + description: Cloud Service Provider Deployment Memory Parameters object + properties: + capacityInGB: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - capacityInGB + type: object + DeploymentStorageParametersMeta: + description: Cloud Service Provider Deployment Storage Parameters object + properties: + capacityInGB: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - capacityInGB + type: object + ArtifactVersion: + description: Artifact version object + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + createdByUser: + description: Id of the user who created this version type: string - description: Text describing performance of the recipe results - releaseNotes: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Text describing this release customMetrics: - type: array items: $ref: '#/components/schemas/CustomMetricGroup' - otherContents: type: array - items: - $ref: '#/components/schemas/ArtifactAttribute' - RecipeCreateRequest: - type: object - description: Properties for the recipe to create - properties: - name: + description: + description: Description of the version type: string - description: Unique name of the recipe - maxLength: 128 - minLength: 1 - pattern: ^[a-z][a-z\d._-]*$ - trainingFramework: + id: + description: Unique ID of the version type: string + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status enum: - - TensorFlow - - Caffe2 - - CNTK - - Torch - - PyTorch - - MXNet - - Keras - - Other - - TransferLearningToolkit - - TensorFlow2 - modelFormat: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS type: string - description: Format of the model this recipe produces - maxLength: 255 - publicDatasetUsed: - $ref: '#/components/schemas/Dataset' - labels: - type: array + policy: items: type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: type: array - items: - type: string - description: + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB type: string - description: Description of the recipe - shortDescription: + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE type: string - description: Short description of the recipe - maxLength: 255 - setup: + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. type: string - description: Text describing recipe setup - quickStartGuide: + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the version in bytes + format: int64 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Text with a guide to getting started - performance: + type: object + Model: + description: Model object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED type: string - description: Text describing performance of the recipe results - advanced: + application: + description: Application of the model type: string - description: Text for describing advanced information - displayName: + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the model type: string + displayName: description: Display name - maxLength: 64 - minLength: 2 - precision: type: string - enum: - - FP16 - - FP32 - - INT8 - - FPBOTH - - OTHER - - ALL - application: + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact type: string - enum: - - CLASSIFICATION - - OBJECT_DETECTION - - SEGMENTATION - - TRANSLATION - - TEXT_TO_SPEECH - - RECOMMENDER - - SENTIMENT - - NLP - - KUBEFLOW_PIPELINE - - OTHER - - SPEAKER_VERIFICATION - - PUNCTUATION_AND_CAPITALIZATION - - DIALOG_STATE_TRACKING - - SPEAKER_DIARIZATION - - SPEAKER_RECOGNITION - - SPEECH_SYNTHESIS - - VOICE_ACTIVITY_DETECTION - - SPEECH_RECOGNITION - - LANGUAGE_MODELING - - NAMED_ENTITY_RECOGNITION - - TEXT_CLASSIFICATION - - TEXT_PROCESSING - - QUESTION_ANSWERING - - CONTENT_GENERATION - logo: + explainability: + description: Text describing explainability for this model type: string - description: URL for the logo image - maxLength: 255 - builtBy: + framework: + description: Framework used to train this model type: string - description: organization that built the recipe - maxLength: 255 - publisher: + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + hasSignedVersion: + description: Indicates if the model has any signed versions + type: boolean + isFavourite: + description: Flag indicating if model is user's favorite + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + isPublic: + description: Determines if model is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionGpuModel: + description: GPU model and memory used for the latest version type: string - description: organization that published the recipe - maxLength: 255 + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer licenseTerms: - type: array items: $ref: '#/components/schemas/LicenseMetadata' - required: - - application - - modelFormat - - name - - precision - - publicDatasetUsed - - shortDescription - - trainingFramework - ModelCreateRequest: - type: object - description: Properties for the models to be created - properties: - name: + type: array + logo: + description: URL for the logo image type: string - description: Unique name of the model - maxLength: 128 - minLength: 1 - pattern: ^[a-z][a-z\d._-]*$ - description: + modelFormat: + description: Format of the model type: string - description: Description of the model - ownerName: + name: + description: Unique name of the model type: string - description: Name of the user who owns this model - maxLength: 255 - framework: + orgName: + description: Name of the org that the model belongs to type: string - description: Framework used to train this model - maxLength: 255 - modelFormat: + ownerName: + description: Name of model's owner type: string - description: Format of the model - maxLength: 255 - publicDatasetUsed: - $ref: '#/components/schemas/Dataset' - labels: - type: array + policyLabels: items: type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: type: array - items: - type: string - shortDescription: - type: string - description: Short description of the model - maxLength: 255 - displayName: - type: string - description: Display name - maxLength: 64 - minLength: 2 precision: - type: string description: Precision this model was trained with - maxLength: 255 - application: - type: string - description: Application of the model - maxLength: 255 - logo: type: string - description: URL for the logo image - maxLength: 255 - builtBy: + privacy: + description: Text describing the privacy for this model type: string - description: organization that built the repository - maxLength: 255 + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' publisher: - type: string description: organization that published the repository - maxLength: 255 - hasPlayground: - type: boolean - description: indicate if the Model has AI Playground configured - isPlaygroundEnabled: - type: boolean - description: indicate if AI Playground is enabled in the catalog - bias: type: string - description: Text describing bias in the model - explainability: + safetyAndSecurity: + description: Text for describing the safety and security in the model type: string - description: Text describing explainability for this model - privacy: + shortDescription: + description: Short description of the model type: string - description: Text describing the privacy for this model - safetyAndSecurity: + teamName: + description: Name of the team that the model belongs to type: string - description: Text for describing the safety and security in the model - licenseTerms: - type: array + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + versions: items: - $ref: '#/components/schemas/LicenseMetadata' - encryptionKey: - $ref: '#/components/schemas/EncryptionKey' - description: Customer Managed Key shard configuration for the model - required: - - framework - - name - - precision - ModelVersionCreateRequest: + type: string + type: array type: object - description: Properties for the model version to be created + ModelVersion: + description: Model version object properties: - id: - type: integer + accuracyReached: + description: Accuracy this model reached + format: float + type: number + batchSize: + description: Batch size this model was trained with format: int64 - description: 'Deprecated: Please use version instead. Unique ID of the version' - maximum: 2147483647 - minimum: 1 - versionId: + type: integer + createdByUser: + description: Id of the user who created this model type: string - description: Unique version id. Please use this instead of 'id' - maxLength: 255 - pattern: '[^/]+' - description: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: description: Description of the model version - maxLength: 255 - ownerName: type: string - description: Name of the user who owns this version - maxLength: 255 - accuracyReached: - type: number - format: float - description: Accuracy this model reached - maximum: 100 - minimum: 0 - numberOfEpochs: - type: integer - format: int64 - description: Number of epochs this model trained - minimum: 0 gpuModel: - type: string description: GPU model and memory - maxLength: 255 - batchSize: - type: integer + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' format: int64 - description: Batch size this model was trained with - minimum: 0 - memoryFootprint: + type: integer + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS type: string + memoryFootprint: description: Model size/memory footprint for inference - maxLength: 255 - customMetrics: - type: array - items: - $ref: '#/components/schemas/CustomMetricGroup' + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + type: integer nvcfContainerConfiguration: $ref: '#/components/schemas/NvcfContainerConfiguration' description: NVCF container configuration parameters @@ -8555,225 +7411,124 @@ components: $ref: '#/components/schemas/NvcfDeploymentSpecification' description: NVCF deployment specification otherContents: - type: array items: $ref: '#/components/schemas/ArtifactAttribute' - CollectionCreateRequest: - type: object - description: Properties for the collections to be created - properties: - name: - type: string - description: Unique name of the collection - maxLength: 128 - minLength: 1 - pattern: ^[a-z][a-z\d._-]*$ - labels: - type: array - items: - type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: type: array - items: - type: string - description: - type: string - description: Description of the collection - shortDescription: - type: string - description: Short description of the collection - maxLength: 255 - displayName: - type: string - description: Display name - maxLength: 64 - minLength: 2 ownerName: + description: Name of the user who owns this version type: string - description: Name of the user who owns this collection - maxLength: 255 - logo: - type: string - description: URL for the logo image - maxLength: 255 - builtBy: - type: string - description: organization that built the collection - publisher: - type: string - description: organization that published the collection - maxLength: 255 - category: - type: string - enum: - - HEALTHCARE - - SMART_CITIES - - RETAIL - - MANUFACTURING - - SUPERCOMPUTING - - ROBOTICS - - AUTOMOTIVE - - TELECOMMUNICATIONS - - FINANCE - - OIL_AND_GAS - - NATURAL_LANGUAGE_PROCESSING - - AUTOMATIC_SPEECH_RECOGNITION - - INTELLIGENT_VIDEO_ANALYTICS - - OBJECT_DETECTION - - IMAGE_CLASSIFICATION - - ANNOTATION - - IMAGE_SYNTHESIS - - MACHINE_LEARNING - - DEEP_LEARNING - - INFRASTRUCTURE - - HIGH_PERFORMANCE_COMPUTING - - WINDOWS_RTX_ACCELERATED_MODELS - - BEGINNER - - ADVANCED - attributes: - type: array - items: - $ref: '#/components/schemas/ArtifactAttribute' - required: - - category - - name - - shortDescription - UpdateArtifactVersionConfigs: - type: object - description: Request to publish an artifact - properties: policy: - type: array items: type: string - enum: - - GOV_READY - - FedRAMP - RecipeVersionUpdateRequest: - type: object - description: Version properties to update - properties: - status: + type: array + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB type: string + status: description: Version status enum: - UPLOAD_PENDING - UPLOAD_COMPLETE - description: type: string - description: Description of the recipe version - accuracyReached: - type: number - format: float - description: Accuracy this recipe reached - maximum: 100 - minimum: 0 - numberOfEpochs: - type: integer - format: int64 - description: Number of epochs this recipe trained - minimum: 0 - gpuModel: + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. type: string - description: GPU model and memory - maxLength: 255 - batchSize: + totalFileCount: + description: Total file count + format: int64 type: integer + totalSizeInBytes: + description: Total size of the model in bytes format: int64 - description: Batch size this recipe was trained with - minimum: 0 - memoryFootprint: - type: string - description: Recipe size/memory footprint for inference - maxLength: 255 - setup: - type: string - description: Text describing recipe setup - quickStartGuide: - type: string - description: Text with a guide to getting started - performance: + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Text describing performance of the recipe results - releaseNotes: + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 type: string - description: Text describing this release - customMetrics: - type: array - items: - $ref: '#/components/schemas/CustomMetricGroup' - otherContents: - type: array - items: - $ref: '#/components/schemas/ArtifactAttribute' - RecipeUpdateRequest: type: object - description: Properties for the recipe to update + ModelFile: + description: Model file object properties: - trainingFramework: - type: string - enum: - - TensorFlow - - Caffe2 - - CNTK - - Torch - - PyTorch - - MXNet - - Keras - - Other - - TransferLearningToolkit - - TensorFlow2 - modelFormat: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Format of the model this recipe produces - maxLength: 255 - publicDatasetUsed: - $ref: '#/components/schemas/Dataset' - labels: - type: array - items: - type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: - type: array - items: - type: string description: + description: Description of the file type: string - description: Description of the recipe - shortDescription: + path: + description: Relative file path from the root of the model + maxLength: 1023 + minLength: 1 type: string - description: Short description of the recipe - maxLength: 255 - setup: + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file type: string - description: Text describing recipe setup - quickStartGuide: + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + type: object + NimProfile: + properties: + buildable_profile: + type: boolean + checksum: type: string - description: Text with a guide to getting started - performance: + feat_lora: + type: boolean + form_factor: type: string - description: Text describing performance of the recipe results - advanced: + gpu: type: string - description: Text for describing advanced information - displayName: + gpu_device: type: string - description: Display name - maxLength: 64 - minLength: 2 + inference_backend: + type: string + latency: + additionalProperties: {} + type: object + min_vram_per_device_gb: + format: double + type: number + pipeline_parallel_size: + format: int32 + type: integer precision: type: string + profile_id: + type: string + tensor_parallel_size: + format: int32 + type: integer + workspace_hash: + type: string + type: object + Recipe: + description: Recipe object + properties: + accessType: enum: - - FP16 - - FP32 - - INT8 - - FPBOTH - - OTHER - - ALL - application: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + advanced: + description: Text for describing advanced information type: string + application: enum: - CLASSIFICATION - OBJECT_DETECTION @@ -8799,643 +7554,1877 @@ components: - TEXT_PROCESSING - QUESTION_ANSWERING - CONTENT_GENERATION - logo: type: string - description: URL for the logo image - maxLength: 255 builtBy: + description: Organization that built the recipe type: string - description: organization that built the recipe - maxLength: 255 - publisher: + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: organization that published the recipe - maxLength: 255 - relatedModels: - type: array - items: - $ref: '#/components/schemas/ModelSimplified' - licenseTerms: - type: array - items: - $ref: '#/components/schemas/LicenseMetadata' - ModelUpdateRequest: - type: object - description: Properties for the model to update - properties: description: + description: Description of the recipe type: string - description: Description of the model - ownerName: - type: string - description: Name of the user who owns this model - maxLength: 255 - framework: - type: string - description: Framework used to train this model - maxLength: 255 - modelFormat: + displayName: + description: Display name type: string - description: Format of the model - maxLength: 255 - publicDatasetUsed: - $ref: '#/components/schemas/Dataset' + hasSignedVersion: + description: Indicates if the recipe has any signed versions + type: boolean + isFavourite: + description: Flag indicating if recipe is user's favorite + type: boolean + isPublic: + description: Determines if this recipe is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean labels: - type: array items: - type: string pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: + type: string type: array + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: items: - type: string - shortDescription: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image type: string - description: Short description of the model - maxLength: 255 - displayName: + modelFormat: + description: Format of the model this recipe produces type: string - description: Display name - maxLength: 64 - minLength: 2 - precision: + name: + description: Unique name of the recipe type: string - description: Precision this model was trained with - maxLength: 255 - hasPlayground: - type: boolean - description: indicate if the Model has AI Playground configured - isPlaygroundEnabled: - type: boolean - description: indicate if AI Playground is enabled in the catalog - application: + orgName: + description: Name of the org that the recipe belongs to type: string - description: Application of the model - maxLength: 255 - logo: + performance: + description: Text describing performance of the recipe results type: string - description: URL for the logo image - maxLength: 255 - builtBy: + policyLabels: + items: + type: string + type: array + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL type: string - description: organization that built the repository - maxLength: 255 + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' publisher: + description: Organization that published this recipe type: string - description: organization that published the repository - maxLength: 255 - bias: - type: string - description: Text describing bias in the model - explainability: + quickStartGuide: + description: Text with a guide to getting started type: string - description: Text describing explainability for this model - privacy: + relatedModels: + items: + $ref: '#/components/schemas/Model' + type: array + setup: + description: Text describing recipe setup type: string - description: Text describing the privacy for this model - safetyAndSecurity: + shortDescription: + description: Short description of the recipe type: string - description: Text for describing the safety and security in the model - licenseTerms: - type: array - items: - $ref: '#/components/schemas/LicenseMetadata' - ModelVersionUpdateRequest: - type: object - description: Version properties to update - properties: - status: + teamName: + description: Name of the team that the recipe belongs to type: string - description: Version status + trainingFramework: enum: - - UPLOAD_PENDING - - UPLOAD_COMPLETE - description: - type: string - description: Description of the model version - maxLength: 255 - ownerName: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 type: string - description: Name of the user who owns this version - maxLength: 255 - accuracyReached: - type: number - format: float - description: Accuracy this model reached - maximum: 100 - minimum: 0 - numberOfEpochs: - type: integer - format: int64 - description: Number of epochs this model trained - minimum: 0 - gpuModel: + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: GPU model and memory - maxLength: 255 + type: object + RecipeVersion: + description: Recipe version object + properties: + accuracyReached: + description: Accuracy this recipe reached + format: float + type: number batchSize: - type: integer + description: Batch size this recipe was trained with format: int64 - description: Batch size this model was trained with - minimum: 0 - memoryFootprint: + type: integer + createdByUser: + description: Id of the user who created this recipe + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Model size/memory footprint for inference - maxLength: 255 customMetrics: - type: array items: $ref: '#/components/schemas/CustomMetricGroup' - otherContents: type: array - items: - $ref: '#/components/schemas/ArtifactAttribute' - nvcfContainerConfiguration: - $ref: '#/components/schemas/NvcfContainerConfiguration' - description: NVCF container configuration parameters - nvcfDeploymentSpecification: - $ref: '#/components/schemas/NvcfDeploymentSpecification' - description: NVCF deployment specification - ArtifactVersionUpdateRequest: - type: object - description: Version properties to update - properties: - status: + description: + description: Description of the recipe version type: string - description: Version status + gpuModel: + description: GPU model and memory + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' + format: int64 + type: integer + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status enum: - - UPLOAD_PENDING - - UPLOAD_COMPLETE - description: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS type: string - description: Description of the artifact version - maxLength: 255 - attributes: - type: array + memoryFootprint: + description: recipe size/memory footprint for inference + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + type: integer + otherContents: items: $ref: '#/components/schemas/ArtifactAttribute' - CollectionUpdateRequest: - type: object - description: Properties for the collection to update - properties: - labels: type: array + performance: + description: Text describing performance of the recipe results + type: string + policy: items: type: string - pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ - labelsV2: type: array - items: - type: string - description: + quickStartGuide: + description: Text with a guide to getting started type: string - description: Description of the collection - shortDescription: + releaseNotes: + description: Text describing this release type: string - description: Short description of the collection - maxLength: 255 - displayName: + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB type: string - description: Display name - maxLength: 64 - minLength: 2 - logo: + setup: + description: Text describing recipe setup type: string - description: URL for the logo image - maxLength: 255 - builtBy: + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE type: string - description: organization that built the collection - publisher: + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. type: string - description: organization that published the collection + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the recipe in bytes + format: int64 + type: integer + versionId: + description: Unique version id. Please use this instead of 'id' maxLength: 255 - category: - type: string - enum: - - HEALTHCARE - - SMART_CITIES - - RETAIL - - MANUFACTURING - - SUPERCOMPUTING - - ROBOTICS - - AUTOMOTIVE - - TELECOMMUNICATIONS - - FINANCE - - OIL_AND_GAS - - NATURAL_LANGUAGE_PROCESSING - - AUTOMATIC_SPEECH_RECOGNITION - - INTELLIGENT_VIDEO_ANALYTICS - - OBJECT_DETECTION - - IMAGE_CLASSIFICATION - - ANNOTATION - - IMAGE_SYNTHESIS - - MACHINE_LEARNING - - DEEP_LEARNING - - INFRASTRUCTURE - - HIGH_PERFORMANCE_COMPUTING - - WINDOWS_RTX_ACCELERATED_MODELS - - BEGINNER - - ADVANCED - ownerName: type: string - description: Name of the user who owns this collection - maxLength: 255 - attributes: - type: array - items: - $ref: '#/components/schemas/ArtifactAttribute' - CollectionPatchRequest: - type: object - description: Properties for the collection to patch - properties: - operations: - type: array - items: - $ref: '#/components/schemas/CollectionOperation' - maxItems: 100 - maxItems: 100 - WorkflowStatusUrlResponse: type: object - description: Response containing workflow status URL and ID + RecipeFile: + description: Recipe file object properties: - statusUrl: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: URL to check the workflow status - workflowId: + description: + description: Description of the file type: string - description: ID of the workflow - requestStatus: - $ref: '#/components/schemas/RequestStatus' - description: Request status information - RequestStatus: + path: + description: Relative file path from the root of the recipe + maxLength: 1023 + minLength: 1 + type: string + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer type: object - description: Request status information + File: + description: File object properties: - statusCode: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Describes response status reported by the server. - enum: - - UNKNOWN - - SUCCESS - - UNAUTHORIZED - - PAYMENT_REQUIRED - - FORBIDDEN - - TIMEOUT - - EXISTS - - NOT_FOUND - - INTERNAL_ERROR - - INVALID_REQUEST - - INVALID_REQUEST_VERSION - - INVALID_REQUEST_DATA - - METHOD_NOT_ALLOWED - - CONFLICT - - UNPROCESSABLE_ENTITY - - TOO_MANY_REQUESTS - - INSUFFICIENT_STORAGE - - SERVICE_UNAVAILABLE - statusDescription: + description: + description: Description of the file type: string - description: Status description - requestId: + path: + description: Relative file path from the root of the object + maxLength: 1023 + minLength: 1 type: string - description: Request ID - serverId: + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Server ID - LicenseMetadata: type: object + LicenseMetadata: description: License information for the artifact properties: - licenseId: - type: string - description: License ID - example: NVIDIA proprietary - maxLength: 100 - pattern: ^[\s\S]*$ - licenseVersion: - type: string - description: License version ID - example: v1.0 - maxLength: 100 - pattern: ^[\s\S]*$ - needsAcceptance: - type: boolean - description: Indicator if user needs to accept this license + configuredLicenseTerms: + $ref: '#/components/schemas/ConfiguredLicenseTerms' + description: License information for the artifact governingTerms: - type: string description: Comprehensive terms and links related to the license - example: >- -

GOVERNING HOSTING TERMS: Use of the model is - governed by the NVIDIA Open Model Agreement.

+ example:

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

maxLength: 1000 pattern: ^[\s\S]*$ - configuredLicenseTerms: - $ref: '#/components/schemas/ConfiguredLicenseTerms' - description: License information for the artifact - ArtifactAttribute: - type: object - description: Attribute on the artifact - properties: - key: - type: string - maxLength: 255 - pattern: '[a-zA-Z0-9]+' - value: type: string - maxLength: 255 - DeploymentCpuParameters: - type: object - description: Deployment CPU Parameters object - properties: - count: - type: integer - format: int64 - description: Total count of CPUs - DeploymentGpuParameters: - type: object - description: Deployment GPU Parameters object - properties: - count: - type: integer - format: int64 - description: Total count of GPUs - type: + licenseId: + description: License ID + example: NVIDIA proprietary + maxLength: 100 + pattern: ^[\s\S]*$ type: string - description: GPU Type - DeploymentMemoryParameters: + licenseVersion: + description: License version ID + example: v1.0 + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + needsAcceptance: + description: Indicator if user needs to accept this license + type: boolean type: object - description: Deployment Memory Parameters object + CountableResource: + description: Countable Resource object properties: - capacityInGB: + defaultValue: + description: 'Deprecated: Default value. Please use actual CloudServiceProvider values instead' + format: int64 type: integer + maxValue: + description: Maximum value format: int64 - description: Capacity in GB - DeploymentStorageParameters: - type: object - description: Deployment Storage Parameters object - properties: - capacityInGB: type: integer + minValue: + description: Minimum value format: int64 - description: Capacity in GB - DeploymentArtifactParameters: + type: integer type: object - description: Deployment Artifact Parameters object + EnumerableResource: + description: Enumerable Resource object properties: - artifactType: - type: string - description: Artifact type - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - name: - type: string - description: Unique name of the artifact - displayName: - type: string - description: Display name of the artifact - orgName: - type: string - description: Name of the org that the artifact belongs to - teamName: - type: string - description: Name of the team that the artifact belongs to - versionId: - type: string - description: ID of the version or tag - filePath: + defaultItemName: + description: 'Deprecated: Default item name. Please use actual CloudServiceProvider values instead' type: string - description: Path to a file in an artifact version - required: - - name - - orgName - CustomMetricGroup: + items: + items: + $ref: '#/components/schemas/EnumerableResourceItem' + type: array type: object + CustomMetricGroup: description: Defines the group of custom metrics. properties: - name: - type: string - maxLength: 255 attributes: - type: array items: $ref: '#/components/schemas/CustomMetric' - Dataset: - type: object - properties: + type: array name: + maxLength: 255 type: string - description: Name of the dataset + type: object + Dataset: + properties: + license: + description: License of the dataset maxLength: 255 - link: type: string + link: description: Link to the dataset maxLength: 255 - license: type: string - description: License of the dataset + name: + description: Name of the dataset maxLength: 255 - EncryptionKey: - type: object - description: Customer Managed Key shard configuration for the model - properties: - useExistingKey: - type: boolean - description: >- - Whether to use an existing customer key shard or should a new one be - created - encryptionKeyId: - type: string - description: ID of the existing customer key shard to use - description: type: string - description: Description for a new customer key shard - required: - - useExistingKey - NvcfContainerConfiguration: type: object + NvcfContainerConfiguration: description: NVCF container configuration parameters properties: - inferenceUrl: + apiBodyFormat: + description: API body format type: string - description: Inference url - inferencePort: + containerArgs: + description: Container arguments type: string - description: Inference port - healthUri: + containerEnvironment: + items: + $ref: '#/components/schemas/MetaData' + type: array + containerImage: + description: Container Image type: string + healthUri: description: Health URI - containerImage: type: string - description: Container Image - containerArgs: + inferencePort: + description: Inference port type: string - description: Container arguments - apiBodyFormat: + inferenceUrl: + description: Inference url type: string - description: API body format models: - type: array items: $ref: '#/components/schemas/NvcfContainerModel' - containerEnvironment: type: array - items: - $ref: '#/components/schemas/MetaData' - NvcfDeploymentSpecification: type: object + NvcfDeploymentSpecification: description: NVCF deployment specification properties: - gpuType: - type: string - description: GPU type gpuCount: - type: integer - format: int32 description: GPU count - instanceType: + format: int32 + type: integer + gpuType: + description: GPU type type: string + instanceType: description: Instance type + type: string maxConcurrency: - type: integer - format: int32 description: Maximum concurrency - ModelSimplified: - type: object - description: Model object - properties: - name: - type: string - description: Unique name of the model - orgName: - type: string - description: Name of the org that the model belongs to - teamName: - type: string - description: Name of the team that the model belongs to - required: - - name - - orgName - CollectionOperation: + format: int32 + type: integer type: object - description: Collection operation object - properties: - operation: - type: string - description: Collection operation - maxLength: 255 - path: - type: string - description: Path to a collection item in a scoped format - maxLength: 255 - pattern: ^(/(?!/)([\w- %\.(?!\.)])+)+$ ConfiguredLicenseTerms: - type: object description: License information for the artifact properties: - hosting: + download: $ref: '#/components/schemas/ConfiguredLicenseTerm' description: License information for the artifact - download: + hosting: $ref: '#/components/schemas/ConfiguredLicenseTerm' description: License information for the artifact - CustomMetric: type: object + EnumerableResourceItem: + description: Enumerable Resource Item object + properties: + displayName: + description: Display name + type: string + logo: + description: Logo URL + type: string + name: + description: Name + type: string + type: object + CustomMetric: description: Custom metrics properties: key: - type: string maxLength: 255 + type: string value: + maxLength: 255 + type: string + type: object + MetaData: + properties: + key: + maxLength: 255 type: string + value: maxLength: 255 - NvcfContainerModel: + type: string type: object + NvcfContainerModel: description: Models version object metadata properties: name: - type: string description: Model name - version: type: string - description: Model version uri: - type: string description: Model URI - MetaData: - type: object - properties: - key: type: string - maxLength: 255 - value: + version: + description: Model version type: string - maxLength: 255 - ConfiguredLicenseTerm: type: object + ConfiguredLicenseTerm: description: License information for the artifact properties: artifactType: - type: string description: Artifact type example: model maxLength: 15 pattern: ^[\s\S]*$ - tags: - type: array - items: - $ref: '#/components/schemas/LicenseTag' - generatedHtml: type: string + generatedHtml: description: Generated html example:

GOVERNING HOSTING TERMS: ...

maxLength: 9999 pattern: ^[\s\S]*$ - LicenseTag: + type: string + tags: + items: + $ref: '#/components/schemas/LicenseTag' + type: array type: object + LicenseTag: description: License tag information for individual term properties: - key: + category: + description: Category of the tag + example: terms + maxLength: 100 + pattern: ^[\s\S]*$ type: string + key: description: Key identifier for the tag example: nv-open-model maxLength: 100 pattern: ^[\s\S]*$ - category: type: string - description: Category of the tag - example: terms + label: + description: License Label + example: NVIDIA Open Model Agreement maxLength: 100 pattern: ^[\s\S]*$ - tag: type: string + tag: description: License tag name example: Model Agreement maxLength: 100 pattern: ^[\s\S]*$ - url: type: string + url: description: Link to the hosted license example: https://www.nvidia.com/.../nvidia-open-model-agreement/ maxLength: 1000 pattern: ^[\s\S]*$ - label: type: string - description: License Label - example: NVIDIA Open Model Agreement - maxLength: 100 - pattern: ^[\s\S]*$ + type: object + GetGpusResponse: + type: object + properties: + gpus: + type: array + items: + $ref: '#/components/schemas/GpuByPciResponse' + GetGpuByPciDeviceIdResponse: + type: object + properties: + gpu_by_pci_device_id: + type: array + items: + $ref: '#/components/schemas/GpuByPciResponse' + GetGpuByPciDeviceIdVendorIdResponse: + type: object + properties: + gpu_by_pci_device_id_vendor_id: + type: array + items: + $ref: '#/components/schemas/GpuByPciResponse' + x-stackQL-resources: + collections: + id: nvidia.catalog.collections + name: collections + title: Collections + methods: + list: + operation: + $ref: '#/paths/~1v2~1collections/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collections + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1collections~1{org_name}~1{collection_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collection + request: + nativeCasing: kebab + get_by_team: + operation: + $ref: '#/paths/~1v2~1collections~1{org_name}~1{team_name}~1{collection_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collection + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/collections/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/collections/methods/get' + - $ref: '#/components/x-stackQL-resources/collections/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + collection_artifacts: + id: nvidia.catalog.collection_artifacts + name: collection_artifacts + title: Collection Artifacts + methods: + list: + operation: + $ref: '#/paths/~1v2~1collections~1{org_name}~1{collection_name}~1artifacts~1{artifact_type}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1v2~1collections~1{org_name}~1{team_name}~1{collection_name}~1artifacts~1{artifact_type}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + csps: + id: nvidia.catalog.csps + name: csps + title: Csps + methods: + list: + operation: + $ref: '#/paths/~1v2~1csps/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.cloudServiceProviders + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1csps/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/csps/methods/get' + - $ref: '#/components/x-stackQL-resources/csps/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/csps/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/csps/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/csps/methods/delete' + replace: [] + artifact_deployment_params: + id: nvidia.catalog.artifact_deployment_params + name: artifact_deployment_params + title: Artifact Deployment Params + methods: + list: + operation: + $ref: '#/paths/~1v2~1csps~1{artifact_type}~1{org_name}~1{artifact_name}~1deployments~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.deploymentParameters + request: + nativeCasing: kebab + get: + operation: + $ref: '#/paths/~1v2~1csps~1{artifact_type}~1{org_name}~1{artifact_name}~1deployments~1{csp_name}~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + list_by_team: + operation: + $ref: '#/paths/~1v2~1csps~1{artifact_type}~1{org_name}~1{team_name}~1{artifact_name}~1deployments~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.deploymentParameters + request: + nativeCasing: kebab + get_by_team: + operation: + $ref: '#/paths/~1v2~1csps~1{artifact_type}~1{org_name}~1{team_name}~1{artifact_name}~1deployments~1{csp_name}~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/get' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + csp_deployment_params: + id: nvidia.catalog.csp_deployment_params + name: csp_deployment_params + title: Csp Deployment Params + methods: + get: + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params/methods/get' + insert: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params/methods/delete' + replace: [] + csp_deployment_params_meta: + id: nvidia.catalog.csp_deployment_params_meta + name: csp_deployment_params_meta + title: Csp Deployment Params Meta + methods: + get: + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params~1meta/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params~1meta/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params~1meta/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1v2~1csps~1{csp_name}~1deployments~1params~1meta/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params_meta/methods/get' + insert: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params_meta/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params_meta/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/csp_deployment_params_meta/methods/delete' + replace: [] + gpus: + id: nvidia.catalog.gpus + name: gpus + title: Gpus + methods: + list: + operation: + $ref: '#/paths/~1v2~1gpus/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.gpus + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/GetGpusResponse' + transform: + body: |- + {{- $wrapped := printf "{\"gpus\":%s}" . -}} + {{- $wrapped -}} + type: golang_template_text_v0.3.0 + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.gpu_by_pci_device_id + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/GetGpuByPciDeviceIdResponse' + transform: + body: |- + {{- $wrapped := printf "{\"gpu_by_pci_device_id\":%s}" . -}} + {{- $wrapped -}} + type: golang_template_text_v0.3.0 + request: + nativeCasing: camel + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_vendor: + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}~1pci-vendor-id~1{pci_vendor_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.gpu_by_pci_device_id_vendor_id + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/GetGpuByPciDeviceIdVendorIdResponse' + transform: + body: |- + {{- $wrapped := printf "{\"gpu_by_pci_device_id_vendor_id\":%s}" . -}} + {{- $wrapped -}} + type: golang_template_text_v0.3.0 + request: + nativeCasing: camel + get_by_vendor_subsystem: + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}~1pci-vendor-id~1{pci_vendor_id}~1pci-subsystem-device-id~1{pci_subsystem_device_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create_by_vendor_subsystem: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}~1pci-vendor-id~1{pci_vendor_id}~1pci-subsystem-device-id~1{pci_subsystem_device_id}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update_by_vendor_subsystem: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}~1pci-vendor-id~1{pci_vendor_id}~1pci-subsystem-device-id~1{pci_subsystem_device_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete_by_vendor_subsystem: + operation: + $ref: '#/paths/~1v2~1gpus~1pci-device-id~1{pci_device_id}~1pci-vendor-id~1{pci_vendor_id}~1pci-subsystem-device-id~1{pci_subsystem_device_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/gpus/methods/get_by_vendor_subsystem' + - $ref: '#/components/x-stackQL-resources/gpus/methods/get_by_vendor' + - $ref: '#/components/x-stackQL-resources/gpus/methods/get' + - $ref: '#/components/x-stackQL-resources/gpus/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/gpus/methods/create_by_vendor_subsystem' + - $ref: '#/components/x-stackQL-resources/gpus/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/gpus/methods/update_by_vendor_subsystem' + - $ref: '#/components/x-stackQL-resources/gpus/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/gpus/methods/delete_by_vendor_subsystem' + - $ref: '#/components/x-stackQL-resources/gpus/methods/delete' + replace: [] + helm_chart_versions: + id: nvidia.catalog.helm_chart_versions + name: helm_chart_versions + title: Helm Chart Versions + methods: + list: + operation: + $ref: '#/paths/~1v2~1helm-charts~1{org_name}~1{artifact_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1helm-charts~1{org_name}~1{artifact_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersion + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1v2~1helm-charts~1{org_name}~1{team_name}~1{artifact_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get_by_team: + operation: + $ref: '#/paths/~1v2~1helm-charts~1{org_name}~1{team_name}~1{artifact_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersion + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + models: + id: nvidia.catalog.models + name: models + title: Models + methods: + list: + operation: + $ref: '#/paths/~1v2~1models/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.models + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{model_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.model + request: + nativeCasing: kebab + get_by_team: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{team_name}~1{model_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.model + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/models/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/models/methods/get' + - $ref: '#/components/x-stackQL-resources/models/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + model_versions: + id: nvidia.catalog.model_versions + name: model_versions + title: Model Versions + methods: + list: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{model_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{model_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersion + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{team_name}~1{model_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get_by_team: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{team_name}~1{model_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersion + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/model_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + model_files: + id: nvidia.catalog.model_files + name: model_files + title: Model Files + methods: + list: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{model_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1v2~1models~1{org_name}~1{team_name}~1{model_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/model_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/model_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + nim_metadata: + id: nvidia.catalog.nim_metadata + name: nim_metadata + title: Nim Metadata + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1nim~1{team}~1{nim_name}~1{tag}~1metadata/post' + response: + mediaType: application/json + openAPIDocKey: '201' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/nim_metadata/methods/create' + update: [] + delete: [] + replace: [] + recipes: + id: nvidia.catalog.recipes + name: recipes + title: Recipes + methods: + list: + operation: + $ref: '#/paths/~1v2~1recipes/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipes + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + get_by_team: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{team_name}~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/recipes/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/recipes/methods/get' + - $ref: '#/components/x-stackQL-resources/recipes/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + recipe_versions: + id: nvidia.catalog.recipe_versions + name: recipe_versions + title: Recipe Versions + methods: + list: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{team_name}~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get_by_team: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{team_name}~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + recipe_files: + id: nvidia.catalog.recipe_files + name: recipe_files + title: Recipe Files + methods: + list: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1v2~1recipes~1{org_name}~1{team_name}~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/recipe_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + resources: + id: nvidia.catalog.resources + name: resources + title: Resources + methods: + list: + operation: + $ref: '#/paths/~1v2~1resources/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipes + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + get_by_team: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{team_name}~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/resources/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/resources/methods/get' + - $ref: '#/components/x-stackQL-resources/resources/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + resource_versions: + id: nvidia.catalog.resource_versions + name: resource_versions + title: Resource Versions + methods: + list: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{team_name}~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get_by_team: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{team_name}~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + resource_files: + id: nvidia.catalog.resource_files + name: resource_files + title: Resource Files + methods: + list: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1v2~1resources~1{org_name}~1{team_name}~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/resource_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/resource_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + artifacts: + id: nvidia.catalog.artifacts + name: artifacts + title: Artifacts + methods: + list: + operation: + $ref: '#/paths/~1v2~1{artifact_type}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1{artifact_type}~1{org_name}~1{artifact_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifact + request: + nativeCasing: kebab + get_by_team: + operation: + $ref: '#/paths/~1v2~1{artifact_type}~1{org_name}~1{team_name}~1{artifact_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifact + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifacts/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/get' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + artifact_files: + id: nvidia.catalog.artifact_files + name: artifact_files + title: Artifact Files + methods: + list: + operation: + $ref: '#/paths/~1v2~1{artifact_type}~1{org_name}~1{artifact_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1v2~1{artifact_type}~1{org_name}~1{team_name}~1{artifact_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + artifact_specs: + id: nvidia.catalog.artifact_specs + name: artifact_specs + title: Artifact Specs + methods: + get: + operation: + $ref: '#/paths/~1v2~1{artifact_type}~1{org_name}~1{artifact_name}~1spec/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1v2~1{artifact_type}~1{org_name}~1{team_name}~1{artifact_name}~1spec/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/get' + insert: [] + update: [] + delete: [] + replace: [] servers: - - url: https://models.ngc.nvidia.com - description: Generated server url - production - x-internal: true + - url: https://api.ngc.nvidia.com diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml new file mode 100644 index 0000000..1840f67 --- /dev/null +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml @@ -0,0 +1,2302 @@ +openapi: 3.1.0 +info: + title: NVIDIA Cloud Functions - Deployments + description: 'NVCF deployments and GPU specifications, cluster groups and GPU inventory, registry credentials and telemetry endpoints (source: the published NVCF OpenAPI specification; served from api.ngc.nvidia.com).' + version: 2.256.0 +paths: + /v2/nvcf/clusterGroups: + get: + deprecated: true + description: 'Lists Cluster Groups for the current account. The response includes cluster groups defined specifically in the current account and publicly available cluster groups such as GFN, OCI, etc. Requires a bearer token with ''list_cluster_groups'' scope in HTTP Authorization header. ' + operationId: getClusterGroups + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterGroupsResponse' + description: OK + summary: List Cluster Groups + tags: + - Cluster Groups and GPUs + parameters: [] + /v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id}: + get: + description: 'Allows Account Admins to retrieve the deployment details of the specified function version. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: getFunctionDeployment + parameters: + - description: Function id + in: path + name: function_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + - description: Function version id + in: path + name: function_version_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + description: OK + summary: Get Function Deployment Details + tags: + - Function Deployment + post: + description: 'Initiates deployment for the specified function version. Upon invocation of this endpoint, the function''s status transitions to ''DEPLOYING''. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: createFunctionDeployment + parameters: + - description: Function id + in: path + name: function_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + - description: Function version id + in: path + name: function_version_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionDeploymentRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + description: OK + summary: Deploy Function + tags: + - Function Deployment + put: + deprecated: true + description: ' Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: updateFunctionDeployment + parameters: + - description: Function id + in: path + name: function_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + - description: Function version id + in: path + name: function_version_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFunctionDeploymentRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + description: OK + summary: Update Function Deployment + tags: + - Function Deployment + delete: + description: 'Deletes the deployment associated with the specified function. Upon deletion, any active instances will be terminated, and the function''s status will transition to ''INACTIVE''. To undeploy a function version gracefully, specify ''graceful=true'' query parameter, allowing current tasks to complete before terminating the instances. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: deleteFunctionDeployment + parameters: + - description: Function id + in: path + name: function_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + - description: Function version id + in: path + name: function_version_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + - description: Query param to deactivate function for graceful shutdown + in: query + name: graceful + required: false + schema: + default: false + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionResponse' + description: OK + summary: Delete Function Deployment + tags: + - Function Deployment + /v2/nvcf/deployments/{deployment_id}: + get: + description: 'Allows Account Admins to retrieve the deployment details of the specified deployment id. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: getFunctionDeployment_1 + parameters: + - description: Deployment id + in: path + name: deployment_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentResponse' + description: OK + summary: Get Function Deployment Details + tags: + - Function Deployment + /v2/nvcf/deployments/{deployment_id}/gpu-specifications/{gpu_spec_id}: + patch: + description: ' Updates the GPU specification of the specified function version''s deployment. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: updateGpuSpecification + parameters: + - description: Deployment id + in: path + name: deployment_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + - description: GPU Specification id + in: path + name: gpu_spec_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGpuSpecificationRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGpuSpecificationResponse' + description: OK + summary: Update the specified GPU specification under the specified deployment + tags: + - Function Deployment + /v2/nvcf/recognized-registries: + get: + description: 'Lists all the registries that are recognized by NVCF. Only when a registry is recognized by NVCF that the users can add its credential to their account and then use it to create functions. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: getRecognizedRegistries + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecognizedRegistriesResponse' + description: OK + summary: List Recognized Registries + tags: + - Registry Credential Management + parameters: [] + /v2/nvcf/registry-credentials: + get: + description: 'Lists all the registry credentials associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: listRegistryCredentialDetails + parameters: + - description: | + Filters registry credentials using the specified 'artifactType' query param. + in: query + name: artifactType + required: false + schema: + default: + - CONTAINER + - HELM + - MODEL + - RESOURCE + items: + enum: + - CONTAINER + - HELM + - MODEL + - RESOURCE + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true + - description: | + Filters registry credentials using the specified 'provisionedBy' query param. + in: query + name: provisionedBy + required: false + schema: + default: + - SYSTEM + - USER + items: + enum: + - SYSTEM + - USER + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListRegistryCredentialDetailsResponse' + description: OK + summary: List Registry Credentials + tags: + - Registry Credential Management + post: + description: 'Adds a new registry credential to the account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: addRegistryCredential + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddRegistryCredentialRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RegistryCredentialDetailsResponse' + description: OK + summary: Add new registry credential to the account + tags: + - Registry Credential Management + parameters: [] + /v2/nvcf/registry-credentials/{registry_credential_id}: + get: + description: 'Retrieves detailed information of the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: getRegistryCredentialDetails + parameters: + - description: Registry Credential id + in: path + name: registry_credential_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RegistryCredentialDetailsResponse' + description: OK + summary: Get Registry Credential Details + tags: + - Registry Credential Management + patch: + description: 'Updates the secret and/or the artifact types associated with the specified registry credential. Artifact types specified in the request body are added to the set of artifact types that already exist for the specified registry credential. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: updateRegistryCredential + parameters: + - description: Registry Credential id + in: path + name: registry_credential_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRegistryCredentialRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RegistryCredentialDetailsResponse' + description: OK + summary: Update registry credential + tags: + - Registry Credential Management + delete: + description: 'Deletes the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: deleteRegistryCredential + parameters: + - description: Registry Credential id + in: path + name: registry_credential_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + responses: + '204': + description: No Content + summary: Delete Registry Credential + tags: + - Registry Credential Management + /v2/nvcf/secrets/telemetries/{telemetry_id}: + put: + description: 'Updates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with ''update_secrets'' scope in the HTTP Authorization header. ' + operationId: updateTelemetrySecret + parameters: + - description: NVIDIA Cloud Account Id + in: path + name: telemetry_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTelemetrySecretRequest' + required: true + responses: + '204': + description: No Content + summary: Update secret for a specific Telemetry Id + tags: + - User Secret Management + /v2/nvcf/telemetries: + get: + description: 'Retrieves telemetry configurations for a specific NVIDIA Cloud Account. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. ' + operationId: getTelemetriesByAccount + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListTelemetryResponse' + description: OK + summary: List Telemetries + tags: + - Telemetry Management + parameters: [] + post: + description: 'Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. ' + operationId: createTelemetry + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TelemetryRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TelemetryResponse' + description: OK + summary: Create Telemetry + tags: + - Telemetry Management + parameters: [] + /v2/nvcf/telemetries/{telemetry_id}: + get: + description: 'Retrieves the details of a specific telemetry configuration by its ID. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. ' + operationId: getTelemetry + parameters: + - in: path + name: telemetry_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TelemetryResponse' + description: OK + summary: Get Telemetry Details + tags: + - Telemetry Management + delete: + description: 'Deletes a specific telemetry configuration for a NVIDIA Cloud Account. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. If there any functions that are dependent on the Telemetry that is being deleted, then response with 400 status code will be returned. ' + operationId: deleteTelemetry + parameters: + - in: path + name: telemetry_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + responses: + '204': + description: No Content + '400': + description: Cannot be deleted till Functions depend on it + summary: Delete Telemetry + tags: + - Telemetry Management +components: + schemas: + ClusterGroupsResponse: + properties: + clusterGroups: + items: + $ref: '#/components/schemas/ClusterGroup' + maxItems: 2147483647 + minItems: 0 + type: array + type: object + FunctionResponse: + description: Response body with function details + properties: + function: + $ref: '#/components/schemas/FunctionDto' + description: Function details + required: + - function + type: object + DeploymentResponse: + description: Function Deployment Response + properties: + deployment: + $ref: '#/components/schemas/FunctionDeploymentDto' + description: Deployment details + required: + - deployment + type: object + FunctionDeploymentRequest: + description: Request to deploy a function + properties: + deploymentSpecifications: + description: GPU specs with GPU, instance-type, clusters etc. details + items: + $ref: '#/components/schemas/GpuSpecificationDto' + maxItems: 2147483647 + minItems: 1 + type: array + required: + - deploymentSpecifications + type: object + UpdateFunctionDeploymentRequest: + description: Request to update function deployment spec + properties: + deploymentSpecifications: + description: Deployment specs with GPU, instance-type, etc. details for update request + items: + $ref: '#/components/schemas/UpdateGpuSpecificationDto' + maxItems: 2147483647 + minItems: 1 + type: array + required: + - deploymentSpecifications + type: object + UpdateGpuSpecificationRequest: + description: Request to update single function deployment GPU Specification + properties: + autoscalingConfiguration: + $ref: '#/components/schemas/AutoscalingConfigurationDto' + description: Customizable Autoscaling configuration + autoscalingConfigurationPolicy: + description: 'Autoscaling configuration policy. CUSTOM_CONFIGURATION (default): use the provided autoscalingConfig. PLATFORM_CONFIGURATION: remove custom config and use platform defaults.' + enum: + - CUSTOM_CONFIGURATION + - PLATFORM_CONFIGURATION + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + maxInstances: + description: Maximum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + nullable: true + minInstances: + description: Minimum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + nullable: true + type: object + UpdateGpuSpecificationResponse: + description: Update GPU Specification Response + properties: + gpuSpecification: + $ref: '#/components/schemas/GpuSpecificationDto' + description: GPU Specification details + required: + - gpuSpecification + type: object + RecognizedRegistriesResponse: + description: Response body for recognized registries endpoint + properties: + recognizedRegistries: + additionalProperties: + items: + additionalProperties: + type: string + type: object + type: array + description: Recognized registries + type: object + type: object + ListRegistryCredentialDetailsResponse: + description: Response body containing list of registry credentials + properties: + registryCredentials: + description: List of registry credentials + items: + $ref: '#/components/schemas/RegistryCredentialDetailsDto' + maxItems: 2147483647 + minItems: 0 + type: array + required: + - registryCredentials + type: object + AddRegistryCredentialRequest: + description: Request body to add a registry credential to an account + properties: + artifactTypes: + description: Artifact types that can be retrieved using this credential + items: + enum: + - CONTAINER + - HELM + - MODEL + - RESOURCE + type: string + maxItems: 2147483647 + minItems: 1 + type: array + uniqueItems: true + description: + description: Optional registry credential description + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + registryHostname: + description: Registry hostname + format: UTF-8 + maxLength: 255 + minLength: 1 + pattern: (?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(? Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/starfleetIds/{starfleet_id}: + get: + description: Get User details in team by starfleet Id + operationId: getUserInTeamByStarfleetId + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: starfleet_id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Get User in team + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/users: + get: + description: Get list of users in team. (User Admin in team privileges required) + operationId: listUsersInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + - description: User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserListResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: List users in team + tags: + - Users Management + post: + description: Creates a User and add them to a team within the org. + operationId: createUserInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: query + name: send-email + required: false + schema: + default: true + type: boolean + - description: If the IDP ID is provided then it is used instead of the one configured for the organization + in: query + name: idp-id + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Creates a User in team + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/users/invitations: + get: + description: List invitations in a team. (Team User Admin privileges required) + operationId: listInvitationsForUserInTeam + parameters: + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + - in: query + name: orderBy + required: false + schema: + enum: + - NAME_ASC + - NAME_DESC + type: string + - in: path + name: team_name + required: true + schema: + type: string + - description: User Search Parameters + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserInvitationListResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: List user invitations in a team. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/users/invitations/{id}: + delete: + description: Delete a specific invitation in an team. (Org Admin or Team User Admin privileges required) + operationId: deleteUserInvitationInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Delete a specific invitation in a team. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/users/invitations/{id}/resend-invitation-email: + get: + description: Resend email of a specific invitation in a team (Org or Team User Admin privileges required). + operationId: resendUserInvitationEmailInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Resend email of a specific invitation in a team. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/users/{id}: + post: + description: Add a User to team + operationId: addUserToTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Add a User to team + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /teams: + get: + description: List all Teams + operationId: listTeams + parameters: + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamListResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: List Teams + tags: + - Teams + post: + description: Create team in org. (Org Admin Privileges Required) + operationId: createTeam + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamCreateResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Create Team + tags: + - Teams + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /teams/{team_name}: + get: + description: Get Team by name + operationId: getTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Get Team + tags: + - Teams + patch: + description: Edit a Team + operationId: editTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Edit Team + tags: + - Teams + delete: + description: Delete a Team + operationId: deleteTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Delete Team + tags: + - Teams + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users: + get: + description: Get list of users in organization. (User Admin in org privileges required) + operationId: listUsersInOrg + parameters: + - description: Name of team to exclude members from + in: query + name: exclude-from-team + required: false + schema: + type: string + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + - description: User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserListResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: List users In org + tags: + - Users Management + post: + description: Creates a User + operationId: createUserInOrg + parameters: + - in: query + name: send-email + required: false + schema: + default: true + type: boolean + - description: If the IDP ID is provided then it is used instead of the one configured for the organization + in: query + name: idp-id + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Creates a User in org + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/invitations: + get: + description: List invitations in an org. (Org User Admin privileges required) + operationId: listInvitationsForUserInOrg + parameters: + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + - in: query + name: orderBy + required: false + schema: + enum: + - NAME_ASC + - NAME_DESC + type: string + - description: User Search Parameters + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserInvitationListResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: List user invitations in an org. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/invitations/{id}: + delete: + description: Delete a specific invitation in an org. (Org User Admin privileges required) + operationId: deleteUserInvitationInOrg + parameters: + - in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Delete a specific invitation in an org. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/invitations/{id}/resend-invitation-email: + get: + description: Resend email of a specific invitation in an org (Org User Admin privileges required). + operationId: resendUserInvitationEmailInOrg + parameters: + - in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Resend email of a specific invitation in an org. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /v2/orgs: + get: + description: List all organizations of the user + operationId: listOrganizations_1 + parameters: + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgListResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: List Organizations + tags: + - Orgs + /v2/orgs/{org_name}: + get: + description: Get organization information + operationId: getOrganization + parameters: + - in: path + name: org_name + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Get Organization + tags: + - Orgs + patch: + description: Update organization information + operationId: updateOrganization + parameters: + - in: path + name: org_name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgProfileUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Update Organization + tags: + - Orgs + /v2/users/me: + get: + description: What am I? + operationId: whoAmI + parameters: + - in: query + name: org-name + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Who am I? + tags: + - Users Management + patch: + description: Edit current user profile + operationId: editUserProfile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Edit current user profile + tags: + - Users Management + parameters: [] + /v2/users/me/api-key: + post: + description: Generate API Key + operationId: generateUserApiKey + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserKeyResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Generate API Key + tags: + - Users Management + parameters: [] + /v3/orgs: + post: + description: Create a new organization based on the org info provided in the request. + operationId: createOrganizationFromScratch + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgCreateRequestV3' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Create Organization from Scratch + tags: + - Orgs + /v3/orgs/proto-org: + post: + description: Create a new organization based on the org info retrieved from the ProtoOrg. + operationId: createOrganizationFromProtoOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgCreateRequestV3' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Create Organization from ProtoOrg + tags: + - Orgs + /v3/orgs/proto-org/validate: + get: + description: Validate org creation from proto org + operationId: protoOrgInvitationValidate + parameters: + - description: JWT that contains org owner email and proto org identifier + in: query + name: invitation_token + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgInvitationResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Validate org creation invite + tags: + - Orgs + /teams/{team_name}/users/nca-invitations: + post: + description: Invites and creates a User in team + operationId: inviteUserToNcaInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserNcaInvitationRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite User to NCA (team version) + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /teams/{team_name}/users/{id}: + delete: + description: Remove User from team. + operationId: removeUserFromTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: id + required: true + schema: + type: string + - description: If anonymize is true, then org owner permission is required. + in: query + name: anonymize + required: false + schema: + default: false + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove User from team + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /teams/{team_name}/users/{user_email_or_id}: + get: + description: Get info and role/invitation in a team by email or id + operationId: listUserRolesInOrgTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: user_email_or_id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Get user in a team by email or id. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /teams/{team_name}/users/{user_email_or_id}/add-role: + patch: + description: Invite if user does not exist, otherwise add role in team + operationId: addRoleOrInviteUserToTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: true + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite user or add role in team + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /teams/{team_name}/users/{user_email_or_id}/remove-role: + delete: + description: Remove role in team if user exists, otherwise remove invitation + operationId: removeRoleOrInvitationInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: false + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove role or invitation in team + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/nca-invitations: + post: + description: Invites and creates a User in org + operationId: inviteUserToNcaInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserNcaInvitationRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite User to NCA (org version) + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/{id}: + delete: + description: Remove User from org. + operationId: removeUserFromOrg + parameters: + - in: path + name: id + required: true + schema: + type: string + - description: If anonymize is true, then org owner permission is required. + in: query + name: anonymize + required: false + schema: + default: false + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove User from org + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/{user_email_or_id}: + get: + description: Get info and role/invitation in an org by email or id + operationId: listUserRolesInOrg + parameters: + - in: path + name: user_email_or_id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Get user in an org by email or id. + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/{user_email_or_id}/add-role: + patch: + description: Invite if user does not exist, otherwise add role in org + operationId: addRoleOrInviteUserToOrg + parameters: + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: true + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite user or add role in org + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /users/{user_email_or_id}/remove-role: + delete: + description: Remove role in org if user exists, otherwise remove invitation + operationId: removeRoleOrInvitationInOrg + parameters: + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: false + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove role or invitation in org + tags: + - Users Management + servers: + - url: https://api.ngc.nvidia.com/v3/orgs/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG +components: + schemas: + UserRoleDefinitionsResponse: + description: Response containing all the roles defined in NGC and their allowed actions + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + roles: + description: List of roles + items: + $ref: '#/components/schemas/UserRoleDefinition' + type: array + type: object + ErrorResponse: + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + UserResponse: + description: ' about one user' + properties: + activationToken: + description: token needed to activate the user to enable login and other features + type: string + ncaRole: + description: NCA role + enum: + - UNKNOWN + - ADMINISTRATOR + - MEMBER + - OWNER + - PENDING + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + user: + $ref: '#/components/schemas/User' + userRoles: + description: DEPRECATED - Please use roles inside user + items: + $ref: '#/components/schemas/UserRole' + type: array + type: object + SearchParams: + properties: + fields: + items: + type: string + type: array + filters: + items: + $ref: '#/components/schemas/SearchParamFilter' + type: array + groupBy: + type: string + orderBy: + items: + $ref: '#/components/schemas/SearchParamOrderBy' + type: array + page: + format: int64 + type: integer + pageSize: + format: int64 + type: integer + query: + type: string + queryFields: + items: + type: string + type: array + scoredSize: + format: int64 + type: integer + type: object + UserListResponse: + description: Response for List User reponse + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + users: + description: information about the user + items: + $ref: '#/components/schemas/User' + type: array + type: object + UserCreateRequest: + description: object used request user creation in an existing org + properties: + email: + description: Email address of the user. This should be unique. + maxLength: 128 + minLength: 6 + type: string + emailOptIn: + description: indicates if user has opt in to nvidia emails + type: boolean + eulaAccepted: + description: indicates if user has accepted EULA + type: boolean + name: + description: user name + maxLength: 64 + minLength: 1 + type: string + roleType: + description: DEPRECATED - use roleTypes which allows multiple roles + type: string + roleTypes: + description: feature roles to give to the user + items: + description: feature roles to give to the user + type: string + type: array + salesforceContactJobRole: + description: user job role + type: string + userMetadata: + $ref: '#/components/schemas/UserMetadata' + required: + - email + type: object + UserInvitationListResponse: + description: Response for a list of user invitations. + properties: + invitations: + description: List of invitations. + items: + $ref: '#/components/schemas/UserInvitation' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + Response: + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + TeamListResponse: + description: listing of all teams + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + teams: + items: + $ref: '#/components/schemas/Team' + type: array + type: object + TeamCreateRequest: + description: Request to create new Team + properties: + description: + description: description of the team + maxLength: 255 + type: string + name: + description: team name + maxLength: 19 + minLength: 2 + type: string + required: + - name + type: object + TeamCreateResponse: + description: response to an team creation request, includes unique team id + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + team: + $ref: '#/components/schemas/Team' + type: object + TeamResponse: + description: details about one team + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + team: + $ref: '#/components/schemas/Team' + type: object + TeamUpdateRequest: + description: object used to update information about existing team + properties: + description: + description: description of the team + maxLength: 255 + type: string + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' + type: object + OrgListResponse: + description: List of organizations. + properties: + organizations: + items: + $ref: '#/components/schemas/Organization' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + OrgResponse: + description: info about an organizations + properties: + organizations: + $ref: '#/components/schemas/Organization' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + OrgProfileUpdateRequest: + description: Object used to update Org profile information + properties: + description: + description: optional description of the organization + maxLength: 128 + type: string + displayName: + description: Name of the organization that will be shown to users + maxLength: 255 + minLength: 1 + type: string + type: object + UserUpdateRequest: + description: object used to request user update + properties: + hasEmailOptIn: + description: indicates if user has opt in to nvidia emails + type: boolean + hasSignedAODTEULA: + description: indicates if user has accepted AODT End User License Agreement. + type: boolean + hasSignedAiFoundryPartnershipsEULA: + description: indicates if user has accepted AI Foundry Partnerships End User License Agreement. + type: boolean + hasSignedBaseCommandEULA: + description: indicates if user has accepted Base Command EULA + type: boolean + hasSignedBaseCommandManagerEULA: + description: indicates if user has accepted Base Command Manager End User License Agreement. + type: boolean + hasSignedBioNeMoEULA: + description: indicates if user has accepted BioNeMo End User License Agreement. + type: boolean + hasSignedContainerPublishingEULA: + description: indicates if user has accepted container publishing eula + type: boolean + hasSignedCuOptEULA: + description: indicates if user has accepted CuOpt End User License Agreement. + type: boolean + hasSignedEULA: + description: indicates if user has accepted NGC EULA + type: boolean + hasSignedEarth2EULA: + description: indicates if user has accepted Earth-2 End User License Agreement. + type: boolean + hasSignedEgxEULA: + description: indicates if user has accepted EGX EULA + type: boolean + hasSignedFleetCommandEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. + type: boolean + hasSignedLlmEULA: + description: indicates if user has accepted LLM End User License Agreement. + type: boolean + hasSignedNVAIEEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. + type: boolean + hasSignedNVQCEULA: + description: indicates if user has accepted Nvidia Quantum Cloud End User License Agreement. + type: boolean + hasSignedNvidiaEULA: + description: indicates if user has accepted NVIDIA EULA + type: boolean + hasSignedOmniverseEULA: + description: indicates if user has accepted Omniverse End User License Agreement. + type: boolean + hasSignedPrivacyPolicy: + description: indicates if the user has signed the Privacy Policy + type: boolean + hasSignedThirdPartyRegistryShareEULA: + description: indicates if user has consented to share their registration info with other parties + type: boolean + name: + description: user name + maxLength: 64 + minLength: 1 + type: string + userMetadata: + $ref: '#/components/schemas/UserMetadata' + type: object + UserKeyResponse: + description: response to a request to access key such as docker token + properties: + cloudNfsKey: + type: string + cloudNfsKeyPwd: + type: string + cloudNfsUserName: + type: string + key: + maxLength: 255 + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + required: + - key + type: object + OrgCreateRequestV3: + description: Request to create new Organization in v3 flow + properties: + country: + description: user country + type: string + description: + description: optional description of the organization + maxLength: 128 + type: string + displayName: + description: Name of the organization that will be shown to users. + maxLength: 255 + minLength: 1 + type: string + initiator: + description: Identify the initiator of the org request + type: string + isInternal: + description: Is NVIDIA internal org or not + type: boolean + name: + description: Organization name + maxLength: 64 + minLength: 2 + type: string + ncaId: + description: NVIDIA Cloud Account Identifier + type: string + ncaNumber: + description: NVIDIA Cloud Account Number + type: string + orgOwner: + $ref: '#/components/schemas/OrgOwnerV3' + pecName: + description: product end customer name for enterprise(Fleet Command) product + type: string + pecSfdcId: + description: product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product + type: string + productEnablements: + items: + $ref: '#/components/schemas/ProductEnablement' + type: array + productSubscriptions: + description: This should be deprecated, use productEnablements instead + items: + $ref: '#/components/schemas/ProductSubscription' + type: array + protoOrgId: + description: Proto org identifier + type: string + salesforceAccountIndustry: + description: Company or organization industry + type: string + sendEmail: + description: Send email to org owner or not. Default is true + type: boolean + type: + enum: + - UNKNOWN + - CLOUD + - ENTERPRISE + - INDIVIDUAL + type: string + type: object + OrgInvitationResponse: + description: Invitation Validation Response. + properties: + orgInvitation: + $ref: '#/components/schemas/OrgInvitation' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + UserNcaInvitationRequest: + description: NCA User invitation request + properties: + email: + description: Is the user email + maxLength: 128 + minLength: 7 + type: string + invitationExpirationIn: + description: Is the numbers of days the invitation will expire + format: int32 + type: integer + inviteAs: + description: Nca allow users to be invited as Admin and as Member + enum: + - ADMIN + - MEMBER + type: string + message: + description: Is a message to the new user + type: string + type: object + RequestStatus: + properties: + requestId: + type: string + serverId: + type: string + statusCode: + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + - PAYLOAD_TOO_LARGE + - NOT_ACCEPTABLE + - UNAVAILABLE_FOR_LEGAL_REASONS + - BAD_GATEWAY + - PRECONDITION_FAILED + type: string + statusDescription: + type: string + type: object + UserRoleDefinition: + description: List of roles + properties: + allowedActions: + description: List of actions that this role allows + items: + $ref: '#/components/schemas/ServiceAccess' + type: array + displayName: + description: Display Name of the role + type: string + name: + description: Name of the role + type: string + product: + $ref: '#/components/schemas/RoleProduct' + shortDisplayName: + description: Short Display Name of the role + type: string + type: object + User: + description: information about the user + properties: + clientId: + description: unique auth client id of this user. + type: string + createdDate: + description: Created date for this user + type: string + email: + description: Email address of the user. This should be unique. + maxLength: 128 + minLength: 7 + type: string + firstLoginDate: + description: Last time the user logged in + type: string + hasBetaAccess: + description: Determines if the user has beta access + type: boolean + hasProfile: + description: indicate if user profile has been completed. + type: boolean + hasSignedAODTEULA: + description: indicates if user has accepted AODT End User License Agreement. + type: boolean + hasSignedAiFoundryPartnershipsEULA: + description: indicates if user has accepted AI Foundry Partnerships eula + type: boolean + hasSignedBaseCommandEULA: + description: indicates if user has accepted Base Command End User License Agreement. + type: boolean + hasSignedBaseCommandManagerEULA: + description: indicates if user has accepted Base Command Manager End User License Agreement. + type: boolean + hasSignedBioNeMoEULA: + description: indicates if user has accepted BioNeMo End User License Agreement. + type: boolean + hasSignedContainerPublishingEULA: + description: indicates if user has accepted container publishing eula + type: boolean + hasSignedCuOptEULA: + description: indicates if user has accepted CuOpt eula + type: boolean + hasSignedEULA: + description: Determines if the user has signed the NGC End User License Agreement. + type: boolean + hasSignedEarth2EULA: + description: indicates if user has accepted Earth-2 eula + type: boolean + hasSignedEgxEULA: + description: '[Deprecated] indicates if user has accepted EGX End User License Agreement.' + type: boolean + hasSignedFleetCommandEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. + type: boolean + hasSignedLlmEULA: + description: indicates if user has accepted LLM End User License Agreement. + type: boolean + hasSignedNVAIEEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. + type: boolean + hasSignedNVQCEULA: + description: indicates if user has accepted Nvidia Quantum Cloud End User License Agreement. + type: boolean + hasSignedNvidiaEULA: + description: Determines if the user has signed the NVIDIA End User License Agreement. + type: boolean + hasSignedOmniverseEULA: + description: indicates if user has accepted Omniverse End User License Agreement. + type: boolean + hasSignedPrivacyPolicy: + description: Determines if the user has signed the Privacy Policy. + type: boolean + hasSignedThirdPartyRegistryShareEULA: + description: indicates if user has consented to share their registration info with other parties + type: boolean + hasSubscribedToEmail: + description: Determines if the user has opted in email subscription. + type: boolean + id: + description: unique Id of this user. + format: int64 + type: integer + idpType: + description: Type of IDP, Identity Provider. Used for login. + enum: + - NVIDIA + - ENTERPRISE + type: string + isActive: + description: Determines if the user is active or not. + type: boolean + isDeleted: + description: Indicates if user was deleted from the system. + type: boolean + isSAML: + description: Determines if the user is a SAML account or not. + type: boolean + jobPositionTitle: + description: Title of user's job position. + type: string + lastLoginDate: + description: Last time the user logged in + type: string + name: + description: user name + maxLength: 64 + minLength: 1 + type: string + roles: + description: List of roles that the user have + items: + $ref: '#/components/schemas/UserRole' + type: array + starfleetId: + description: unique starfleet id of this user. + type: string + storageQuota: + description: Storage quota for this user. + items: + $ref: '#/components/schemas/UserStorageQuota' + type: array + updatedDate: + description: Updated date for this user + type: string + userMetadata: + $ref: '#/components/schemas/UserMetadata' + verified: + description: Is user's email or phone number is verified + type: boolean + type: object + UserRole: + description: List of roles that the user have + properties: + org: + $ref: '#/components/schemas/Organization' + orgRoles: + description: List of org role types that the user have + items: + description: List of org role types that the user have + type: string + type: array + roleTypes: + description: DEPRECATED - List of role types that the user have + items: + description: DEPRECATED - List of role types that the user have + type: string + type: array + targetSystemUserIdentifier: + $ref: '#/components/schemas/TargetSystemUserIdentifier' + team: + $ref: '#/components/schemas/Team' + teamRoles: + description: List of team role types that the user have + items: + description: List of team role types that the user have + type: string + type: array + type: object + SearchParamFilter: + properties: + field: + type: string + value: + type: string + type: object + SearchParamOrderBy: + properties: + field: + type: string + value: + enum: + - ASC + - DESC + type: string + type: object + PaginationInfo: + description: object that describes the pagination information + properties: + index: + description: Page index of results + format: int32 + type: integer + nextPage: + description: Serialized pointer to the next results page. Should be used for fetching next page. Can be empty + type: string + size: + description: Number of results in page + format: int32 + type: integer + totalPages: + description: Total number of pages available + format: int64 + type: integer + totalResults: + description: Total number of results available + format: int64 + type: integer + type: object + UserMetadata: + description: Metadata information about the user. + properties: + company: + description: Name of the company + maxLength: 128 + type: string + companyUrl: + description: Company URL + type: string + country: + description: Country of the user + type: string + firstName: + description: User's first name + maxLength: 255 + type: string + industry: + description: Industry segment + type: string + interest: + description: List of development areas that user has interest + items: + description: List of development areas that user has interest + type: string + type: array + lastName: + description: User's last name + maxLength: 255 + type: string + role: + description: Role of the user in the company + type: string + type: object + UserInvitation: + description: User invitation to an NGC org or team + properties: + createdDate: + description: Date on which the invitation was created. (ISO-8601 format) + type: string + email: + description: Email address of the user. + maxLength: 128 + minLength: 7 + type: string + id: + description: Unique invitation ID + type: string + isProcessed: + description: Flag indicating if the invitation has already been accepted by the user. + type: boolean + name: + description: user name + maxLength: 64 + minLength: 1 + type: string + org: + description: Org to which a user was invited. + type: string + roles: + description: List of roles that the user have. + items: + description: List of roles that the user have. + type: string + type: array + team: + description: Team to which a user was invited. + type: string + type: + description: Type of invitation. The invitation is either to an organization or to a team within organization. + enum: + - ORGANIZATION + - TEAM + type: string + type: object + Team: + description: Information about the team + properties: + description: + description: description of the team + type: string + id: + description: unique Id of this team. + format: int64 + type: integer + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + isDeleted: + description: indicates if the team is deleted or not + type: boolean + name: + description: team name + type: string + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' + type: object + InfinityManagerSettings: + description: Infinity manager setting definition + properties: + infinityManagerEnableTeamOverride: + description: Allow override settings at team level. Only used in org level object + type: boolean + infinityManagerEnabled: + description: Enable the infinity manager or not. Used both in org and team level object + type: boolean + type: object + RepoScanSettings: + description: Repo scan setting definition + properties: + repoScanAllowOverride: + description: Allow org admin to override the org level repo scan settings + type: boolean + repoScanByDefault: + description: Allow repository scanning by default + type: boolean + repoScanEnableNotifications: + description: Sends notification to end user after scanning is done + type: boolean + repoScanEnableTeamOverride: + description: Allow override settings at team level. Only used in org level object + type: boolean + repoScanEnabled: + description: Enable the repository scan or not. Only used in org level object + type: boolean + repoScanShowResults: + description: Allow showing scan results to CLI or UI + type: boolean + type: object + Organization: + description: Information about the Organization + properties: + alternateContact: + $ref: '#/components/schemas/AlternateContact' + billingAccountId: + description: Billing account ID. + type: string + canAddOn: + description: Identifies if the org can be reused. + type: boolean + country: + description: ISO country code of the organization. + type: string + description: + description: Optional description of the organization. + type: string + displayName: + description: Name of the organization that will be shown to users. + maxLength: 255 + minLength: 1 + type: string + id: + description: Unique Id of this team. + format: int64 + type: integer + idpId: + description: Identity Provider ID. + type: string + industry: + description: Industry of the organization. + type: string + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + isDatasetServiceEnabled: + description: Dataset Service enable flag for an organization + type: boolean + isInternal: + description: Is NVIDIA internal org or not + type: boolean + isProto: + description: Indicates when the org is a proto org + type: boolean + isQuickStartEnabled: + description: Quick Start enable flag for an organization + type: boolean + isRegistrySSEEnabled: + description: If a server side encryption is enabled for private registry (models, resources) + type: boolean + isSecretsManagerServiceEnabled: + description: Secrets Manager Service enable flag for an organization + type: boolean + isSecureCredentialSharingServiceEnabled: + description: Secure Credential Sharing Service enable flag for an organization + type: boolean + isSeparateInfluxDbUsed: + description: If a separate influx db used for an organization in BCP for job telemetry + type: boolean + name: + description: Organization name. + type: string + ncaAccountNumber: + description: NVIDIA Cloud Account Number. + type: string + orgOwner: + $ref: '#/components/schemas/OrgOwner' + orgOwners: + description: Org owners + items: + $ref: '#/components/schemas/OrgOwner' + type: array + pecSfdcId: + description: Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer. + type: string + productEnablements: + items: + $ref: '#/components/schemas/ProductEnablement' + type: array + productSubscriptions: + items: + $ref: '#/components/schemas/ProductSubscription' + type: array + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' + type: + enum: + - UNKNOWN + - CLOUD + - ENTERPRISE + - INDIVIDUAL + type: string + usersInfo: + $ref: '#/components/schemas/UsersInfo' + type: object + OrgOwnerV3: + description: Org owner. + properties: + email: + description: Email address of the org owner. + maxLength: 128 + type: string + fullName: + description: Org owner name. + maxLength: 64 + minLength: 1 + type: string + idpId: + description: Identity Provider ID of the org owner. + type: string + starfleetId: + description: Starfleet ID of the org owner. + type: string + required: + - email + type: object + ProductEnablement: + description: Product Enablement + properties: + expirationDate: + description: Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd) + type: string + poDetails: + items: + $ref: '#/components/schemas/PurchaseOrder' + type: array + productName: + description: Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc) + type: string + type: + description: Product Enablement Types + enum: + - NGC_ADMIN_EVAL + - NGC_ADMIN_NFR + - NGC_ADMIN_COMMERCIAL + - EMS_EVAL + - EMS_NFR + - EMS_COMMERCIAL + - NGC_ADMIN_DEVELOPER + type: string + required: + - productName + - type + type: object + ProductSubscription: + description: Product Subscription + properties: + emsEntitlementType: + description: 'EMS Subscription type. (options: EMS_EVAL, EMS_NFR and EMS_COMMERCIAL)' + enum: + - EMS_EVAL + - EMS_NFR + - EMS_COMMERICAL + - EMS_COMMERCIAL + type: string + expirationDate: + description: Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd) + type: string + id: + description: Unique entitlement identifier + type: string + productName: + description: Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc). + type: string + startDate: + description: Date on which the subscription becomes active. (yyyy-MM-dd) + type: string + type: + description: 'Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, NGC_ADMIN_COMMERCIAL)' + enum: + - NGC_ADMIN_EVAL + - NGC_ADMIN_NFR + - NGC_ADMIN_COMMERCIAL + type: string + required: + - productName + type: object + OrgInvitation: + description: Org invitation to NGC + properties: + email: + description: Email address of the user. + type: string + protoOrgId: + description: Proto Org identifier. + type: string + type: object + ServiceAccess: + description: List of actions that this role allows + properties: + accessLevels: + description: List of access levels that this role allows + items: + description: List of access levels that this role allows + type: string + type: array + service: + description: Service that this role allows + type: string + type: object + RoleProduct: + description: Product information of the role + properties: + displayName: + description: Display Name of the product from the product catalog to which this role is associated with + type: string + name: + description: Name of the product from the product catalog to which this role is associated with + type: string + type: object + UserStorageQuota: + description: represents user storage quota for a given ace and available unused storage + properties: + aceId: + description: id of the ace + format: int64 + type: integer + aceName: + description: name of the ace + type: string + available: + description: Available space in bytes + format: int64 + type: integer + datasetCount: + description: Number of datasets that are a part of user's used storage + format: int64 + type: integer + datasetsUsage: + description: Space used by datasets in bytes + format: int64 + type: integer + orgName: + description: The org name that this user quota tied to. This is needed for analytics + type: string + quota: + description: Assigned quota in bytes + format: int64 + type: integer + resultsetCount: + description: Number of resultsets that are a part of user's used storage + format: int64 + type: integer + resultsetsUsage: + description: Space used by resultsets in bytes + format: int64 + type: integer + storageClusterDescription: + description: Description of this storage cluster + type: string + storageClusterName: + description: Name of storage cluster + type: string + storageClusterUuid: + description: Identifier to this storage cluster + type: string + workspacesCount: + description: Number of workspaces that are a part of user's used storage + format: int64 + type: integer + workspacesUsage: + description: Space used by workspaces in bytes + format: int64 + type: integer + type: object + TargetSystemUserIdentifier: + description: Information about the user who is attempting to run the job + properties: + gid: + description: gid of the user on this team + format: int64 + type: integer + orgName: + description: Org context for the job + type: string + starfleetId: + description: Starfleet ID of the user creating the job. + type: string + teamName: + description: Team context for the job + type: string + uid: + description: uid of the user on this team + format: int64 + type: integer + userId: + description: Unique ID of the user who submitted the job + format: int64 + type: integer + type: object + AlternateContact: + description: Org Owner Alternate Contact + properties: + email: + description: Alternate contact's email. + maxLength: 128 + minLength: 6 + type: string + fullName: + description: Full name of the alternate contact. + maxLength: 255 + type: string + type: object + OrgOwner: + description: Org owner. + properties: + email: + description: Email address of the org owner. + maxLength: 128 + type: string + fullName: + description: Org owner name. + maxLength: 64 + minLength: 1 + type: string + lastLoginDate: + description: Last time the org owner logged in. + type: string + required: + - email + type: object + UsersInfo: + description: Users information. + properties: + totalUsers: + description: Total number of users. + format: int64 + type: integer + type: object + PurchaseOrder: + description: Purchase Order. + properties: + entitlementId: + description: Entitlement identifier. + type: string + pkId: + description: PAK (Product Activation Key) identifier. + type: string + type: object + x-stackQL-resources: + roles: + id: nvidia.orgs.roles + name: roles + title: Roles + methods: + list: + operation: + $ref: '#/paths/~1roles/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.roles + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/roles/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + users: + id: nvidia.orgs.users + name: users + title: Users + methods: + get_by_starfleet_id: + operation: + $ref: '#/paths/~1starfleetIds~1{starfleet_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.user + request: + nativeCasing: camel + list: + operation: + $ref: '#/paths/~1users/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.users + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1users/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + delete: + operation: + $ref: '#/paths/~1users~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1users~1{user_email_or_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.user + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/users/methods/get_by_starfleet_id' + - $ref: '#/components/x-stackQL-resources/users/methods/get' + - $ref: '#/components/x-stackQL-resources/users/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/users/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/users/methods/delete' + replace: [] + team_members: + id: nvidia.orgs.team_members + name: team_members + title: Team Members + methods: + get_by_starfleet_id: + operation: + $ref: '#/paths/~1team~1{team_name}~1starfleetIds~1{starfleet_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list: + operation: + $ref: '#/paths/~1team~1{team_name}~1users/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.users + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1users/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + add: + operation: + $ref: '#/paths/~1team~1{team_name}~1users~1{id}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove: + operation: + $ref: '#/paths/~1teams~1{team_name}~1users~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1teams~1{team_name}~1users~1{user_email_or_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/team_members/methods/get_by_starfleet_id' + - $ref: '#/components/x-stackQL-resources/team_members/methods/get' + - $ref: '#/components/x-stackQL-resources/team_members/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/team_members/methods/add' + - $ref: '#/components/x-stackQL-resources/team_members/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/team_members/methods/remove' + replace: [] + team_invitations: + id: nvidia.orgs.team_invitations + name: team_invitations + title: Team Invitations + methods: + list: + operation: + $ref: '#/paths/~1team~1{team_name}~1users~1invitations/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.invitations + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + delete: + operation: + $ref: '#/paths/~1team~1{team_name}~1users~1invitations~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + resend_email: + operation: + $ref: '#/paths/~1team~1{team_name}~1users~1invitations~1{id}~1resend-invitation-email/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create_nca: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1teams~1{team_name}~1users~1nca-invitations/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/team_invitations/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/team_invitations/methods/create_nca' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/team_invitations/methods/delete' + replace: [] + teams: + id: nvidia.orgs.teams + name: teams + title: Teams + methods: + list: + operation: + $ref: '#/paths/~1teams/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.teams + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1teams/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1teams~1{team_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.team + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1teams~1{team_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1teams~1{team_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/teams/methods/get' + - $ref: '#/components/x-stackQL-resources/teams/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/teams/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/teams/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/teams/methods/delete' + replace: [] + user_invitations: + id: nvidia.orgs.user_invitations + name: user_invitations + title: User Invitations + methods: + list: + operation: + $ref: '#/paths/~1users~1invitations/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.invitations + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + delete: + operation: + $ref: '#/paths/~1users~1invitations~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + resend_email: + operation: + $ref: '#/paths/~1users~1invitations~1{id}~1resend-invitation-email/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create_nca: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1users~1nca-invitations/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/user_invitations/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/user_invitations/methods/create_nca' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/user_invitations/methods/delete' + replace: [] + orgs: + id: nvidia.orgs.orgs + name: orgs + title: Orgs + methods: + list: + operation: + $ref: '#/paths/~1v2~1orgs/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.organizations + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1v2~1orgs~1{org_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.organizations + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1orgs~1{org_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v3~1orgs/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/orgs/methods/get' + - $ref: '#/components/x-stackQL-resources/orgs/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/orgs/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/orgs/methods/update' + delete: [] + replace: [] + current_user: + id: nvidia.orgs.current_user + name: current_user + title: Current User + methods: + get: + operation: + $ref: '#/paths/~1v2~1users~1me/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.user + request: + nativeCasing: kebab + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v2~1users~1me/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create_api_key: + operation: + $ref: '#/paths/~1v2~1users~1me~1api-key/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/current_user/methods/get' + insert: [] + update: + - $ref: '#/components/x-stackQL-resources/current_user/methods/update' + delete: [] + replace: [] + proto_orgs: + id: nvidia.orgs.proto_orgs + name: proto_orgs + title: Proto Orgs + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1v3~1orgs~1proto-org/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + validate: + operation: + $ref: '#/paths/~1v3~1orgs~1proto-org~1validate/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.orgInvitation + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/proto_orgs/methods/validate' + insert: + - $ref: '#/components/x-stackQL-resources/proto_orgs/methods/create' + update: [] + delete: [] + replace: [] + team_member_roles: + id: nvidia.orgs.team_member_roles + name: team_member_roles + title: Team Member Roles + methods: + add: + operation: + $ref: '#/paths/~1teams~1{team_name}~1users~1{user_email_or_id}~1add-role/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove: + operation: + $ref: '#/paths/~1teams~1{team_name}~1users~1{user_email_or_id}~1remove-role/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/team_member_roles/methods/add' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/team_member_roles/methods/remove' + replace: [] + user_roles: + id: nvidia.orgs.user_roles + name: user_roles + title: User Roles + methods: + add: + operation: + $ref: '#/paths/~1users~1{user_email_or_id}~1add-role/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove: + operation: + $ref: '#/paths/~1users~1{user_email_or_id}~1remove-role/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/user_roles/methods/add' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/user_roles/methods/remove' + replace: [] +servers: + - url: https://api.ngc.nvidia.com diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml new file mode 100644 index 0000000..62e523d --- /dev/null +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml @@ -0,0 +1,20908 @@ +openapi: 3.1.0 +info: + title: NVIDIA NGC Private Registry + description: 'Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes).' + version: 0.0.1-SNAPSHOT +paths: + /encryption-keys: + get: + description: List encryption keys in org + operationId: listKeysInOrg + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List encryption keys in org + tags: + - Encryption Keys + servers: + - url: https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /encryption-keys/{key_id}: + get: + description: List artifacts for encryption key in org + operationId: listArtifactsForKeyInOrg + parameters: + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: query + name: artifact-type + required: false + schema: + default: MODEL + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts for encryption key in org + tags: + - Encryption Keys + delete: + description: Revoke encryption key and disassociate from all artifacts in org + operationId: deleteKeyFromOrg + parameters: + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke encryption key in org + tags: + - Encryption Keys + servers: + - url: https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/encryption-keys: + get: + description: List encryption keys in org/team + operationId: listKeysInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List encryption keys in org/team + tags: + - Encryption Keys + servers: + - url: https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/encryption-keys/{key_id}: + get: + description: List artifacts for encryption key in org/team + operationId: listArtifactsForKeyInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: query + name: artifactType + required: false + schema: + default: MODEL + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts for encryption key in org/team + tags: + - Encryption Keys + delete: + description: Revoke encryption key and disassociate from all artifacts in org/team + operationId: deleteKeyFromTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke encryption key in org/team + tags: + - Encryption Keys + servers: + - url: https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team}/workflows/{workflow_id}: + get: + description: Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team. + operationId: getWorkflowStatusForTeam + parameters: + - description: Team name + in: path + name: team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Workflow identifier + in: path + name: workflow_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get team-scoped workflow status + tags: + - Workflows + servers: + - url: https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /workflows/{workflow_id}: + get: + description: Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization. + operationId: getWorkflowStatus + parameters: + - description: Workflow identifier + in: path + name: workflow_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get workflow status + tags: + - Workflows + servers: + - url: https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections: + get: + description: List collections the user can access in the specified org + operationId: listCollectionsInOrg + parameters: + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collections in org + tags: + - Collections + post: + description: Create collection in org + operationId: createCollectionInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create collection in org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections/{collection_name}: + get: + description: Get collection details in org + operationId: getCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get collection in org + tags: + - Collections + patch: + description: Update collection details in org + operationId: updateCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update collection in org + tags: + - Collections + delete: + description: Delete collection in the specified org + operationId: deleteCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete collection in org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections/{collection_name}/artifacts: + patch: + description: Patch collection in the specified org + operationId: patchCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPatchRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Patch collection in org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org from another org and team + operationId: addArtifactToCollectionInOrgFromAnotherOrgAndTeam + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org from another org and team + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org from another org + operationId: removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org from another org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org from another org + operationId: addArtifactToCollectionInOrgFromAnotherOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org from another org + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org from another org + operationId: removeArtifactFromCollectionInOrgFromAnotherOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org from another org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org + operationId: listCollectionArtifactsInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collection artifacts in org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections/{collection_name}/share/product: + put: + description: Publish collection to product + operationId: publishCollectionFromRequest + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish collection to product + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /collections/{collection_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org + operationId: addArtifactToCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org + operationId: removeArtifactFromCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /helm-charts/{artifact_name}/versions: + get: + description: List chart versions in org + operationId: listHelmChartVersionsInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List chart versions in org + tags: + - Helm Charts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /helm-charts/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in org + operationId: getHelmChartVersionInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get chart version in org + tags: + - Helm Charts + patch: + description: Update chart version information in org e.g. upload status + operationId: updateHelmChartVersionInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update chart version in org + tags: + - Helm Charts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models: + get: + description: This operation lists models the user can access in the org. + operationId: listModelsInOrg + parameters: + - deprecated: true + description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - deprecated: true + description: '[Deprecated] Page reference, Use page-number instead' + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List models in org + tags: + - Models + post: + description: This operation creates a model in the org. + operationId: createModelInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model in org + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{artifact_name}/versions/{version_id}/stash: + patch: + description: Stash artifact version information in org during upload paused state + operationId: stashArtifactVersionInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Stash artifact version in org + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{model_name}: + get: + description: This operation gets info of a model in the org. + operationId: getModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model details in org + tags: + - Models + patch: + description: This operation updates details of a model in the org. + operationId: updateModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model in org + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{model_name}/encryption-key: + delete: + description: Disassociate encryption key from model in org and mark it for offline deletion + operationId: disassociateKeyFromModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Disassociate encryption key from model in org + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{model_name}/shares/org: + put: + description: This operation shares an org model with the org. + operationId: shareModelInOrgWithOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share org model with the org + tags: + - Models + delete: + description: This operation revokes a shared org model with the org. + operationId: revokeShareModelInOrgWithOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared org model with the org + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{model_name}/shares/team/{target_team}: + put: + description: This operation shares an org model with the team. + operationId: shareModelInOrgWithTeam + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share org model with the specified team + tags: + - Models + delete: + description: This operation revokes a shared org model with the team. + operationId: revokeShareModelInOrgWithTeam + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared org model with the specified team + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{model_name}/versions: + get: + description: List model versions in org + operationId: listModelVersionsInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model versions in org + tags: + - Model Version + post: + description: Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createModelVersionInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model version in org + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{model_name}/versions/{version_id}: + get: + description: Get model version in org + operationId: getModelVersionInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model version in org + tags: + - Model Version + patch: + description: Update model version information in org e.g. upload status + operationId: updateModelVersionInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model version in org + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /models/{model_name}/versions/{version_id}/files: + get: + description: List files of the model version in org + operationId: listModeFilesInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model files in org + tags: + - Model Version Files + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /recipes: + get: + description: List recipes the user can access in the specified org + operationId: listRecipesInOrg + parameters: + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in org + tags: + - Resources + post: + description: Create recipe in org + operationId: createRecipeInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in org + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /recipes/{recipe_name}: + get: + description: Get recipe in org + operationId: getRecipeInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in org + tags: + - Resources + patch: + description: Update recipe details in org + operationId: updateRecipeInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in org + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /recipes/{recipe_name}/versions: + get: + description: List recipe versions in org + operationId: listRecipeVersionsInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in org + tags: + - Resource Versions + post: + description: Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in org + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /recipes/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org + operationId: getRecipeVersionInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in org + tags: + - Resource Versions + patch: + description: Update recipe version information in org e.g. upload status + operationId: updateRecipeVersionInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in org + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /recipes/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in org + operationId: listRecipeFilesInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in org + tags: + - Resource Version Files endpoints + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /repositories/{container_name}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer + parameters: + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /repositories/{container_name}/tags/{container_tag}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer_2 + parameters: + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container tag + in: path + name: container_tag + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /resources: + get: + description: List recipes the user can access in the specified org + operationId: listRecipesInOrg_1 + parameters: + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in org + tags: + - Resources + post: + description: Create recipe in org + operationId: createRecipeInOrg_1 + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in org + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /resources/{recipe_name}: + get: + description: Get recipe in org + operationId: getRecipeInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in org + tags: + - Resources + patch: + description: Update recipe details in org + operationId: updateRecipeInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in org + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /resources/{recipe_name}/versions: + get: + description: List recipe versions in org + operationId: listRecipeVersionsInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in org + tags: + - Resource Versions + post: + description: Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in org + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /resources/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org + operationId: getRecipeVersionInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in org + tags: + - Resource Versions + patch: + description: Update recipe version information in org e.g. upload status + operationId: updateRecipeVersionInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in org + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /resources/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in org + operationId: listRecipeFilesInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in org + tags: + - Resource Version Files endpoints + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections: + get: + description: List collections the user can access in the specified org and team + operationId: listCollectionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collections in team + tags: + - Collections + post: + description: Create collection in org and team + operationId: createCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create collection in org and team + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections/{collection_name}: + get: + description: Get collection details in team + operationId: getCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get collection in team + tags: + - Collections + patch: + description: Update collection details in team + operationId: updateCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update collection in team + tags: + - Collections + delete: + description: Delete collection in the specified org and team + operationId: deleteCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete collection in org and team + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections/{collection_name}/artifacts: + patch: + description: Patch collection in the specified org and team + operationId: patchCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPatchRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Patch collection in org and team + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org and team from another org and team + operationId: addArtifactToCollectionInTeamFromAnotherOrgAndTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org and team from another org and team + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org and team from another org and team + operationId: removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org and team from another org and team + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org and team from another org + operationId: addArtifactToCollectionInTeamFromAnotherOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org and team from another org + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org and team from another org + operationId: removeArtifactFromCollectionInTeamFromAnotherOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org and team from another org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org and team + operationId: listCollectionArtifactsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collection artifacts in org and team + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections/{collection_name}/share/product: + put: + description: Publish collection to product + operationId: publishCollectionFromRequest_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish collection to product + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org and team + operationId: addArtifactToCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org and team + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org and team + operationId: removeArtifactFromCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org and team + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/helm-charts/{artifact_name}/versions: + get: + description: List chart versions in team + operationId: listHelmChartVersionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List chart versions in team + tags: + - Helm Charts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/helm-charts/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in team + operationId: getHelmChartVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get chart version in team + tags: + - Helm Charts + patch: + description: Update chart version information in team e.g. upload status + operationId: updateHelmChartVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update chart version in team + tags: + - Helm Charts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models: + get: + description: This operation lists models the user can access in the org/team. + operationId: listModelsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - deprecated: true + description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - deprecated: true + description: '[Deprecated] Page reference, Use page-number instead' + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List models in team + tags: + - Models + post: + description: This operation creates a model in the org/team. + operationId: createModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model in team + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{artifact_name}/versions/{version_id}/stash: + patch: + description: Stash artifact version information in team in model version upload paused state + operationId: stashArtifactVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Stash artifact version in team + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}: + get: + description: This operation gets info of a model in the org/team. + operationId: getModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model in team + tags: + - Models + patch: + description: This operation updates details of a model in the org/team. + operationId: updateModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model in team + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}/encryption-key: + delete: + description: Disassociate encryption key from model in team and mark it for offline deletion + operationId: disassociateKeyFromModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Disassociate encryption key from model in team + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}/shares/org: + put: + description: This operation shares a team model with the org. + operationId: shareModelInTeamWithOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share team model with the org + tags: + - Models + delete: + description: This operation revokes a shared team model with the org. + operationId: revokeShareModelInTeamWithOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared team model with the org + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}/shares/team/{target_team}: + put: + description: This operation shares a team model with the team. + operationId: shareModelInTeamWithTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share team model with the specified team + tags: + - Models + delete: + description: This operation revokes a shared team model with the team. + operationId: revokeShareModelInTeamWithTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared team model with the specified team + tags: + - Models + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}/versions: + get: + description: List model versions in team + operationId: listModelVersionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model versions in team + tags: + - Model Version + post: + description: Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createModelVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model version in team. + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}/versions/{version_id}: + get: + description: Get model version in team + operationId: getModelVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model version in team + tags: + - Model Version + patch: + description: Update model version information in team e.g. upload status + operationId: updateModelVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model version in team + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}/versions/{version_id}/files: + get: + description: List files of the model version in team + operationId: listModeFilesInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model files in team + tags: + - Model Version Files + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/recipes: + get: + description: List recipes the user can access in the specified org and team + operationId: listRecipesInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in team + tags: + - Resources + post: + description: Create recipe in team + operationId: createRecipeInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in team + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/recipes/{recipe_name}: + get: + description: Get recipe details in team + operationId: getRecipeInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in team + tags: + - Resources + patch: + description: Update recipe details in team + operationId: updateRecipeInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in team + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/recipes/{recipe_name}/versions: + get: + description: List recipe versions in team + operationId: listRecipeVersionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in team + tags: + - Resource Versions + post: + description: Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in team + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/recipes/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team + operationId: getRecipeVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in team + tags: + - Resource Versions + patch: + description: Update recipe version information in team e.g. upload status + operationId: updateRecipeVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in team + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/recipes/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in team + operationId: listRecipeFilesInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in team + tags: + - Resource Version Files endpoints + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/repositories/{container_name}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/repositories/{container_name}/tags/{container_tag}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer_3 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container tag + in: path + name: container_tag + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/resources: + get: + description: List recipes the user can access in the specified org and team + operationId: listRecipesInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in team + tags: + - Resources + post: + description: Create recipe in team + operationId: createRecipeInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in team + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/resources/{recipe_name}: + get: + description: Get recipe details in team + operationId: getRecipeInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in team + tags: + - Resources + patch: + description: Update recipe details in team + operationId: updateRecipeInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in team + tags: + - Resources + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/resources/{recipe_name}/versions: + get: + description: List recipe versions in team + operationId: listRecipeVersionsInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in team + tags: + - Resource Versions + post: + description: Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in team + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/resources/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team + operationId: getRecipeVersionInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in team + tags: + - Resource Versions + patch: + description: Update recipe version information in team e.g. upload status + operationId: updateRecipeVersionInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in team + tags: + - Resource Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/resources/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in team + operationId: listRecipeFilesInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in team + tags: + - Resource Version Files endpoints + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}: + get: + description: List artifacts the user can access in the specified org and team + operationId: listArtifactsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts in team + tags: + - Artifacts + post: + description: Create artifact in team + operationId: createArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact in team + tags: + - Artifacts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}: + get: + description: Get artifact details in team + operationId: getArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact in team + tags: + - Artifacts + put: + description: Replace artifact details in team + operationId: replaceArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Replace artifact in team + tags: + - Artifacts + patch: + description: Update artifact details in team + operationId: updateArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact in team + tags: + - Artifacts + delete: + description: Delete artifact in team + operationId: deleteArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact in team + tags: + - Artifacts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/catalog/flags: + get: + description: Get the Catalog Public flags for artifact in team + operationId: getPublicFlagsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCatalogFlags' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get Catalog flags + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/collections: + get: + description: List artifact collections the user can access in the specified org and team + operationId: listArtifactCollectionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact collections in org and team + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels: + post: + description: Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication. + operationId: syncCollectionReleaseTypeLabelsForArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Sync collection release type labels for artifact + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/deployments/params: + get: + description: List artifact deployment parameters in team + operationId: listArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact deployment parameters in team + tags: + - Artifact deployment parameters + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get artifact deployment parameters details in team + operationId: getArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact deployment parameters details in team + tags: + - Artifact deployment parameters + post: + description: Create artifact deployment parameters in team + operationId: createArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: No auto labels + in: query + name: no-auto-labels + required: false + schema: + type: boolean + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact deployment parameters in team + tags: + - Artifact deployment parameters + patch: + description: Update artifact deployment parameters in team + operationId: updateArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact deployment parameters in team + tags: + - Artifact deployment parameters + delete: + description: Delete artifact deployment parameters in team + operationId: deleteArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact deployment parameters in team + tags: + - Artifact deployment parameters + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance: + post: + description: Record license acceptance for an org artifact. + operationId: acceptArtifactLicense_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptArtifactLicenseRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Accept artifact license + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/release-type: + put: + description: Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team. + operationId: updateReleaseLabel_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateReleaseTypeRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact version release type + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/share: + put: + description: Publish artifact to public + operationId: publishArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Indicates if guest users can download this artifact + in: query + name: guest-can-download + required: true + schema: + type: boolean + - description: Indicates if artifact is listed publicly + in: query + name: public-can-list + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to public + tags: + - Publish + delete: + description: Undo publishing of artifact to public + operationId: undoPublishArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of artifact to public + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/share/product: + put: + description: Publish artifact to product + operationId: publishArtifactFromRequest_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to product + tags: + - Publish + delete: + description: Undo publishing of product artifacts + operationId: undoPublishProduct_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of product artifacts + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/terms-of-service: + put: + description: Update artifact terms of service + operationId: updateTermsOfService_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact terms of service + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}: + delete: + description: Delete a artifact version in team + operationId: deleteArtifactVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete a artifact version in team + tags: + - Artifact Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs: + patch: + description: Update artifact version with configs like policy badge + operationId: updateTagLevelPublishConfigs_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateArtifactVersionConfigs' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact version with configs like policy badge + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}: + post: + description: Create artifact version deployment url in team + operationId: createArtifactDeploymentUrlInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact version deployment url in team + tags: + - Artifact deployment parameters + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in team + operationId: listArtifactFilesInTeam + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact files in team + tags: + - Artifact Version Files + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature: + put: + description: Request to sign artifact version + operationId: signArtifactVersion_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactDownloadResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + tags: + - ArtifactSigning + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}: + get: + description: List artifacts the user can access in the specified org + operationId: listArtifactsInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts in org + tags: + - Artifacts + post: + description: Create artifact in org + operationId: createArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact in org + tags: + - Artifacts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}: + get: + description: Get artifact details in org + operationId: getArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact in org + tags: + - Artifacts + put: + description: Replace artifact details in org + operationId: replaceArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Replace artifact in org + tags: + - Artifacts + patch: + description: Update artifact details in org + operationId: updateArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact in org + tags: + - Artifacts + delete: + description: Delete artifact in org + operationId: deleteArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact in org + tags: + - Artifacts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/catalog/flags: + get: + description: Get the Catalog Public flags for artifact in org + operationId: getPublicFlagsInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCatalogFlags' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get Catalog flags + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/collections: + get: + description: List artifact collections the user can access in the specified org + operationId: listArtifactCollectionsInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact collections in org + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/collections/sync-release-type-labels: + post: + description: Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication. + operationId: syncCollectionReleaseTypeLabelsForArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Sync collection release type labels for artifact + tags: + - Collections + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/deployments/params: + get: + description: List artifact deployment parameters in org + operationId: listArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact deployment parameters in org + tags: + - Artifact deployment parameters + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get artifact deployment parameters details in org + operationId: getArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact deployment parameters details in org + tags: + - Artifact deployment parameters + post: + description: Create artifact deployment parameters in org + operationId: createArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: No auto labels + in: query + name: no-auto-labels + required: false + schema: + type: boolean + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact deployment parameters in org + tags: + - Artifact deployment parameters + patch: + description: Update artifact deployment parameters in org + operationId: updateArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact deployment parameters in org + tags: + - Artifact deployment parameters + delete: + description: Delete artifact deployment parameters in org + operationId: deleteArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact deployment parameters in org + tags: + - Artifact deployment parameters + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/license/acceptance: + post: + description: Record license acceptance for an org artifact. + operationId: acceptArtifactLicense + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptArtifactLicenseRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Accept artifact license + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/release-type: + put: + description: Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team. + operationId: updateReleaseLabel + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateReleaseTypeRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact version release type + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/share: + put: + description: Publish artifact to public + operationId: publishArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Indicates if guest users can download this artifact + in: query + name: guest-can-download + required: true + schema: + type: boolean + - description: Indicates if artifact is listed publicly + in: query + name: public-can-list + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to public + tags: + - Publish + delete: + description: Undo publishing of artifact to public + operationId: undoPublishArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of artifact to public + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/share/product: + put: + description: Publish artifact to product + operationId: publishArtifactFromRequest + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to product + tags: + - Publish + delete: + description: Undo publishing of product artifacts + operationId: undoPublishProduct + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of product artifacts + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/terms-of-service: + put: + description: Update artifact terms of service + operationId: updateTermsOfService + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact terms of service + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/versions/{version_id}: + delete: + description: Delete a artifact version in org + operationId: deleteArtifactVersionInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete a artifact version in org + tags: + - Artifact Versions + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/versions/{version_id}/configs: + patch: + description: Update artifact version with configs like policy badge + operationId: updateTagLevelPublishConfigs + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateArtifactVersionConfigs' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact version with configs like policy badge + tags: + - Publish + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}: + post: + description: Create artifact version deployment url in org + operationId: createArtifactDeploymentUrlInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact version deployment url in org + tags: + - Artifact deployment parameters + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in org + operationId: listArtifactFilesInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact files in org + tags: + - Artifact Version Files + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/versions/{version_id}/signature: + put: + description: Request to sign artifact version + operationId: signArtifactVersion + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactDownloadResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + tags: + - ArtifactSigning + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan: + post: + description: Initiates malwares can for the artifact + operationId: initiateMalwareScan_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Contact email + in: query + name: contact-email + required: false + schema: + format: UTF-8 + maxLength: 320 + minLength: 0 + type: string + - description: Nspect identifier + in: query + name: nspect-id + required: false + schema: + format: UTF-8 + maxLength: 64 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Initiates malwares can for the artifact + tags: + - MalwareScan + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/spec: + post: + description: Create AI Playground for artifactType + operationId: createModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create AI Playground for artifactType + tags: + - AIPlayground + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/purge: + delete: + description: Purge Search DB for deleted artifacts + operationId: purgeDeletedArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Purge Search DB + tags: + - Artifacts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/{artifact_type}/{artifact_name}/spec: + get: + description: Get AI Playground for artifactType + operationId: getModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get AI Playground for artifactType + tags: + - AIPlayground + put: + description: Update AI Playground for artifactType + operationId: updateModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update AI Playground for artifactType + tags: + - AIPlayground + delete: + description: Delete AI Playground for artifactType + operationId: deleteModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete AI Playground for artifactType + tags: + - AIPlayground + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan: + post: + description: Initiates malwares can for the artifact + operationId: initiateMalwareScan + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Contact email + in: query + name: contact-email + required: false + schema: + format: UTF-8 + maxLength: 320 + minLength: 0 + type: string + - description: Nspect identifier + in: query + name: nspect-id + required: false + schema: + format: UTF-8 + maxLength: 64 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Initiates malwares can for the artifact + tags: + - MalwareScan + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/spec: + post: + description: Create AI Playground for artifactType + operationId: createModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create AI Playground for artifactType + tags: + - AIPlayground + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/purge: + delete: + description: Purge Search DB for deleted artifacts + operationId: purgeDeletedArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Purge Search DB + tags: + - Artifacts + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /{artifact_type}/{artifact_name}/spec: + get: + description: Get AI Playground for artifactType + operationId: getModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get AI Playground for artifactType + tags: + - AIPlayground + put: + description: Update AI Playground for artifactType + operationId: updateModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update AI Playground for artifactType + tags: + - AIPlayground + delete: + description: Delete AI Playground for artifactType + operationId: deleteModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete AI Playground for artifactType + tags: + - AIPlayground + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = ''. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG +components: + schemas: + KeyListResponse: + description: Response to list keys request + properties: + encryptionKeys: + items: + $ref: '#/components/schemas/KeyItem' + type: array + type: object + Response: + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + WorkflowStatusUrlResponse: + description: Response containing workflow status URL and ID + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + statusUrl: + description: URL to check the workflow status + type: string + workflowId: + description: ID of the workflow + type: string + type: object + KeyArtifactListResponse: + description: Response containing a list of artifacts associated with a key + properties: + artifacts: + items: + $ref: '#/components/schemas/ArtifactItem' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + WorkflowStatusResponse: + description: Response containing workflow status information + properties: + cloneStatus: + $ref: '#/components/schemas/CloneStatus' + description: Progress of cloning artifact version files + duration: + description: Wall-clock execution duration as an ISO-8601 duration (e.g. PT1H30M5S, PT0.001S); Omitted while IN_PROGRESS. + type: string + endTime: + description: UTC instant when the workflow reached a closed state; omitted while IN_PROGRESS. + format: date-time + type: string + message: + description: Human-readable message about the workflow status + maxLength: 255 + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + startTime: + description: UTC instant when the workflow execution started. + format: date-time + type: string + status: + description: Current status of the workflow + enum: + - IN_PROGRESS + - COMPLETED + - FAILED + - CANCELED + - TERMINATED + - CONTINUED_AS_NEW + - TIMED_OUT + - UNKNOWN + type: string + workflowType: + description: Workflow type. + enum: + - CLONE + - CUSTOMER_MANAGED_KEY + type: string + required: + - message + - requestStatus + - status + type: object + CollectionListResponse: + description: Response to list collections request + properties: + collections: + items: + $ref: '#/components/schemas/Collection' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionCreateRequest: + description: Properties for the collections to be created + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: organization that built the collection + type: string + category: + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + name: + description: Unique name of the collection + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + ownerName: + description: Name of the user who owns this collection + maxLength: 255 + type: string + publisher: + description: organization that published the collection + maxLength: 255 + type: string + shortDescription: + description: Short description of the collection + maxLength: 255 + type: string + required: + - category + - name + - shortDescription + type: object + CollectionResponse: + description: Response to create collection request + properties: + collection: + $ref: '#/components/schemas/Collection' + description: Collection object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionUpdateRequest: + description: Properties for the collection to update + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: organization that built the collection + type: string + category: + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + ownerName: + description: Name of the user who owns this collection + maxLength: 255 + type: string + publisher: + description: organization that published the collection + maxLength: 255 + type: string + shortDescription: + description: Short description of the collection + maxLength: 255 + type: string + type: object + CollectionPatchRequest: + description: Properties for the collection to patch + properties: + operations: + items: + $ref: '#/components/schemas/CollectionOperation' + maxItems: 100 + maxItems: 100 + type: array + type: object + ArtifactListResponse: + description: Response to list artifacts request + properties: + artifacts: + items: + $ref: '#/components/schemas/Artifact' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionPublishRequest: + description: Request to publish a collection + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + canGuestPull: + type: boolean + canPublicList: + type: boolean + isPublic: + type: boolean + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + type: object + ArtifactVersionListResponse: + description: Response to list artifact versions request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersions: + items: + $ref: '#/components/schemas/ArtifactVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionResponse: + description: Response to artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionUpdateRequest: + description: Version properties to update + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + description: + description: Description of the artifact version + maxLength: 255 + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + type: object + ModelListResponse: + description: Response to list models request + properties: + models: + items: + $ref: '#/components/schemas/Model' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelCreateRequest: + description: Properties for the models to be created + properties: + application: + description: Application of the model + maxLength: 255 + type: string + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + maxLength: 255 + type: string + description: + description: Description of the model + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + encryptionKey: + $ref: '#/components/schemas/EncryptionKey' + description: Customer Managed Key shard configuration for the model + explainability: + description: Text describing explainability for this model + type: string + framework: + description: Framework used to train this model + maxLength: 255 + type: string + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model + maxLength: 255 + type: string + name: + description: Unique name of the model + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + ownerName: + description: Name of the user who owns this model + maxLength: 255 + type: string + precision: + description: Precision this model was trained with + maxLength: 255 + type: string + privacy: + description: Text describing the privacy for this model + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the repository + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the model + maxLength: 255 + type: string + required: + - framework + - name + - precision + type: object + ModelResponse: + description: Response to create model request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelUpdateRequest: + description: Properties for the model to update + properties: + application: + description: Application of the model + maxLength: 255 + type: string + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + maxLength: 255 + type: string + description: + description: Description of the model + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + explainability: + description: Text describing explainability for this model + type: string + framework: + description: Framework used to train this model + maxLength: 255 + type: string + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model + maxLength: 255 + type: string + ownerName: + description: Name of the user who owns this model + maxLength: 255 + type: string + precision: + description: Precision this model was trained with + maxLength: 255 + type: string + privacy: + description: Text describing the privacy for this model + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the repository + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the model + maxLength: 255 + type: string + type: object + ModelVersionListResponse: + description: Response to list model versions request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersions: + items: + $ref: '#/components/schemas/ModelVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionCreateRequest: + description: Properties for the model version to be created + properties: + accuracyReached: + description: Accuracy this model reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this model was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the model version + maxLength: 255 + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + id: + description: 'Deprecated: Please use version instead. Unique ID of the version' + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + memoryFootprint: + description: Model size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + minimum: 0 + type: integer + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + ownerName: + description: Name of the user who owns this version + maxLength: 255 + type: string + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + pattern: '[^/]+' + type: string + type: object + ModelVersionResponse: + description: Response to create a model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionUpdateRequest: + description: Version properties to update + properties: + accuracyReached: + description: Accuracy this model reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this model was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the model version + maxLength: 255 + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + memoryFootprint: + description: Model size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + minimum: 0 + type: integer + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + ownerName: + description: Name of the user who owns this version + maxLength: 255 + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + type: object + ModelVersionFileListResponse: + description: Response to list files for model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelFiles: + items: + $ref: '#/components/schemas/ModelFile' + type: array + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeListResponse: + description: Response to list recipes request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipes: + items: + $ref: '#/components/schemas/Recipe' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeCreateRequest: + description: Properties for the recipe to create + properties: + advanced: + description: Text for describing advanced information + type: string + application: + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + type: string + builtBy: + description: organization that built the recipe + maxLength: 255 + type: string + description: + description: Description of the recipe + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model this recipe produces + maxLength: 255 + type: string + name: + description: Unique name of the recipe + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + performance: + description: Text describing performance of the recipe results + type: string + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the recipe + maxLength: 255 + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + setup: + description: Text describing recipe setup + type: string + shortDescription: + description: Short description of the recipe + maxLength: 255 + type: string + trainingFramework: + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + type: string + required: + - application + - modelFormat + - name + - precision + - publicDatasetUsed + - shortDescription + - trainingFramework + type: object + RecipeResponse: + description: Response to recipe request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeUpdateRequest: + description: Properties for the recipe to update + properties: + advanced: + description: Text for describing advanced information + type: string + application: + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + type: string + builtBy: + description: organization that built the recipe + maxLength: 255 + type: string + description: + description: Description of the recipe + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model this recipe produces + maxLength: 255 + type: string + performance: + description: Text describing performance of the recipe results + type: string + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the recipe + maxLength: 255 + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + relatedModels: + items: + $ref: '#/components/schemas/ModelSimplified' + type: array + setup: + description: Text describing recipe setup + type: string + shortDescription: + description: Short description of the recipe + maxLength: 255 + type: string + trainingFramework: + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + type: string + type: object + RecipeVersionListResponse: + description: Response to list recipe versions request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersions: + items: + $ref: '#/components/schemas/RecipeVersion' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionCreateRequest: + description: Properties for the recipe version to be created + properties: + accuracyReached: + description: Accuracy this recipe reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this recipe was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the recipe version + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + id: + description: 'Deprecated: Please use version instead. Unique ID of the version' + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + memoryFootprint: + description: Recipe size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + minimum: 0 + type: integer + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + performance: + description: Text describing performance of the recipe results + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + releaseNotes: + description: Text describing this release + type: string + setup: + description: Text describing recipe setup + type: string + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + pattern: '[^/]+' + type: string + type: object + RecipeVersionResponse: + description: Response to recipe version request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionUpdateRequest: + description: Version properties to update + properties: + accuracyReached: + description: Accuracy this recipe reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this recipe was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the recipe version + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + memoryFootprint: + description: Recipe size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + minimum: 0 + type: integer + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + performance: + description: Text describing performance of the recipe results + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + releaseNotes: + description: Text describing this release + type: string + setup: + description: Text describing recipe setup + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + type: object + RecipeVersionFileListResponse: + description: Response to list files for recipe version request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeFiles: + items: + $ref: '#/components/schemas/RecipeFile' + type: array + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactCreateRequest: + description: Properties for the artifact to create + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + bias: + description: Text describing bias in the model + maxLength: 128000 + type: string + builtBy: + description: organization that built the artifact + maxLength: 255 + type: string + description: + description: Description of the artifact + maxLength: 128000 + type: string + displayName: + description: Display name + maxLength: 128 + minLength: 2 + type: string + explainability: + description: Text describing explainability for this model + maxLength: 128000 + type: string + labels: + items: + maxLength: 255 + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + name: + description: Unique name of the artifact + maxLength: 250 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + privacy: + description: Text describing the privacy for this model + maxLength: 128000 + type: string + publisher: + description: organization that published the artifact + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + maxLength: 128000 + type: string + shortDescription: + description: Short description of the artifact + maxLength: 255 + type: string + type: object + ArtifactResponse: + description: Response to artifact request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactUpdateRequest: + description: Properties for the artifact to update + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the artifact + maxLength: 255 + type: string + description: + description: Description of the artifact + type: string + displayName: + description: Display name + maxLength: 128 + minLength: 2 + type: string + explainability: + description: Text describing explainability for this model + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + privacy: + description: Text describing the privacy for this model + type: string + publisher: + description: organization that published the artifact + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the artifact + maxLength: 255 + type: string + type: object + ArtifactCatalogFlags: + description: Artifact Catalog Flags object + properties: + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + isListedToPublic: + description: Flag indicating if artifact is listed and searchable + type: boolean + isPublic: + description: Determines if this artifact is publicly accessible + type: boolean + type: object + DeploymentParametersListResponse: + description: Response to list deployment parameters request + properties: + artifact: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + csp: + description: Cloud Service Provider name + type: string + deploymentParameters: + items: + $ref: '#/components/schemas/DeploymentParameters' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + DeploymentParameters: + description: Deployment Artifact Parameters object + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + csp: + description: Cloud Service Provider name + type: string + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersUpdateRequest: + description: Request to update existing deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersCreateRequest: + description: Request to create a new deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + AcceptArtifactLicenseRequest: + description: Request body to accept an org-scoped artifact license. + properties: + licenseId: + description: License identifier to accept (must match a licenseId from the artifact's published licenseTerms). + example: NVIDIA Proprietary + maxLength: 256 + minLength: 1 + pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ + type: string + licenseVersion: + description: License version to accept (must match licenseVersion for that license on the artifact). + example: 1 + maxLength: 128 + minLength: 1 + pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ + type: string + required: + - licenseId + - licenseVersion + type: object + UpdateReleaseTypeRequest: + description: Request to update release type of an artifact version + properties: + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + version: + description: Artifact version + type: string + required: + - version + type: object + ArtifactPublishRequest: + description: Request to publish an artifact + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + canGuestPull: + type: boolean + canPublicList: + type: boolean + isPublic: + type: boolean + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + type: object + UpdateArtifactVersionConfigs: + description: Request to publish an artifact + properties: + policy: + items: + enum: + - GOV_READY + - FedRAMP + type: string + type: array + type: object + DeploymentUrlCreateRequest: + description: Request to create a new deployment url + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentUrlResponse: + description: Response to create a new deployment url + properties: + csp: + description: Cloud Service Provider name + type: string + deploymentParameters: + $ref: '#/components/schemas/DeploymentParameters' + description: Deployment Artifact Parameters object + deploymentUrl: + description: Deployment URL + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionFileListResponse: + description: Response to list files for artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactFiles: + items: + $ref: '#/components/schemas/File' + type: array + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactDownloadResponse: + description: Response body to download a single file of an artifact + properties: + filepath: + description: The filepath of the artifact + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + url: + description: Presigned url for single file download + type: string + required: + - url + type: object + AIPlaygroundCreateRequest: + description: Request to create a new AI Playground config + properties: + artifactName: + description: Unique name of the model + type: string + attributes: + description: Metadata json string + type: string + nvcfFunctionId: + description: NVCF function id for the model playground + type: string + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground + type: string + openAPISpec: + description: OpenAPI specification for this model + type: string + required: + - artifactName + - nvcfFunctionId + type: object + AIPlaygroundResponse: + description: Request to fetch an AI Playground config + properties: + artifactName: + description: Unique name of the model + type: string + artifactType: + description: ArtifactTypeEnum of the artifact + type: string + attributes: + description: Metadata json string + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + namespace: + description: org/team of the model + type: string + nvcfFunctionId: + description: NVCF function id for the model playground + type: string + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground + type: string + openAPISpec: + description: OpenAPI specification for this model + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + AIPlaygroundUpdateRequest: + description: Request to update an AI Playground config + properties: + attributes: + description: Metadata json string + type: string + nvcfFunctionId: + description: NVCF function id for the model playground + type: string + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground + type: string + openAPISpec: + description: OpenAPI specification for this model + type: string + type: object + KeyItem: + description: Key item with ID and create timestamp string + properties: + created: + description: 'The creation timestamp of the key item in ISO-8601 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ.' + example: '2025-04-19T22:30:00.123Z' + format: regex + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the encryption key + maxLength: 255 + type: string + encryptionKeyId: + description: The encryption key identifier in UUID format. + example: 196afcf4-d6c8-4116-aa25-34a718a14f43 + format: regex + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ + type: string + required: + - created + - encryptionKeyId + type: object + RequestStatus: + description: Request status information + properties: + requestId: + description: Request ID + type: string + serverId: + description: Server ID + type: string + statusCode: + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + type: string + statusDescription: + description: Status description + type: string + type: object + ArtifactItem: + description: Artifact item with name and description + properties: + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + description: + description: Description of the artifact + type: string + displayName: + description: Display name of the artifact + type: string + name: + description: Name of the artifact + type: string + required: + - description + - name + type: object + CloneStatus: + description: Progress of cloning artifact version files + properties: + filesCopied: + description: Number of files copied + format: int64 + type: integer + internalCheckpointStateCleanup: + description: 'Internal-only: When the async clone workflow is completed, this field shows if the internal checkpoint files were successfully cleaned up in the storage - CLEAN if no objects remain (cleanup succeeded or unused), NOT_EMPTY if objects remain, ERROR if verification could not be performed. Omitted when not applicable.' + enum: + - CLEAN + - NOT_EMPTY + - ERROR + type: string + percentageFilesCloned: + description: Percentage of files cloned + format: double + type: number + sizeCopied: + description: Combined file size copied + format: int64 + type: integer + totalFiles: + description: Total files at source + format: int64 + type: integer + totalSize: + description: Combined file size at source + format: int64 + type: integer + type: object + Collection: + description: Collection object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: Organization that built the collection + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + category: + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + type: string + isPublic: + description: Determines if this collection is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the collection + type: string + orgName: + description: Name of the org that the collection belongs to + type: string + ownerName: + description: Name of the user who owns this version + type: string + policyLabels: + items: + type: string + type: array + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publisher: + description: Organization that published this collection + type: string + shortDescription: + description: Short description of the collection + type: string + size: + description: Total count of collection items + format: int64 + type: integer + teamName: + description: Name of the team that the collection belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + required: + - category + type: object + PaginationInfo: + description: Pagination Information + properties: + index: + description: Page index of results + format: int32 + type: integer + nextPage: + description: Serialized pointer to the next results page. Should be used for fetching next page. Can be empty + type: string + size: + description: Number of results in page + format: int32 + type: integer + totalPages: + description: Total number of pages available + format: int64 + type: integer + totalResults: + description: Total number of results available + format: int64 + type: integer + type: object + ArtifactAttribute: + description: Attribute on the artifact + properties: + key: + maxLength: 255 + pattern: '[a-zA-Z0-9]+' + type: string + value: + maxLength: 255 + type: string + type: object + CollectionOperation: + description: Collection operation object + properties: + operation: + description: Collection operation + maxLength: 255 + type: string + path: + description: Path to a collection item in a scoped format + maxLength: 255 + pattern: ^(/(?!/)([\w- %\.(?!\.)])+)+$ + type: string + type: object + Artifact: + description: Artifact object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + bias: + description: Text describing bias in the artifact + type: string + builtBy: + description: Organization that built the helm chart + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the helm chart + type: string + displayName: + description: Display name + type: string + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact + type: string + explainability: + description: Text describing the explainability for this artifact + type: string + hasSignedVersion: + description: Indicates if the artifact has any signed versions + type: boolean + isFavourite: + description: Flag indicating if helm chart is user's favorite + type: boolean + isPublic: + description: Determines if this helm chart is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionId: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the helm chart + type: string + orgName: + description: Name of the org that the helm chart belongs to + type: string + ownerName: + description: Name of the user who owns this version + type: string + policyLabels: + items: + type: string + type: array + privacy: + description: Text describing the privacy for this artifact + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publisher: + description: Organization that published this helm chart + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the artifact + type: string + shortDescription: + description: Short description of the helm chart + type: string + teamName: + description: Name of the team that the helm chart belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + ArtifactVersion: + description: Artifact version object + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + createdByUser: + description: Id of the user who created this version + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the version + type: string + id: + description: Unique ID of the version + type: string + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + policy: + items: + type: string + type: array + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the version in bytes + format: int64 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + Model: + description: Model object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + application: + description: Application of the model + type: string + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the model + type: string + displayName: + description: Display name + type: string + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact + type: string + explainability: + description: Text describing explainability for this model + type: string + framework: + description: Framework used to train this model + type: string + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + hasSignedVersion: + description: Indicates if the model has any signed versions + type: boolean + isFavourite: + description: Flag indicating if model is user's favorite + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + isPublic: + description: Determines if model is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionGpuModel: + description: GPU model and memory used for the latest version + type: string + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + modelFormat: + description: Format of the model + type: string + name: + description: Unique name of the model + type: string + orgName: + description: Name of the org that the model belongs to + type: string + ownerName: + description: Name of model's owner + type: string + policyLabels: + items: + type: string + type: array + precision: + description: Precision this model was trained with + type: string + privacy: + description: Text describing the privacy for this model + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the repository + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the model + type: string + teamName: + description: Name of the team that the model belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + versions: + items: + type: string + type: array + type: object + EncryptionKey: + description: Customer Managed Key shard configuration for the model + properties: + description: + description: Description for a new customer key shard + type: string + encryptionKeyId: + description: ID of the existing customer key shard to use + type: string + useExistingKey: + description: Whether to use an existing customer key shard or should a new one be created + type: boolean + required: + - useExistingKey + type: object + LicenseMetadata: + description: License information for the artifact + properties: + configuredLicenseTerms: + $ref: '#/components/schemas/ConfiguredLicenseTerms' + description: License information for the artifact + governingTerms: + description: Comprehensive terms and links related to the license + example:

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

+ maxLength: 1000 + pattern: ^[\s\S]*$ + type: string + licenseId: + description: License ID + example: NVIDIA proprietary + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + licenseVersion: + description: License version ID + example: v1.0 + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + needsAcceptance: + description: Indicator if user needs to accept this license + type: boolean + type: object + Dataset: + properties: + license: + description: License of the dataset + maxLength: 255 + type: string + link: + description: Link to the dataset + maxLength: 255 + type: string + name: + description: Name of the dataset + maxLength: 255 + type: string + type: object + ModelVersion: + description: Model version object + properties: + accuracyReached: + description: Accuracy this model reached + format: float + type: number + batchSize: + description: Batch size this model was trained with + format: int64 + type: integer + createdByUser: + description: Id of the user who created this model + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the model version + type: string + gpuModel: + description: GPU model and memory + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' + format: int64 + type: integer + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + memoryFootprint: + description: Model size/memory footprint for inference + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + type: integer + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + ownerName: + description: Name of the user who owns this version + type: string + policy: + items: + type: string + type: array + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the model in bytes + format: int64 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + type: string + type: object + CustomMetricGroup: + description: Defines the group of custom metrics. + properties: + attributes: + items: + $ref: '#/components/schemas/CustomMetric' + type: array + name: + maxLength: 255 + type: string + type: object + NvcfContainerConfiguration: + description: NVCF container configuration parameters + properties: + apiBodyFormat: + description: API body format + type: string + containerArgs: + description: Container arguments + type: string + containerEnvironment: + items: + $ref: '#/components/schemas/MetaData' + type: array + containerImage: + description: Container Image + type: string + healthUri: + description: Health URI + type: string + inferencePort: + description: Inference port + type: string + inferenceUrl: + description: Inference url + type: string + models: + items: + $ref: '#/components/schemas/NvcfContainerModel' + type: array + type: object + NvcfDeploymentSpecification: + description: NVCF deployment specification + properties: + gpuCount: + description: GPU count + format: int32 + type: integer + gpuType: + description: GPU type + type: string + instanceType: + description: Instance type + type: string + maxConcurrency: + description: Maximum concurrency + format: int32 + type: integer + type: object + ModelFile: + description: Model file object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the model + maxLength: 1023 + minLength: 1 + type: string + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + type: object + Recipe: + description: Recipe object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + advanced: + description: Text for describing advanced information + type: string + application: + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + type: string + builtBy: + description: Organization that built the recipe + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the recipe + type: string + displayName: + description: Display name + type: string + hasSignedVersion: + description: Indicates if the recipe has any signed versions + type: boolean + isFavourite: + description: Flag indicating if recipe is user's favorite + type: boolean + isPublic: + description: Determines if this recipe is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + modelFormat: + description: Format of the model this recipe produces + type: string + name: + description: Unique name of the recipe + type: string + orgName: + description: Name of the org that the recipe belongs to + type: string + performance: + description: Text describing performance of the recipe results + type: string + policyLabels: + items: + type: string + type: array + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: Organization that published this recipe + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + relatedModels: + items: + $ref: '#/components/schemas/Model' + type: array + setup: + description: Text describing recipe setup + type: string + shortDescription: + description: Short description of the recipe + type: string + teamName: + description: Name of the team that the recipe belongs to + type: string + trainingFramework: + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + ModelSimplified: + description: Model object + properties: + name: + description: Unique name of the model + type: string + orgName: + description: Name of the org that the model belongs to + type: string + teamName: + description: Name of the team that the model belongs to + type: string + required: + - name + - orgName + type: object + RecipeVersion: + description: Recipe version object + properties: + accuracyReached: + description: Accuracy this recipe reached + format: float + type: number + batchSize: + description: Batch size this recipe was trained with + format: int64 + type: integer + createdByUser: + description: Id of the user who created this recipe + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the recipe version + type: string + gpuModel: + description: GPU model and memory + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' + format: int64 + type: integer + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + memoryFootprint: + description: recipe size/memory footprint for inference + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + type: integer + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + performance: + description: Text describing performance of the recipe results + type: string + policy: + items: + type: string + type: array + quickStartGuide: + description: Text with a guide to getting started + type: string + releaseNotes: + description: Text describing this release + type: string + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + setup: + description: Text describing recipe setup + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the recipe in bytes + format: int64 + type: integer + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + type: string + type: object + RecipeFile: + description: Recipe file object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the recipe + maxLength: 1023 + minLength: 1 + type: string + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + type: object + DeploymentArtifactParameters: + description: Deployment Artifact Parameters object + properties: + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + displayName: + description: Display name of the artifact + type: string + filePath: + description: Path to a file in an artifact version + type: string + name: + description: Unique name of the artifact + type: string + orgName: + description: Name of the org that the artifact belongs to + type: string + teamName: + description: Name of the team that the artifact belongs to + type: string + versionId: + description: ID of the version or tag + type: string + required: + - name + - orgName + type: object + DeploymentCpuParameters: + description: Deployment CPU Parameters object + properties: + count: + description: Total count of CPUs + format: int64 + type: integer + type: object + DeploymentGpuParameters: + description: Deployment GPU Parameters object + properties: + count: + description: Total count of GPUs + format: int64 + type: integer + type: + description: GPU Type + type: string + type: object + DeploymentMemoryParameters: + description: Deployment Memory Parameters object + properties: + capacityInGB: + description: Capacity in GB + format: int64 + type: integer + type: object + DeploymentStorageParameters: + description: Deployment Storage Parameters object + properties: + capacityInGB: + description: Capacity in GB + format: int64 + type: integer + type: object + File: + description: File object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the object + maxLength: 1023 + minLength: 1 + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + ConfiguredLicenseTerms: + description: License information for the artifact + properties: + download: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact + hosting: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact + type: object + CustomMetric: + description: Custom metrics + properties: + key: + maxLength: 255 + type: string + value: + maxLength: 255 + type: string + type: object + MetaData: + properties: + key: + maxLength: 255 + type: string + value: + maxLength: 255 + type: string + type: object + NvcfContainerModel: + description: Models version object metadata + properties: + name: + description: Model name + type: string + uri: + description: Model URI + type: string + version: + description: Model version + type: string + type: object + ConfiguredLicenseTerm: + description: License information for the artifact + properties: + artifactType: + description: Artifact type + example: model + maxLength: 15 + pattern: ^[\s\S]*$ + type: string + generatedHtml: + description: Generated html + example:

GOVERNING HOSTING TERMS: ...

+ maxLength: 9999 + pattern: ^[\s\S]*$ + type: string + tags: + items: + $ref: '#/components/schemas/LicenseTag' + type: array + type: object + LicenseTag: + description: License tag information for individual term + properties: + category: + description: Category of the tag + example: terms + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + key: + description: Key identifier for the tag + example: nv-open-model + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + label: + description: License Label + example: NVIDIA Open Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + tag: + description: License tag name + example: Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + url: + description: Link to the hosted license + example: https://www.nvidia.com/.../nvidia-open-model-agreement/ + maxLength: 1000 + pattern: ^[\s\S]*$ + type: string + type: object + x-stackQL-resources: + encryption_keys: + id: nvidia.private_registry.encryption_keys + name: encryption_keys + title: Encryption Keys + methods: + list: + operation: + $ref: '#/paths/~1encryption-keys/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.encryptionKeys + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1encryption-keys~1{key_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + delete: + operation: + $ref: '#/paths/~1encryption-keys~1{key_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '202' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1encryption-keys/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.encryptionKeys + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1encryption-keys~1{key_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: camel + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1encryption-keys~1{key_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '202' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/encryption_keys/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/encryption_keys/methods/get' + - $ref: '#/components/x-stackQL-resources/encryption_keys/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/encryption_keys/methods/list' + insert: [] + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/encryption_keys/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/encryption_keys/methods/delete' + replace: [] + workflows: + id: nvidia.private_registry.workflows + name: workflows + title: Workflows + methods: + get_by_team: + operation: + $ref: '#/paths/~1team~1{team}~1workflows~1{workflow_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1workflows~1{workflow_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/workflows/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/workflows/methods/get' + insert: [] + update: [] + delete: [] + replace: [] + collections: + id: nvidia.private_registry.collections + name: collections + title: Collections + methods: + list: + operation: + $ref: '#/paths/~1collections/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collections + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1collections/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1collections~1{collection_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collection + request: + nativeCasing: kebab + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1collections~1{collection_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1collections~1{collection_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collections + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1collections/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collection + request: + nativeCasing: kebab + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/collections/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/collections/methods/get' + - $ref: '#/components/x-stackQL-resources/collections/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/collections/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/collections/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/collections/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/collections/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/collections/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/collections/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/collections/methods/delete' + replace: [] + collection_artifacts: + id: nvidia.private_registry.collection_artifacts + name: collection_artifacts + title: Collection Artifacts + methods: + update_bulk: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1collections~1{collection_name}~1artifacts/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_cross_org_team: + operation: + $ref: '#/paths/~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1team~1{artifact_team_name}~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_cross_org_team: + operation: + $ref: '#/paths/~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1team~1{artifact_team_name}~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_cross_org: + operation: + $ref: '#/paths/~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_cross_org: + operation: + $ref: '#/paths/~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list: + operation: + $ref: '#/paths/~1collections~1{collection_name}~1artifacts~1{artifact_type}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + add: + operation: + $ref: '#/paths/~1collections~1{collection_name}~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove: + operation: + $ref: '#/paths/~1collections~1{collection_name}~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update_bulk_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1artifacts/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_cross_org_team_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1team~1{artifact_team_name}~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_cross_org_team_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1team~1{artifact_team_name}~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_cross_org_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_cross_org_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1artifacts~1org~1{artifact_org_name}~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1artifacts~1{artifact_type}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + add_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/add_cross_org_team_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/add_cross_org_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/add_cross_org_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/add_cross_org' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/add_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/add' + update: + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/update_bulk_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/update_bulk' + delete: + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/remove_cross_org_team_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/remove_cross_org_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/remove_cross_org_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/remove_cross_org' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/remove_by_team' + - $ref: '#/components/x-stackQL-resources/collection_artifacts/methods/remove' + replace: [] + collection_product_shares: + id: nvidia.private_registry.collection_product_shares + name: collection_product_shares + title: Collection Product Shares + methods: + add: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1collections~1{collection_name}~1share~1product/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1collections~1{collection_name}~1share~1product/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/collection_product_shares/methods/add_by_team' + - $ref: '#/components/x-stackQL-resources/collection_product_shares/methods/add' + update: [] + delete: [] + replace: [] + helm_chart_versions: + id: nvidia.private_registry.helm_chart_versions + name: helm_chart_versions + title: Helm Chart Versions + methods: + list: + operation: + $ref: '#/paths/~1helm-charts~1{artifact_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get: + operation: + $ref: '#/paths/~1helm-charts~1{artifact_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersion + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1helm-charts~1{artifact_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1helm-charts~1{artifact_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1helm-charts~1{artifact_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactVersion + request: + nativeCasing: camel + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1helm-charts~1{artifact_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/list' + insert: [] + update: + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/helm_chart_versions/methods/update' + delete: [] + replace: [] + models: + id: nvidia.private_registry.models + name: models + title: Models + methods: + list: + operation: + $ref: '#/paths/~1models/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.models + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1models/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1models~1{model_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.model + request: + nativeCasing: kebab + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1models~1{model_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.models + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1models/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.model + request: + nativeCasing: kebab + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/models/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/models/methods/get' + - $ref: '#/components/x-stackQL-resources/models/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/models/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/models/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/models/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/models/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/models/methods/update' + delete: [] + replace: [] + model_versions: + id: nvidia.private_registry.model_versions + name: model_versions + title: Model Versions + methods: + stash: + operation: + $ref: '#/paths/~1models~1{artifact_name}~1versions~1{version_id}~1stash/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list: + operation: + $ref: '#/paths/~1models~1{model_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1models~1{model_name}~1versions/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1models~1{model_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersion + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1models~1{model_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + stash_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{artifact_name}~1versions~1{version_id}~1stash/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1versions/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersion + request: + nativeCasing: camel + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/model_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/model_versions/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/model_versions/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/model_versions/methods/update' + delete: [] + replace: [] + model_encryption_keys: + id: nvidia.private_registry.model_encryption_keys + name: model_encryption_keys + title: Model Encryption Keys + methods: + delete: + operation: + $ref: '#/paths/~1models~1{model_name}~1encryption-key/delete' + response: + mediaType: application/json + openAPIDocKey: '202' + request: + nativeCasing: camel + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1encryption-key/delete' + response: + mediaType: application/json + openAPIDocKey: '202' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: [] + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/model_encryption_keys/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/model_encryption_keys/methods/delete' + replace: [] + model_shares: + id: nvidia.private_registry.model_shares + name: model_shares + title: Model Shares + methods: + add_org: + operation: + $ref: '#/paths/~1models~1{model_name}~1shares~1org/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_org: + operation: + $ref: '#/paths/~1models~1{model_name}~1shares~1org/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_team: + operation: + $ref: '#/paths/~1models~1{model_name}~1shares~1team~1{target_team}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_team: + operation: + $ref: '#/paths/~1models~1{model_name}~1shares~1team~1{target_team}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_org_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1org/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_org_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1org/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add_team_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1team~1{target_team}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_team_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1team~1{target_team}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_team_by_team' + - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_team' + - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_org_by_team' + - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_org' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_team_by_team' + - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_team' + - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_org_by_team' + - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_org' + replace: [] + model_files: + id: nvidia.private_registry.model_files + name: model_files + title: Model Files + methods: + list: + operation: + $ref: '#/paths/~1models~1{model_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/model_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/model_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + recipes: + id: nvidia.private_registry.recipes + name: recipes + title: Recipes + methods: + list: + operation: + $ref: '#/paths/~1recipes/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipes + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1recipes/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1recipes~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1recipes~1{recipe_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipes + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes~1{recipe_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/recipes/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/recipes/methods/get' + - $ref: '#/components/x-stackQL-resources/recipes/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/recipes/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/recipes/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/recipes/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/recipes/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/recipes/methods/update' + delete: [] + replace: [] + recipe_versions: + id: nvidia.private_registry.recipe_versions + name: recipe_versions + title: Recipe Versions + methods: + list: + operation: + $ref: '#/paths/~1recipes~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1recipes~1{recipe_name}~1versions/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1recipes~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1recipes~1{recipe_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes~1{recipe_name}~1versions/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes~1{recipe_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_versions/methods/update' + delete: [] + replace: [] + recipe_files: + id: nvidia.private_registry.recipe_files + name: recipe_files + title: Recipe Files + methods: + list: + operation: + $ref: '#/paths/~1recipes~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1recipes~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/recipe_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/recipe_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + repository_associated_models: + id: nvidia.private_registry.repository_associated_models + name: repository_associated_models + title: Repository Associated Models + methods: + list: + operation: + $ref: '#/paths/~1repositories~1{container_name}~1associated-models/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_tag: + operation: + $ref: '#/paths/~1repositories~1{container_name}~1tags~1{container_tag}~1associated-models/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1repositories~1{container_name}~1associated-models/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_tag_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1repositories~1{container_name}~1tags~1{container_tag}~1associated-models/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.modelVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/repository_associated_models/methods/list_by_tag_by_team' + - $ref: '#/components/x-stackQL-resources/repository_associated_models/methods/list_by_tag' + - $ref: '#/components/x-stackQL-resources/repository_associated_models/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/repository_associated_models/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + resources: + id: nvidia.private_registry.resources + name: resources + title: Resources + methods: + list: + operation: + $ref: '#/paths/~1resources/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipes + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1resources/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1resources~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1resources~1{recipe_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1resources/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipes + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1resources/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipe + request: + nativeCasing: kebab + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/resources/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/resources/methods/get' + - $ref: '#/components/x-stackQL-resources/resources/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/resources/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/resources/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/resources/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/resources/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/resources/methods/update' + delete: [] + replace: [] + resource_versions: + id: nvidia.private_registry.resource_versions + name: resource_versions + title: Resource Versions + methods: + list: + operation: + $ref: '#/paths/~1resources~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1resources~1{recipe_name}~1versions/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1resources~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1resources~1{recipe_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}~1versions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersions + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}~1versions/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}~1versions~1{version_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeVersion + request: + nativeCasing: camel + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}~1versions~1{version_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/get' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/resource_versions/methods/update' + delete: [] + replace: [] + resource_files: + id: nvidia.private_registry.resource_files + name: resource_files + title: Resource Files + methods: + list: + operation: + $ref: '#/paths/~1resources~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.recipeFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/resource_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/resource_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + artifacts: + id: nvidia.private_registry.artifacts + name: artifacts + title: Artifacts + methods: + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifact + request: + nativeCasing: kebab + replace_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sync_release_type_labels_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1collections~1sync-release-type-labels/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + set_release_type_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1release-type/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + set_terms_of_service_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1terms-of-service/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list: + operation: + $ref: '#/paths/~1{artifact_type}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifacts + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifact + request: + nativeCasing: kebab + replace: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sync_release_type_labels: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1collections~1sync-release-type-labels/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + set_release_type: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1release-type/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + set_terms_of_service: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1terms-of-service/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + malware_scan_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1malware-scan/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + purge_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1purge/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + malware_scan: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1malware-scan/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + purge: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1purge/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifacts/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/get' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/artifacts/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/artifacts/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/artifacts/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/artifacts/methods/replace_by_team' + - $ref: '#/components/x-stackQL-resources/artifacts/methods/replace' + artifact_catalog_flags: + id: nvidia.private_registry.artifact_catalog_flags + name: artifact_catalog_flags + title: Artifact Catalog Flags + methods: + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1catalog~1flags/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1catalog~1flags/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_catalog_flags/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_catalog_flags/methods/get' + insert: [] + update: [] + delete: [] + replace: [] + artifact_collections: + id: nvidia.private_registry.artifact_collections + name: artifact_collections + title: Artifact Collections + methods: + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1collections/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collections + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1collections/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.collections + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_collections/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_collections/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + artifact_deployment_params: + id: nvidia.private_registry.artifact_deployment_params + name: artifact_deployment_params + title: Artifact Deployment Params + methods: + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1deployments~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.deploymentParameters + request: + nativeCasing: kebab + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + list: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1deployments~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.deploymentParameters + request: + nativeCasing: kebab + get: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + delete: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1deployments~1{csp_name}~1params/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/get' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployment_params/methods/delete' + replace: [] + license_acceptances: + id: nvidia.private_registry.license_acceptances + name: license_acceptances + title: License Acceptances + methods: + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1license~1acceptance/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1license~1acceptance/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/license_acceptances/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/license_acceptances/methods/create' + update: [] + delete: [] + replace: [] + artifact_shares: + id: nvidia.private_registry.artifact_shares + name: artifact_shares + title: Artifact Shares + methods: + add_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1share/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + remove_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1share/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1share/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: kebab + remove: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1share/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/artifact_shares/methods/add_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_shares/methods/add' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/artifact_shares/methods/remove_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_shares/methods/remove' + replace: [] + artifact_product_shares: + id: nvidia.private_registry.artifact_product_shares + name: artifact_product_shares + title: Artifact Product Shares + methods: + add_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1share~1product/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1share~1product/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + add: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1share~1product/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + remove: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1share~1product/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/artifact_product_shares/methods/add_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_product_shares/methods/add' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/artifact_product_shares/methods/remove_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_product_shares/methods/remove' + replace: [] + artifact_versions: + id: nvidia.private_registry.artifact_versions + name: artifact_versions + title: Artifact Versions + methods: + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1versions~1{version_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1versions~1{version_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: [] + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/artifact_versions/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_versions/methods/delete' + replace: [] + artifact_version_configs: + id: nvidia.private_registry.artifact_version_configs + name: artifact_version_configs + title: Artifact Version Configs + methods: + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1configs/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1configs/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: [] + update: + - $ref: '#/components/x-stackQL-resources/artifact_version_configs/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_version_configs/methods/update' + delete: [] + replace: [] + artifact_deployments: + id: nvidia.private_registry.artifact_deployments + name: artifact_deployments + title: Artifact Deployments + methods: + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1deployments~1{csp_name}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1deployments~1{csp_name}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: + - $ref: '#/components/x-stackQL-resources/artifact_deployments/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_deployments/methods/create' + update: [] + delete: [] + replace: [] + artifact_files: + id: nvidia.private_registry.artifact_files + name: artifact_files + title: Artifact Files + methods: + list_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + list: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.artifactFiles + request: + nativeCasing: kebab + config: + pagination: + algorithm: page_number + requestToken: + key: page-number + location: query + responseToken: + key: $.paginationInfo.index + location: body + responseTerminator: + key: $.paginationInfo.totalPages + location: body + queryParamPushdown: + top: + paramName: page-size + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_files/methods/list_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + artifact_signatures: + id: nvidia.private_registry.artifact_signatures + name: artifact_signatures + title: Artifact Signatures + methods: + set_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1signature/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + set: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1versions~1{version_id}~1signature/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: [] + insert: [] + update: [] + delete: [] + replace: [] + artifact_specs: + id: nvidia.private_registry.artifact_specs + name: artifact_specs + title: Artifact Specs + methods: + create_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1spec/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1spec/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update_by_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1spec/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1{artifact_type}~1{artifact_name}~1spec/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1spec/post' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + get: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1spec/get' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1spec/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1{artifact_type}~1{artifact_name}~1spec/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/get_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/get' + insert: + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/create_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/update_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/artifact_specs/methods/delete' + replace: [] +servers: + - url: https://api.ngc.nvidia.com diff --git a/provider-dev/scripts/build_inventory.mjs b/provider-dev/scripts/build_inventory.mjs index e4b4d93..b344b59 100644 --- a/provider-dev/scripts/build_inventory.mjs +++ b/provider-dev/scripts/build_inventory.mjs @@ -1,14 +1,27 @@ #!/usr/bin/env node -// Build the endpoint inventory across both spec sources into +// Build the endpoint inventory across the cleaned spec sources into // provider-dev/config/endpoint_inventory.csv. Every generator-relevant // operation is classified by deterministic rules: host, org/team scoping, -// declared auth, wire-observed public reads, pagination idiom, response -// shape, invocation form, proposed service/resource/method/SQL verb, and a -// skip reason where applicable. The CSV is the single source of truth for -// the split rules (service_rules.mjs) and the mapping pass -// (map_operations.mjs). Fails without writing on any unclassified -// operation. +// the org-scope rebase (org_prefix / rebased_path / server_url - the org +// path parameter becomes a path-level server variable resolved from +// NGC_ORG), declared auth, wire-observed public reads, pagination idiom, +// response shape, casing of the wire parameters, invocation form, proposed +// service/resource/method/SQL verb, and a skip reason where applicable. +// The CSV is the single source of truth for the split (service_rules.mjs), +// the mapping pass (map_operations.mjs) and post-processing +// (post_process.mjs). Fails without writing on any unclassified operation +// or consistency error. +// +// Deprecation schedule (a build input): NVIDIA's NGC deprecated API +// reference (https://docs.nvidia.com/ngc/latest/ngc-deprecated-api.html) +// ends team-scoped (/teams/{team}) paths for NVCF, NVCT, FNDS, Skyway, SIS, +// SI, PYM, Infinity Manager and GDN on 2026-09-30; "products other than +// NVIDIA Private Registry and NVIDIA Data Services do not support +// team-level resource scoping". Paths in those families are skipped with +// reason deprecated-schedule-2026-09-30. Private Registry team-scoped paths +// are exempt and are mapped as *_by_team methods on the same resources +// (they add team_name to the required-parameter signature). // // Usage: node provider-dev/scripts/build_inventory.mjs @@ -19,6 +32,7 @@ import { fileURLToPath } from 'url'; const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); const cleanedDir = path.join(repoRoot, 'provider-dev', 'downloaded', 'cleaned'); const outPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); +const serversPath = path.join(repoRoot, 'provider-dev', 'config', 'servers.json'); const HTTP_VERBS = ['get', 'post', 'put', 'patch', 'delete']; const NON_GENERATOR_VERBS = ['head', 'options', 'trace']; @@ -29,6 +43,11 @@ const SOURCES = { 'ngc_models.json': 'ngc-core' }; +const servers = JSON.parse(fs.readFileSync(serversPath, 'utf8')); +const NGC_HOST = servers.hosts.ngc; +const NVCF_HOST = servers.hosts.nvcf; +const ORG_VAR = servers.orgVariable.name; // org_name + // NVCF host assignment per tag: the NVCF docs state management is served // from api.ngc.nvidia.com and invocation/queue details from // api.nvcf.nvidia.com; /v2/nvcf/assets is empirically nvcf-host-only @@ -41,47 +60,60 @@ const NVCF_HOST_TAGS = new Set([ 'Function Invocation Assertion Token' ]); -// Wire-proven unauthenticated reads (2026-07-14, see NOTES.md item 4). -// Keyed by `${file}::${path}::${verb}`; everything else is unprobed (blank) -// or observed auth-required ('n' entries below). +// Wire-proven unauthenticated reads (2026-07-14, see NOTES.md item 4), +// keyed by `${file}::${path}::${verb}` on the cleaned (snake_case, /v2) +// path form; everything else is unprobed (blank) or observed +// auth-required ('n'). const OBSERVED_PUBLIC_READS = new Map([ - ['ngc_models.json::/v1/models::get', 'y'], - ['ngc_models.json::/v1/models/{org-name}/{model-name}::get', 'y'], - ['ngc_models.json::/v1/models/{org-name}/{model-name}/versions::get', 'y'], - ['ngc_models.json::/v1/recipes::get', 'y'], - ['ngc_models.json::/v1/resources::get', 'y'], - ['ngc_models.json::/v1/collections::get', 'y'], - ['ngc_models.json::/v1/gpus::get', 'y'], - ['ngc_models.json::/v1/{artifact-type}::get', 'y'], - ['ngc_models.json::/v1/csps::get', 'n'], + ['ngc_models.json::/v2/models::get', 'y'], + ['ngc_models.json::/v2/models/{org_name}/{model_name}::get', 'y'], + ['ngc_models.json::/v2/models/{org_name}/{model_name}/versions::get', 'y'], + ['ngc_models.json::/v2/recipes::get', 'y'], + ['ngc_models.json::/v2/resources::get', 'y'], + ['ngc_models.json::/v2/collections::get', 'y'], + ['ngc_models.json::/v2/gpus::get', 'y'], + ['ngc_models.json::/v2/{artifact_type}::get', 'y'], + ['ngc_models.json::/v2/csps::get', 'n'], ['ngc_kas.json::/v2/orgs::get', 'n'], ['ngc_kas.json::/v2/users/me::get', 'n'], ['nvcf_openapi.json::/v2/nvcf/functions::get', 'n'], ['nvcf_openapi.json::/v2/nvcf/clusterGroups::get', 'n'] ]); -const TEAM_PARAM = /\{team-?name\}|\{teamName\}|\{team\}/i; +// The published deprecation schedule, as path-family rules. Matched +// against every source; a hit is a skip (reason deprecated-schedule-2026-09-30). +const SCHEDULED_DEPRECATIONS = [ + /^\/v2\/orgs\/\{[^}]+\}\/teams\/\{[^}]+\}\/(nvcf|nvct|fnds|skyway|sis|si|pym|gdn|gdncs|ngc\/nvcf)(\/|$)/, + /^\/v3\/orgs\/\{[^}]+\}\/teams\/\{[^}]+\}\/(fnds|ngc\/nvcf)(\/|$)/, + /^\/v3\/ngc\/nvcf\/orgs\/\{[^}]+\}\/teams\/\{[^}]+\}\/keys(\/|$)/, + /^\/v2\/org\/\{[^}]+\}\/team\/\{[^}]+\}\/infinity-manager(\/|$)/, + /^\/v1\/orgs\/\{[^}]+\}\/teams\/\{[^}]+\}\/(gdn|gdncs)(\/|$)/ +]; + +// Org-scope rebase: a leading org prefix becomes a path-level server +// template carrying the org as a server variable (x-stackQL-envVar NGC_ORG, +// stamped by post_process.mjs); the remainder is the operation path. Only +// leading prefixes with a non-empty remainder are rebased; org parameters +// elsewhere in the path stay ordinary path parameters. +const ORG_PREFIXES = [ + { re: /^\/v2\/org\/\{(org_name|org)\}(?=\/.)/, template: '/v2/org/{org_name}' }, + { re: /^\/v3\/orgs\/\{(org_name|org)\}(?=\/.)/, template: '/v3/orgs/{org_name}' }, + { re: /^\/v2\/orgs\/\{(org_name|org)\}(?=\/.)/, template: '/v2/orgs/{org_name}' }, + { re: /^\/v2\/artifact-registry\/org\/\{(org_name|org)\}(?=\/.)/, template: '/v2/artifact-registry/org/{org_name}' } +]; function pathParams(p) { return (p.match(/\{[^}]+\}/g) || []).map((s) => s.slice(1, -1)); } -// team-scoped twin: a team parameter used as a scope (resource segments -// continue after it). A path that terminates at the team itself (the teams -// resource, or a share-to-team grant target) is not a twin. -function isTeamScopedTwin(p) { - const segs = p.split('/'); - for (let i = 0; i < segs.length; i++) { - if (TEAM_PARAM.test(segs[i]) && !/\{target-team\}|\{artifact-team-name\}/.test(segs[i])) { - if (i < segs.length - 1) return true; - } - // guest catalog team shape: /v1/models/{org-name}/{team-name}/{name}... - } - return false; -} - -function isGuestTeamShape(p) { - return /\{org-?name\}\/\{team-?name\}\//i.test(p) || /\{orgName\}\/\{teamName\}\//.test(p); +// Private Registry team scope: the team segment right after the org +// segment (org-scoped form) or the guest {org}/{team}/{name} form. The +// cross-org collection references ({artifact_team_name}) and share targets +// ({target_team}) are not scopes and are left alone. +function stripTeamScope(p) { + let out = p.replace(/\/team\/\{team(_name)?\}(?=\/|$)/, ''); + out = out.replace(/^(\/v2\/(?:\{artifact_type\}|models|recipes|resources|helm-charts|collections|csps\/\{artifact_type\}|deploy\/csps\/\{artifact_type\})\/\{org_name\})\/\{team_name\}(?=\/)/, '$1'); + return { stripped: out, team: out !== p }; } // --------------------------------------------------------------------------- @@ -98,27 +130,83 @@ function deref(spec, node) { return node || {}; } +const ENVELOPE_KEYS = new Set(['requestStatus', 'paginationInfo']); + function responseShape(spec, op) { + const none = { shape: 'none', arrayProps: [], objectProps: [], dataProps: [], envelopeOnly: false }; const resp = op.responses?.['200'] || op.responses?.['201'] || op.responses?.['202']; - if (!resp) return { shape: 'none', objectKey: '' }; + if (!resp) return none; const content = deref(spec, resp).content; const media = content?.['application/json'] || content?.['*/*'] || Object.values(content || {})[0]; - if (!media?.schema) return { shape: 'none', objectKey: '' }; + if (!media?.schema) return none; const schema = deref(spec, media.schema); if (schema.type === 'array' || (Array.isArray(schema.type) && schema.type.includes('array'))) { - return { shape: 'array', objectKey: '' }; + return { ...none, shape: 'array' }; } const props = schema.properties ? Object.keys(schema.properties) : []; const arrayProps = props.filter((k) => { const ps = deref(spec, schema.properties[k]); return ps.type === 'array' || (Array.isArray(ps.type) && ps.type.includes('array')); - }).filter((k) => k !== 'requestStatus'); + }).filter((k) => !ENVELOPE_KEYS.has(k)); + const dataProps = props.filter((k) => !ENVELOPE_KEYS.has(k)); + // an object property is an unwrap candidate only when it declares + // properties of its own; a map (additionalProperties, no properties - + // RecognizedRegistriesResponse.recognizedRegistries) is a value, projected + // as a JSON column + const objectProps = dataProps.filter((k) => { + const ps = deref(spec, schema.properties[k]); + if (ps.type === 'array' || (Array.isArray(ps.type) && ps.type.includes('array'))) return false; + return !!ps.properties && Object.keys(ps.properties).length > 0; + }); return { shape: props.length ? `object{${props.slice(0, 6).join(';')}${props.length > 6 ? ';...' : ''}}` : 'object', - objectKey: arrayProps.length === 1 ? `$.${arrayProps[0]}` : (arrayProps.length > 1 ? `$.${arrayProps[0]}?multi:${arrayProps.join('|')}` : '') + arrayProps, + objectProps, + dataProps, + envelopeOnly: props.length > 0 && dataProps.length === 0 }; } +const camel = (s) => s.replace(/_([a-z0-9])/g, (m, c) => c.toUpperCase()); +const singular = (s) => s.replace(/ies$/, 'y').replace(/sses$/, 'ss').replace(/s$/, ''); + +// objectKey per method kind: a collection read (list*) unwraps the array +// property of its envelope ({models: [...], paginationInfo, requestStatus}); +// an entity read unwraps the object property of an entity envelope ({model: +// {...}, requestStatus}) and never an array field of the entity itself +// (GpuByPciResponse.gpuCounts is data, not a list). When an envelope carries +// several candidates ({model, modelVersion, requestStatus}) the property +// named after the resource wins (model_versions -> modelVersion); with no +// such match the key is left blank for a wire check. +function objectKeyFor(resource, method, { arrayProps, objectProps, dataProps }) { + const isList = /^list/.test(method); + // a collection read unwraps its array property; a "list" that returns a + // single object (authorizations.list_version) falls through to the entity + // rules; an entity read whose only data property is an array + // (encryption_keys.get -> {artifacts: [...]}) unwraps that array + if (isList && arrayProps.length === 1) return `$.${arrayProps[0]}`; + if (isList && arrayProps.length > 1) return pick(arrayProps, camel(resource)); + if (!isList && objectProps.length === 0 && arrayProps.length === 1 && dataProps.length === 1) return `$.${arrayProps[0]}`; + // entity envelope: exactly one data property, or one named after the + // resource; an entity with several properties of its own (a nested + // object among scalars - WorkflowStatusResponse.cloneStatus) stays flat + if (objectProps.length === 0) return ''; + if (dataProps.length === 1) return `$.${objectProps[0]}`; + return pick(objectProps, camel(singular(resource)), true); +} + +function pick(candidates, wanted, entity = false) { + const exact = candidates.find((c) => c.toLowerCase() === wanted.toLowerCase()); + if (exact) return `$.${exact}`; + // the resources family reuses the recipe wrappers and helm charts the + // generic artifact wrappers: match on the trailing segment of the + // resource name (resource_versions -> ...Version, ...Versions) + const suffix = wanted.replace(/^.*?([A-Z][a-z]+)$/, '$1').toLowerCase(); + const bySuffix = candidates.filter((c) => c.toLowerCase().endsWith(suffix)); + if (bySuffix.length === 1) return `$.${bySuffix[0]}`; + return entity ? '' : `$.${candidates[0]}?multi:${candidates.join('|')}`; +} + function paginationParams(spec, op, pathItem) { const params = [...(pathItem.parameters || []), ...(op.parameters || [])].map((p) => deref(spec, p)); return params @@ -126,6 +214,16 @@ function paginationParams(spec, op, pathItem) { .map((p) => p.name).join('+'); } +// casing of the non-path wire parameters: kebab (page-size) or camel +// (includeSecrets); the provider's user surface is snake_case, and +// request.nativeCasing tells any-sdk how to reverse it per method +function nativeCasing(spec, op, pathItem) { + const params = [...(pathItem.parameters || []), ...(op.parameters || [])].map((p) => deref(spec, p)) + .filter((p) => p.in === 'query' || p.in === 'header'); + if (params.some((p) => p.name.includes('-'))) return 'kebab'; + return 'camel'; +} + function authDeclared(spec, op) { const sec = op.security !== undefined ? op.security : spec.security; if (!sec || sec.length === 0) return 'none-declared'; @@ -134,21 +232,22 @@ function authDeclared(spec, op) { } // --------------------------------------------------------------------------- -// classification rules per source +// classification rules per source (paths are the cleaned form: snake_case +// path parameters, /v2 gateway prefix for the models definition) // --------------------------------------------------------------------------- function classifyNvcf(p, verb, op) { const tag = (op.tags || [])[0] || ''; - if (p === '/health') return { skip: 'service-infra' }; + if (p === '/health' || p === '/info') return { skip: 'service-infra' }; const T = { 'Function Management': () => { if (p === '/v2/nvcf/functions' && verb === 'get') return r('nvcf_functions', 'functions', 'list', 'select'); if (p === '/v2/nvcf/functions' && verb === 'post') return r('nvcf_functions', 'functions', 'create', 'insert'); if (p === '/v2/nvcf/functions/ids') return r('nvcf_functions', 'function_ids', 'list', 'select', 'own resource: same empty path-param signature as functions.list'); - if (p === '/v2/nvcf/functions/{functionId}/versions' && verb === 'get') return r('nvcf_functions', 'function_versions', 'list', 'select'); - if (p === '/v2/nvcf/functions/{functionId}/versions' && verb === 'post') return r('nvcf_functions', 'function_versions', 'create', 'insert'); - if (p === '/v2/nvcf/functions/{functionId}/versions/{functionVersionId}') { + if (p === '/v2/nvcf/functions/{function_id}/versions' && verb === 'get') return r('nvcf_functions', 'function_versions', 'list', 'select'); + if (p === '/v2/nvcf/functions/{function_id}/versions' && verb === 'post') return r('nvcf_functions', 'function_versions', 'create', 'insert'); + if (p === '/v2/nvcf/functions/{function_id}/versions/{function_version_id}') { if (verb === 'get') return r('nvcf_functions', 'function_versions', 'get', 'select'); if (verb === 'put') return r('nvcf_functions', 'function_versions', 'update', 'update', 'PUT semantics unverified (keycloak rule): update until field-drop evidence'); if (verb === 'delete') return r('nvcf_functions', 'function_versions', 'delete', 'delete'); @@ -166,7 +265,7 @@ function classifyNvcf(p, verb, op) { if (verb === 'delete') return r('nvcf_functions', res, `delete_all${m}`, 'exec', 'delete-all kept off the DELETE verb: same path-param signature as the granular remove'); }, 'Function Deployment': () => { - if (p === '/v2/nvcf/deployments/{deploymentId}') return r('nvcf_deployments', 'deployments', 'get_by_id', 'select'); + if (p === '/v2/nvcf/deployments/{deployment_id}') return r('nvcf_deployments', 'deployments', 'get_by_id', 'select'); if (p.includes('/gpu-specifications/')) return r('nvcf_deployments', 'deployment_gpu_specs', 'update', 'update'); if (verb === 'get') return r('nvcf_deployments', 'deployments', 'get', 'select'); if (verb === 'post') return r('nvcf_deployments', 'deployments', 'create', 'insert'); @@ -222,44 +321,65 @@ function classifyNvcf(p, verb, op) { const fn = T[tag]; const res = fn ? fn() : null; if (!res) return { error: `unclassified nvcf operation: ${verb} ${p} [${tag}]` }; - res.host = NVCF_HOST_TAGS.has(tag) ? 'api.nvcf.nvidia.com' : 'api.ngc.nvidia.com'; + res.host = NVCF_HOST_TAGS.has(tag) ? NVCF_HOST : NGC_HOST; res.invocationForm = tag === 'Function Invocation' ? 'polling' : ''; return res; } function classifyKas(p, verb, op) { - if (/^\/(health|version|swagger-resources|public-keys)/.test(p)) return { skip: 'service-infra' }; - if (/^\/v[23]\/admin\//.test(p) || p === '/v2/admin' ) return { skip: 'internal-admin' }; + if (/^\/(health|version|swagger-resources|public-keys)/.test(p) || p === '/v2/ping') return { skip: 'service-infra' }; + if (/^\/v[23]\/admin\//.test(p) || p === '/v2/admin') return { skip: 'internal-admin' }; if (op.deprecated) return { skip: 'deprecated-inline' }; - if (isTeamScopedTwin(p)) return { skip: 'deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09)' }; + + // team-scoped organization paths (Private Registry teams - exempt from + // the 2026-09 schedule): team membership, member roles and invitations + const team = p.match(/^\/v2\/org\/\{org_name\}\/team\/\{team_name\}(\/.*)?$/) || p.match(/^\/v3\/orgs\/\{org_name\}\/teams\/\{team_name\}(\/.*)?$/); + if (team) { + const rest = team[1] || ''; + const v3 = p.startsWith('/v3/'); + if (rest === '/users' && verb === 'get') return r('orgs', 'team_members', 'list', 'select'); + if (rest === '/users' && verb === 'post') return r('orgs', 'team_members', 'create', 'insert', 'creates (invites) a user directly into the team'); + if (rest === '/users/{id}' && verb === 'post') return r('orgs', 'team_members', 'add', 'insert', 'adds an existing org user to the team - grants-as-data'); + if (rest === '/users/{id}' && verb === 'get') return { skip: 'superseded-by-v3-twin (/v3/orgs/{org_name}/teams/{team_name}/users/{user_email_or_id})' }; + if (rest === '/users/{id}' && verb === 'delete') return v3 ? r('orgs', 'team_members', 'remove', 'delete') : { skip: 'superseded-by-v3-twin (/v3/orgs/{org_name}/teams/{team_name}/users/{id})' }; + if (rest === '/users/{user_email_or_id}' && verb === 'get') return r('orgs', 'team_members', 'get', 'select'); + if (rest.endsWith('/add-role')) return r('orgs', 'team_member_roles', 'add', 'insert', 'grants-as-data'); + if (rest.endsWith('/remove-role')) return r('orgs', 'team_member_roles', 'remove', 'delete', 'grants-as-data'); + if (rest === '/users/invitations' && verb === 'get') return r('orgs', 'team_invitations', 'list', 'select'); + if (rest === '/users/invitations/{id}' && verb === 'delete') return r('orgs', 'team_invitations', 'delete', 'delete'); + if (rest.endsWith('/resend-invitation-email')) return r('orgs', 'team_invitations', 'resend_email', 'exec', 'non-idempotent GET (sends email) - action, not a read'); + if (rest === '/users/nca-invitations') return r('orgs', 'team_invitations', 'create_nca', 'insert'); + if (rest === '/starfleetIds/{starfleet_id}') return r('orgs', 'team_members', 'get_by_starfleet_id', 'select'); + return { error: `unclassified kas team operation: ${verb} ${p}` }; + } if (p === '/roles') return r('orgs', 'roles', 'list', 'select'); if (p === '/v2/orgs' && verb === 'get') return r('orgs', 'orgs', 'list', 'select'); - if (p === '/v2/orgs/{org-name}' && verb === 'get') return r('orgs', 'orgs', 'get', 'select'); - if (p === '/v2/orgs/{org-name}' && verb === 'patch') return r('orgs', 'orgs', 'update', 'update'); + if (p === '/v2/orgs/{org_name}' && verb === 'get') return r('orgs', 'orgs', 'get', 'select'); + if (p === '/v2/orgs/{org_name}' && verb === 'patch') return r('orgs', 'orgs', 'update', 'update'); if (p === '/v3/orgs' && verb === 'post') return r('orgs', 'orgs', 'create', 'insert'); if (p === '/v3/orgs/proto-org') return r('orgs', 'proto_orgs', 'create', 'insert'); if (p === '/v3/orgs/proto-org/validate') return r('orgs', 'proto_orgs', 'validate', 'select'); - if (p === '/v2/org/{org-name}/teams' && verb === 'get') return r('orgs', 'teams', 'list', 'select'); - if (p === '/v2/org/{org-name}/teams' && verb === 'post') return r('orgs', 'teams', 'create', 'insert'); - if (p === '/v2/org/{org-name}/teams/{team-name}') { + if (p === '/v2/org/{org_name}/teams' && verb === 'get') return r('orgs', 'teams', 'list', 'select'); + if (p === '/v2/org/{org_name}/teams' && verb === 'post') return r('orgs', 'teams', 'create', 'insert'); + if (p === '/v2/org/{org_name}/teams/{team_name}') { if (verb === 'get') return r('orgs', 'teams', 'get', 'select'); if (verb === 'patch') return r('orgs', 'teams', 'update', 'update'); if (verb === 'delete') return r('orgs', 'teams', 'delete', 'delete'); } - if (p === '/v2/org/{org-name}/users' && verb === 'get') return r('orgs', 'users', 'list', 'select'); - if (p === '/v2/org/{org-name}/users' && verb === 'post') return r('orgs', 'users', 'create', 'insert'); - if (p === '/v2/org/{org-name}/users/{id}' && verb === 'get') return { skip: 'superseded-by-v3-twin (/v3/orgs/{org-name}/users/{user-email-or-id})' }; - if (p === '/v2/org/{org-name}/users/{id}' && verb === 'delete') return { skip: 'superseded-by-v3-twin (/v3/orgs/{org-name}/users/{id})' }; - if (p === '/v3/orgs/{org-name}/users/{user-email-or-id}' && verb === 'get') return r('orgs', 'users', 'get', 'select'); - if (p === '/v3/orgs/{org-name}/users/{id}' && verb === 'delete') return r('orgs', 'users', 'delete', 'delete'); - if (p === '/v2/org/{org-name}/starfleetIds/{starfleet-id}') return r('orgs', 'users', 'get_by_starfleet_id', 'select'); - if (p.endsWith('/add-role')) return r('orgs', 'user_roles', 'add', 'insert'); - if (p.endsWith('/remove-role')) return r('orgs', 'user_roles', 'remove', 'delete'); - if (p === '/v2/org/{org-name}/users/invitations') return r('orgs', 'user_invitations', 'list', 'select'); - if (p === '/v2/org/{org-name}/users/invitations/{id}' && verb === 'delete') return r('orgs', 'user_invitations', 'delete', 'delete'); + if (p === '/v2/org/{org_name}/users' && verb === 'get') return r('orgs', 'users', 'list', 'select'); + if (p === '/v2/org/{org_name}/users' && verb === 'post') return r('orgs', 'users', 'create', 'insert'); + if (p === '/v2/org/{org_name}/users/{id}' && verb === 'get') return { skip: 'superseded-by-v3-twin (/v3/orgs/{org_name}/users/{user_email_or_id})' }; + if (p === '/v2/org/{org_name}/users/{id}' && verb === 'delete') return { skip: 'superseded-by-v3-twin (/v3/orgs/{org_name}/users/{id})' }; + if (p === '/v3/orgs/{org_name}/users/{user_email_or_id}' && verb === 'get') return r('orgs', 'users', 'get', 'select'); + if (p === '/v3/orgs/{org_name}/users/{id}' && verb === 'delete') return r('orgs', 'users', 'delete', 'delete'); + if (p === '/v2/org/{org_name}/starfleetIds/{starfleet_id}') return r('orgs', 'users', 'get_by_starfleet_id', 'select'); + if (p.endsWith('/add-role')) return r('orgs', 'user_roles', 'add', 'insert', 'grants-as-data'); + if (p.endsWith('/remove-role')) return r('orgs', 'user_roles', 'remove', 'delete', 'grants-as-data'); + if (p === '/v2/org/{org_name}/users/invitations') return r('orgs', 'user_invitations', 'list', 'select'); + if (p === '/v2/org/{org_name}/users/invitations/{id}' && verb === 'delete') return r('orgs', 'user_invitations', 'delete', 'delete'); if (p.endsWith('/resend-invitation-email')) return r('orgs', 'user_invitations', 'resend_email', 'exec', 'non-idempotent GET (sends email) - action, not a read'); if (p.endsWith('/users/nca-invitations')) return r('orgs', 'user_invitations', 'create_nca', 'insert'); @@ -270,56 +390,58 @@ function classifyKas(p, verb, op) { return { error: `unclassified kas operation: ${verb} ${p}` }; } -function classifyModels(p, verb, op) { +// Guest (catalog) and org-scoped (registry) artifact metadata; the rules +// see the team scope stripped (classifyModels strips it and suffixes the +// method with _by_team). +function classifyModelsCore(p, verb, op) { if (/^\/health/.test(p)) return { skip: 'service-infra' }; - if (op.deprecated) return { skip: 'deprecated-inline' }; - if (p === '/v1/malware-scan-notification') return { skip: 'inbound-webhook-not-client-api' }; - if (/\/files\/(multipart|clone|commit)|\/files\/\*\*|\/async-clone|\/zip(\/|$)|\{artifact-name\}\/files$|\{artifactName\}\/files$/.test(p) && - !/versions\/\{version-id\}\/files$|\{version\}\/files$/.test(p)) { + if (p === '/v2/malware-scan-notification') return { skip: 'inbound-webhook-not-client-api' }; + if (/\/files\/(multipart|clone|commit)|\/files\/\*\*|\/async-clone|\/zip(\/|$)|\{artifact_name\}\/files$/.test(p) && + !/versions\/\{version_id\}\/files$|\{version\}\/files$/.test(p)) { return { skip: 'data-plane-file-transfer' }; } - if (isTeamScopedTwin(p) || isGuestTeamShape(p)) return { skip: 'deprecated-team-scoped (NGC API deprecation schedule: team-scoped paths end 2026-09)' }; - if (p.startsWith('/v1/deploy/')) return { skip: 'duplicate-endpoint-family (same operations as the /v1/csps/{artifact-type} family)' }; + if (p.startsWith('/v2/deploy/')) return { skip: 'duplicate-endpoint-family (same operations as the /v2/csps/{artifact_type} family)' }; + // NIM catalog metadata publishing (added upstream 2026-09; a team-owned + // NIM addressed without an org segment - publisher-privileged write) + if (p === '/v2/nim/{team}/{nim_name}/{tag}/metadata' && verb === 'post') return r('catalog', 'nim_metadata', 'create', 'insert', 'publisher-privileged write, mapped as documented'); - // /v1/csps/{artifact-type}/org/... and /v1/{artifact-type}/org/... are + // /v2/csps/{artifact_type}/org/... and /v2/{artifact_type}/org/... are // alternate path families for operations also present under - // /v1/org/{org-name}/... - the org-scoped family is the one mapped - if (p.startsWith('/v1/csps/{artifact-type}/org/')) return { skip: 'duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/.../deployments)' }; - if (/^\/v1\/\{artifact-type\}\/org\//.test(p)) return { skip: 'duplicate-endpoint-family (same operation under /v1/org/{org-name}/{artifact-type}/{artifact-name}/collections)' }; + // /v2/org/{org_name}/... - the org-scoped family is the one mapped + if (p.startsWith('/v2/csps/{artifact_type}/org/')) return { skip: 'duplicate-endpoint-family (same operation under /v2/org/{org_name}/{artifact_type}/.../deployments)' }; + if (/^\/v2\/\{artifact_type\}\/org\//.test(p)) return { skip: 'duplicate-endpoint-family (same operation under /v2/org/{org_name}/{artifact_type}/{artifact_name}/collections)' }; - const org = p.includes('/org/{org') || /\/org\/\{orgName\}/.test(p); - const svc = org ? 'registry' : 'catalog'; + const org = p.includes('/org/{org'); // catalog (guest) families ------------------------------------------------ if (!org) { - if (p === '/v1/{artifact-type}') return r('catalog', 'artifacts', 'list', 'select'); - if (p === '/v1/{artifact-type}/{org-name}/{artifact-name}') return r('catalog', 'artifacts', 'get', 'select'); - if (/^\/v1\/\{artifact-type\}\/\{org-name\}\/\{artifact-name\}\/versions\/\{version-id\}\/files$/.test(p)) return r('catalog', 'artifact_files', 'list', 'select'); - if (p.endsWith('/signature')) return r('catalog', 'artifact_signatures', 'get', 'select'); - if (/^\/v1\/\{artifactType\}\/\{orgName\}\/\{artifactName\}\/spec$/.test(p)) return r('catalog', 'artifact_specs', 'get', 'select'); - if (/^\/v1\/\{artifact-type\}\/org\/\{org-name\}\/\{artifact-name\}\/collections$/.test(p)) return r('catalog', 'artifact_collections', 'list', 'select'); - if (p === '/v1/models') return r('catalog', 'models', 'list', 'select'); - if (p === '/v1/models/{org-name}/{model-name}') return r('catalog', 'models', 'get', 'select'); - if (p === '/v1/models/{org-name}/{model-name}/versions') return r('catalog', 'model_versions', 'list', 'select'); - if (p === '/v1/models/{org-name}/{model-name}/versions/{version-id}') return r('catalog', 'model_versions', 'get', 'select'); - if (p === '/v1/models/{org-name}/{model-name}/versions/{version-id}/files') return r('catalog', 'model_files', 'list', 'select'); - if (p === '/v1/recipes') return r('catalog', 'recipes', 'list', 'select'); - if (p === '/v1/recipes/{org-name}/{recipe-name}') return r('catalog', 'recipes', 'get', 'select'); - if (p === '/v1/recipes/{org-name}/{recipe-name}/versions') return r('catalog', 'recipe_versions', 'list', 'select'); - if (p === '/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}') return r('catalog', 'recipe_versions', 'get', 'select'); - if (p === '/v1/recipes/{org-name}/{recipe-name}/versions/{version-id}/files') return r('catalog', 'recipe_files', 'list', 'select'); - if (p === '/v1/resources') return r('catalog', 'resources', 'list', 'select'); - if (p === '/v1/resources/{org-name}/{recipe-name}') return r('catalog', 'resources', 'get', 'select'); - if (p === '/v1/resources/{org-name}/{recipe-name}/versions') return r('catalog', 'resource_versions', 'list', 'select'); - if (p === '/v1/resources/{org-name}/{recipe-name}/versions/{version-id}') return r('catalog', 'resource_versions', 'get', 'select'); - if (p === '/v1/resources/{org-name}/{recipe-name}/versions/{version-id}/files') return r('catalog', 'resource_files', 'list', 'select'); - if (p === '/v1/helm-charts/{org-name}/{artifact-name}/versions') return r('catalog', 'helm_chart_versions', 'list', 'select'); - if (p === '/v1/helm-charts/{org-name}/{artifact-name}/versions/{version-id}') return r('catalog', 'helm_chart_versions', 'get', 'select'); - if (p === '/v1/collections') return r('catalog', 'collections', 'list', 'select'); - if (p === '/v1/collections/{org-name}/{collection-name}') return r('catalog', 'collections', 'get', 'select'); - if (/^\/v1\/collections\/\{org-name\}\/\{collection-name\}\/artifacts\/\{artifact-type\}$/.test(p)) return r('catalog', 'collection_artifacts', 'list', 'select'); - if (p === '/v1/gpus') return r('catalog', 'gpus', 'list', 'select'); - if (p.startsWith('/v1/gpus/pci-device-id')) { + if (p === '/v2/{artifact_type}') return r('catalog', 'artifacts', 'list', 'select'); + if (p === '/v2/{artifact_type}/{org_name}/{artifact_name}') return r('catalog', 'artifacts', 'get', 'select'); + if (/^\/v2\/\{artifact_type\}\/\{org_name\}\/\{artifact_name\}\/versions\/\{version_id\}\/files$/.test(p)) return r('catalog', 'artifact_files', 'list', 'select'); + if (p.endsWith('/signature')) return { skip: 'non-json-response (signature bytes / redirect)' }; + if (/^\/v2\/\{artifact_type\}\/\{org_name\}\/\{artifact_name\}\/spec$/.test(p)) return r('catalog', 'artifact_specs', 'get', 'select'); + if (p === '/v2/models') return r('catalog', 'models', 'list', 'select'); + if (p === '/v2/models/{org_name}/{model_name}') return r('catalog', 'models', 'get', 'select'); + if (p === '/v2/models/{org_name}/{model_name}/versions') return r('catalog', 'model_versions', 'list', 'select'); + if (p === '/v2/models/{org_name}/{model_name}/versions/{version_id}') return r('catalog', 'model_versions', 'get', 'select'); + if (p === '/v2/models/{org_name}/{model_name}/versions/{version_id}/files') return r('catalog', 'model_files', 'list', 'select'); + if (p === '/v2/recipes') return r('catalog', 'recipes', 'list', 'select'); + if (p === '/v2/recipes/{org_name}/{recipe_name}') return r('catalog', 'recipes', 'get', 'select'); + if (p === '/v2/recipes/{org_name}/{recipe_name}/versions') return r('catalog', 'recipe_versions', 'list', 'select'); + if (p === '/v2/recipes/{org_name}/{recipe_name}/versions/{version_id}') return r('catalog', 'recipe_versions', 'get', 'select'); + if (p === '/v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files') return r('catalog', 'recipe_files', 'list', 'select'); + if (p === '/v2/resources') return r('catalog', 'resources', 'list', 'select'); + if (p === '/v2/resources/{org_name}/{recipe_name}') return r('catalog', 'resources', 'get', 'select'); + if (p === '/v2/resources/{org_name}/{recipe_name}/versions') return r('catalog', 'resource_versions', 'list', 'select'); + if (p === '/v2/resources/{org_name}/{recipe_name}/versions/{version_id}') return r('catalog', 'resource_versions', 'get', 'select'); + if (p === '/v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files') return r('catalog', 'resource_files', 'list', 'select'); + if (p === '/v2/helm-charts/{org_name}/{artifact_name}/versions') return r('catalog', 'helm_chart_versions', 'list', 'select'); + if (p === '/v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id}') return r('catalog', 'helm_chart_versions', 'get', 'select'); + if (p === '/v2/collections') return r('catalog', 'collections', 'list', 'select'); + if (p === '/v2/collections/{org_name}/{collection_name}') return r('catalog', 'collections', 'get', 'select'); + if (/^\/v2\/collections\/\{org_name\}\/\{collection_name\}\/artifacts\/\{artifact_type\}$/.test(p)) return r('catalog', 'collection_artifacts', 'list', 'select'); + if (p === '/v2/gpus') return r('catalog', 'gpus', 'list', 'select'); + if (p.startsWith('/v2/gpus/pci-device-id')) { const m = p.includes('pci-subsystem-device-id') ? '_by_vendor_subsystem' : (p.includes('pci-vendor-id') ? '_by_vendor' : ''); if (verb === 'get') return r('catalog', 'gpus', `get${m}`, 'select'); @@ -327,188 +449,212 @@ function classifyModels(p, verb, op) { if (verb === 'patch') return r('catalog', 'gpus', `update${m}`, 'update', 'publisher-privileged write'); if (verb === 'delete') return r('catalog', 'gpus', `delete${m}`, 'delete', 'publisher-privileged write'); } - if (p === '/v1/csps' && verb === 'get') return r('catalog', 'csps', 'list', 'select'); - if (p === '/v1/csps' && verb === 'post') return r('catalog', 'csps', 'create', 'insert', 'publisher-privileged write'); - if (p === '/v1/csps/{csp-name}') { + if (p === '/v2/csps' && verb === 'get') return r('catalog', 'csps', 'list', 'select'); + if (p === '/v2/csps' && verb === 'post') return r('catalog', 'csps', 'create', 'insert', 'publisher-privileged write'); + if (p === '/v2/csps/{csp_name}') { if (verb === 'get') return r('catalog', 'csps', 'get', 'select'); if (verb === 'patch') return r('catalog', 'csps', 'update', 'update', 'publisher-privileged write'); if (verb === 'delete') return r('catalog', 'csps', 'delete', 'delete', 'publisher-privileged write'); } - if (p.startsWith('/v1/csps/{csp-name}/deployments/params')) { + if (p.startsWith('/v2/csps/{csp_name}/deployments/params')) { const meta = p.endsWith('/meta') ? '_meta' : ''; if (verb === 'get') return r('catalog', `csp_deployment_params${meta}`, 'get', 'select'); if (verb === 'post') return r('catalog', `csp_deployment_params${meta}`, 'create', 'insert'); if (verb === 'patch') return r('catalog', `csp_deployment_params${meta}`, 'update', 'update'); if (verb === 'delete') return r('catalog', `csp_deployment_params${meta}`, 'delete', 'delete'); } - if (p.startsWith('/v1/csps/{artifact-type}/') && p.endsWith('/params')) { - const byCsp = p.includes('{csp-name}'); + if (p.startsWith('/v2/csps/{artifact_type}/') && p.endsWith('/params')) { + const byCsp = p.includes('{csp_name}'); return r('catalog', 'artifact_deployment_params', byCsp ? 'get' : 'list', 'select'); } - if (p.startsWith('/v1/csps/{artifact-type}/org/')) { - return r('catalog', 'artifact_deployments', p.includes('/files/') ? 'create_for_file' : 'create', 'insert', 'launches a CSP deployment for an artifact version'); - } return { error: `unclassified catalog operation: ${verb} ${p}` }; } // registry (org-scoped) families ------------------------------------------- - const generic = /\{artifact-?type\}/i.test(p); - if (p === '/v1/artifact-registry/org/{org-name}/encryption-keys') return r('registry', 'encryption_keys', 'list', 'select'); - if (p === '/v1/artifact-registry/org/{org-name}/encryption-keys/{key-id}') { - if (verb === 'get') return r('registry', 'encryption_keys', 'get', 'select'); - if (verb === 'delete') return r('registry', 'encryption_keys', 'delete', 'delete'); + const generic = /\{artifact_type\}/.test(p); + if (p === '/v2/artifact-registry/org/{org_name}/encryption-keys') return r('private_registry', 'encryption_keys', 'list', 'select'); + if (p === '/v2/artifact-registry/org/{org_name}/encryption-keys/{key_id}') { + if (verb === 'get') return r('private_registry', 'encryption_keys', 'get', 'select'); + if (verb === 'delete') return r('private_registry', 'encryption_keys', 'delete', 'delete'); } - if (p === '/v1/artifact-registry/org/{org}/workflows/{workflowId}') return r('registry', 'workflows', 'get', 'select'); - - if (p === '/v1/org/{org-name}/collections' && verb === 'get') return r('registry', 'collections', 'list', 'select'); - if (p === '/v1/org/{org-name}/collections' && verb === 'post') return r('registry', 'collections', 'create', 'insert'); - if (p === '/v1/org/{org-name}/collections/{collection-name}') { - if (verb === 'get') return r('registry', 'collections', 'get', 'select'); - if (verb === 'patch') return r('registry', 'collections', 'update', 'update'); - if (verb === 'delete') return r('registry', 'collections', 'delete', 'delete'); + if (p === '/v2/artifact-registry/org/{org}/workflows/{workflow_id}') return r('private_registry', 'workflows', 'get', 'select'); + + if (p === '/v2/org/{org_name}/collections' && verb === 'get') return r('private_registry', 'collections', 'list', 'select'); + if (p === '/v2/org/{org_name}/collections' && verb === 'post') return r('private_registry', 'collections', 'create', 'insert'); + if (p === '/v2/org/{org_name}/collections/{collection_name}') { + if (verb === 'get') return r('private_registry', 'collections', 'get', 'select'); + if (verb === 'patch') return r('private_registry', 'collections', 'update', 'update'); + if (verb === 'delete') return r('private_registry', 'collections', 'delete', 'delete'); } - if (p.startsWith('/v1/org/{org-name}/collections/{collection-name}')) { + if (p.startsWith('/v2/org/{org_name}/collections/{collection_name}')) { if (p.includes('/share')) { // /share is the legacy org-wide share (its PUT is deprecated inline); // product shares get their own resource - same path-param signature // as the org-wide share otherwise if (p.endsWith('/share') && verb === 'delete') return { skip: 'legacy-twin (PUT counterpart deprecated inline; superseded by /shares/org)' }; + if (p.endsWith('/share') && verb === 'put') return { skip: 'legacy-twin (superseded by /shares/org)' }; if (p.endsWith('/share/product')) { - if (verb === 'put') return r('registry', 'collection_product_shares', 'add', 'insert', 'grants-as-data'); - if (verb === 'delete') return r('registry', 'collection_product_shares', 'remove', 'delete', 'grants-as-data'); + if (verb === 'put') return r('private_registry', 'collection_product_shares', 'add', 'insert', 'grants-as-data'); + if (verb === 'delete') return r('private_registry', 'collection_product_shares', 'remove', 'delete', 'grants-as-data'); } const target = p.includes('/shares/org') ? '_org' : '_team'; - if (verb === 'put') return r('registry', 'collection_shares', `add${target}`, 'insert', 'grants-as-data'); - if (verb === 'delete') return r('registry', 'collection_shares', `remove${target}`, 'delete', 'grants-as-data'); + if (verb === 'put') return r('private_registry', 'collection_shares', `add${target}`, 'insert', 'grants-as-data'); + if (verb === 'delete') return r('private_registry', 'collection_shares', `remove${target}`, 'delete', 'grants-as-data'); } - if (/\/artifacts\/\{artifact-type\}$/.test(p)) return r('registry', 'collection_artifacts', 'list', 'select'); - if (/\/artifacts$/.test(p) && verb === 'patch') return r('registry', 'collection_artifacts', 'update_bulk', 'update', 'bulk membership update'); + if (/\/artifacts\/\{artifact_type\}$/.test(p)) return r('private_registry', 'collection_artifacts', 'list', 'select'); + if (/\/artifacts$/.test(p) && verb === 'patch') return r('private_registry', 'collection_artifacts', 'update_bulk', 'update', 'bulk membership update'); if (p.includes('/artifacts/org/')) { - if (p.includes('/team/{artifact-team-name}/')) return { skip: 'deprecated-team-scoped (references a team-scoped artifact; NGC API deprecation schedule: team-scoped paths end 2026-09)' }; - if (verb === 'put') return r('registry', 'collection_artifacts', 'add_cross_org', 'insert', 'grants-as-data membership'); - if (verb === 'delete') return r('registry', 'collection_artifacts', 'remove_cross_org', 'delete'); + const teamArtifact = p.includes('/team/{artifact_team_name}/') ? '_team' : ''; + if (verb === 'put') return r('private_registry', 'collection_artifacts', `add_cross_org${teamArtifact}`, 'insert', 'grants-as-data membership'); + if (verb === 'delete') return r('private_registry', 'collection_artifacts', `remove_cross_org${teamArtifact}`, 'delete'); } - if (/\{artifact-type\}\/\{artifact-name\}$/.test(p)) { - if (verb === 'put') return r('registry', 'collection_artifacts', 'add', 'insert', 'grants-as-data membership'); - if (verb === 'delete') return r('registry', 'collection_artifacts', 'remove', 'delete'); + if (/\{artifact_type\}\/\{artifact_name\}$/.test(p)) { + if (verb === 'put') return r('private_registry', 'collection_artifacts', 'add', 'insert', 'grants-as-data membership'); + if (verb === 'delete') return r('private_registry', 'collection_artifacts', 'remove', 'delete'); } } - if (p === '/v1/org/{org-name}/models' && verb === 'get') return r('registry', 'models', 'list', 'select'); - if (p === '/v1/org/{org-name}/models' && verb === 'post') return r('registry', 'models', 'create', 'insert'); - if (p === '/v1/org/{org-name}/models/{model-name}') { - if (verb === 'get') return r('registry', 'models', 'get', 'select'); - if (verb === 'patch') return r('registry', 'models', 'update', 'update'); + if (p === '/v2/org/{org_name}/models' && verb === 'get') return r('private_registry', 'models', 'list', 'select'); + if (p === '/v2/org/{org_name}/models' && verb === 'post') return r('private_registry', 'models', 'create', 'insert'); + if (p === '/v2/org/{org_name}/models/{model_name}') { + if (verb === 'get') return r('private_registry', 'models', 'get', 'select'); + if (verb === 'patch') return r('private_registry', 'models', 'update', 'update'); } - if (p === '/v1/org/{org-name}/models/{model-name}/encryption-key') return r('registry', 'model_encryption_keys', 'delete', 'delete'); - if (p.includes('/models/{model-name}/shares/')) { + if (p === '/v2/org/{org_name}/models/{model_name}/encryption-key') return r('private_registry', 'model_encryption_keys', 'delete', 'delete'); + if (p.includes('/models/{model_name}/shares/')) { const target = p.endsWith('/shares/org') ? '_org' : '_team'; - if (verb === 'put') return r('registry', 'model_shares', `add${target}`, 'insert', 'grants-as-data'); - if (verb === 'delete') return r('registry', 'model_shares', `remove${target}`, 'delete', 'grants-as-data'); + if (verb === 'put') return r('private_registry', 'model_shares', `add${target}`, 'insert', 'grants-as-data'); + if (verb === 'delete') return r('private_registry', 'model_shares', `remove${target}`, 'delete', 'grants-as-data'); } - if (p === '/v1/org/{org-name}/models/{model-name}/versions' && verb === 'get') return r('registry', 'model_versions', 'list', 'select'); - if (p === '/v1/org/{org-name}/models/{model-name}/versions' && verb === 'post') return r('registry', 'model_versions', 'create', 'insert'); - if (p === '/v1/org/{org-name}/models/{model-name}/versions/{version-id}') { - if (verb === 'get') return r('registry', 'model_versions', 'get', 'select'); - if (verb === 'patch') return r('registry', 'model_versions', 'update', 'update'); + if (p === '/v2/org/{org_name}/models/{model_name}/versions' && verb === 'get') return r('private_registry', 'model_versions', 'list', 'select'); + if (p === '/v2/org/{org_name}/models/{model_name}/versions' && verb === 'post') return r('private_registry', 'model_versions', 'create', 'insert'); + if (p === '/v2/org/{org_name}/models/{model_name}/versions/{version_id}') { + if (verb === 'get') return r('private_registry', 'model_versions', 'get', 'select'); + if (verb === 'patch') return r('private_registry', 'model_versions', 'update', 'update'); } - if (p === '/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files') return r('registry', 'model_files', 'list', 'select'); - if (p === '/v1/org/{org-name}/models/{artifact-name}/versions/{version-id}/stash') return r('registry', 'model_versions', 'stash', 'exec', 'action on a version'); + if (p === '/v2/org/{org_name}/models/{model_name}/versions/{version_id}/files') return r('private_registry', 'model_files', 'list', 'select'); + if (p === '/v2/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash') return r('private_registry', 'model_versions', 'stash', 'exec', 'action on a version'); for (const [seg, resBase] of [['recipes', 'recipe'], ['resources', 'resource']]) { - const base = `/v1/org/{org-name}/${seg}`; - if (p === base && verb === 'get') return r('registry', `${resBase}s`, 'list', 'select'); - if (p === base && verb === 'post') return r('registry', `${resBase}s`, 'create', 'insert'); - if (p === `${base}/{recipe-name}`) { - if (verb === 'get') return r('registry', `${resBase}s`, 'get', 'select'); - if (verb === 'patch') return r('registry', `${resBase}s`, 'update', 'update'); + const base = `/v2/org/{org_name}/${seg}`; + if (p === base && verb === 'get') return r('private_registry', `${resBase}s`, 'list', 'select'); + if (p === base && verb === 'post') return r('private_registry', `${resBase}s`, 'create', 'insert'); + if (p === `${base}/{recipe_name}`) { + if (verb === 'get') return r('private_registry', `${resBase}s`, 'get', 'select'); + if (verb === 'patch') return r('private_registry', `${resBase}s`, 'update', 'update'); } - if (p === `${base}/{recipe-name}/versions` && verb === 'get') return r('registry', `${resBase}_versions`, 'list', 'select'); - if (p === `${base}/{recipe-name}/versions` && verb === 'post') return r('registry', `${resBase}_versions`, 'create', 'insert'); - if (p === `${base}/{recipe-name}/versions/{version-id}`) { - if (verb === 'get') return r('registry', `${resBase}_versions`, 'get', 'select'); - if (verb === 'patch') return r('registry', `${resBase}_versions`, 'update', 'update'); + if (p === `${base}/{recipe_name}/versions` && verb === 'get') return r('private_registry', `${resBase}_versions`, 'list', 'select'); + if (p === `${base}/{recipe_name}/versions` && verb === 'post') return r('private_registry', `${resBase}_versions`, 'create', 'insert'); + if (p === `${base}/{recipe_name}/versions/{version_id}`) { + if (verb === 'get') return r('private_registry', `${resBase}_versions`, 'get', 'select'); + if (verb === 'patch') return r('private_registry', `${resBase}_versions`, 'update', 'update'); } - if (p === `${base}/{recipe-name}/versions/{version-id}/files`) return r('registry', `${resBase}_files`, 'list', 'select'); + if (p === `${base}/{recipe_name}/versions/{version_id}/files`) return r('private_registry', `${resBase}_files`, 'list', 'select'); } - if (p === '/v1/org/{org-name}/helm-charts/{artifact-name}/versions') return r('registry', 'helm_chart_versions', 'list', 'select'); - if (p === '/v1/org/{org-name}/helm-charts/{artifact-name}/versions/{version-id}') { - if (verb === 'get') return r('registry', 'helm_chart_versions', 'get', 'select'); - if (verb === 'patch') return r('registry', 'helm_chart_versions', 'update', 'update'); + if (p === '/v2/org/{org_name}/helm-charts/{artifact_name}/versions') return r('private_registry', 'helm_chart_versions', 'list', 'select'); + if (p === '/v2/org/{org_name}/helm-charts/{artifact_name}/versions/{version_id}') { + if (verb === 'get') return r('private_registry', 'helm_chart_versions', 'get', 'select'); + if (verb === 'patch') return r('private_registry', 'helm_chart_versions', 'update', 'update'); } - if (p.includes('/repositories/{container-name}/tags/')) return r('registry', 'repository_associated_models', 'list_by_tag', 'select'); - if (p.includes('/repositories/{container-name}/associated-models')) return r('registry', 'repository_associated_models', 'list', 'select'); + if (p.includes('/repositories/{container_name}/tags/')) return r('private_registry', 'repository_associated_models', 'list_by_tag', 'select'); + if (p.includes('/repositories/{container_name}/associated-models')) return r('private_registry', 'repository_associated_models', 'list', 'select'); if (generic) { - if (p === '/v1/org/{org-name}/{artifact-type}' && verb === 'get') return r('registry', 'artifacts', 'list', 'select'); - if (p === '/v1/org/{org-name}/{artifact-type}' && verb === 'post') return r('registry', 'artifacts', 'create', 'insert'); - if (p === '/v1/org/{org-name}/{artifact-type}/{artifact-name}') { - if (verb === 'get') return r('registry', 'artifacts', 'get', 'select'); - if (verb === 'patch') return r('registry', 'artifacts', 'update', 'update'); - if (verb === 'put') return r('registry', 'artifacts', 'replace', 'replace', 'PUT with a PATCH twin - proposed replace, semantics unverified (keycloak rule)'); - if (verb === 'delete') return r('registry', 'artifacts', 'delete', 'delete'); + if (p === '/v2/org/{org_name}/{artifact_type}' && verb === 'get') return r('private_registry', 'artifacts', 'list', 'select'); + if (p === '/v2/org/{org_name}/{artifact_type}' && verb === 'post') return r('private_registry', 'artifacts', 'create', 'insert'); + if (p === '/v2/org/{org_name}/{artifact_type}/{artifact_name}') { + if (verb === 'get') return r('private_registry', 'artifacts', 'get', 'select'); + if (verb === 'patch') return r('private_registry', 'artifacts', 'update', 'update'); + if (verb === 'put') return r('private_registry', 'artifacts', 'replace', 'replace', 'PUT with a PATCH twin - proposed replace, semantics unverified (keycloak rule)'); + if (verb === 'delete') return r('private_registry', 'artifacts', 'delete', 'delete'); } - if (p.endsWith('/catalog/flags')) return r('registry', 'artifact_catalog_flags', 'get', 'select'); - if (p.endsWith('/{artifact-name}/collections')) return r('registry', 'artifact_collections', 'list', 'select'); - if (p.endsWith('/sync-release-type-labels')) return r('registry', 'artifacts', 'sync_release_type_labels', 'exec', 'action'); - if (p.endsWith('/deployments/params') && verb === 'get') return r('registry', 'artifact_deployment_params', 'list', 'select'); - if (p.includes('/deployments/{csp-name}/params')) { - if (verb === 'get') return r('registry', 'artifact_deployment_params', 'get', 'select'); - if (verb === 'post') return r('registry', 'artifact_deployment_params', 'create', 'insert'); - if (verb === 'patch') return r('registry', 'artifact_deployment_params', 'update', 'update'); - if (verb === 'delete') return r('registry', 'artifact_deployment_params', 'delete', 'delete'); + if (p.endsWith('/catalog/flags')) return r('private_registry', 'artifact_catalog_flags', 'get', 'select'); + if (p.endsWith('/{artifact_name}/collections')) return r('private_registry', 'artifact_collections', 'list', 'select'); + if (p.endsWith('/sync-release-type-labels')) return r('private_registry', 'artifacts', 'sync_release_type_labels', 'exec', 'action'); + if (p.endsWith('/deployments/params') && verb === 'get') return r('private_registry', 'artifact_deployment_params', 'list', 'select'); + if (p.includes('/deployments/{csp_name}/params')) { + if (verb === 'get') return r('private_registry', 'artifact_deployment_params', 'get', 'select'); + if (verb === 'post') return r('private_registry', 'artifact_deployment_params', 'create', 'insert'); + if (verb === 'patch') return r('private_registry', 'artifact_deployment_params', 'update', 'update'); + if (verb === 'delete') return r('private_registry', 'artifact_deployment_params', 'delete', 'delete'); } + if (p.endsWith('/deployments/{csp_name}/parameters')) return { skip: 'duplicate-endpoint-family (same operation as /deployments/{csp_name}/params)' }; if (p.endsWith('/license/acceptance')) { - if (verb === 'get') return r('registry', 'license_acceptances', 'get', 'select'); - if (verb === 'post') return r('registry', 'license_acceptances', 'create', 'insert'); + // the GET answers with the requestStatus envelope only (the vendor's + // own response schema) - nothing to project + if (verb === 'get') return { skip: 'non-projectable-response (requestStatus-only envelope)' }; + if (verb === 'post') return r('private_registry', 'license_acceptances', 'create', 'insert'); } - if (p.endsWith('/release-type')) return r('registry', 'artifacts', 'set_release_type', 'exec', 'single-field action endpoint'); - if (p.endsWith('/terms-of-service')) return r('registry', 'artifacts', 'set_terms_of_service', 'exec', 'single-field action endpoint'); + if (p.endsWith('/release-type')) return r('private_registry', 'artifacts', 'set_release_type', 'exec', 'single-field action endpoint'); + if (p.endsWith('/terms-of-service')) return r('private_registry', 'artifacts', 'set_terms_of_service', 'exec', 'single-field action endpoint'); if (p.endsWith('/share/product')) { // own resource: same path-param signature as artifact_shares - if (verb === 'put') return r('registry', 'artifact_product_shares', 'add', 'insert', 'grants-as-data'); - if (verb === 'delete') return r('registry', 'artifact_product_shares', 'remove', 'delete'); + if (verb === 'put') return r('private_registry', 'artifact_product_shares', 'add', 'insert', 'grants-as-data'); + if (verb === 'delete') return r('private_registry', 'artifact_product_shares', 'remove', 'delete'); } if (p.endsWith('/share')) { - if (verb === 'put') return r('registry', 'artifact_shares', 'add', 'insert', 'grants-as-data'); - if (verb === 'delete') return r('registry', 'artifact_shares', 'remove', 'delete'); + if (verb === 'put') return r('private_registry', 'artifact_shares', 'add', 'insert', 'grants-as-data'); + if (verb === 'delete') return r('private_registry', 'artifact_shares', 'remove', 'delete'); } - if (/\/versions\/\{version-id\}$/.test(p) && verb === 'delete') return r('registry', 'artifact_versions', 'delete', 'delete'); - if (p.endsWith('/versions/{version-id}/configs')) return r('registry', 'artifact_version_configs', 'update', 'update'); - if (p.includes('/versions/{version-id}/deployments/')) return r('registry', 'artifact_deployments', 'create', 'insert', 'launches a CSP deployment'); - if (/\/versions\/\{version-id\}\/files$/.test(p)) return r('registry', 'artifact_files', 'list', 'select'); - if (p.endsWith('/versions/{version-id}/signature') && verb === 'get') return r('registry', 'artifact_signatures', 'get', 'select'); - if (p.endsWith('/versions/{version-id}/signature') && verb === 'put') return r('registry', 'artifact_signatures', 'set', 'exec', 'write of a computed signature - action'); - if (p.endsWith('/malware-scan')) return r('registry', 'artifacts', 'malware_scan', 'exec', 'action'); - if (p.endsWith('/purge')) return r('registry', 'artifacts', 'purge', 'exec', 'kept off DELETE: same path-param signature as artifacts.delete'); - if (/\{artifactType\}\/\{artifactName\}\/spec$/.test(p)) { - if (verb === 'get') return r('registry', 'artifact_specs', 'get', 'select'); - if (verb === 'put') return r('registry', 'artifact_specs', 'update', 'update', 'PUT semantics unverified'); - if (verb === 'delete') return r('registry', 'artifact_specs', 'delete', 'delete'); + if (/\/versions\/\{version_id\}$/.test(p) && verb === 'delete') return r('private_registry', 'artifact_versions', 'delete', 'delete'); + if (p.endsWith('/versions/{version_id}/configs')) return r('private_registry', 'artifact_version_configs', 'update', 'update'); + if (p.includes('/versions/{version_id}/deployments/')) return r('private_registry', 'artifact_deployments', 'create', 'insert', 'launches a CSP deployment'); + if (/\/versions\/\{version_id\}\/files$/.test(p)) return r('private_registry', 'artifact_files', 'list', 'select'); + if (p.endsWith('/versions/{version_id}/signature') && verb === 'get') return { skip: 'non-json-response (signature bytes / redirect)' }; + if (p.endsWith('/versions/{version_id}/signature') && verb === 'put') return r('private_registry', 'artifact_signatures', 'set', 'exec', 'write of a computed signature - action'); + if (p.endsWith('/malware-scan')) return r('private_registry', 'artifacts', 'malware_scan', 'exec', 'action'); + if (p.endsWith('/purge')) return r('private_registry', 'artifacts', 'purge', 'exec', 'kept off DELETE: same path-param signature as artifacts.delete'); + if (/\{artifact_type\}\/\{artifact_name\}\/spec$/.test(p)) { + if (verb === 'get') return r('private_registry', 'artifact_specs', 'get', 'select'); + if (verb === 'put') return r('private_registry', 'artifact_specs', 'update', 'update', 'PUT semantics unverified'); + if (verb === 'delete') return r('private_registry', 'artifact_specs', 'delete', 'delete'); } - if (/\{artifactType\}\/spec$/.test(p) && verb === 'post') return r('registry', 'artifact_specs', 'create', 'insert'); + if (/\{artifact_type\}\/spec$/.test(p) && verb === 'post') return r('private_registry', 'artifact_specs', 'create', 'insert'); + if (p.endsWith('/files') && verb === 'post') return { skip: 'data-plane-file-transfer (checksum existence check for uploads)' }; } - // generic {type} file listings (duplicates of the /versions/{version-id}/files listings) - if (/^\/v1\/org\/\{org\}\/\{type\}\/\{name\}\/\{version\}\/files$/.test(p)) return { skip: 'duplicate-endpoint-family (same listing as /versions/{version-id}/files)' }; - if (/^\/v1\/\{type\}\/org\/\{org\}\/\{name\}\/\{version\}\/files$/.test(p)) return { skip: 'duplicate-endpoint-family (typed/guest file listing twins)' }; + // generic {type} file listings (duplicates of the /versions/{version_id}/files listings) + if (/^\/v2\/org\/\{org\}\/\{type\}\/\{name\}\/\{version\}\/files$/.test(p)) return { skip: 'duplicate-endpoint-family (same listing as /versions/{version_id}/files)' }; + if (/^\/v2\/\{type\}\/org\/\{org\}\/\{name\}\/\{version\}\/files$/.test(p)) return { skip: 'duplicate-endpoint-family (typed/guest file listing twins)' }; return { error: `unclassified registry operation: ${verb} ${p}` }; } +function classifyModels(p, verb, op) { + if (op.deprecated) return { skip: 'deprecated-inline' }; + const { stripped, team } = stripTeamScope(p); + const c = classifyModelsCore(stripped, verb, op); + if (!team || c.error || c.skip) return c; + return { ...c, method: `${c.method}_by_team`, note: `${c.note ? c.note + '; ' : ''}team-scoped twin of ${stripped} (Private Registry team scoping is exempt from the 2026-09-30 schedule)` }; +} + function r(service, resource, method, sqlVerb, note = '') { return { service, resource, method, sqlVerb, note }; } +// --------------------------------------------------------------------------- +// org-scope rebase +// --------------------------------------------------------------------------- + +function rebase(p, host) { + for (const { re, template } of ORG_PREFIXES) { + const m = p.match(re); + if (m) { + return { orgPrefix: template, rebasedPath: p.slice(m[0].length), serverUrl: host + template, orgParam: m[1] }; + } + } + return { orgPrefix: '', rebasedPath: p, serverUrl: host, orgParam: '' }; +} + // --------------------------------------------------------------------------- // main // --------------------------------------------------------------------------- const rows = []; const errors = []; -const stats = { bySource: {}, byService: {}, byVerb: {}, skips: {}, deprecatedTwins: 0, publicReads: 0 }; +const stats = { bySource: {}, byService: {}, byVerb: {}, skips: {}, teamTwins: 0, scheduled: 0, publicReads: 0, rebased: 0 }; for (const [file, source] of Object.entries(SOURCES)) { const abs = path.join(cleanedDir, file); @@ -524,19 +670,28 @@ for (const [file, source] of Object.entries(SOURCES)) { if (!op) continue; let c; + const scheduled = SCHEDULED_DEPRECATIONS.some((re) => re.test(pathKey)); if (NON_GENERATOR_VERBS.includes(verb)) c = { skip: 'non-generator-http-verb' }; - else - if (file === 'nvcf_openapi.json') c = classifyNvcf(pathKey, verb, op); + else if (scheduled) c = { skip: 'deprecated-schedule-2026-09-30 (NGC deprecated API reference: team-scoped paths for NVCF and sibling services end 2026-09-30)' }; + else if (file === 'nvcf_openapi.json') c = classifyNvcf(pathKey, verb, op); else if (file === 'ngc_kas.json') c = classifyKas(pathKey, verb, op); else c = classifyModels(pathKey, verb, op); if (c.error) { errors.push(c.error); continue; } - const host = c.host || 'api.ngc.nvidia.com'; - const { shape, objectKey } = responseShape(spec, op); - const orgScoped = /\{org-?name\}|\{orgName\}|\{org\}/.test(pathKey) ? 'y' : 'n'; - const teamScoped = (isTeamScopedTwin(pathKey) || isGuestTeamShape(pathKey)) ? 'y' : 'n'; + const host = c.host || NGC_HOST; + const shapeInfo = responseShape(spec, op); + const { shape, envelopeOnly } = shapeInfo; + const objectKey = c.skip ? '' : objectKeyFor(c.resource, c.method, shapeInfo); + const orgScoped = /\{org(_name)?\}/.test(pathKey) ? 'y' : 'n'; + const teamScoped = (stripTeamScope(pathKey).team || /\/teams?\/\{team(_name)?\}/.test(pathKey)) ? 'y' : 'n'; const observed = OBSERVED_PUBLIC_READS.get(`${file}::${pathKey}::${verb}`) || ''; + const mapped = !c.skip; + const rb = mapped ? rebase(pathKey, host) : { orgPrefix: '', rebasedPath: pathKey, serverUrl: host }; + + if (mapped && c.sqlVerb === 'select' && (shape === 'none' || envelopeOnly)) { + errors.push(`select method ${c.service}.${c.resource}.${c.method} (${verb} ${pathKey}) has no projectable response schema (${shape}) - extend the response rules in clean_specs.mjs`); + } const row = { source, file, host, verb, path: pathKey, @@ -544,18 +699,22 @@ for (const [file, source] of Object.entries(SOURCES)) { tags: (op.tags || []).join('|'), org_scoped: orgScoped, team_scoped: teamScoped, - deprecated: op.deprecated ? 'y' : (teamScoped === 'y' ? 'y (schedule 2026-09)' : 'n'), + deprecated: op.deprecated ? 'y' : (scheduled ? 'y (schedule 2026-09-30)' : 'n'), auth_declared: authDeclared(spec, op), observed_public_read: observed, pagination_params: paginationParams(spec, op, pathItem), + native_casing: nativeCasing(spec, op, pathItem), has_request_body: op.requestBody ? 'y' : 'n', response_shape: shape, object_key_candidate: objectKey, invocation_form: c.invocationForm || '', - service: c.skip ? '' : c.service, - resource: c.skip ? '' : c.resource, - method: c.skip ? '' : c.method, - sql_verb: c.skip ? '' : c.sqlVerb, + org_prefix: rb.orgPrefix, + rebased_path: rb.rebasedPath, + server_url: rb.serverUrl, + service: mapped ? c.service : '', + resource: mapped ? c.resource : '', + method: mapped ? c.method : '', + sql_verb: mapped ? c.sqlVerb : '', skip_reason: c.skip || '', notes: c.note || '' }; @@ -565,10 +724,12 @@ for (const [file, source] of Object.entries(SOURCES)) { if (c.skip) { const key = c.skip.split(' ')[0]; stats.skips[key] = (stats.skips[key] || 0) + 1; - if (c.skip.startsWith('deprecated-team-scoped')) stats.deprecatedTwins++; + if (scheduled) stats.scheduled++; } else { stats.byService[c.service] = (stats.byService[c.service] || 0) + 1; stats.byVerb[c.sqlVerb] = (stats.byVerb[c.sqlVerb] || 0) + 1; + if (c.method.endsWith('_by_team') || c.resource.startsWith('team_')) stats.teamTwins++; + if (rb.orgPrefix) stats.rebased++; } if (observed === 'y') stats.publicReads++; } @@ -576,20 +737,29 @@ for (const [file, source] of Object.entries(SOURCES)) { } if (errors.length > 0) { - console.error(`Inventory FAILED with ${errors.length} unclassified operation(s) - nothing written:`); + console.error(`Inventory FAILED with ${errors.length} error(s) - nothing written:`); for (const e of errors) console.error(` ${e}`); process.exit(1); } -// method uniqueness per (service, resource) +// method uniqueness per (service, resource); rebased-path uniqueness per +// (service, rebased_path, verb); one host per service const seen = new Map(); +const seenPath = new Map(); +const hostsByService = new Map(); for (const row of rows) { if (!row.service) continue; const key = `${row.service}.${row.resource}.${row.method}`; - if (seen.has(key)) { - errors.push(`duplicate method ${key}: ${seen.get(key)} and ${row.verb} ${row.path}`); - } + if (seen.has(key)) errors.push(`duplicate method ${key}: ${seen.get(key)} and ${row.verb} ${row.path}`); seen.set(key, `${row.verb} ${row.path}`); + const pKey = `${row.service}::${row.rebased_path}::${row.verb}`; + if (seenPath.has(pKey)) errors.push(`rebase collision in ${row.service}: ${seenPath.get(pKey)} and ${row.path} both become ${row.verb} ${row.rebased_path}`); + seenPath.set(pKey, row.path); + if (!hostsByService.has(row.service)) hostsByService.set(row.service, new Set()); + hostsByService.get(row.service).add(row.host); +} +for (const [service, hosts] of hostsByService) { + if (hosts.size > 1) errors.push(`service ${service} spans hosts ${[...hosts].join(', ')} - one host per service is required`); } if (errors.length > 0) { console.error(`Inventory FAILED with ${errors.length} consistency error(s) - nothing written:`); @@ -607,6 +777,8 @@ console.log('By source:', JSON.stringify(stats.bySource)); console.log('Mapped by service:', JSON.stringify(stats.byService, null, 2)); console.log('Mapped by SQL verb:', JSON.stringify(stats.byVerb)); console.log('Skips by reason:', JSON.stringify(stats.skips, null, 2)); -console.log(`Deprecated team-scoped twins: ${stats.deprecatedTwins}`); +console.log(`Team-scoped twins mapped (Private Registry, exempt from the schedule): ${stats.teamTwins}`); +console.log(`Scheduled deprecations skipped (2026-09-30 families): ${stats.scheduled}`); +console.log(`Org-scoped operations rebased onto the ${ORG_VAR} server template: ${stats.rebased}`); console.log(`Wire-proven public reads: ${stats.publicReads}`); console.log(`Total mapped: ${rows.filter((x) => x.service).length}, skipped: ${rows.filter((x) => x.skip_reason).length}`); diff --git a/provider-dev/scripts/check_deprecation_page.mjs b/provider-dev/scripts/check_deprecation_page.mjs new file mode 100644 index 0000000..edcd870 --- /dev/null +++ b/provider-dev/scripts/check_deprecation_page.mjs @@ -0,0 +1,52 @@ +#!/usr/bin/env node + +// Watch the NGC deprecated API reference (the build input behind the +// deprecated-schedule-2026-09-30 skip rule in build_inventory.mjs) for +// changes. Fetches the page, extracts the deprecated path patterns and +// dates it lists, and compares them with the snapshot in +// provider-dev/config/deprecation_schedule.json. Exit 1 (and print the +// diff) when the schedule moved; --update rewrites the snapshot. +// +// Usage: node provider-dev/scripts/check_deprecation_page.mjs [--update] + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const PAGE_URL = 'https://docs.nvidia.com/ngc/latest/ngc-deprecated-api.html'; +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const snapshotPath = path.join(repoRoot, 'provider-dev', 'config', 'deprecation_schedule.json'); +const update = process.argv.includes('--update'); + +const res = await fetch(PAGE_URL, { signal: AbortSignal.timeout(60000), headers: { 'User-Agent': 'stackql-provider-nvidia drift check' } }); +if (!res.ok) { + console.error(`Error: HTTP ${res.status} from ${PAGE_URL}`); + process.exit(2); +} +const html = await res.text(); +const text = html.replace(//g, ' ').replace(//g, ' ').replace(/<[^>]+>/g, ' ') + .replace(/'|'/g, "'").replace(/"/g, '"').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\s+/g, ' '); + +const paths = [...new Set([...text.matchAll(/\/v\d\/[A-Za-z0-9_{}\-*/.]+/g)].map((m) => m[0].replace(/[.,;:)]+$/, '')))].sort(); +const dates = [...new Set([...text.matchAll(/\b(January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}, \d{4}\b/g)].map((m) => m[0]))].sort(); +const current = { url: PAGE_URL, paths, dates }; + +if (update || !fs.existsSync(snapshotPath)) { + fs.writeFileSync(snapshotPath, JSON.stringify({ ...current, captured: new Date().toISOString().slice(0, 10) }, null, 2) + '\n'); + console.log(`${update ? 'Updated' : 'Created'} ${snapshotPath}: ${paths.length} path patterns, dates ${dates.join(', ')}`); + process.exit(0); +} + +const snapshot = JSON.parse(fs.readFileSync(snapshotPath, 'utf8')); +const added = paths.filter((p) => !snapshot.paths.includes(p)); +const removed = snapshot.paths.filter((p) => !paths.includes(p)); +const dateChange = JSON.stringify(dates) !== JSON.stringify(snapshot.dates); +if (added.length || removed.length || dateChange) { + console.log(`Deprecation schedule CHANGED since ${snapshot.captured}:`); + for (const p of added) console.log(` + ${p}`); + for (const p of removed) console.log(` - ${p}`); + if (dateChange) console.log(` dates: ${snapshot.dates.join(', ')} -> ${dates.join(', ')}`); + console.log('Review build_inventory.mjs SCHEDULED_DEPRECATIONS, then run with --update to accept the new snapshot.'); + process.exit(1); +} +console.log(`Deprecation schedule unchanged since ${snapshot.captured}: ${paths.length} path patterns, dates ${dates.join(', ')}`); diff --git a/provider-dev/scripts/clean_specs.mjs b/provider-dev/scripts/clean_specs.mjs index e09e7c8..53e7cc2 100644 --- a/provider-dev/scripts/clean_specs.mjs +++ b/provider-dev/scripts/clean_specs.mjs @@ -9,6 +9,27 @@ // validation after the rules run, the script reports every error and exits // without writing anything. // +// Rules (in order): +// stamp-missing-version-field info.version absent -> 0.0.0 +// repair-relative-server relative/absent servers -> the public gateway +// gateway-v2-path-prefix ngc_models: /v1/... -> /v2/... on api.ngc.nvidia.com +// (the public gateway serves the models +// definition under /v2 - NOTES.md item 5) +// snake-case-path-params every {path-param} / {pathParam} token and +// its parameter name -> snake_case, in every +// source (the provider's user surface is +// snake_case; provider-utils split converts +// only the first hyphen per token) +// repair-path-param-names ngc_kas declares some path parameters with +// a prose `name` ("user id or b64encoded +// email") that does not match the template +// token ({id}); rename to the token +// drop-prose-query-params ngc_kas declares query parameters whose +// names are sentences ("Filter using org +// name"); the wire names are unknown, so they +// are dropped rather than exposed as +// unusable columns +// // Usage: node provider-dev/scripts/clean_specs.mjs import fs from 'fs'; @@ -28,12 +49,176 @@ if (!fs.existsSync(manifestPath)) { } const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8')); +const HTTP_VERBS = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']; + +// server assignment for definitions that declare no absolute server; the +// value is the public gateway the definition is served from +const SERVER_BY_SOURCE = { + 'ngc_kas.json': 'https://api.ngc.nvidia.com' +}; + +// the public gateway host + path prefix rewrite for definitions harvested +// from an internal host (NOTES.md item 5: models.ngc.nvidia.com/v1/... is +// served publicly as api.ngc.nvidia.com/v2/...) +const GATEWAY_REWRITE = { + 'ngc_models.json': { server: 'https://api.ngc.nvidia.com', from: '/v1/', to: '/v2/' } +}; + +export function snakeCase(name) { + return String(name) + .replace(/([a-z0-9])([A-Z][a-z]+)/g, '$1_$2') + .replace(/([a-z0-9])([A-Z])/g, '$1_$2') + .toLowerCase() + .replace(/[-. ]+/g, '_'); +} + +const pathTokens = (p) => (p.match(/\{[^}]+\}/g) || []).map((s) => s.slice(1, -1)); + +function forEachOperation(spec, fn) { + for (const [pathKey, pathItem] of Object.entries(spec.paths || {})) { + for (const verb of HTTP_VERBS) { + if (pathItem[verb]) fn(pathKey, pathItem, verb, pathItem[verb]); + } + } +} + +// --------------------------------------------------------------------------- +// Response injection for the models definition (rule inject-sdk-responses). +// The harvested definition declares no 2xx response on most operations; the +// ngcsdk data classes (provider-dev/downloaded/ngc_sdk_schemas.json, from +// harvest_ngc_sdk_schemas.mjs) supply the response shapes. The class for an +// operation is decided by its operationId (suffixes InOrg / InTeam / +// AsGuest / FromAnotherOrg / _N stripped), per the table below - the same +// wrappers registry/api/*.py in the SDK applies to those endpoints. Any +// operation not in the table receives the bare `Response` envelope +// (requestStatus only); build_inventory.mjs rejects a SELECT method left +// on that envelope, so a new read endpoint must be added here deliberately. // --------------------------------------------------------------------------- -// Repair rules. Each rule: { name, applies(file, spec), fix(spec) -> note }. + +const SDK_SCHEMAS_PATH = path.join(downloadDir, 'ngc_sdk_schemas.json'); +const SDK_RESPONSE_FILE = 'ngc_models.json'; + +const SDK_RESPONSE_CLASSES = { + // models + listModels: 'ModelListResponse', listPublicModels: 'ModelListResponse', + listModelVersions: 'ModelVersionListResponse', listModelVersionsAssociatedByContainer: 'ModelVersionListResponse', + listModelVersionsAssociatedByContainerTag: 'ModelVersionListResponse', + listModeFiles: 'ModelVersionFileListResponse', listModelFiles: 'ModelVersionFileListResponse', + getModel: 'ModelResponse', createModel: 'ModelCreateResponse', updateModel: 'ModelResponse', + getModelVersion: 'ModelVersionResponse', createModelVersion: 'ModelVersionCreateResponse', updateModelVersion: 'ModelVersionResponse', + // recipes and resources (the resources family reuses the recipe wrappers in the SDK) + listRecipes: 'RecipeListResponse', listPublicRecipes: 'RecipeListResponse', + getRecipe: 'RecipeResponse', createRecipe: 'RecipeResponse', updateRecipe: 'RecipeResponse', + listRecipeVersions: 'RecipeVersionListResponse', + getRecipeVersion: 'RecipeVersionResponse', createRecipeVersion: 'RecipeVersionResponse', updateRecipeVersion: 'RecipeVersionResponse', + listRecipeFiles: 'RecipeVersionFileListResponse', + // generic artifacts (containers, helm charts, ... by {artifact_type}) + listArtifacts: 'ArtifactListResponse', listPublicArtifacts: 'ArtifactListResponse', listCollectionArtifacts: 'ArtifactListResponse', + getArtifact: 'ArtifactResponse', getChart: 'ArtifactResponse', createArtifact: 'ArtifactResponse', updateArtifact: 'ArtifactResponse', replaceArtifact: 'ArtifactResponse', + listArtifactFiles: 'ArtifactVersionFileListResponse', + listHelmChartVersions: 'ArtifactVersionListResponse', getHelmChartVersion: 'ArtifactVersionResponse', updateHelmChartVersion: 'ArtifactVersionResponse', + getPublicFlags: 'ArtifactCatalogFlags', + getOrgArtifactLicenseAcceptance: 'ConfiguredLicenseTerms', + // collections + listCollections: 'CollectionListResponse', listPublicCollections: 'CollectionListResponse', listArtifactCollections: 'CollectionListResponse', + getCollection: 'CollectionResponse', createCollection: 'CollectionResponse', updateCollection: 'CollectionResponse', patchCollection: 'CollectionResponse', + // cloud service providers and deployment parameters + listCloudServiceProviders: 'CloudServiceProviderListResponse', + getCloudServiceProviderDetails: 'CloudServiceProvider', createCloudServiceProvider: 'CloudServiceProvider', updateCloudServiceProvider: 'CloudServiceProvider', + getCloudServiceProviderDeploymentParametersDetails: 'DeploymentParametersListResponse', + createCloudServiceProviderDeploymentParameters: 'DeploymentParametersListResponse', updateCloudServiceProviderDeploymentParameters: 'DeploymentParametersListResponse', + getCloudServiceProviderDeploymentParametersMetaDetails: 'DeploymentParametersMetaListResponse', + createCloudServiceProviderDeploymentParametersMeta: 'DeploymentParametersMetaListResponse', updateCloudServiceProviderDeploymentParametersMeta: 'DeploymentParametersMetaListResponse', + listArtifactDeploymentParameters: 'DeploymentParametersListResponse', listPublicArtifactDeploymentParameters: 'DeploymentParametersListResponse', + getArtifactDeploymentParameters: 'DeploymentParametersListResponse', getPublicArtifactDeploymentParameters: 'DeploymentParametersListResponse', + createArtifactDeploymentParameters: 'DeploymentParametersListResponse', updateArtifactDeploymentParameters: 'DeploymentParametersListResponse', + createArtifactDeploymentUrl: 'DeploymentUrlResponse', createPublicArtifactDeploymentUrl: 'DeploymentUrlResponse', + // GPU catalog (the collection read is a bare array, wire-proven 2026-07-14) + getGpus: '[]GpuByPciResponse', + getGpuByPciDeviceId: 'GpuByPciResponse', getGpuByPciDeviceIdVendorId: 'GpuByPciResponse', getGpuByPciDeviceIdVendorIdSubsystemDeviceId: 'GpuByPciResponse', + createGpuByPciDeviceId: 'GpuByPciResponse', createGpuByPciFullKey: 'GpuByPciResponse', updateGpuByPciDeviceId: 'GpuByPciResponse', updateGpuByPciFullKey: 'GpuByPciResponse', + // encryption keys and workflows + listKeys: 'KeyListResponse', listArtifactsForKey: 'KeyArtifactListResponse', + getWorkflowStatus: 'WorkflowStatusResponse', + // health + status: 'HealthResponse', statusDetails: 'HealthResponse' +}; + +function sdkResponseClass(operationId) { + const base = String(operationId || '').replace(/(InOrg|InTeam|ForTeam|AsGuest|FromAnotherOrg|_\d+)+$/, ''); + return SDK_RESPONSE_CLASSES[base] || 'Response'; +} + +// --------------------------------------------------------------------------- +// Repair rules. Each rule: { name, applies(file, spec), fix(spec, file) -> note }. // A rule that applies must return a human-readable note of what it changed. // --------------------------------------------------------------------------- const RULES = [ + { + name: 'inject-sdk-responses', + applies: (file) => file === SDK_RESPONSE_FILE, + fix: (spec) => { + if (!fs.existsSync(SDK_SCHEMAS_PATH)) throw new Error(`${SDK_SCHEMAS_PATH} not found - run harvest_ngc_sdk_schemas.mjs first`); + const sdk = JSON.parse(fs.readFileSync(SDK_SCHEMAS_PATH, 'utf8')); + spec.components = spec.components || {}; + spec.components.schemas = spec.components.schemas || {}; + let added = 0; + for (const [name, schema] of Object.entries(sdk.schemas)) { + if (spec.components.schemas[name]) continue; // the definition's own schema wins + spec.components.schemas[name] = schema; + added++; + } + const counts = {}; + let injected = 0, generic = 0, untyped = 0; + // a 2xx whose schema resolves to nothing projectable (no properties, + // no items, not a scalar or array) is as good as absent + const resolve = (s) => { + let cur = s; + for (let i = 0; i < 10 && cur && cur.$ref; i++) cur = spec.components.schemas[cur.$ref.split('/').pop()]; + return cur; + }; + const projectable = (op) => { + const codes = Object.keys(op.responses || {}).filter((c) => c.startsWith('2')).sort(); + if (codes.length === 0) return false; + const content = op.responses[codes[0]].content || {}; + const media = content['application/json'] || Object.values(content)[0]; + if (!media) return codes.length > 0 && Object.keys(content).length > 0; // non-json content is left alone + const s = resolve(media.schema); + if (!s) return false; + if (s.properties || s.items || ['array', 'string', 'integer', 'number', 'boolean'].includes(s.type)) return true; + return false; + }; + forEachOperation(spec, (pathKey, item, verb, op) => { + if (!HTTP_VERBS.slice(0, 5).includes(verb)) return; + op.responses = op.responses || {}; + const had2xx = Object.keys(op.responses).some((c) => c.startsWith('2')); + if (had2xx && projectable(op)) return; + if (had2xx) { + untyped++; + for (const c of Object.keys(op.responses)) if (c.startsWith('2')) delete op.responses[c]; + } + let cls = sdkResponseClass(op.operationId); + let schema; + if (cls.startsWith('[]')) { + cls = cls.slice(2); + schema = { type: 'array', items: { $ref: `#/components/schemas/${cls}` } }; + } else { + schema = { $ref: `#/components/schemas/${cls}` }; + } + if (!spec.components.schemas[cls]) throw new Error(`response class ${cls} for ${op.operationId} is not in the definition or the SDK harvest`); + op.responses['200'] = { + description: `OK (response schema from the ngcsdk ${sdk.version} data class ${cls})`, + content: { 'application/json': { schema } } + }; + counts[cls] = (counts[cls] || 0) + 1; + injected++; + if (cls === 'Response') generic++; + }); + const top = Object.entries(counts).sort((a, b) => b[1] - a[1]).slice(0, 8).map(([k, v]) => `${k} x${v}`).join(', '); + return `${added} SDK data classes added to components.schemas (ngcsdk ${sdk.version}); 200 responses injected on ${injected} response-less operations (${untyped} of them declared an untyped 2xx; ${generic} on the bare Response envelope): ${top}`; + } + }, { name: 'stamp-missing-version-field', applies: (file, spec) => !spec.info || !spec.info.version, @@ -56,15 +241,160 @@ const RULES = [ spec.servers = [{ url: host }]; return `servers ${before} is relative/absent; set to ${host} (the host the definition is served from)`; } + }, + { + name: 'gateway-v2-path-prefix', + applies: (file) => !!GATEWAY_REWRITE[file], + fix: (spec, file) => { + const { server, from, to } = GATEWAY_REWRITE[file]; + const before = JSON.stringify(spec.servers || []); + const newPaths = {}; + let rewritten = 0; + for (const [pathKey, item] of Object.entries(spec.paths || {})) { + const newKey = pathKey.startsWith(from) ? to + pathKey.slice(from.length) : pathKey; + if (newKey !== pathKey) rewritten++; + if (newKey in newPaths) throw new Error(`gateway rewrite collision: ${pathKey} -> ${newKey}`); + newPaths[newKey] = item; + } + spec.paths = newPaths; + spec.servers = [{ url: server }]; + return `${rewritten} path(s) rewritten ${from} -> ${to}; servers ${before} -> ${server} (the public gateway serving the definition)`; + } + }, + { + name: 'snake-case-path-params', + applies: (file, spec) => Object.keys(spec.paths || {}).some((p) => pathTokens(p).some((t) => snakeCase(t) !== t)), + fix: (spec) => { + const newPaths = {}; + let keys = 0, params = 0; + const renameParams = (list) => { + for (const prm of list || []) { + if (prm && prm.in === 'path' && prm.name && snakeCase(prm.name) !== prm.name) { + prm.name = snakeCase(prm.name); + params++; + } + } + }; + for (const [pathKey, item] of Object.entries(spec.paths || {})) { + const newKey = pathKey.replace(/\{([^}]+)\}/g, (m, t) => `{${snakeCase(t)}}`); + if (newKey !== pathKey) keys++; + if (newKey in newPaths) throw new Error(`snake-case collision: ${pathKey} -> ${newKey}`); + newPaths[newKey] = item; + renameParams(item.parameters); + for (const verb of HTTP_VERBS) if (item[verb]) renameParams(item[verb].parameters); + } + spec.paths = newPaths; + for (const prm of Object.values(spec.components?.parameters || {})) renameParams([prm]); + return `${keys} path key(s) and ${params} path parameter name(s) converted to snake_case`; + } + }, + { + name: 'repair-path-param-names', + applies: (file, spec) => { + let found = false; + forEachOperation(spec, (pathKey, item, verb, op) => { + const tokens = pathTokens(pathKey); + for (const prm of [...(item.parameters || []), ...(op.parameters || [])]) { + if (prm && prm.in === 'path' && prm.name && !tokens.includes(prm.name)) found = true; + } + }); + return found; + }, + fix: (spec) => { + const notes = []; + let renamed = 0, dropped = 0; + const repair = (pathKey, owner) => { + const list = owner.parameters; + if (!list) return; + const tokens = pathTokens(pathKey); + const declared = list.filter((p) => p && p.in === 'path').map((p) => p.name); + const keep = []; + for (const prm of list) { + if (!prm || prm.in !== 'path' || tokens.includes(prm.name)) { keep.push(prm); continue; } + const unmatched = tokens.filter((t) => !declared.includes(t)); + if (unmatched.length === 0) { + // a stray path parameter with no template token at all + notes.push(`${pathKey}: "${prm.name}" dropped (no template token)`); + dropped++; + continue; + } + if (unmatched.length > 1) { + throw new Error(`cannot repair path parameter "${prm.name}" on ${pathKey}: ${unmatched.length} unmatched template tokens`); + } + notes.push(`${pathKey}: "${prm.name}" -> ${unmatched[0]}`); + declared.push(unmatched[0]); + prm.name = unmatched[0]; + renamed++; + keep.push(prm); + } + owner.parameters = keep; + }; + for (const [pathKey, item] of Object.entries(spec.paths || {})) { + repair(pathKey, item); + for (const verb of HTTP_VERBS) if (item[verb]) repair(pathKey, item[verb]); + } + const distinct = [...new Set(notes)]; + return `${renamed} path parameter name(s) renamed to their template token, ${dropped} stray path parameter(s) dropped (${distinct.slice(0, 4).join('; ')}${distinct.length > 4 ? `; +${distinct.length - 4} more` : ''})`; + } + }, + { + name: 'drop-cookie-params', + applies: (file, spec) => { + let found = false; + forEachOperation(spec, (pathKey, item, verb, op) => { + for (const prm of [...(item.parameters || []), ...(op.parameters || [])]) { + if (prm && prm.in === 'cookie') found = true; + } + }); + return found; + }, + fix: (spec) => { + const dropped = []; + const prune = (pathKey, owner) => { + if (!owner.parameters) return; + owner.parameters = owner.parameters.filter((prm) => { + const drop = prm && prm.in === 'cookie'; + if (drop) dropped.push(`${pathKey}: ${prm.name}`); + return !drop; + }); + }; + for (const [pathKey, item] of Object.entries(spec.paths || {})) { + prune(pathKey, item); + for (const verb of HTTP_VERBS) if (item[verb]) prune(pathKey, item[verb]); + } + return `${dropped.length} cookie parameter(s) dropped (any-sdk supports path, query, header and body parameters only): ${[...new Set(dropped)].slice(0, 6).join('; ')}${dropped.length > 6 ? '; ...' : ''}`; + } + }, + { + name: 'drop-prose-query-params', + applies: (file, spec) => { + let found = false; + forEachOperation(spec, (pathKey, item, verb, op) => { + for (const prm of [...(item.parameters || []), ...(op.parameters || [])]) { + if (prm && prm.in === 'query' && /\s/.test(prm.name || '')) found = true; + } + }); + return found; + }, + fix: (spec) => { + const dropped = []; + const prune = (pathKey, owner) => { + if (!owner.parameters) return; + owner.parameters = owner.parameters.filter((prm) => { + const drop = prm && prm.in === 'query' && /\s/.test(prm.name || ''); + if (drop) dropped.push(`${pathKey}: "${prm.name}"`); + return !drop; + }); + }; + for (const [pathKey, item] of Object.entries(spec.paths || {})) { + prune(pathKey, item); + for (const verb of HTTP_VERBS) if (item[verb]) prune(pathKey, item[verb]); + } + return `${dropped.length} query parameter(s) with prose names dropped (wire names unknown): ${[...new Set(dropped)].slice(0, 6).join('; ')}${dropped.length > 6 ? '; ...' : ''}`; + } } ]; -// server assignment for definitions that declare no absolute server; the -// value is the public gateway the definition is served from -const SERVER_BY_SOURCE = { - 'ngc_kas.json': 'https://api.ngc.nvidia.com' -}; - // --------------------------------------------------------------------------- // Clean + validate every manifest file (in memory first; write only if all // specs validate) @@ -107,6 +437,7 @@ for (const file of Object.keys(manifest.files || {}).sort()) { openapi: spec.openapi || spec.swagger, title: spec.info?.title ?? null, version: spec.info?.version ?? null, + servers: (spec.servers || []).map((s) => s.url), paths: Object.keys(spec.paths || {}).length, fixes, notes, @@ -119,6 +450,7 @@ for (const file of Object.keys(manifest.files || {}).sort()) { hasErrors = true; } else { console.log(`${file}: valid (${fixes.length} fix(es), ${notes.length} note(s))`); + for (const f of fixes) console.log(` - ${f.rule}: ${f.note}`); cleaned.set(file, spec); } } diff --git a/provider-dev/scripts/fetch_nvcf_spec.mjs b/provider-dev/scripts/fetch_nvcf_spec.mjs index 13c6d27..cbea0a9 100644 --- a/provider-dev/scripts/fetch_nvcf_spec.mjs +++ b/provider-dev/scripts/fetch_nvcf_spec.mjs @@ -12,6 +12,7 @@ import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; +import { canonicalJson } from './lib/canonical.mjs'; const NVCF_SPEC_URL = 'https://api.nvcf.nvidia.com/v3/openapi'; const DOCS_PAGE = 'https://docs.nvidia.com/nvcf/api'; @@ -42,7 +43,8 @@ if (!spec.openapi || !spec.paths || !spec.info) { } fs.mkdirSync(downloadDir, { recursive: true }); -fs.writeFileSync(path.join(downloadDir, outFile), text); +// written as canonical JSON (sorted keys) so identical content pins identically +fs.writeFileSync(path.join(downloadDir, outFile), canonicalJson(spec)); const manifest = fs.existsSync(manifestPath) ? JSON.parse(fs.readFileSync(manifestPath, 'utf8')) diff --git a/provider-dev/scripts/harvest_ngc_sdk_schemas.mjs b/provider-dev/scripts/harvest_ngc_sdk_schemas.mjs new file mode 100644 index 0000000..c21a115 --- /dev/null +++ b/provider-dev/scripts/harvest_ngc_sdk_schemas.mjs @@ -0,0 +1,222 @@ +#!/usr/bin/env node + +// Harvest response schemas for the NGC registry surface from the ngcsdk +// Python SDK (the archetype-2 fallback, applied to the response side only). +// +// Why: the harvested Private Artifacts (Models) definition +// (provider-dev/downloaded/ngc_models.json) declares request bodies and +// parameters for 333 operations but a 2xx response on only 30 of them - it +// is a request-side definition. StackQL projects rows from response +// schemas, so the registry/catalog surface needs them from somewhere. The +// ngcsdk wheel on PyPI ships the SDK's auto-generated data classes +// (registry/data/model/*.py: Model, ModelListResponse, ArtifactResponse, +// PaginationInfo, ...) - typed property by property, generated from the +// same API definition. This script converts them to JSON Schema +// deterministically; clean_specs.mjs then attaches them as the 200 +// responses of the response-less operations (rule inject-sdk-responses). +// +// Pinned artifact: a PyPI wheel is immutable, so (version, sha256) is a +// reproducible input. The wheel itself is cached in provider-dev/downloaded/ +// (gitignored); the derived provider-dev/downloaded/ngc_sdk_schemas.json is +// committed. Fails without writing on a hash mismatch or a parse failure. +// +// Usage: node provider-dev/scripts/harvest_ngc_sdk_schemas.mjs + +import crypto from 'crypto'; +import fs from 'fs'; +import path from 'path'; +import zlib from 'zlib'; +import { fileURLToPath } from 'url'; + +const NGCSDK_VERSION = '4.36.6'; +const NGCSDK_WHEEL = `ngcsdk-${NGCSDK_VERSION}-py3-none-any.whl`; +const NGCSDK_URL = `https://files.pythonhosted.org/packages/3c/cf/e4901fd5a50621d3f058d0ba4f732651a86d672fb76b7a404473b2b23ac1/${NGCSDK_WHEEL}`; +const NGCSDK_SHA256 = '8cf4ce3bd071b3d2e24d40f2c66abc2c2b49022b53d400a2eb9fe6018fe3f343'; +// the data-class packages harvested (path prefix inside the wheel) +const PACKAGES = ['registry/data/model/']; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const downloadDir = path.join(repoRoot, 'provider-dev', 'downloaded'); +const wheelPath = path.join(downloadDir, NGCSDK_WHEEL); +const outPath = path.join(downloadDir, 'ngc_sdk_schemas.json'); +const manifestPath = path.join(downloadDir, 'download_manifest.json'); + +// --------------------------------------------------------------------------- +// minimal zip reader (central directory + deflate), no dependencies +// --------------------------------------------------------------------------- + +function readZip(buf) { + // locate the end-of-central-directory record + let eocd = -1; + for (let i = buf.length - 22; i >= Math.max(0, buf.length - 65557); i--) { + if (buf.readUInt32LE(i) === 0x06054b50) { eocd = i; break; } + } + if (eocd < 0) throw new Error('not a zip file (no end-of-central-directory record)'); + const entries = buf.readUInt16LE(eocd + 10); + let off = buf.readUInt32LE(eocd + 16); + const files = new Map(); + for (let n = 0; n < entries; n++) { + if (buf.readUInt32LE(off) !== 0x02014b50) throw new Error('bad central directory header'); + const method = buf.readUInt16LE(off + 10); + const compressedSize = buf.readUInt32LE(off + 20); + const nameLen = buf.readUInt16LE(off + 28); + const extraLen = buf.readUInt16LE(off + 30); + const commentLen = buf.readUInt16LE(off + 32); + const localOff = buf.readUInt32LE(off + 42); + const name = buf.toString('utf8', off + 46, off + 46 + nameLen); + files.set(name, { method, compressedSize, localOff }); + off += 46 + nameLen + extraLen + commentLen; + } + return { + names: [...files.keys()], + read(name) { + const f = files.get(name); + if (!f) throw new Error(`no such zip entry: ${name}`); + if (buf.readUInt32LE(f.localOff) !== 0x04034b50) throw new Error(`bad local header for ${name}`); + const nameLen = buf.readUInt16LE(f.localOff + 26); + const extraLen = buf.readUInt16LE(f.localOff + 28); + const start = f.localOff + 30 + nameLen + extraLen; + const data = buf.subarray(start, start + f.compressedSize); + if (f.method === 0) return data.toString('utf8'); + if (f.method === 8) return zlib.inflateRawSync(data).toString('utf8'); + throw new Error(`unsupported zip compression method ${f.method} for ${name}`); + } + }; +} + +// --------------------------------------------------------------------------- +// data-class parser: the SDK classes are generated by one template, so the +// parse is a small set of anchored patterns +// --------------------------------------------------------------------------- + +const SCALAR_TYPES = { + int: { type: 'integer' }, + long: { type: 'integer', format: 'int64' }, + float: { type: 'number' }, + bool: { type: 'boolean' }, + string_types: { type: 'string' }, + str: { type: 'string' }, + dict: { type: 'object' }, + list: { type: 'array' } +}; + +function parseDataClass(source, fileName) { + const classMatch = source.match(/^class (\w+)\(object\):\n(?:\s+"""([^"]*)""")?/m); + if (!classMatch) { + // enum-style modules and helpers carry no propDict constructor + if (!/def __init__\(self, propDict=None\)/.test(source)) return null; + throw new Error(`${fileName}: unrecognised class layout`); + } + const [, className, classDoc = ''] = classMatch; + const props = {}; + // property names, in declaration order, from the constructor + const initBody = source.slice(source.indexOf('def __init__(self, propDict=None)')); + const initEnd = initBody.search(/\n @property/); + const init = initEnd > 0 ? initBody.slice(0, initEnd) : initBody; + for (const m of init.matchAll(/self\.(\w+) = \(/g)) props[m[1]] = {}; + for (const name of Object.keys(props)) { + const schema = {}; + // list element class: [ Foo(i) for i in propDict["name"] ] + const elem = init.match(new RegExp(`else \\[ (\\w+)\\(i\\)\\s+for i in propDict\\["${name}"\\] \\]`)); + // setter type guard + const setter = source.match(new RegExp(`@${name}\\.setter\\n\\s+def ${name}\\(self, value\\):\\n([\\s\\S]*?)(?=\\n @|\\n def toDict)`)); + if (!setter) throw new Error(`${fileName}: no setter for ${className}.${name}`); + const guard = setter[1].match(/isinstance\(value, (\w+)\)/); + if (!guard) throw new Error(`${fileName}: no type guard for ${className}.${name}`); + const t = guard[1]; + if (t === 'list') { + schema.type = 'array'; + schema.items = elem ? { $ref: `#/components/schemas/${elem[1]}` } : { type: 'string' }; + } else if (SCALAR_TYPES[t]) { + Object.assign(schema, SCALAR_TYPES[t]); + } else { + schema.$ref = `#/components/schemas/${t}`; + } + // getter docstring: """: """ + const getter = source.match(new RegExp(`@property\\n\\s+def ${name}\\(self\\):\\n\\s+"""([^"]*)"""`)); + if (getter) { + const doc = getter[1].trim().replace(/^[\w<>]+:\s*/, ''); + if (doc && !schema.$ref) schema.description = doc; + else if (doc && schema.$ref) schema['x-description'] = doc; // siblings of $ref are ignored by resolvers + } + props[name] = schema; + } + return { className, schema: { type: 'object', ...(classDoc.trim() ? { description: classDoc.trim() } : {}), properties: props } }; +} + +// --------------------------------------------------------------------------- +// main +// --------------------------------------------------------------------------- + +fs.mkdirSync(downloadDir, { recursive: true }); +let wheel; +if (fs.existsSync(wheelPath)) { + wheel = fs.readFileSync(wheelPath); +} else { + console.log(`Fetching ${NGCSDK_URL}`); + const res = await fetch(NGCSDK_URL, { signal: AbortSignal.timeout(120000) }); + if (!res.ok) { + console.error(`Error: HTTP ${res.status} from ${NGCSDK_URL} - nothing written`); + process.exit(1); + } + wheel = Buffer.from(await res.arrayBuffer()); +} +const sha256 = crypto.createHash('sha256').update(wheel).digest('hex'); +if (sha256 !== NGCSDK_SHA256) { + console.error(`Error: ${NGCSDK_WHEEL} sha256 ${sha256} does not match the pinned ${NGCSDK_SHA256} - nothing written`); + process.exit(1); +} +if (!fs.existsSync(wheelPath)) fs.writeFileSync(wheelPath, wheel); + +const zip = readZip(wheel); +const schemas = {}; +const skipped = []; +for (const name of zip.names.sort()) { + if (!PACKAGES.some((p) => name.startsWith(p)) || !name.endsWith('.py') || name.endsWith('__init__.py')) continue; + const parsed = parseDataClass(zip.read(name), name); + if (!parsed) { skipped.push(name); continue; } + if (schemas[parsed.className]) throw new Error(`duplicate data class ${parsed.className}`); + schemas[parsed.className] = parsed.schema; +} + +// every $ref must resolve within the harvested set +const missing = new Set(); +for (const [cls, schema] of Object.entries(schemas)) { + for (const [prop, s] of Object.entries(schema.properties)) { + const ref = s.$ref || s.items?.$ref; + if (ref && !schemas[ref.split('/').pop()]) missing.add(`${cls}.${prop} -> ${ref.split('/').pop()}`); + } +} +if (missing.size > 0) { + console.error(`Error: ${missing.size} unresolved data-class reference(s) - nothing written:`); + for (const m of [...missing].sort()) console.error(` ${m}`); + process.exit(1); +} + +const out = { + package: 'ngcsdk', + version: NGCSDK_VERSION, + wheel: NGCSDK_WHEEL, + url: NGCSDK_URL, + sha256: NGCSDK_SHA256, + packages: PACKAGES, + classes: Object.keys(schemas).length, + enumModulesSkipped: skipped.map((n) => n.split('/').pop().replace(/\.py$/, '')), + schemas +}; +fs.writeFileSync(outPath, JSON.stringify(out, null, 2) + '\n'); + +const manifest = fs.existsSync(manifestPath) ? JSON.parse(fs.readFileSync(manifestPath, 'utf8')) : { files: {} }; +manifest.ngcSdk = { + package: 'ngcsdk', + version: NGCSDK_VERSION, + url: NGCSDK_URL, + sha256: NGCSDK_SHA256, + derived: 'ngc_sdk_schemas.json', + packages: PACKAGES, + classes: Object.keys(schemas).length, + note: 'response schemas for the registry/catalog surface: the harvested models definition declares no 2xx responses on most operations; the SDK data classes are the pinned response-side source (archetype-2 fallback, response side only)' +}; +fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n'); + +console.log(`Harvested ${Object.keys(schemas).length} data classes from ${NGCSDK_WHEEL} (${skipped.length} enum/helper modules skipped) -> ${outPath}`); diff --git a/provider-dev/scripts/harvest_ngc_spec.mjs b/provider-dev/scripts/harvest_ngc_spec.mjs index 313759b..0e0854f 100644 --- a/provider-dev/scripts/harvest_ngc_spec.mjs +++ b/provider-dev/scripts/harvest_ngc_spec.mjs @@ -1,28 +1,36 @@ #!/usr/bin/env node -// Harvest the NGC API definitions behind the API explorer at -// https://docs.ngc.nvidia.com/api/. +// Harvest the NGC API definitions behind the NGC API explorer +// (https://docs.ngc.nvidia.com/api/). // -// The explorer is a swagger-ui bundle over a hardcoded list of per-service -// OpenAPI definition URLs. This script: -// 1. fetches the explorer HTML and locates the main JS bundle -// 2. extracts the {url, name} definition list from the bundle -// 3. fetches every in-scope definition and writes it to -// provider-dev/downloaded/ngc_.json -// 4. records every entry (fetched / unreachable / out-of-scope) with -// evidence in download_manifest.json +// Provenance: the explorer was a swagger-ui bundle over a hardcoded list of +// per-service OpenAPI definition URLs, and the phase-1 harvest (2026-07-14) +// extracted that list from the bundle. The explorer has since moved to a +// hosted documentation platform (ReadMe) whose pages no longer carry the +// definition list, but the definitions themselves are still served from +// the URLs the bundle declared - and the NGC API definition (orgs, teams, +// users) is also served by the public gateway. The list below is that +// pinned catalogue: every entry the explorer displayed, with its URL and +// the scope decision (sibling scope notes in CLAUDE.md). This script +// fetches every in-scope definition, writes it to +// provider-dev/downloaded/ngc_.json, and records every entry +// (fetched / unreachable / out-of-scope) with evidence in +// download_manifest.json. // -// Fails without writing if the explorer page, the bundle, the definition -// list, or any REQUIRED in-scope definition cannot be retrieved. In-scope -// definitions marked optional: true are services whose hosts are not -// publicly routable (recorded as unreachable evidence for the -// harvest-vs-fallback decision rather than failing the build). +// Fails without writing if any REQUIRED in-scope definition cannot be +// retrieved. In-scope definitions marked optional: true are services whose +// hosts were not publicly routable at pin time (recorded as unreachable +// evidence for the harvest-vs-fallback decision rather than failing the +// build); the day one of them answers, its definition lands in +// provider-dev/downloaded/ and the inventory build will flag its +// operations as unclassified. // // Usage: node provider-dev/scripts/harvest_ngc_spec.mjs import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; +import { canonicalJson } from './lib/canonical.mjs'; const EXPLORER_URL = 'https://docs.ngc.nvidia.com/api/'; @@ -30,82 +38,68 @@ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..' const downloadDir = path.join(repoRoot, 'provider-dev', 'downloaded'); const manifestPath = path.join(downloadDir, 'download_manifest.json'); -// Scope decision per explorer entry (keyed by the display name in the -// bundle). Out-of-scope reasons follow the sibling scope notes in CLAUDE.md. -const SCOPE = { - 'Private Artifacts (Models) API': { key: 'models', inScope: true, note: 'registry artifact metadata (models, resources, containers, helm charts)' }, - 'KASv1 API (Deprecated)': { key: 'kas', inScope: true, note: 'the NGC API Documentation definition (orgs, teams, users) - explorer labels it KASv1 (Deprecated); deprecation is handled per path in mapping' }, - 'Org Mgmt Service API': { key: 'oms', inScope: true, optional: true, note: 'organization management' }, - 'User IAM Sevice API': { key: 'uis', inScope: true, optional: true, note: 'user identity and access management (name spelled sic in the explorer)' }, - 'Search API': { key: 'search', inScope: true, optional: true, note: 'catalog/registry search' }, - 'Metadata API': { key: 'meta', inScope: true, optional: true, note: 'artifact metadata' }, - 'Publishing API': { key: 'publishing', inScope: true, optional: true, note: 'artifact publishing' }, - 'Fleet Command API': { key: 'ecm', inScope: false, note: 'Fleet Command is its own product surface, out of scope' }, - 'Batch API': { key: 'batch', inScope: false, note: 'Base Command batch jobs, out of scope' }, - 'Subscription Service API': { key: 'subscription', inScope: false, note: 'subscription/billing surface - candidate usage service, host not publicly routable; revisit if reachable' }, - 'Notification Service API': { key: 'notification', inScope: false, note: 'notification delivery, out of scope' } -}; +// The explorer's definition catalogue (display name, URL) with the scope +// decision per entry. `urls` are tried in order; the first that answers +// with an OpenAPI document wins. +const CATALOGUE = [ + { name: 'KASv1 API (Deprecated)', key: 'kas', inScope: true, + urls: ['https://api.ngc.nvidia.com/v3/api-docs', 'https://api-internal.ngc.nvidia.com/v3/api-docs'], + note: 'the NGC API Documentation definition (orgs, teams, users) - the explorer labelled it KASv1 (Deprecated); deprecation is handled per path in mapping; served by the public gateway' }, + { name: 'Private Artifacts (Models) API', key: 'models', inScope: true, + urls: ['https://models.ngc.nvidia.com/v3/openapi'], + note: 'registry artifact metadata (models, resources, containers, helm charts); declared on /v1 paths that the public gateway serves under /v2 (clean_specs gateway-v2-path-prefix)' }, + { name: 'Org Mgmt Service API', key: 'oms', inScope: true, optional: true, urls: ['https://oms.ngc.nvidia.com/v3/openapi'], note: 'organization management' }, + { name: 'User IAM Sevice API', key: 'uis', inScope: true, optional: true, urls: ['https://uis.ngc.nvidia.com/v3/openapi'], note: 'user identity and access management (name spelled sic in the explorer)' }, + { name: 'Search API', key: 'search', inScope: true, optional: true, urls: ['https://search.ngc.nvidia.com/v3/api-docs', 'https://api.ngc.nvidia.com/v3/search/api-docs'], note: 'catalog/registry search' }, + { name: 'Metadata API', key: 'meta', inScope: true, optional: true, urls: ['https://meta.ngc.nvidia.com/v3/api-docs', 'https://api.ngc.nvidia.com/v3/meta/api-docs'], note: 'artifact metadata' }, + { name: 'Publishing API', key: 'publishing', inScope: true, optional: true, urls: ['https://publishing.ngc.nvidia.com/v3/api-docs'], note: 'artifact publishing' }, + { name: 'Fleet Command API', key: 'ecm', inScope: false, urls: ['https://api.ngc.nvidia.com/v3/ecm/openapi'], note: 'Fleet Command is its own product surface, out of scope' }, + { name: 'Batch API', key: 'batch', inScope: false, urls: ['https://batch.ngc.nvidia.com/v3/openapi'], note: 'Base Command batch jobs, out of scope' }, + { name: 'Subscription Service API', key: 'subscription', inScope: false, urls: ['https://subscription.ngc.nvidia.com/v3/openapi'], note: 'subscription/billing surface - candidate usage service, host not publicly routable; revisit if reachable' }, + { name: 'Notification Service API', key: 'notification', inScope: false, urls: ['https://notification.ngc.nvidia.com/v3/openapi'], note: 'notification delivery, out of scope' } +]; -async function fetchText(url, timeoutMs = 60000) { - const res = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) }); - if (!res.ok) throw new Error(`HTTP ${res.status} from ${url}`); - return res.text(); +async function fetchDefinition(url, timeoutMs = 60000) { + const res = await fetch(url, { signal: AbortSignal.timeout(timeoutMs), headers: { 'User-Agent': 'stackql-provider-nvidia harvest' } }); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const text = await res.text(); + const spec = JSON.parse(text); + if (!(spec.openapi || spec.swagger) || !spec.paths) throw new Error('payload is not an OpenAPI document'); + return { text, spec }; } -// 1. explorer HTML -> bundle path -const html = await fetchText(EXPLORER_URL); -const bundleMatch = html.match(/src="(\.\/static\/js\/main\.[0-9a-f]+\.js)"/); -if (!bundleMatch) { - console.error('Error: could not locate the main JS bundle in the explorer HTML - nothing written'); - process.exit(1); -} -const bundleUrl = new URL(bundleMatch[1], EXPLORER_URL).href; -console.log(`Explorer bundle: ${bundleUrl}`); - -// 2. bundle -> definition list -const bundle = await fetchText(bundleUrl); -const entries = [...bundle.matchAll(/\{url:"(https:\/\/[^"]+)",name:"([^"]+)"\}/g)] - .map((m) => ({ url: m[1], name: m[2] })); -// the bundle also declares definitions it then filters out of the explorer -// display (QuickStart/PYM and Secrets Manager at the time of pinning); only -// entries present in the SCOPE map (the displayed set) are considered -if (entries.length === 0) { - console.error('Error: no {url,name} definition entries found in the explorer bundle - nothing written'); - process.exit(1); -} -console.log(`Found ${entries.length} definition entries in the bundle`); - -// 3. fetch in-scope definitions const results = {}; -const outputs = new Map(); // file name -> body +const outputs = new Map(); // file name -> { text, url, name, spec } let failures = 0; -for (const { url, name } of entries) { - const scope = SCOPE[name]; - if (!scope) { - results[name] = { url, status: 'ignored', note: 'declared in the bundle but not displayed by the explorer' }; - console.log(`ignored ${name}`); +for (const entry of CATALOGUE) { + if (!entry.inScope) { + results[entry.name] = { url: entry.urls[0], status: 'out-of-scope', note: entry.note }; + console.log(`out-of-scope ${entry.name} (${entry.note})`); continue; } - if (!scope.inScope) { - results[name] = { url, status: 'out-of-scope', note: scope.note }; - console.log(`out-of-scope ${name} (${scope.note})`); - continue; + let fetched = null; + const errors = []; + for (const url of entry.urls) { + try { + const { text, spec } = await fetchDefinition(url); + fetched = { text, spec, url }; + break; + } catch (e) { + errors.push(`${url}: ${e.message}`); + } } - try { - const text = await fetchText(url); - const spec = JSON.parse(text); - if (!(spec.openapi || spec.swagger) || !spec.paths) throw new Error('payload is not an OpenAPI document'); - const file = `ngc_${scope.key}.json`; - outputs.set(file, { text, url, name, spec }); - results[name] = { url, status: 'fetched', file, note: scope.note }; - console.log(`fetched ${name} -> ${file} (openapi=${spec.openapi || spec.swagger}, paths=${Object.keys(spec.paths).length})`); - } catch (e) { - results[name] = { url, status: 'unreachable', error: e.message, note: scope.note }; - if (scope.optional) { - console.log(`unreachable ${name} (optional): ${e.message}`); + if (fetched) { + const file = `ngc_${entry.key}.json`; + outputs.set(file, { ...fetched, name: entry.name }); + results[entry.name] = { url: fetched.url, status: 'fetched', file, note: entry.note }; + console.log(`fetched ${entry.name} -> ${file} (openapi=${fetched.spec.openapi || fetched.spec.swagger}, version=${fetched.spec.info?.version}, paths=${Object.keys(fetched.spec.paths).length}) from ${fetched.url}`); + } else { + results[entry.name] = { url: entry.urls[0], status: 'unreachable', error: errors.join('; '), note: entry.note }; + if (entry.optional) { + console.log(`unreachable ${entry.name} (optional): ${errors.join('; ')}`); } else { - console.error(`FAILED ${name} (required): ${e.message}`); + console.error(`FAILED ${entry.name} (required): ${errors.join('; ')}`); failures++; } } @@ -116,7 +110,6 @@ if (failures > 0) { process.exit(1); } -// 4. write outputs + manifest fs.mkdirSync(downloadDir, { recursive: true }); const manifest = fs.existsSync(manifestPath) ? JSON.parse(fs.readFileSync(manifestPath, 'utf8')) @@ -124,7 +117,9 @@ const manifest = fs.existsSync(manifestPath) manifest.files = manifest.files || {}; for (const [file, { text, url, name, spec }] of outputs) { - fs.writeFileSync(path.join(downloadDir, file), text); + // written as canonical JSON (sorted keys): the definition servers + // serialise maps in a non-deterministic order between fetches + fs.writeFileSync(path.join(downloadDir, file), canonicalJson(spec)); manifest.files[file] = { url, info: { @@ -138,7 +133,7 @@ for (const [file, { text, url, name, spec }] of outputs) { } manifest.ngcHarvest = { explorer: EXPLORER_URL, - bundle: bundleUrl, + catalogue: 'pinned in harvest_ngc_spec.mjs (the explorer moved to a hosted documentation platform after 2026-07-14 and no longer publishes its definition list; the definition URLs it declared still serve)', entries: results }; fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n'); diff --git a/provider-dev/scripts/lib/canonical.mjs b/provider-dev/scripts/lib/canonical.mjs new file mode 100644 index 0000000..8bdeac2 --- /dev/null +++ b/provider-dev/scripts/lib/canonical.mjs @@ -0,0 +1,19 @@ +// Canonical JSON for the pinned downloads. NVIDIA's definition servers +// serialise Java maps in a non-deterministic key order (the models +// definition's securitySchemes scopes map changes order between two fetches +// seconds apart) - byte-for-byte pins would drift on every download. The +// fetchers write every definition with object keys sorted recursively +// (array order untouched), so the committed file and its sha256 are stable +// for identical content and a pin drift means real upstream change. + +export function sortKeysDeep(value) { + if (Array.isArray(value)) return value.map(sortKeysDeep); + if (value && typeof value === 'object') { + return Object.fromEntries(Object.keys(value).sort().map((k) => [k, sortKeysDeep(value[k])])); + } + return value; +} + +export function canonicalJson(value) { + return JSON.stringify(sortKeysDeep(value), null, 2) + '\n'; +} diff --git a/provider-dev/scripts/lib/inventory.mjs b/provider-dev/scripts/lib/inventory.mjs new file mode 100644 index 0000000..4b839f7 --- /dev/null +++ b/provider-dev/scripts/lib/inventory.mjs @@ -0,0 +1,78 @@ +// Shared access to the endpoint inventory (provider-dev/config/ +// endpoint_inventory.csv - the single source of truth produced by +// build_inventory.mjs). Used by bin/split.mjs (service assignment, org +// rebase, per-service host), map_operations.mjs (resource / method / verb / +// objectKey) and post_process.mjs (path-level server templates, casing, +// pagination). Regenerate the inventory to change any of it; never edit the +// CSV by hand. + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..'); +export const inventoryPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); +export const serversPath = path.join(repoRoot, 'provider-dev', 'config', 'servers.json'); + +export function parseCsv(text) { + const rows = []; + let row = [], field = '', inQuotes = false; + for (let i = 0; i < text.length; i++) { + const c = text[i]; + if (inQuotes) { + if (c === '"') { + if (text[i + 1] === '"') { field += '"'; i++; } else { inQuotes = false; } + } else { field += c; } + } else if (c === '"') { + inQuotes = true; + } else if (c === ',') { + row.push(field); field = ''; + } else if (c === '\n' || c === '\r') { + if (c === '\r' && text[i + 1] === '\n') i++; + row.push(field); field = ''; + if (row.length > 1 || row[0] !== '') rows.push(row); + row = []; + } else { field += c; } + } + if (field !== '' || row.length > 0) { row.push(field); rows.push(row); } + return rows; +} + +export const csvField = (v) => (/[",\n\r]/.test(String(v)) ? `"${String(v).replace(/"/g, '""')}"` : String(v)); + +export function loadServers() { + return JSON.parse(fs.readFileSync(serversPath, 'utf8')); +} + +// Returns { rows, header, byOp, byServiceOp, hostByService }: +// rows every inventory row as an object +// byOp `${file}::${operationId}` -> row (every operation) +// byServiceOp `${service}::${operationId}` -> row (mapped operations) +// hostByService service -> host (one per service, validated by the inventory) +export function loadInventory() { + if (!fs.existsSync(inventoryPath)) { + throw new Error(`${inventoryPath} not found - run build_inventory.mjs first`); + } + const table = parseCsv(fs.readFileSync(inventoryPath, 'utf8')); + const header = table[0]; + const rows = table.slice(1).map((r) => Object.fromEntries(header.map((h, i) => [h, r[i] ?? '']))); + const byOp = new Map(); + const byServiceOp = new Map(); + const hostByService = new Map(); + for (const row of rows) { + if (row.operation_id) { + const key = `${row.file}::${row.operation_id}`; + if (byOp.has(key)) throw new Error(`inventory has a duplicate operationId ${key}`); + byOp.set(key, row); + } + if (row.service) { + const key = `${row.service}::${row.operation_id}`; + if (byServiceOp.has(key)) throw new Error(`inventory has a duplicate mapped operationId ${key}`); + byServiceOp.set(key, row); + const prev = hostByService.get(row.service); + if (prev && prev !== row.host) throw new Error(`service ${row.service} spans hosts ${prev} and ${row.host}`); + hostByService.set(row.service, row.host); + } + } + return { rows, header, byOp, byServiceOp, hostByService }; +} diff --git a/provider-dev/scripts/map_operations.mjs b/provider-dev/scripts/map_operations.mjs index 93216af..bfec2d8 100644 --- a/provider-dev/scripts/map_operations.mjs +++ b/provider-dev/scripts/map_operations.mjs @@ -7,8 +7,15 @@ // and re-runnable; regenerate the inventory to change mappings, never edit // either CSV by hand. // +// all_services.csv is committed as the durable record of every +// operation -> resource.method mapping: a diff there on a regeneration is a +// breaking-change review (a method moving resource, a resource renamed), +// not noise. This script prints that diff against the committed CSV before +// overwriting it. +// // Validates before writing: // - every all_services.csv row resolves to a mapped inventory operation +// (by service + operationId) on the same rebased path and verb // - every mapped inventory operation appears in all_services.csv // - method names are unique per (service, resource) // - overloaded SQL verbs have unique required path-param signatures per @@ -19,83 +26,16 @@ import fs from 'fs'; import path from 'path'; +import { execSync } from 'child_process'; import { fileURLToPath } from 'url'; +import { loadInventory, parseCsv, csvField } from './lib/inventory.mjs'; const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); -const inventoryPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); const csvPath = path.join(repoRoot, 'provider-dev', 'config', 'all_services.csv'); -// --------------------------------------------------------------------------- -// CSV helpers (RFC 4180, preserves column order) -// --------------------------------------------------------------------------- - -function parseCsv(text) { - const rows = []; - let row = [], field = '', inQuotes = false; - for (let i = 0; i < text.length; i++) { - const c = text[i]; - if (inQuotes) { - if (c === '"') { - if (text[i + 1] === '"') { field += '"'; i++; } else { inQuotes = false; } - } else { field += c; } - } else if (c === '"') { - inQuotes = true; - } else if (c === ',') { - row.push(field); field = ''; - } else if (c === '\n' || c === '\r') { - if (c === '\r' && text[i + 1] === '\n') i++; - row.push(field); field = ''; - if (row.length > 1 || row[0] !== '') rows.push(row); - row = []; - } else { field += c; } - } - if (field !== '' || row.length > 0) { row.push(field); rows.push(row); } - return rows; -} - -const csvField = (v) => (/[",\n\r]/.test(v) ? `"${String(v).replace(/"/g, '""')}"` : String(v)); - -// split rewrites path-param names to snake_case ({org-name} -> {org_name}); -// canonicalize both sides for the join -const canonPath = (p) => p.replace(/\{[^}]+\}/g, (m) => m.replace(/-/g, '_')); const pathParams = (p) => (p.match(/\{[^}]+\}/g) || []).map((s) => s.slice(1, -1)).sort().join(','); -// --------------------------------------------------------------------------- -// Load the inventory: mapped rows keyed by operationId and by (path, verb) -// --------------------------------------------------------------------------- - -const inv = parseCsv(fs.readFileSync(inventoryPath, 'utf8')); -const invCol = Object.fromEntries(inv[0].map((h, i) => [h, i])); - -const byOpId = new Map(); -const dupOpIds = new Set(); -const byPathVerb = new Map(); -const mappedInventory = []; - -for (const row of inv.slice(1)) { - if (!row[invCol.service]) continue; // skipped operation - const entry = { - service: row[invCol.service], - resource: row[invCol.resource], - method: row[invCol.method], - sqlVerb: row[invCol.sql_verb], - objectKey: row[invCol.object_key_candidate], - path: row[invCol.path], - verb: row[invCol.verb] - }; - mappedInventory.push(entry); - const opId = row[invCol.operation_id]; - if (opId) { - if (byOpId.has(opId)) dupOpIds.add(opId); - byOpId.set(opId, entry); - } - byPathVerb.set(`${canonPath(entry.path)}::${entry.verb}`, entry); -} -for (const opId of dupOpIds) byOpId.delete(opId); // ambiguous - fall back to path+verb - -// --------------------------------------------------------------------------- -// Fill all_services.csv -// --------------------------------------------------------------------------- +const { byServiceOp } = loadInventory(); const rows = parseCsv(fs.readFileSync(csvPath, 'utf8')); const header = rows[0]; @@ -111,28 +51,28 @@ const errors = []; const matched = new Set(); for (const row of rows.slice(1)) { + const service = row[col.filename].replace(/\.yaml$/, ''); const opId = row[col.operationId]; - const entry = (opId && byOpId.get(opId)) || byPathVerb.get(`${canonPath(row[col.path])}::${row[col.verb]}`); + const entry = byServiceOp.get(`${service}::${opId}`); if (!entry) { errors.push(`no inventory mapping for ${row[col.filename]} ${row[col.verb]} ${row[col.path]} (${opId || 'no operationId'})`); continue; } - const service = row[col.filename].replace(/\.yaml$/, ''); - if (service !== entry.service) { - errors.push(`service mismatch for ${row[col.verb]} ${row[col.path]}: split put it in ${service}, inventory says ${entry.service}`); + if (entry.rebased_path !== row[col.path] || entry.verb !== row[col.verb]) { + errors.push(`path/verb mismatch for ${service} ${opId}: split has ${row[col.verb]} ${row[col.path]}, inventory has ${entry.verb} ${entry.rebased_path}`); continue; } - matched.add(`${canonPath(entry.path)}::${entry.verb}`); + matched.add(`${service}::${opId}`); row[col.stackql_resource_name] = entry.resource; row[col.stackql_method_name] = entry.method; - row[col.stackql_verb] = entry.sqlVerb; + row[col.stackql_verb] = entry.sql_verb; // multi-array-prop candidates stay empty pending a wire check - row[col.stackql_object_key] = /^\$\.[A-Za-z_]+$/.test(entry.objectKey) ? entry.objectKey : ''; + row[col.stackql_object_key] = /^\$\.[A-Za-z_]+$/.test(entry.object_key_candidate) ? entry.object_key_candidate : ''; } -for (const entry of mappedInventory) { - if (!matched.has(`${canonPath(entry.path)}::${entry.verb}`)) { - errors.push(`in inventory but not in all_services.csv: ${entry.verb} ${entry.path} (${entry.service}.${entry.resource}.${entry.method})`); +for (const [key, entry] of byServiceOp) { + if (!matched.has(key)) { + errors.push(`in inventory but not in all_services.csv: ${entry.verb} ${entry.rebased_path} (${entry.service}.${entry.resource}.${entry.method})`); } } @@ -154,7 +94,7 @@ for (const row of rows.slice(1)) { const sqlVerb = row[col.stackql_verb]; if (sqlVerb === 'exec') continue; - const sigKey = `${service}.${resource}.${sqlVerb}::${pathParams(canonPath(row[col.path]))}`; + const sigKey = `${service}.${resource}.${sqlVerb}::${pathParams(row[col.path])}`; if (sigSeen.has(sigKey)) { errors.push(`signature clash on ${sigKey} (${sigSeen.get(sigKey)} and ${row[col.stackql_method_name]})`); } @@ -167,6 +107,48 @@ if (errors.length > 0) { process.exit(1); } +// --------------------------------------------------------------------------- +// Mapping diff against the committed CSV (review aid; the CI drift gate is +// the enforcement) +// --------------------------------------------------------------------------- + +function committedMappings() { + try { + const text = execSync('git show HEAD:provider-dev/config/all_services.csv', { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }); + const t = parseCsv(text); + const c = Object.fromEntries(t[0].map((h, i) => [h, i])); + const m = new Map(); + for (const r of t.slice(1)) { + if (!r[c.stackql_resource_name]) continue; + m.set(`${r[c.filename].replace(/\.yaml$/, '')}::${r[c.operationId]}`, `${r[c.stackql_resource_name]}.${r[c.stackql_method_name]} [${r[c.stackql_verb]}]`); + } + return m; + } catch { + return null; + } +} + +const previous = committedMappings(); +if (previous) { + const current = new Map(); + for (const row of rows.slice(1)) { + if (!row[col.stackql_resource_name]) continue; + current.set(`${row[col.filename].replace(/\.yaml$/, '')}::${row[col.operationId]}`, `${row[col.stackql_resource_name]}.${row[col.stackql_method_name]} [${row[col.stackql_verb]}]`); + } + const added = [...current.keys()].filter((k) => !previous.has(k)); + const removed = [...previous.keys()].filter((k) => !current.has(k)); + const changed = [...current.keys()].filter((k) => previous.has(k) && previous.get(k) !== current.get(k)); + if (added.length || removed.length || changed.length) { + console.log(`Mapping diff vs the committed all_services.csv: +${added.length} added, -${removed.length} removed, ${changed.length} changed (review before commit - these are the provider's user-facing contract):`); + for (const k of changed.slice(0, 40)) console.log(` changed ${k}: ${previous.get(k)} -> ${current.get(k)}`); + for (const k of removed.slice(0, 40)) console.log(` removed ${k}: ${previous.get(k)}`); + for (const k of added.slice(0, 40)) console.log(` added ${k}: ${current.get(k)}`); + if (added.length + removed.length + changed.length > 120) console.log(' ...'); + } else { + console.log('Mapping diff vs the committed all_services.csv: none'); + } +} + const outArgIdx = process.argv.indexOf('--out'); const outPath = outArgIdx !== -1 ? path.resolve(process.argv[outArgIdx + 1]) : csvPath; fs.writeFileSync(outPath, rows.map((r) => r.map(csvField).join(',')).join('\n') + '\n'); diff --git a/provider-dev/scripts/pin_specs.mjs b/provider-dev/scripts/pin_specs.mjs index 64d77d6..0ca0291 100644 --- a/provider-dev/scripts/pin_specs.mjs +++ b/provider-dev/scripts/pin_specs.mjs @@ -60,6 +60,36 @@ for (const [file, meta] of Object.entries(manifest.files || {})) { }; } +// the ngcsdk wheel (response schemas for the registry surface) is pinned by +// version + sha256 in harvest_ngc_sdk_schemas.mjs; the derived +// ngc_sdk_schemas.json is pinned here by content hash like the specs +if (manifest.ngcSdk) { + const derived = path.join(downloadDir, manifest.ngcSdk.derived); + if (!fs.existsSync(derived)) { + errors.push(`${manifest.ngcSdk.derived}: listed in the manifest but not present`); + } else { + const hash = sha256(derived); + const existing = pin.ngcSdk; + if (checkMode) { + if (!existing) errors.push(`${manifest.ngcSdk.derived}: derived but has no recorded pin`); + else if (existing.derivedSha256 !== hash) errors.push(`${manifest.ngcSdk.derived}: sha256 drift (pinned ${existing.derivedSha256.slice(0, 12)}..., current ${hash.slice(0, 12)}...)`); + else if (existing.sha256 !== manifest.ngcSdk.sha256 || existing.version !== manifest.ngcSdk.version) errors.push(`ngcsdk: pinned ${existing.version} (${existing.sha256.slice(0, 12)}...), harvested ${manifest.ngcSdk.version} (${manifest.ngcSdk.sha256.slice(0, 12)}...)`); + } else { + pin.ngcSdk = { + ...(existing || {}), + package: manifest.ngcSdk.package, + version: manifest.ngcSdk.version, + url: manifest.ngcSdk.url, + sha256: manifest.ngcSdk.sha256, + derived: manifest.ngcSdk.derived, + derivedSha256: hash, + classes: manifest.ngcSdk.classes, + fetched: today + }; + } + } +} + if (checkMode) { for (const file of Object.keys(pin.sources)) { if (!(manifest.files || {})[file]) { diff --git a/provider-dev/scripts/post_process.mjs b/provider-dev/scripts/post_process.mjs new file mode 100644 index 0000000..74e1775 --- /dev/null +++ b/provider-dev/scripts/post_process.mjs @@ -0,0 +1,295 @@ +#!/usr/bin/env node + +// Post-generation fixes for things the generator cannot express, driven by +// the endpoint inventory. Idempotent; re-run after every generate. +// Validates and fails without writing. +// +// 1. Org-scoped server templates. bin/split.mjs rebased every org-scoped +// operation (leading /v2/org/{org_name}, /v3/orgs/{org_name}, +// /v2/artifact-registry/org/{org_name} prefix removed, org path parameter +// dropped). Here each rebased path item gets a path-level `servers` +// override carrying the prefix as a server template whose org_name +// variable resolves from NGC_ORG via x-stackQL-envVar (the clickhouse / +// supabase / godaddy precedent; any-sdk resolves servers operation -> +// path item -> document). It is applied here because normalize strips +// path-level servers from provider-dev/source. A WHERE org_name value +// always beats the environment; with NGC_ORG unset, org_name is a +// required parameter (visible in SHOW METHODS). +// +// 2. snake_case surface. `snake_case_aliases: true` on the provider config +// presents camelCase wire properties as snake_case columns; pairing it +// with `request.nativeCasing` on every method lets snake_case WHERE keys +// and body columns resolve against the wire names. NVCF and the JSON +// bodies are camelCase (`camel`); the NGC core query parameters are +// kebab-case (page-size, resolve-labels) and get `kebab` on the methods +// that carry them (inventory column native_casing). +// +// 3. Pagination and LIMIT pushdown. NGC core collections page with +// page-number (zero-based) + page-size and echo paginationInfo +// {index, totalPages, ...} in the envelope; any-sdk's page_number +// algorithm follows index/totalPages. Configured per method from the +// inventory (pagination_params); SQL LIMIT is pushed to page-size where +// the operation declares it. NVCF collections are unpaginated. +// +// 4. Opaque JSON request bodies (NVCF pexec invoke): the normalize pass +// lowers the free-form invocation payload to a string, which leaves the +// naive body translator nothing to match. A wrapper schema {body} plus a +// request transform sends the `body` argument verbatim as the JSON +// payload (the vercel octet-stream precedent). +// +// 5. Scalar-list responses: /v2/nvcf/functions/ids returns {functionIds: +// [string]}; a response transform re-shapes it into rows with a +// function_id column. +// +// 6. DELETE methods with a request body get the naive body translation +// (the generator emits it for POST/PUT/PATCH only). +// +// Usage: node provider-dev/scripts/post_process.mjs + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import yaml from 'js-yaml'; +import { loadInventory, loadServers } from './lib/inventory.mjs'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const servicesDir = path.join(repoRoot, 'provider-dev', 'openapi', 'src', 'nvidia', 'v00.00.00000', 'services'); +const HTTP_VERBS = ['get', 'post', 'put', 'patch', 'delete']; + +if (!fs.existsSync(servicesDir)) { + console.error(`Error: ${servicesDir} not found - run the generate step first`); + process.exit(1); +} + +const { byServiceOp, hostByService } = loadInventory(); +const servers = loadServers(); +const ORG_VAR = servers.orgVariable.name; +const ORG_ENV = servers.orgVariable['x-stackQL-envVar']; + +function decodeOperationRef(ref) { + const parts = ref.replace(/^#\/paths\//, '').split('/'); + const verb = parts.pop(); + return [parts.join('/').replace(/~1/g, '/').replace(/~0/g, '~'), verb]; +} + +const errors = []; +const docs = new Map(); +const counts = { orgPaths: 0, rootPaths: 0, casing: { camel: 0, kebab: 0 }, pagination: 0, pushdown: 0, opaqueBodies: 0, scalarLists: 0, naiveDeletes: 0 }; + +for (const f of fs.readdirSync(servicesDir).filter((x) => x.endsWith('.yaml')).sort()) { + const service = f.replace(/\.yaml$/, ''); + const doc = yaml.load(fs.readFileSync(path.join(servicesDir, f), 'utf8')); + docs.set(f, doc); + + const host = hostByService.get(service); + if (!host) { errors.push(`${f}: service ${service} is not in the inventory`); continue; } + if (doc.servers?.[0]?.url !== host) errors.push(`${f}: root server is ${doc.servers?.[0]?.url}, inventory says ${host}`); + + // 1. path-level org server templates + for (const [pathKey, item] of Object.entries(doc.paths || {})) { + const prefixes = new Set(); + for (const verb of HTTP_VERBS) { + const op = item[verb]; + if (!op) continue; + const row = byServiceOp.get(`${service}::${op.operationId}`); + if (!row) { errors.push(`${f}: ${verb} ${pathKey} (${op.operationId}) is not a mapped inventory operation`); continue; } + if (row.rebased_path !== pathKey) errors.push(`${f}: ${op.operationId} is at ${pathKey} but the inventory rebased it to ${row.rebased_path}`); + prefixes.add(row.org_prefix); + if (row.org_prefix && (op.parameters || []).some((p) => p.in === 'path' && (p.name === ORG_VAR || p.name === 'org'))) { + errors.push(`${f}: ${verb} ${pathKey} still declares the org path parameter after the rebase`); + } + } + if (prefixes.size > 1) { errors.push(`${f}: path ${pathKey} mixes org prefixes ${[...prefixes].join(', ')}`); continue; } + const prefix = [...prefixes][0]; + if (prefix) { + item.servers = [{ + url: host + prefix, + variables: { + [ORG_VAR]: { + description: servers.orgVariable.description, + 'x-stackQL-envVar': ORG_ENV + } + } + }]; + counts.orgPaths++; + } else { + delete item.servers; + counts.rootPaths++; + } + } + + // per-method fixes + const resources = doc.components?.['x-stackQL-resources'] || {}; + if (Object.keys(resources).length === 0) errors.push(`${f}: no x-stackQL-resources`); + for (const [resourceName, resource] of Object.entries(resources)) { + for (const [methodName, method] of Object.entries(resource.methods || {})) { + const ref = method.operation?.$ref; + if (!ref) { errors.push(`${f}: ${resourceName}.${methodName} has no operation ref`); continue; } + const [pathKey, verb] = decodeOperationRef(ref); + const op = doc.paths?.[pathKey]?.[verb]; + if (!op) { errors.push(`${f}: ${resourceName}.${methodName} references a missing operation ${verb} ${pathKey}`); continue; } + const row = byServiceOp.get(`${service}::${op.operationId}`); + if (!row) { errors.push(`${f}: ${resourceName}.${methodName} (${op.operationId}) is not in the inventory`); continue; } + if (row.resource !== resourceName || row.method !== methodName) { + errors.push(`${f}: ${resourceName}.${methodName} is mapped from ${op.operationId} but the inventory says ${row.resource}.${row.method}`); + } + + // 2a. response media type: a few registry operations declare their + // JSON response under `*/*` (accept anything); stackql projects rows + // from JSON responses only, so rebind the content and the method to + // application/json (the k8s cbor precedent) + for (const code of Object.keys(op.responses || {})) { + const content = op.responses[code]?.content; + if (content && content['*/*'] && !content['application/json']) { + content['application/json'] = content['*/*']; + delete content['*/*']; + counts.responseMedia = (counts.responseMedia || 0) + 1; + } + } + if (method.response?.mediaType === '*/*') method.response.mediaType = 'application/json'; + + // 2. casing + const casing = row.native_casing === 'kebab' ? 'kebab' : 'camel'; + method.request = { ...(method.request || {}), nativeCasing: casing }; + counts.casing[casing]++; + + // 3. pagination + LIMIT pushdown on collection reads + const pageParams = row.pagination_params.split('+').filter(Boolean); + if (verb === 'get' && pageParams.includes('page-number')) { + method.config = { + ...(method.config || {}), + pagination: { + algorithm: 'page_number', + requestToken: { key: 'page-number', location: 'query' }, + responseToken: { key: '$.paginationInfo.index', location: 'body' }, + responseTerminator: { key: '$.paginationInfo.totalPages', location: 'body' } + } + }; + counts.pagination++; + if (pageParams.includes('page-size')) { + method.config.queryParamPushdown = { top: { paramName: 'page-size' } }; + counts.pushdown++; + } + } + + // 4. opaque JSON request bodies: the operation's body schema becomes + // the {body} wrapper (so `body` is a declared, required parameter of + // the method) and the request transform unwraps it on the wire + const bodyContent = op.requestBody?.content?.['application/json']; + const bodySchema = bodyContent?.schema; + if (bodySchema && ((bodySchema.type === 'string' && /opaque/i.test(bodySchema.description || '')) || bodySchema.$ref === '#/components/schemas/StackqlJsonBody')) { + doc.components.schemas = doc.components.schemas || {}; + doc.components.schemas.StackqlJsonBody = { + type: 'object', + description: 'A free-form JSON request body, supplied as a JSON string in the body argument', + properties: { body: { type: 'string', description: 'The request payload as a JSON string (the function input)' } }, + required: ['body'] + }; + bodyContent.schema = { $ref: '#/components/schemas/StackqlJsonBody' }; + method.request = { + ...method.request, + mediaType: 'application/json', + // stackql hands a JSON-looking string argument to the template as a + // parsed value, and a plain string as-is (the godaddy records precedent) + transform: { type: 'golang_template_json_v0.3.0', body: '{{ if eq (kindOf .body) "string" }}{{ .body }}{{ else }}{{ toJson .body }}{{ end }}' } + }; + counts.opaqueBodies++; + } + + // 6. DELETE with a body + if (verb === 'delete' && op.requestBody && !method.config?.requestBodyTranslate) { + method.config = { ...(method.config || {}), requestBodyTranslate: { algorithm: 'naive' } }; + counts.naiveDeletes++; + } + } + } +} + +// 5. scalar-list responses: a collection read whose rows are scalars +// ({functionIds: [string]} on /v2/nvcf/functions/ids, a bare array of +// registry names on /v2/nvcf/recognized-registries) projects nothing; a +// response transform re-shapes it into rows with one column named after +// the singular of the array key (function_ids -> function_id, registries +// -> registry). Bare arrays arrive already wrapped by normalize (a text +// template over the raw body); that wrap is replaced by a json template +// ranging over the parsed array. +const snake = (s) => s.replace(/([a-z0-9])([A-Z])/g, '$1_$2').replace(/[-\s]+/g, '_').toLowerCase(); +const singularOf = (s) => s.replace(/ies$/, 'y').replace(/ses$/, 's').replace(/s$/, ''); +for (const [f, doc] of docs) { + const schemas = doc.components?.schemas || {}; + const resolve = (s) => { let cur = s; for (let i = 0; i < 10 && cur?.$ref; i++) cur = schemas[cur.$ref.split('/').pop()]; return cur; }; + for (const [resourceName, resource] of Object.entries(doc.components?.['x-stackQL-resources'] || {})) { + for (const [methodName, method] of Object.entries(resource.methods || {})) { + if (!/^list/.test(methodName) || !method.response?.objectKey) continue; + const [pathKey, verb] = decodeOperationRef(method.operation.$ref); + const op = doc.paths?.[pathKey]?.[verb]; + const content = op?.responses?.[method.response.openAPIDocKey]?.content?.['application/json']; + const top = resolve(method.response.schema_override || content?.schema); + const key = method.response.objectKey.replace(/^\$\./, ''); + const arr = resolve(top?.properties?.[key]); + const items = arr?.type === 'array' ? resolve(arr.items) : null; + if (!items || !['string', 'integer', 'number', 'boolean'].includes(items.type)) continue; + const wrappedBareArray = !!method.response.transform; // normalize's bare-array wrap + const rowsKey = snake(key); + const col = singularOf(rowsKey); + const wrapperName = `Stackql${resourceName.replace(/(^|_)([a-z])/g, (m, p, c) => c.toUpperCase())}Rows`; + schemas[wrapperName] = { + type: 'object', + properties: { [rowsKey]: { type: 'array', items: { type: 'object', properties: { [col]: { type: items.type, description: items.description || arr.description || `${col} value` } } } } } + }; + const source = wrappedBareArray ? '.' : `.${key}`; + method.response = { + mediaType: 'application/json', + openAPIDocKey: method.response.openAPIDocKey, + overrideMediaType: 'application/json', + schema_override: { $ref: `#/components/schemas/${wrapperName}` }, + objectKey: `$.${rowsKey}`, + transform: { + type: 'golang_template_json_v0.3.0', + body: `{"${rowsKey}":[{{ range $i, $v := ${source} }}{{ if $i }},{{ end }}{"${col}":{{ toJson $v }}}{{ end }}]}` + } + }; + counts.scalarLists++; + } + } +} + +// 7. invocation status: GET /v2/nvcf/pexec/status/{request_id} returns the +// function's own response body (arbitrary JSON, 200 when complete, 202 +// while pending; NVCF-STATUS / NVCF-REQID headers carry the state). The spec +// types it as a byte buffer, which projects as nonsense columns. Wrap the +// raw body into one row with a `response` column (the k8s pods_log +// precedent: text template, wrapper schema, objectKey). +const invDoc = docs.get('nvcf_invocation.yaml'); +const invStatus = invDoc?.components?.['x-stackQL-resources']?.invocation_status?.methods?.get; +if (!invStatus) { + errors.push('nvcf_invocation.yaml: expected method invocation_status.get is missing'); +} else { + invDoc.components.schemas.StackqlInvocationResult = { + type: 'object', + properties: { + results: { + type: 'array', + items: { type: 'object', properties: { response: { type: 'string', description: 'The invocation response body as returned by the function (JSON text); empty while the request is still pending (HTTP 202)' } } } + } + } + }; + invStatus.response = { + mediaType: 'application/json', + openAPIDocKey: '200', + overrideMediaType: 'application/json', + schema_override: { $ref: '#/components/schemas/StackqlInvocationResult' }, + objectKey: '$.results', + transform: { type: 'golang_template_text_v0.3.0', body: '{"results": [{"response": {{ toJson . }}}]}' } + }; + counts.scalarLists++; +} + +if (errors.length > 0) { + console.error(`FAILED with ${errors.length} error(s), nothing written:`); + for (const e of errors) console.error(` ${e}`); + process.exit(1); +} +for (const [f, d] of docs) fs.writeFileSync(path.join(servicesDir, f), yaml.dump(d, { lineWidth: -1, noRefs: true })); +console.log(`post_process: ${counts.orgPaths} org-scoped path items on server templates (${ORG_VAR} via ${ORG_ENV}), ${counts.rootPaths} root path items across ${docs.size} services`); +console.log(`post_process: request.nativeCasing camel x${counts.casing.camel}, kebab x${counts.casing.kebab}; page_number pagination on ${counts.pagination} methods (LIMIT -> page-size on ${counts.pushdown}); ${counts.opaqueBodies} opaque JSON body wrapper(s); ${counts.scalarLists} scalar-list transform(s); naive body translation on ${counts.naiveDeletes} DELETE method(s)`); diff --git a/provider-dev/scripts/pre_normalize.mjs b/provider-dev/scripts/pre_normalize.mjs new file mode 100644 index 0000000..4afac0d --- /dev/null +++ b/provider-dev/scripts/pre_normalize.mjs @@ -0,0 +1,109 @@ +#!/usr/bin/env node + +// nvidia-specific spec adjustments applied to provider-dev/source (the +// split service specs) before the generic `npm run normalize` pass. +// Idempotent, deterministic; fails without writing on any rule error. +// +// Rules: +// lower-type-arrays OpenAPI 3.1 `type: [T, "null"]` -> `type: T` + +// `nullable: true` (the NVCF and models definitions +// are 3.1; the normalize flatten and the +// relational analyzer expect a single type - +// clickhouse precedent) +// lower-exclusive-bounds 3.1 numeric `exclusiveMinimum: N` / +// `exclusiveMaximum: N` -> the 3.0 boolean form +// strip-ssa-scopes drop the `security` / `x-ssa-scopes` blocks the +// models definition carries per operation +// (internal scope hints; the provider's bearer +// auth is configured at the provider level and +// the analyzer must not treat them as a scheme) +// +// Usage: node provider-dev/scripts/pre_normalize.mjs [--dry-run] + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import yaml from 'js-yaml'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const sourceDir = path.join(repoRoot, 'provider-dev', 'source'); +const dryRun = process.argv.includes('--dry-run'); + +function walk(node, fn, depth = 0) { + if (!node || typeof node !== 'object' || depth > 200) return; + fn(node); + for (const v of Object.values(node)) walk(v, fn, depth + 1); +} + +const RULES = [ + { + name: 'lower-type-arrays', + apply(doc) { + let n = 0; + walk(doc, (node) => { + if (Array.isArray(node.type)) { + const hadNull = node.type.includes('null'); + const types = node.type.filter((t) => t !== 'null'); + if (types.length === 0) throw new Error(`type array ${JSON.stringify(node.type)} has no non-null member`); + // a value that may be a JSON string or a structured value + // (["string", "object"] on configuration blobs) is carried as a + // string column - the JSON text serves both (k8s IntOrString rule) + node.type = types.includes('string') ? 'string' : types[0]; + if (types.length > 1 && !types.includes('string')) node.description = `${node.description ? node.description + ' ' : ''}(one of ${types.join(' | ')})`; + if (hadNull) node.nullable = true; + n++; + } + }); + return n; + } + }, + { + name: 'lower-exclusive-bounds', + apply(doc) { + let n = 0; + walk(doc, (node) => { + for (const [key, min] of [['exclusiveMinimum', 'minimum'], ['exclusiveMaximum', 'maximum']]) { + if (typeof node[key] === 'number') { + node[min] = node[key]; + node[key] = true; + n++; + } + } + }); + return n; + } + }, + { + name: 'strip-ssa-scopes', + apply(doc) { + let n = 0; + for (const item of Object.values(doc.paths || {})) { + for (const op of Object.values(item)) { + if (!op || typeof op !== 'object') continue; + if (op['x-ssa-scopes'] !== undefined) { delete op['x-ssa-scopes']; n++; } + if (Array.isArray(op.security) && op.security.some((s) => s && Object.keys(s).includes('ssa'))) { delete op.security; n++; } + } + } + return n; + } + } +]; + +const files = fs.readdirSync(sourceDir).filter((f) => f.endsWith('.yaml')).sort(); +if (files.length === 0) { + console.error(`Error: no service specs in ${sourceDir} - run the split first`); + process.exit(1); +} +const results = new Map(); +for (const f of files) { + const doc = yaml.load(fs.readFileSync(path.join(sourceDir, f), 'utf8')); + const counts = {}; + for (const rule of RULES) counts[rule.name] = rule.apply(doc); + results.set(f, { doc, counts }); +} +for (const [f, { doc, counts }] of results) { + const touched = Object.values(counts).some((c) => c > 0); + if (touched && !dryRun) fs.writeFileSync(path.join(sourceDir, f), yaml.dump(doc, { lineWidth: -1, noRefs: true })); + console.log(`${f}: ${Object.entries(counts).map(([k, v]) => `${k}=${v}`).join(', ')}${touched ? (dryRun ? ' (dry run)' : ' (written)') : ''}`); +} +console.log(`pre_normalize: ${files.length} service spec(s) processed`); diff --git a/provider-dev/scripts/service_rules.mjs b/provider-dev/scripts/service_rules.mjs index 1f5338a..6d8cdf6 100644 --- a/provider-dev/scripts/service_rules.mjs +++ b/provider-dev/scripts/service_rules.mjs @@ -8,72 +8,21 @@ // operations in the inventory). Throws on any operation the inventory does // not know - split must never silently pass an unclassified operation. -import fs from 'fs'; -import path from 'path'; -import { fileURLToPath } from 'url'; +import { loadInventory } from './lib/inventory.mjs'; -const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); -const csvPath = path.join(repoRoot, 'provider-dev', 'config', 'endpoint_inventory.csv'); - -function parseCsv(text) { - const rows = []; - let row = [], field = '', inQuotes = false; - for (let i = 0; i < text.length; i++) { - const c = text[i]; - if (inQuotes) { - if (c === '"') { - if (text[i + 1] === '"') { field += '"'; i++; } else { inQuotes = false; } - } else { field += c; } - } else if (c === '"') { - inQuotes = true; - } else if (c === ',') { - row.push(field); field = ''; - } else if (c === '\n' || c === '\r') { - if (c === '\r' && text[i + 1] === '\n') i++; - row.push(field); field = ''; - if (row.length > 1 || row[0] !== '') rows.push(row); - row = []; - } else { field += c; } - } - if (field !== '' || row.length > 0) { row.push(field); rows.push(row); } - return rows; -} - -const rows = parseCsv(fs.readFileSync(csvPath, 'utf8')); -const header = rows[0]; -const col = Object.fromEntries(header.map((h, i) => [h, i])); - -// (file, operationId) -> service|null; fall back to path-level consensus for -// operations without an operationId -const byOpId = new Map(); -const byPath = new Map(); -for (const row of rows.slice(1)) { - const file = row[col.file]; - const service = row[col.service] || null; - const opId = row[col.operation_id]; - if (opId) { - const key = `${file}::${opId}`; - if (byOpId.has(key) && byOpId.get(key) !== service) { - throw new Error(`inventory has conflicting services for duplicate operationId ${key}`); - } - byOpId.set(key, service); - } - const pKey = `${file}::${row[col.path]}`; - if (!byPath.has(pKey)) byPath.set(pKey, new Set()); - if (service) byPath.get(pKey).add(service); -} +const { byOp } = loadInventory(); export function serviceFor(sourceName, pathKey, operationId, tags, ctx) { const file = `${sourceName}.json`; - if (operationId && byOpId.has(`${file}::${operationId}`)) { - return byOpId.get(`${file}::${operationId}`); + if (!operationId) { + throw new Error(`operation without operationId cannot be assigned: ${file} ${pathKey}`); } - const services = byPath.get(`${file}::${pathKey}`); - if (services === undefined) { - throw new Error(`operation not in the endpoint inventory: ${file} ${pathKey} (${operationId || 'no operationId'}) - regenerate the inventory`); + const row = byOp.get(`${file}::${operationId}`); + if (!row) { + throw new Error(`operation not in the endpoint inventory: ${file} ${pathKey} (${operationId}) - regenerate the inventory`); } - if (services.size > 1) { - throw new Error(`path ${pathKey} maps to multiple services (${[...services].join(', ')}) and the operation has no operationId to disambiguate`); + if (row.path !== pathKey) { + throw new Error(`inventory path mismatch for ${file} ${operationId}: spec has ${pathKey}, inventory has ${row.path} - regenerate the inventory`); } - return services.size === 1 ? [...services][0] : null; + return row.service || null; } diff --git a/provider-dev/source/.gitkeep b/provider-dev/source/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/provider-dev/source/catalog.yaml b/provider-dev/source/catalog.yaml index a9a2a7a..7e4154a 100644 --- a/provider-dev/source/catalog.yaml +++ b/provider-dev/source/catalog.yaml @@ -1,1189 +1,1305 @@ openapi: 3.1.0 info: - title: catalog API - description: nvidia catalog API + title: NVIDIA NGC Catalog + description: 'The public NGC catalog: guest reads of models, resources, recipes, helm charts, collections and generic artifacts, plus the GPU and cloud service provider catalogs (no organization scope; public artifacts read without credentials).' version: 0.0.1-SNAPSHOT paths: - /v1/csps: + /v2/collections: get: - tags: - - Cloud service providers - summary: List cloud service providers - description: List cloud service providers - operationId: listCloudServiceProviders + description: List public collections + operationId: listPublicCollections parameters: - - name: page-size + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: integer + format: UTF-8 + maxLength: 262144 maximum: 5000 + minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: integer + format: UTF-8 + maxLength: 262144 maximum: 10000 + minLength: 0 minimum: 0 - - name: include-disabled - in: query - description: Include disabled - required: false - schema: - type: boolean + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - post: + description: Internal Error + summary: List public collections tags: - - Cloud service providers - summary: Create cloud service provider - description: Create cloud service provider - operationId: createCloudServiceProvider - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CloudServiceProviderCreateRequest' - required: true + - Collections + /v2/collections/{org_name}/{collection_name}: + get: + description: Get collection details in org as guest + operationId: getCollectionInOrgAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/{artifactType}/{orgName}/{artifactName}/spec: - get: + description: Internal Error + summary: Get collection in org as guest tags: - - AIPlayground - summary: Get AI Playground for public artifactType - description: Get AI Playground for public artifactType - operationId: getPublicModelArtifactsSpec + - Collections + /v2/collections/{org_name}/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org as guest + operationId: listCollectionArtifactsInOrgAsGuest parameters: - - name: orgName + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: artifactType + type: string + - description: Collection name in: path - description: Artifact type + name: collection_name required: true schema: - type: string format: UTF-8 - enum: - - models - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills maxLength: 262144 minLength: 0 - - name: artifactName + type: string + - description: Artifact type in: path - description: Model name + name: artifact_type required: true schema: - type: string + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL format: UTF-8 maxLength: 262144 minLength: 0 - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AIPlaygroundResponse' - x-ssa-scopes: [] - /v1/recipes: - get: - tags: - - Resources - summary: List public recipes - description: List public recipes - operationId: listPublicRecipes - parameters: - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 5000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/resources: - get: + description: Internal Error + summary: List collection artifacts in org as guest tags: - - Resources - summary: List public recipes - description: List public recipes - operationId: listPublicRecipes_1 + - Collections + /v2/collections/{org_name}/{team_name}/{collection_name}: + get: + description: Get collection details in team as guest + operationId: getCollectionInTeamAsGuest parameters: - - name: page-size - in: query - description: Page size - required: false + - description: Organization name + in: path + name: org_name + required: true schema: - type: string format: UTF-8 - maxLength: 262144 - maximum: 5000 + maxLength: 255 minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false + type: string + - description: Team name + in: path + name: team_name + required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: format: UTF-8 maxLength: 262144 - maximum: 10000 minLength: 0 - minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/models: - get: + description: Internal Error + summary: Get collection in team as guest tags: - - Models - summary: List public models - description: This operation lists public models. - operationId: listPublicModels + - Collections + /v2/collections/{org_name}/{team_name}/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org and team as guest + operationId: listCollectionArtifactsInTeamAsGuest parameters: - - name: page-size - in: query - description: Page size - required: false + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: format: UTF-8 maxLength: 262144 - maximum: 1000 minLength: 0 - minimum: 1 - - name: page-reference + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size in: query - description: Page reference + name: page-size required: false schema: - type: string format: UTF-8 - maxLength: 1024 + maxLength: 262144 + maximum: 5000 minLength: 0 - - name: page-number + minimum: 1 + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error + '200': content: application/json: schema: - $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/gpus: - get: - tags: - - GpuByPci - summary: Get all GPUs - description: Get all GPU by PCI records - operationId: getGpus - responses: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - readGpuByPci - x-ssa-scopes: - - kas - - readGpuByPci - /v1/collections: - get: + description: Internal Error + summary: List collection artifacts in org and team as guest tags: - Collections - summary: List public collections - description: List public collections - operationId: listPublicCollections + /v2/csps: + get: + description: List cloud service providers + operationId: listCloudServiceProviders parameters: - - name: page-size + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string - format: UTF-8 - maxLength: 262144 maximum: 5000 - minLength: 0 minimum: 1 - - name: page-number + type: integer + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string - format: UTF-8 - maxLength: 262144 maximum: 10000 - minLength: 0 minimum: 0 + type: integer + - description: Include disabled + in: query + name: include-disabled + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProviderListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/gpus/pci-device-id/{pci_device-id}: - get: + description: Internal Error + summary: List cloud service providers tags: - - GpuByPci - summary: Get GPU by PCI Device ID - description: Get all GPU records matching the given PCI Device ID - operationId: getGpuByPciDeviceId - parameters: - - name: pci_device_id - in: path - description: PCI Device ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 32 - minLength: 0 + - Cloud service providers + post: + description: Create cloud service provider + operationId: createCloudServiceProvider + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProviderCreateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProvider' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - readGpuByPci - x-ssa-scopes: - - kas - - readGpuByPci - post: + description: Internal Error + summary: Create cloud service provider tags: - - GpuByPci - summary: Create GPU by PCI Device ID only - description: >- - Create a new GPU record using only PCI Device ID (pciVendorId and - pciSubsystemDeviceId default to 'unknown') - operationId: createGpuByPciDeviceId + - Cloud service providers + parameters: [] + /v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params: + get: + description: List public artifact deployment parameters in org + operationId: listPublicArtifactDeploymentParametersInOrg parameters: - - name: pci_device_id + - description: Organization name in: path - description: PCI Device ID + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/GpuByPciCreateRequest' - required: true + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createGpuByPci - x-ssa-scopes: - - kas - - createGpuByPci - delete: + description: Internal Error + summary: List public artifact deployment parameters in org tags: - - GpuByPci - summary: Delete GPU by PCI Device ID only - description: >- - Delete a GPU record using only PCI Device ID (pciVendorId and - pciSubsystemDeviceId default to 'unknown') - operationId: deleteGpuByPciDeviceId + - Artifact deployment parameters + /v2/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get public artifact deployment parameters details in org + operationId: getPublicArtifactDeploymentParametersInOrg parameters: - - name: pci_device_id + - description: Organization name in: path - description: PCI Device ID + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 - responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - deleteGpuByPci - x-ssa-scopes: - - deleteGpuByPci - - kas - patch: - tags: - - GpuByPci - summary: Partially update GPU by PCI Device ID only - description: >- - Partially update a GPU record using only PCI Device ID (pciVendorId and - pciSubsystemDeviceId default to 'unknown'). Only provided fields will be - updated. - operationId: updateGpuByPciDeviceId - parameters: - - name: pci_device_id + type: string + - description: Artifact name in: path - description: PCI Device ID + name: artifact_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/GpuByPciUpdateRequest' - required: true + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateGpuByPci - x-ssa-scopes: - - kas - - updateGpuByPci - /v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}/pci-subsystem-device-id/{pci_subsystem-device-id}: - get: + description: Internal Error + summary: Get public artifact deployment parameters details in org tags: - - GpuByPci - summary: Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID - description: Get a single GPU record matching the full PCI composite key - operationId: getGpuByPciDeviceIdVendorIdSubsystemDeviceId + - Artifact deployment parameters + /v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/params: + get: + description: List public artifact deployment parameters in team + operationId: listPublicArtifactDeploymentParametersInTeam parameters: - - name: pci_device_id + - description: Organization name in: path - description: PCI Device ID + name: org_name required: true schema: - type: string format: UTF-8 - maxLength: 32 + maxLength: 255 minLength: 0 - - name: pci_vendor_id + type: string + - description: Team name in: path - description: PCI Vendor ID + name: team_name required: true schema: - type: string format: UTF-8 - maxLength: 32 + maxLength: 255 minLength: 0 - - name: pci_subsystem_device_id + type: string + - description: Artifact type in: path - description: PCI Subsystem Device ID + name: artifact_type required: true schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - readGpuByPci - x-ssa-scopes: - - kas - - readGpuByPci - post: + description: Internal Error + summary: List public artifact deployment parameters in team tags: - - GpuByPci - summary: Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID - description: Create a new GPU record using the full PCI composite key - operationId: createGpuByPciFullKey + - Artifact deployment parameters + /v2/csps/{artifact_type}/{org_name}/{team_name}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get public artifact deployment parameters details in team + operationId: getPublicArtifactDeploymentParametersInTeam parameters: - - name: pci_device_id + - description: Organization name in: path - description: PCI Device ID + name: org_name required: true schema: - type: string format: UTF-8 - maxLength: 32 + maxLength: 255 minLength: 0 - - name: pci_vendor_id + type: string + - description: Team name in: path - description: PCI Vendor ID + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 - - name: pci_subsystem_device_id + type: string + - description: Artifact name in: path - description: PCI Subsystem Device ID + name: artifact_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/GpuByPciCreateRequest' - required: true + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - createGpuByPci - x-ssa-scopes: - - kas - - createGpuByPci - delete: + description: Internal Error + summary: Get public artifact deployment parameters details in team tags: - - GpuByPci - summary: Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID - description: Delete a GPU record matching the full PCI composite key - operationId: deleteGpuByPciFullKey + - Artifact deployment parameters + /v2/csps/{csp_name}: + get: + description: Get cloud service provider details + operationId: getCloudServiceProviderDetails parameters: - - name: pci_device_id - in: path - description: PCI Device ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 32 - minLength: 0 - - name: pci_vendor_id + - description: Cloud service provider name in: path - description: PCI Vendor ID + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 - - name: pci_subsystem_device_id - in: path - description: PCI Subsystem Device ID - required: true - schema: type: string - format: UTF-8 - maxLength: 32 - minLength: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProvider' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - deleteGpuByPci - x-ssa-scopes: - - deleteGpuByPci - - kas - patch: + description: Internal Error + summary: Get cloud service provider details tags: - - GpuByPci - summary: >- - Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device - ID - description: >- - Partially update a GPU record matching the full PCI composite key. Only - provided fields will be updated. - operationId: updateGpuByPciFullKey - parameters: - - name: pci_device_id - in: path - description: PCI Device ID - required: true - schema: - type: string - format: UTF-8 - maxLength: 32 - minLength: 0 - - name: pci_vendor_id + - Cloud service providers + patch: + description: Update cloud service provider + operationId: updateCloudServiceProvider + parameters: + - description: Cloud service provider name in: path - description: PCI Vendor ID + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 32 + maxLength: 262144 minLength: 0 - - name: pci_subsystem_device_id - in: path - description: PCI Subsystem Device ID - required: true - schema: type: string - format: UTF-8 - maxLength: 32 - minLength: 0 requestBody: content: application/json: schema: - $ref: '#/components/schemas/GpuByPciUpdateRequest' + $ref: '#/components/schemas/CloudServiceProviderUpdateRequest' required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CloudServiceProvider' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - updateGpuByPci - x-ssa-scopes: - - kas - - updateGpuByPci - /v1/csps/{csp_name}/deployments/params: - get: + description: Internal Error + summary: Update cloud service provider tags: - - Cloud service provider deployment parameters - summary: Get cloud service provider deployment parameters details - description: Get cloud service provider deployment parameters details - operationId: getCloudServiceProviderDeploymentParametersDetails + - Cloud service providers + delete: + description: Delete cloud service provider + operationId: deleteCloudServiceProvider parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - post: + description: Internal Error + summary: Delete cloud service provider tags: - - Cloud service provider deployment parameters - summary: Create cloud service provider deployment parameters - description: Create cloud service provider deployment parameters - operationId: createCloudServiceProviderDeploymentParameters + - Cloud service providers + /v2/csps/{csp_name}/deployments/params: + get: + description: Get cloud service provider deployment parameters details + operationId: getCloudServiceProviderDeploymentParametersDetails parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeploymentParametersCreateRequest' - required: true + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Get cloud service provider deployment parameters details tags: - Cloud service provider deployment parameters - summary: Delete cloud service provider deployment parameters - description: Delete cloud service provider deployment parameters - operationId: deleteCloudServiceProviderDeploymentParameters + post: + description: Create cloud service provider deployment parameters + operationId: createCloudServiceProviderDeploymentParameters parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - patch: + description: Internal Error + summary: Create cloud service provider deployment parameters tags: - Cloud service provider deployment parameters - summary: Update cloud service provider deployment parameters + patch: description: Update cloud service provider deployment parameters operationId: updateCloudServiceProviderDeploymentParameters parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string requestBody: content: application/json: @@ -1191,216 +1307,224 @@ paths: $ref: '#/components/schemas/DeploymentParametersUpdateRequest' required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/csps/{csp_name}/deployments/params/meta: - get: + description: Internal Error + summary: Update cloud service provider deployment parameters tags: - - Deployment parameters meta - summary: Get cloud service provider deployment parameters meta details - description: Get cloud service provider deployment parameters meta details - operationId: getCloudServiceProviderDeploymentParametersMetaDetails + - Cloud service provider deployment parameters + delete: + description: Delete cloud service provider deployment parameters + operationId: deleteCloudServiceProviderDeploymentParameters parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - post: + description: Internal Error + summary: Delete cloud service provider deployment parameters tags: - - Deployment parameters meta - summary: Create cloud service provider deployment parameters meta - description: Create cloud service provider deployment parameters meta - operationId: createCloudServiceProviderDeploymentParametersMeta + - Cloud service provider deployment parameters + /v2/csps/{csp_name}/deployments/params/meta: + get: + description: Get cloud service provider deployment parameters meta details + operationId: getCloudServiceProviderDeploymentParametersMetaDetails parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeploymentParametersMetaCreateRequest' - required: true + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMeta' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - delete: + description: Internal Error + summary: Get cloud service provider deployment parameters meta details tags: - Deployment parameters meta - summary: Delete cloud service provider deployment parameters meta - description: Delete cloud service provider deployment parameters meta - operationId: deleteCloudServiceProviderDeploymentParametersMeta + post: + description: Create cloud service provider deployment parameters meta + operationId: createCloudServiceProviderDeploymentParametersMeta parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMetaCreateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMeta' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - patch: + description: Internal Error + summary: Create cloud service provider deployment parameters meta tags: - Deployment parameters meta - summary: Update cloud service provider deployment parameters meta + patch: description: Update cloud service provider deployment parameters meta operationId: updateCloudServiceProviderDeploymentParametersMeta parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 + type: string requestBody: content: application/json: @@ -1408,965 +1532,1001 @@ paths: $ref: '#/components/schemas/DeploymentParametersMetaUpdateRequest' required: true responses: - '401': - description: Unauthorized + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersMeta' + description: OK + '401': content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/csps/{csp_name}: - get: + description: Internal Error + summary: Update cloud service provider deployment parameters meta tags: - - Cloud service providers - summary: Get cloud service provider details - description: Get cloud service provider details - operationId: getCloudServiceProviderDetails + - Deployment parameters meta + delete: + description: Delete cloud service provider deployment parameters meta + operationId: deleteCloudServiceProviderDeploymentParametersMeta parameters: - - name: csp_name + - description: Cloud service provider name in: path - description: Cloud service provider name + name: csp_name required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 255 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' description: Internal Error + summary: Delete cloud service provider deployment parameters meta + tags: + - Deployment parameters meta + /v2/gpus: + get: + description: Get all GPU by PCI records + operationId: getGpus + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetGpusResponse' + description: OK + '401': content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - delete: + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get all GPUs tags: - - Cloud service providers - summary: Delete cloud service provider - description: Delete cloud service provider - operationId: deleteCloudServiceProvider + - GpuByPci + parameters: [] + x-stackql-bare-array-wrap: + wrapperKey: gpus + wrapperName: GetGpusResponse + mediaType: application/json + scalar: false + /v2/gpus/pci-device-id/{pci_device_id}: + get: + description: Get all GPU records matching the given PCI Device ID + operationId: getGpuByPciDeviceId parameters: - - name: csp_name + - description: PCI Device ID in: path - description: Cloud service provider name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetGpuByPciDeviceIdResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - patch: + description: Internal Error + summary: Get GPU by PCI Device ID tags: - - Cloud service providers - summary: Update cloud service provider - description: Update cloud service provider - operationId: updateCloudServiceProvider + - GpuByPci + x-stackql-bare-array-wrap: + wrapperKey: gpu_by_pci_device_id + wrapperName: GetGpuByPciDeviceIdResponse + mediaType: application/json + scalar: false + post: + description: Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown') + operationId: createGpuByPciDeviceId parameters: - - name: csp_name + - description: PCI Device ID in: path - description: Cloud service provider name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/CloudServiceProviderUpdateRequest' + $ref: '#/components/schemas/GpuByPciCreateRequest' required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - x-ssa-scopes: - - kas - /v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/signature: - get: + description: Internal Error + summary: Create GPU by PCI Device ID only tags: - - ArtifactSigning - description: >- - Request to retrieve a pre-signed Download URL for the signature of an - artifact version as a guest. - operationId: getArtifactVersionSignatureAsGuest + - GpuByPci + patch: + description: Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated. + operationId: updateGpuByPciDeviceId parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true - schema: type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: artifact_name + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Partially update GPU by PCI Device ID only + tags: + - GpuByPci + delete: + description: Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown') + operationId: deleteGpuByPciDeviceId + parameters: + - description: PCI Device ID in: path - description: Artifact name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: version_id - in: path - description: Version ID - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: redirect - in: query - description: Get redirect URL - required: false - schema: - type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files: - get: + description: Internal Error + summary: Delete GPU by PCI Device ID only tags: - - Artifact Version Files - summary: List artifact files in org as guest - description: List files of the artifact version in org as guest - operationId: listArtifactFilesInOrgAsGuest + - GpuByPci + /v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}: + get: + description: Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID + operationId: getGpuByPciDeviceIdVendorId parameters: - - name: artifact_type + - description: PCI Device ID in: path - description: Artifact type - required: true - schema: - type: string - format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - maxLength: 262144 - minLength: 0 - - name: org_name - in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id + - description: PCI Vendor ID in: path - description: Version ID + name: pci_vendor_id required: true schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: - type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-reference - in: query - description: Page reference - required: false - schema: - type: string format: UTF-8 - maxLength: 1024 + maxLength: 32 minLength: 0 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetGpuByPciDeviceIdVendorIdResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/{artifact_type}: - get: + description: Internal Error + summary: Get GPUs by PCI Device ID and Vendor ID tags: - - Artifacts - summary: List public artifacts - description: List public artifacts - operationId: listPublicArtifacts + - GpuByPci + x-stackql-bare-array-wrap: + wrapperKey: gpu_by_pci_device_id_vendor_id + wrapperName: GetGpuByPciDeviceIdVendorIdResponse + mediaType: application/json + scalar: false + /v2/gpus/pci-device-id/{pci_device_id}/pci-vendor-id/{pci_vendor_id}/pci-subsystem-device-id/{pci_subsystem_device_id}: + get: + description: Get a single GPU record matching the full PCI composite key + operationId: getGpuByPciDeviceIdVendorIdSubsystemDeviceId parameters: - - name: artifact_type + - description: PCI Device ID in: path - description: Artifact type + name: pci_device_id required: true schema: - type: string format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: type: string + - description: PCI Vendor ID + in: path + name: pci_vendor_id + required: true + schema: format: UTF-8 - maxLength: 262144 - maximum: 5000 + maxLength: 32 minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: type: string + - description: PCI Subsystem Device ID + in: path + name: pci_subsystem_device_id + required: true + schema: format: UTF-8 - maxLength: 262144 - maximum: 10000 + maxLength: 32 minLength: 0 - minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/{artifact_type}/{org_name}/{artifact_name}: - get: + description: Internal Error + summary: Get GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Artifacts - summary: Get artifact in org as guest - description: Get artifact details in org as guest - operationId: getArtifactInOrgAsGuest + - GpuByPci + post: + description: Create a new GPU record using the full PCI composite key + operationId: createGpuByPciFullKey parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: artifact_type + type: string + - description: PCI Vendor ID in: path - description: Artifact type + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - enum: - - helm-charts - - endpoints - - agents - - blueprints - - apis - - playbooks - - skills - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: artifact_name + type: string + - description: PCI Subsystem Device ID in: path - description: Artifact name + name: pci_subsystem_device_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels - in: query - description: Remove unresolved labels - required: false - schema: - type: boolean + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciCreateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/recipes/{org_name}/{recipe_name}/versions/{version_id}/files: - get: + description: Internal Error + summary: Create GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Resource Version Files endpoints - summary: List recipe files in org as guest - description: List files of the recipe version in org as guest - operationId: listModeFilesInOrgAsGuest + - GpuByPci + patch: + description: Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated. + operationId: updateGpuByPciFullKey parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id + - description: PCI Vendor ID in: path - description: Version ID + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-reference - in: query - description: Page reference - required: false + - description: PCI Subsystem Device ID + in: path + name: pci_subsystem_device_id + required: true schema: - type: string format: UTF-8 - maxLength: 1024 + maxLength: 32 minLength: 0 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciUpdateRequest' + required: true responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GpuByPciResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/resources/{org_name}/{recipe_name}/versions/{version_id}/files: - get: + description: Internal Error + summary: Partially update GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Resource Version Files endpoints - summary: List recipe files in org as guest - description: List files of the recipe version in org as guest - operationId: listModeFilesInOrgAsGuest_1 + - GpuByPci + delete: + description: Delete a GPU record matching the full PCI composite key + operationId: deleteGpuByPciFullKey parameters: - - name: org_name + - description: PCI Device ID in: path - description: Organization name + name: pci_device_id required: true schema: - type: string format: UTF-8 - maxLength: 255 + maxLength: 32 minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: version_id + - description: PCI Vendor ID in: path - description: Version ID + name: pci_vendor_id required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 32 minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: type: string - format: UTF-8 - maxLength: 262144 - maximum: 5000 - minLength: 0 - minimum: 1 - - name: page-reference - in: query - description: Page reference - required: false + - description: PCI Subsystem Device ID + in: path + name: pci_subsystem_device_id + required: true schema: - type: string format: UTF-8 - maxLength: 1024 + maxLength: 32 minLength: 0 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: type: string - format: UTF-8 - maxLength: 262144 - maximum: 10000 - minLength: 0 - minimum: 0 responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/recipes/{org_name}/{recipe_name}/versions/{version_id}: - get: + description: Internal Error + summary: Delete GPU by PCI Device ID, Vendor ID, and Subsystem Device ID tags: - - Resource Versions - summary: Get recipe version in org as guest - description: Get recipe version in org as guest - operationId: getRecipeVersionInOrgAsGuest + - GpuByPci + /v2/helm-charts/{org_name}/{artifact_name}/versions: + get: + description: List chart versions in org as guest + operationId: listHelmChartVersionsInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Artifact name in: path - description: Recipe name + name: artifact_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Page size + in: query + name: page-size + required: false + schema: format: UTF-8 maxLength: 262144 + maximum: 5000 minLength: 0 - - name: version_id - in: path - description: Version ID - required: true + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/resources/{org_name}/{recipe_name}/versions/{version_id}: - get: + description: Internal Error + summary: List chart versions in org as guest tags: - - Resource Versions - summary: Get recipe version in org as guest - description: Get recipe version in org as guest - operationId: getRecipeVersionInOrgAsGuest_1 + - Helm Charts + /v2/helm-charts/{org_name}/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in org as guest + operationId: getHelmChartVersionInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Artifact name in: path - description: Recipe name + name: artifact_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Version ID in: path - description: Version ID + name: version_id required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/recipes/{org_name}/{recipe_name}/versions: - get: + description: Internal Error + summary: Get chart version in org as guest tags: - - Resource Versions - summary: List recipe versions in org as guest - description: List recipe versions in org as guest - operationId: listRecipeVersionsInOrgAsGuest + - Helm Charts + /v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions: + get: + description: List chart versions in team as guest + operationId: listHelmChartVersionsInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Team name in: path - description: Recipe name + name: team_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: format: UTF-8 maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 5000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: sort-order + type: string + - description: Sort order in: query - description: Sort order + name: sort-order required: false schema: - type: string - format: UTF-8 enum: - ALPHABETIC_ASC - ALPHABETIC_DESC @@ -2384,15 +2544,15 @@ paths: - BUILT_BY_DESC - RESOURCE_ID_ASC - RESOURCE_ID_DESC + format: UTF-8 maxLength: 262144 minLength: 0 - - name: release-type + type: string + - description: Release Type in: query - description: Release Type + name: release-type required: false schema: - type: string - format: UTF-8 enum: - BETA - GA @@ -2400,405 +2560,310 @@ paths: - FEATURE - PRODUCTION - LTSB + format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/resources/{org_name}/{recipe_name}/versions: - get: + description: Internal Error + summary: List chart versions in team as guest tags: - - Resource Versions - summary: List recipe versions in org as guest - description: List recipe versions in org as guest - operationId: listRecipeVersionsInOrgAsGuest_1 + - Helm Charts + /v2/helm-charts/{org_name}/{team_name}/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in team as guest + operationId: getHelmChartVersionInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: recipe_name + type: string + - description: Team name in: path - description: Recipe name + name: team_name required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: page-size - in: query - description: Page size - required: false - schema: type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: format: UTF-8 maxLength: 262144 - maximum: 5000 minLength: 0 - minimum: 1 - - name: page-number - in: query - description: Page number - zero based index - required: false - schema: type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 maxLength: 262144 - maximum: 10000 minLength: 0 - minimum: 0 - - name: sort-order - in: query - description: Sort order - required: false - schema: type: string - format: UTF-8 - enum: - - ALPHABETIC_ASC - - ALPHABETIC_DESC - - CREATED_DATE_ASC - - CREATED_DATE_DESC - - SEMVER_ASC - - SEMVER_DESC - - DISPLAY_NAME_ASC - - DISPLAY_NAME_DESC - - UPDATED_DATE_ASC - - UPDATED_DATE_DESC - - PUBLISHER_ASC - - PUBLISHER_DESC - - BUILT_BY_ASC - - BUILT_BY_DESC - - RESOURCE_ID_ASC - - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - - name: release-type - in: query - description: Release Type - required: false - schema: - type: string - format: UTF-8 - enum: - - BETA - - GA - - EA - - FEATURE - - PRODUCTION - - LTSB - maxLength: 262144 - minLength: 0 responses: - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '404': - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '429': - description: Too many requests - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - '500': - description: Internal Error + '200': content: application/json: schema: - $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/recipes/{org_name}/{recipe_name}: - get: - tags: - - Resources - summary: Get recipe in org as guest - description: Get recipe details in org as guest - operationId: getRecipeInOrgAsGuest - parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true - schema: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels - in: query - description: Remove unresolved labels - required: false - schema: - type: boolean - responses: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/resources/{org_name}/{recipe_name}: - get: + description: Internal Error + summary: Get chart version in team as guest tags: - - Resources - summary: Get recipe in org as guest - description: Get recipe details in org as guest - operationId: getRecipeInOrgAsGuest_1 + - Helm Charts + /v2/models: + get: + description: This operation lists public models. + operationId: listPublicModels parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: recipe_name - in: path - description: Recipe name - required: true + - description: Page size + in: query + name: page-size + required: false schema: - type: string format: UTF-8 maxLength: 262144 + maximum: 1000 minLength: 0 - - name: resolve-labels + minimum: 1 + type: string + - description: Page reference in: query - description: Resolve labels + name: page-reference required: false schema: - type: boolean - - name: remove-unresolved-labels + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index in: query - description: Remove unresolved labels + name: page-number required: false schema: - type: boolean + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/models/{org_name}/{model_name}: - get: + description: Internal Error + summary: List public models tags: - Models - summary: Get model in org as guest + /v2/models/{org_name}/{model_name}: + get: description: This operation gets info of a model in the org as guest. operationId: getModelInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Model name in: path - description: Model name + name: model_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: resolve-labels + type: string + - description: Resolve labels in: query - description: Resolve labels + name: resolve-labels required: false schema: type: boolean - - name: remove-unresolved-labels + - description: Remove unresolved labels in: query - description: Remove unresolved labels + name: remove-unresolved-labels required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/models/{org_name}/{model_name}/versions: - get: + description: Internal Error + summary: Get model in org as guest tags: - - Model Version - summary: List model versions in org as guest + - Models + /v2/models/{org_name}/{model_name}/versions: + get: description: List model versions in org as guest operationId: listModelVersionsInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Model name in: path - description: Model name + name: model_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: release-type + type: string + - description: Release Type in: query - description: Release Type + name: release-type required: false schema: - type: string - format: UTF-8 enum: - BETA - GA @@ -2806,37 +2871,37 @@ paths: - FEATURE - PRODUCTION - LTSB + format: UTF-8 maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 1000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: sort-order + type: string + - description: Sort order in: query - description: Sort order + name: sort-order required: false schema: - type: string - format: UTF-8 enum: - ALPHABETIC_ASC - ALPHABETIC_DESC @@ -2854,260 +2919,384 @@ paths: - BUILT_BY_DESC - RESOURCE_ID_ASC - RESOURCE_ID_DESC + format: UTF-8 maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/models/{org_name}/{model_name}/versions/{version_id}: - get: + description: Internal Error + summary: List model versions in org as guest tags: - Model Version - summary: Get model version in org as guest + /v2/models/{org_name}/{model_name}/versions/{version_id}: + get: description: Get model version in org as guest operationId: getModelVersionInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Model name in: path - description: Model name + name: model_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: version_id + type: string + - description: Version ID in: path - description: Version ID + name: version_id required: true schema: - type: string format: UTF-8 maxLength: 512 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/models/{org_name}/{model_name}/versions/{version_id}/files: - get: + description: Internal Error + summary: Get model version in org as guest tags: - - Model Version Files - summary: List model files in org as guest + - Model Version + /v2/models/{org_name}/{model_name}/versions/{version_id}/files: + get: description: List files of the model version in org as guest operationId: listModeFilesInOrgAsGuest_2 parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: model_name + type: string + - description: Model name in: path - description: Model name + name: model_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: version_id + type: string + - description: Version ID in: path - description: Version ID + name: version_id required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 5000 minLength: 0 minimum: 1 - - name: page-reference + type: string + - description: Page reference in: query - description: Page reference + name: page-reference required: false schema: - type: string format: UTF-8 maxLength: 1024 minLength: 0 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/helm-charts/{org_name}/{artifact_name}/versions: + description: Internal Error + summary: List model files in org as guest + tags: + - Model Version Files + /v2/models/{org_name}/{team_name}/{model_name}: get: + description: This operation gets info of a model in the org/team as guest. + operationId: getModelInTeamAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model in team as guest tags: - - Helm Charts - summary: List chart versions in org as guest - description: List chart versions in org as guest - operationId: listHelmChartVersionsInOrgAsGuest + - Models + /v2/models/{org_name}/{team_name}/{model_name}/versions: + get: + description: List model versions in team as guest + operationId: listModelVersionsInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_name + type: string + - description: Model name in: path - description: Artifact name + name: model_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB format: UTF-8 maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 - maximum: 5000 + maximum: 1000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: sort-order + type: string + - description: Sort order in: query - description: Sort order + name: sort-order required: false schema: - type: string - format: UTF-8 enum: - ALPHABETIC_ASC - ALPHABETIC_DESC @@ -3125,500 +3314,518 @@ paths: - BUILT_BY_DESC - RESOURCE_ID_ASC - RESOURCE_ID_DESC - maxLength: 262144 - minLength: 0 - - name: release-type - in: query - description: Release Type - required: false - schema: - type: string format: UTF-8 - enum: - - BETA - - GA - - EA - - FEATURE - - PRODUCTION - - LTSB maxLength: 262144 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/helm-charts/{org_name}/{artifact_name}/versions/{version_id}: - get: + description: Internal Error + summary: List model versions in team as guest tags: - - Helm Charts - summary: Get chart version in org as guest - description: Get chart version in org as guest - operationId: getHelmChartVersionInOrgAsGuest + - Model Version + /v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}: + get: + description: Get model version in team as guest + operationId: getModelVersionInTeamAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_name + type: string + - description: Team name in: path - description: Artifact name + name: team_name required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: version_id + type: string + - description: Model name in: path - description: Version ID + name: model_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 - maxLength: 262144 + maxLength: 512 minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/gpus/pci-device-id/{pci_device-id}/pci-vendor-id/{pci_vendor-id}: - get: + description: Internal Error + summary: Get model version in team as guest tags: - - GpuByPci - summary: Get GPUs by PCI Device ID and Vendor ID - description: >- - Get all GPUs by PCI records matching the given PCI Device ID and Vendor - ID - operationId: getGpuByPciDeviceIdVendorId + - Model Version + /v2/models/{org_name}/{team_name}/{model_name}/versions/{version_id}/files: + get: + description: List files of the model version in team as guest + operationId: listModeFilesInTeamAsGuest_2 parameters: - - name: pci_device_id + - description: Organization name in: path - description: PCI Device ID + name: org_name required: true schema: + format: UTF-8 + maxLength: 255 + minLength: 0 type: string + - description: Team name + in: path + name: team_name + required: true + schema: format: UTF-8 - maxLength: 32 + maxLength: 255 minLength: 0 - - name: pci_vendor_id + type: string + - description: Model name in: path - description: PCI Vendor ID + name: model_name required: true schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: format: UTF-8 - maxLength: 32 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - security: - - ssa: - - kas - - readGpuByPci - x-ssa-scopes: - - kas - - readGpuByPci - /v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/{csp_name}/params: - get: + description: Internal Error + summary: List model files in team as guest tags: - - Artifact deployment parameters - summary: Get public artifact deployment parameters details in org - description: Get public artifact deployment parameters details in org - operationId: getPublicArtifactDeploymentParametersInOrg + - Model Version Files + /v2/nim/{team}/{nim_name}/{tag}/metadata: + post: + description: | + Registers NIM profile metadata for the given team, NIM name, and tag. This is a placeholder that validates the supplied profiles and echoes the provided fields back to the caller. + SSA: requires the following scope `createNimMetadata` + operationId: createNimMetadata parameters: - - name: org_name + - description: Team name in: path - description: Organization name + name: team required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: artifact_type + pattern: ^[a-zA-Z0-9._-]+$ + type: string + - description: NIM name in: path - description: Artifact type + name: nim_name required: true schema: - type: string format: UTF-8 - enum: - - repositories - - recipes - - models - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: + pattern: ^[a-zA-Z0-9._-]+$ type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: csp_name + - description: NIM tag in: path - description: Cloud service provider name + name: tag required: true schema: - type: string format: UTF-8 - maxLength: 262144 + maxLength: 255 minLength: 0 - - name: inherit-csp-parameters - in: query - description: Inherit CSP parameters - required: false - schema: - type: boolean + pattern: ^[a-zA-Z0-9._-]+$ + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NimManifestMetadataRequest' + required: true responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/NimManifestMetadataResponse' + description: Created '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/csps/{artifact_type}/{org_name}/{artifact_name}/deployments/params: - get: + description: Internal Error + summary: Create NIM metadata tags: - - Artifact deployment parameters - summary: List public artifact deployment parameters in org - description: List public artifact deployment parameters in org - operationId: listPublicArtifactDeploymentParametersInOrg + - NIM Metadata + /v2/recipes: + get: + description: List public recipes + operationId: listPublicRecipes parameters: - - name: org_name - in: path - description: Organization name - required: true - schema: - type: string - format: UTF-8 - maxLength: 255 - minLength: 0 - - name: artifact_type - in: path - description: Artifact type - required: true + - description: Page size + in: query + name: page-size + required: false schema: - type: string format: UTF-8 - enum: - - repositories - - recipes - - models maxLength: 262144 + maximum: 5000 minLength: 0 - - name: artifact_name - in: path - description: Artifact name - required: true - schema: + minimum: 1 type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: inherit-csp-parameters + - description: Page number - zero based index in: query - description: Inherit CSP parameters + name: page-number required: false schema: - type: boolean + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/collections/{org_name}/{collection_name}: - get: + description: Internal Error + summary: List public recipes tags: - - Collections - summary: Get collection in org as guest - description: Get collection details in org as guest - operationId: getCollectionInOrgAsGuest + - Resources + /v2/recipes/{org_name}/{recipe_name}: + get: + description: Get recipe details in org as guest + operationId: getRecipeInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name + type: string + - description: Recipe name in: path - description: Collection name + name: recipe_name required: true schema: - type: string format: UTF-8 maxLength: 262144 minLength: 0 - - name: resolve-labels + type: string + - description: Resolve labels in: query - description: Resolve labels + name: resolve-labels required: false schema: type: boolean - - name: remove-unresolved-labels + - description: Remove unresolved labels in: query - description: Remove unresolved labels + name: remove-unresolved-labels required: false schema: type: boolean responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] - /v1/collections/{org_name}/{collection_name}/artifacts/{artifact_type}: - get: + description: Internal Error + summary: Get recipe in org as guest tags: - - Collections - summary: List collection artifacts in org as guest - description: >- - List collection artifacts the user can access in the specified org as - guest - operationId: listCollectionArtifactsInOrgAsGuest + - Resources + /v2/recipes/{org_name}/{recipe_name}/versions: + get: + description: List recipe versions in org as guest + operationId: listRecipeVersionsInOrgAsGuest parameters: - - name: org_name + - description: Organization name in: path - description: Organization name + name: org_name required: true schema: - type: string format: UTF-8 maxLength: 255 minLength: 0 - - name: collection_name - in: path - description: Collection name - required: true - schema: type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - - name: artifact_type + - description: Recipe name in: path - description: Artifact type + name: recipe_name required: true schema: - type: string format: UTF-8 - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL maxLength: 262144 minLength: 0 - - name: page-size + type: string + - description: Page size in: query - description: Page size + name: page-size required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 5000 minLength: 0 minimum: 1 - - name: page-number + type: string + - description: Page number - zero based index in: query - description: Page number - zero based index + name: page-number required: false schema: - type: string format: UTF-8 maxLength: 262144 maximum: 10000 minLength: 0 minimum: 0 - - name: order-by + type: string + - description: Sort order in: query - description: Order by + name: sort-order required: false schema: - type: string - format: UTF-8 enum: - ALPHABETIC_ASC - ALPHABETIC_DESC @@ -3636,515 +3843,4268 @@ paths: - BUILT_BY_DESC - RESOURCE_ID_ASC - RESOURCE_ID_DESC + format: UTF-8 maxLength: 262144 minLength: 0 - - name: resolve-labels - in: query - description: Resolve labels - required: false - schema: - type: boolean - - name: remove-unresolved-labels + type: string + - description: Release Type in: query - description: Remove unresolved labels + name: release-type required: false schema: - type: boolean + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Response' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Response' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/Response' + description: Not Found '429': - description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Response' + description: Too many requests '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' description: Internal Error + summary: List recipe versions in org as guest + tags: + - Resource Versions + /v2/recipes/{org_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org as guest + operationId: getRecipeVersionInOrgAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': content: application/json: schema: $ref: '#/components/schemas/Response' - x-ssa-scopes: [] -components: - schemas: - Response: - type: object - properties: - requestStatus: - $ref: '#/components/schemas/RequestStatus' - description: Request status information - GpuByPciCreateRequest: - type: object - description: GPU by PCI properties - properties: - pciDeviceId: - type: string - description: PCI Device ID - pciVendorId: - type: string - description: PCI Vendor ID - pciSubsystemDeviceId: - type: string - description: PCI Subsystem Device ID - labelName: - type: string - description: Label name for the GPU - displayName: - type: string - description: Display name for the GPU - cudaMajorVersion: + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in org as guest + tags: + - Resource Versions + /v2/recipes/{org_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in org as guest + operationId: listModeFilesInOrgAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in org as guest + tags: + - Resource Version Files endpoints + /v2/recipes/{org_name}/{team_name}/{recipe_name}: + get: + description: Get recipe details in team as guest + operationId: getRecipeInTeamAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in team as guest + tags: + - Resources + /v2/recipes/{org_name}/{team_name}/{recipe_name}/versions: + get: + description: List recipe versions in team as guest + operationId: listRecipeVersionsInTeamAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in team as guest + tags: + - Resource Versions + /v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team as guest + operationId: getRecipeVersionInTeamAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in team as guest + tags: + - Resource Versions + /v2/recipes/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in team as guest + operationId: listModeFilesInTeamAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in team as guest + tags: + - Resource Version Files endpoints + /v2/resources: + get: + description: List public recipes + operationId: listPublicRecipes_1 + parameters: + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List public recipes + tags: + - Resources + /v2/resources/{org_name}/{recipe_name}: + get: + description: Get recipe details in org as guest + operationId: getRecipeInOrgAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in org as guest + tags: + - Resources + /v2/resources/{org_name}/{recipe_name}/versions: + get: + description: List recipe versions in org as guest + operationId: listRecipeVersionsInOrgAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in org as guest + tags: + - Resource Versions + /v2/resources/{org_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org as guest + operationId: getRecipeVersionInOrgAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in org as guest + tags: + - Resource Versions + /v2/resources/{org_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in org as guest + operationId: listModeFilesInOrgAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in org as guest + tags: + - Resource Version Files endpoints + /v2/resources/{org_name}/{team_name}/{recipe_name}: + get: + description: Get recipe details in team as guest + operationId: getRecipeInTeamAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in team as guest + tags: + - Resources + /v2/resources/{org_name}/{team_name}/{recipe_name}/versions: + get: + description: List recipe versions in team as guest + operationId: listRecipeVersionsInTeamAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in team as guest + tags: + - Resource Versions + /v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team as guest + operationId: getRecipeVersionInTeamAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in team as guest + tags: + - Resource Versions + /v2/resources/{org_name}/{team_name}/{recipe_name}/versions/{version_id}/files: + get: + description: List files of the recipe version in team as guest + operationId: listModeFilesInTeamAsGuest_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in team as guest + tags: + - Resource Version Files endpoints + /v2/{artifact_type}: + get: + description: List public artifacts + operationId: listPublicArtifacts + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List public artifacts + tags: + - Artifacts + /v2/{artifact_type}/{org_name}/{artifact_name}: + get: + description: Get artifact details in org as guest + operationId: getArtifactInOrgAsGuest + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact in org as guest + tags: + - Artifacts + /v2/{artifact_type}/{org_name}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in org as guest + operationId: listArtifactFilesInOrgAsGuest + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact files in org as guest + tags: + - Artifact Version Files + /v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}: + get: + description: Get artifact details in team as guest + operationId: getChartInTeamAsGuest + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact in team as guest + tags: + - Artifacts + /v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in team as guest + operationId: listArtifactFilesInTeamAsGuest + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact files in team as guest + tags: + - Artifact Version Files + /v2/{artifact_type}/{org_name}/{artifact_name}/spec: + get: + description: Get AI Playground for public artifactType + operationId: getPublicModelArtifactsSpec + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get AI Playground for public artifactType + tags: + - AIPlayground + /v2/{artifact_type}/{org_name}/{team_name}/{artifact_name}/spec: + get: + description: Get AI Playground for public artifactType + operationId: getPublicModelArtifactsSpec_1 + parameters: + - description: Organization name + in: path + name: org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get AI Playground for public artifactType + tags: + - AIPlayground +components: + schemas: + CollectionListResponse: + description: Response to list collections request + properties: + collections: + items: + $ref: '#/components/schemas/Collection' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + Response: + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionResponse: + description: Response to create collection request + properties: + collection: + $ref: '#/components/schemas/Collection' + description: Collection object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactListResponse: + description: Response to list artifacts request + properties: + artifacts: + items: + $ref: '#/components/schemas/Artifact' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CloudServiceProviderListResponse: + description: Response to list Cloud Service Providers request + properties: + cloudServiceProviders: + items: + $ref: '#/components/schemas/CloudServiceProvider' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CloudServiceProviderCreateRequest: + description: Request to create a new Cloud Service Provider + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + description: + description: Description of the Cloud Service Provider + type: string + displayName: + description: Display name of the Cloud Service Provider + type: string + isEnabled: + description: Determines if this Cloud Service Provider is enabled + type: boolean + labels: + items: + type: string + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the Cloud Service Provider + type: string + required: + - name + type: object + CloudServiceProvider: + description: Cloud Service Provider object + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the Cloud Service Provider + type: string + displayName: + description: Display name of the Cloud Service Provider + type: string + isDeployable: + description: Determines if this Cloud Service Provider can be used to deploy artifacts + type: boolean + isEnabled: + description: Determines if this Cloud Service Provider is enabled + type: boolean + labels: + items: + type: string + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the Cloud Service Provider + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + required: + - name + type: object + DeploymentParametersListResponse: + description: Response to list deployment parameters request + properties: + artifact: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + csp: + description: Cloud Service Provider name + type: string + deploymentParameters: + items: + $ref: '#/components/schemas/DeploymentParameters' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + DeploymentParameters: + description: Deployment Artifact Parameters object + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + csp: + description: Cloud Service Provider name + type: string + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + CloudServiceProviderUpdateRequest: + description: Request to update existing Cloud Service Provider + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + description: + description: Description of the Cloud Service Provider + type: string + displayName: + description: Display name of the Cloud Service Provider + type: string + isEnabled: + description: Determines if this Cloud Service Provider is enabled + type: boolean + labels: + items: + type: string + type: array + logo: + description: URL for the logo image + type: string + type: object + DeploymentParametersUpdateRequest: + description: Request to update existing deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersCreateRequest: + description: Request to create a new deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersMeta: + description: Cloud Service Provider Deployment Parameters object + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + csp: + description: Cloud Service Provider name + type: string + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + type: object + DeploymentParametersMetaUpdateRequest: + description: Properties for the cloud service provider deployment parameters meta to create + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + type: object + DeploymentParametersMetaCreateRequest: + description: Properties for the cloud service provider deployment parameters meta to create + properties: + cpu: + $ref: '#/components/schemas/DeploymentCpuParametersMeta' + description: Cloud Service Provider Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParametersMeta' + description: Cloud Service Provider Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParametersMeta' + description: Cloud Service Provider Deployment Memory Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParametersMeta' + description: Cloud Service Provider Deployment Storage Parameters object + required: + - gpu + - storage + type: object + GpuByPciResponse: + description: Response for GPU by PCI ID lookup + properties: + createdAt: + description: Creation timestamp + format: date-time + type: string + cudaMajorVersion: + description: CUDA major version + type: string + cudaMinorVersion: + description: CUDA minor version + type: string + displayName: + description: Display name for the GPU + type: string + formFactor: + description: GPU form factor + type: string + gpuCounts: + items: + format: int32 + maximum: 255 + minimum: 0 + type: integer + type: array + uniqueItems: true + labelName: + description: Label name for the GPU + type: string + memorySizeGb: + description: Memory size in GB (smallint range) + format: int32 + maximum: 32767 + minimum: 0 + type: integer + pciDeviceId: + description: PCI Device ID + type: string + pciSubsystemDeviceId: + description: PCI Subsystem Device ID + type: string + pciVendorId: + description: PCI Vendor ID + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + updatedAt: + description: Last update timestamp + format: date-time + type: string + required: + - displayName + - pciDeviceId + type: object + GpuByPciUpdateRequest: + description: GPU by PCI update properties + properties: + cudaMajorVersion: + description: CUDA major version + type: string + cudaMinorVersion: + description: CUDA minor version + type: string + displayName: + description: Display name for the GPU + type: string + formFactor: + description: GPU form factor + type: string + gpuCounts: + items: + format: int32 + maximum: 255 + minimum: 0 + type: integer + type: array + uniqueItems: true + labelName: + description: Label name for the GPU + type: string + memorySizeGb: + description: Memory size in GB (smallint range) + format: int32 + maximum: 32767 + minimum: 0 + type: integer + type: object + GpuByPciCreateRequest: + description: GPU by PCI properties + properties: + cudaMajorVersion: + description: CUDA major version + type: string + cudaMinorVersion: + description: CUDA minor version + type: string + displayName: + description: Display name for the GPU + type: string + formFactor: + description: GPU form factor + type: string + gpuCounts: + items: + format: int32 + maximum: 255 + minimum: 0 + type: integer + type: array + uniqueItems: true + labelName: + description: Label name for the GPU + type: string + memorySizeGb: + description: Memory size in GB (smallint range) + format: int32 + maximum: 32767 + minimum: 0 + type: integer + pciDeviceId: + description: PCI Device ID + type: string + pciSubsystemDeviceId: + description: PCI Subsystem Device ID + type: string + pciVendorId: + description: PCI Vendor ID + type: string + required: + - displayName + - pciDeviceId + type: object + ArtifactVersionListResponse: + description: Response to list artifact versions request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersions: + items: + $ref: '#/components/schemas/ArtifactVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionResponse: + description: Response to artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelListResponse: + description: Response to list models request + properties: + models: + items: + $ref: '#/components/schemas/Model' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelResponse: + description: Response to create model request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionListResponse: + description: Response to list model versions request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersions: + items: + $ref: '#/components/schemas/ModelVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionResponse: + description: Response to create a model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionFileListResponse: + description: Response to list files for model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelFiles: + items: + $ref: '#/components/schemas/ModelFile' + type: array + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + NimManifestMetadataRequest: + description: NIM profile metadata + properties: + profiles: + items: + $ref: '#/components/schemas/NimProfile' + type: array + type: object + NimManifestMetadataResponse: + properties: + profiles: + items: + $ref: '#/components/schemas/NimProfile' + type: array + type: object + RecipeListResponse: + description: Response to list recipes request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipes: + items: + $ref: '#/components/schemas/Recipe' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeResponse: + description: Response to recipe request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionListResponse: + description: Response to list recipe versions request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersions: + items: + $ref: '#/components/schemas/RecipeVersion' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionResponse: + description: Response to recipe version request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionFileListResponse: + description: Response to list files for recipe version request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeFiles: + items: + $ref: '#/components/schemas/RecipeFile' + type: array + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactResponse: + description: Response to artifact request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionFileListResponse: + description: Response to list files for artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactFiles: + items: + $ref: '#/components/schemas/File' + type: array + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + AIPlaygroundResponse: + description: Request to fetch an AI Playground config + properties: + artifactName: + description: Unique name of the model + type: string + artifactType: + description: ArtifactTypeEnum of the artifact + type: string + attributes: + description: Metadata json string + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + namespace: + description: org/team of the model + type: string + nvcfFunctionId: + description: NVCF function id for the model playground + type: string + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground + type: string + openAPISpec: + description: OpenAPI specification for this model + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + Collection: + description: Collection object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: Organization that built the collection + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + category: + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + type: string + isPublic: + description: Determines if this collection is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the collection + type: string + orgName: + description: Name of the org that the collection belongs to + type: string + ownerName: + description: Name of the user who owns this version + type: string + policyLabels: + items: + type: string + type: array + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publisher: + description: Organization that published this collection + type: string + shortDescription: + description: Short description of the collection + type: string + size: + description: Total count of collection items + format: int64 + type: integer + teamName: + description: Name of the team that the collection belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + required: + - category + type: object + PaginationInfo: + description: Pagination Information + properties: + index: + description: Page index of results + format: int32 + type: integer + nextPage: + description: Serialized pointer to the next results page. Should be used for fetching next page. Can be empty + type: string + size: + description: Number of results in page + format: int32 + type: integer + totalPages: + description: Total number of pages available + format: int64 + type: integer + totalResults: + description: Total number of results available + format: int64 + type: integer + type: object + RequestStatus: + description: Request status information + properties: + requestId: + description: Request ID + type: string + serverId: + description: Server ID + type: string + statusCode: + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + type: string + statusDescription: + description: Status description + type: string + type: object + Artifact: + description: Artifact object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + bias: + description: Text describing bias in the artifact + type: string + builtBy: + description: Organization that built the helm chart + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the helm chart + type: string + displayName: + description: Display name + type: string + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact + type: string + explainability: + description: Text describing the explainability for this artifact + type: string + hasSignedVersion: + description: Indicates if the artifact has any signed versions + type: boolean + isFavourite: + description: Flag indicating if helm chart is user's favorite + type: boolean + isPublic: + description: Determines if this helm chart is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionId: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the helm chart + type: string + orgName: + description: Name of the org that the helm chart belongs to + type: string + ownerName: + description: Name of the user who owns this version + type: string + policyLabels: + items: + type: string + type: array + privacy: + description: Text describing the privacy for this artifact + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publisher: + description: Organization that published this helm chart + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the artifact + type: string + shortDescription: + description: Short description of the helm chart + type: string + teamName: + description: Name of the team that the helm chart belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + ArtifactAttribute: + description: Attribute on the artifact + properties: + key: + maxLength: 255 + pattern: '[a-zA-Z0-9]+' + type: string + value: + maxLength: 255 + type: string + type: object + DeploymentArtifactParameters: + description: Deployment Artifact Parameters object + properties: + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + displayName: + description: Display name of the artifact + type: string + filePath: + description: Path to a file in an artifact version + type: string + name: + description: Unique name of the artifact + type: string + orgName: + description: Name of the org that the artifact belongs to type: string - description: CUDA major version - cudaMinorVersion: + teamName: + description: Name of the team that the artifact belongs to type: string - description: CUDA minor version - memorySizeGb: + versionId: + description: ID of the version or tag + type: string + required: + - name + - orgName + type: object + DeploymentCpuParameters: + description: Deployment CPU Parameters object + properties: + count: + description: Total count of CPUs + format: int64 type: integer - format: int32 - description: Memory size in GB (smallint range) - maximum: 32767 - minimum: 0 - formFactor: + type: object + DeploymentGpuParameters: + description: Deployment GPU Parameters object + properties: + count: + description: Total count of GPUs + format: int64 + type: integer + type: + description: GPU Type type: string - description: GPU form factor - gpuCounts: + type: object + DeploymentMemoryParameters: + description: Deployment Memory Parameters object + properties: + capacityInGB: + description: Capacity in GB + format: int64 + type: integer + type: object + DeploymentStorageParameters: + description: Deployment Storage Parameters object + properties: + capacityInGB: + description: Capacity in GB + format: int64 + type: integer + type: object + DeploymentCpuParametersMeta: + description: Cloud Service Provider Deployment CPU Parameters object + properties: + count: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - count + type: object + DeploymentGpuParametersMeta: + description: Cloud Service Provider Deployment GPU Parameters object + properties: + count: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + type: + $ref: '#/components/schemas/EnumerableResource' + description: Enumerable Resource object + required: + - type + type: object + DeploymentMemoryParametersMeta: + description: Cloud Service Provider Deployment Memory Parameters object + properties: + capacityInGB: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - capacityInGB + type: object + DeploymentStorageParametersMeta: + description: Cloud Service Provider Deployment Storage Parameters object + properties: + capacityInGB: + $ref: '#/components/schemas/CountableResource' + description: Countable Resource object + required: + - capacityInGB + type: object + ArtifactVersion: + description: Artifact version object + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' type: array + createdByUser: + description: Id of the user who created this version + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: items: - type: integer - format: int32 - maximum: 255 - minimum: 0 - uniqueItems: true - required: - - displayName - - pciDeviceId - GpuByPciUpdateRequest: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the version + type: string + id: + description: Unique ID of the version + type: string + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + policy: + items: + type: string + type: array + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the version in bytes + format: int64 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + Model: + description: Model object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + application: + description: Application of the model + type: string + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the model + type: string + displayName: + description: Display name + type: string + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact + type: string + explainability: + description: Text describing explainability for this model + type: string + framework: + description: Framework used to train this model + type: string + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + hasSignedVersion: + description: Indicates if the model has any signed versions + type: boolean + isFavourite: + description: Flag indicating if model is user's favorite + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + isPublic: + description: Determines if model is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionGpuModel: + description: GPU model and memory used for the latest version + type: string + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + modelFormat: + description: Format of the model + type: string + name: + description: Unique name of the model + type: string + orgName: + description: Name of the org that the model belongs to + type: string + ownerName: + description: Name of model's owner + type: string + policyLabels: + items: + type: string + type: array + precision: + description: Precision this model was trained with + type: string + privacy: + description: Text describing the privacy for this model + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the repository + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the model + type: string + teamName: + description: Name of the team that the model belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + versions: + items: + type: string + type: array + type: object + ModelVersion: + description: Model version object + properties: + accuracyReached: + description: Accuracy this model reached + format: float + type: number + batchSize: + description: Batch size this model was trained with + format: int64 + type: integer + createdByUser: + description: Id of the user who created this model + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the model version + type: string + gpuModel: + description: GPU model and memory + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' + format: int64 + type: integer + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + memoryFootprint: + description: Model size/memory footprint for inference + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + type: integer + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + ownerName: + description: Name of the user who owns this version + type: string + policy: + items: + type: string + type: array + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the model in bytes + format: int64 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + type: string + type: object + ModelFile: + description: Model file object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the model + maxLength: 1023 + minLength: 1 + type: string + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer type: object - description: GPU by PCI update properties + NimProfile: properties: - labelName: + buildable_profile: + type: boolean + checksum: type: string - description: Label name for the GPU - displayName: + feat_lora: + type: boolean + form_factor: type: string - description: Display name for the GPU - cudaMajorVersion: + gpu: type: string - description: CUDA major version - cudaMinorVersion: + gpu_device: type: string - description: CUDA minor version - memorySizeGb: + inference_backend: + type: string + latency: + additionalProperties: {} + type: object + min_vram_per_device_gb: + format: double + type: number + pipeline_parallel_size: + format: int32 type: integer + precision: + type: string + profile_id: + type: string + tensor_parallel_size: format: int32 - description: Memory size in GB (smallint range) - maximum: 32767 - minimum: 0 - formFactor: + type: integer + workspace_hash: type: string - description: GPU form factor - gpuCounts: - type: array - items: - type: integer - format: int32 - maximum: 255 - minimum: 0 - uniqueItems: true - CloudServiceProviderCreateRequest: type: object - description: Request to create a new Cloud Service Provider + Recipe: + description: Recipe object properties: - name: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED type: string - description: Unique name of the Cloud Service Provider - displayName: + advanced: + description: Text for describing advanced information + type: string + application: + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + type: string + builtBy: + description: Organization that built the recipe + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: Display name of the Cloud Service Provider description: + description: Description of the recipe type: string - description: Description of the Cloud Service Provider - isEnabled: + displayName: + description: Display name + type: string + hasSignedVersion: + description: Indicates if the recipe has any signed versions type: boolean - description: Determines if this Cloud Service Provider is enabled - logo: + isFavourite: + description: Flag indicating if recipe is user's favorite + type: boolean + isPublic: + description: Determines if this recipe is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version type: string - description: URL for the logo image - attributes: + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' type: array + logo: + description: URL for the logo image + type: string + modelFormat: + description: Format of the model this recipe produces + type: string + name: + description: Unique name of the recipe + type: string + orgName: + description: Name of the org that the recipe belongs to + type: string + performance: + description: Text describing performance of the recipe results + type: string + policyLabels: items: - $ref: '#/components/schemas/ArtifactAttribute' - labels: + type: string type: array + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + type: string + productNames: items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ type: string - required: - - name - DeploymentParametersCreateRequest: - type: object - description: Request to create a new deployment parameters - properties: - cpu: - $ref: '#/components/schemas/DeploymentCpuParameters' - description: Deployment CPU Parameters object - gpu: - $ref: '#/components/schemas/DeploymentGpuParameters' - description: Deployment GPU Parameters object - memory: - $ref: '#/components/schemas/DeploymentMemoryParameters' - description: Deployment Memory Parameters object - storage: - $ref: '#/components/schemas/DeploymentStorageParameters' - description: Deployment Storage Parameters object - container: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - model: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - resource: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - DeploymentParametersUpdateRequest: - type: object - description: Request to update existing deployment parameters - properties: - cpu: - $ref: '#/components/schemas/DeploymentCpuParameters' - description: Deployment CPU Parameters object - gpu: - $ref: '#/components/schemas/DeploymentGpuParameters' - description: Deployment GPU Parameters object - memory: - $ref: '#/components/schemas/DeploymentMemoryParameters' - description: Deployment Memory Parameters object - storage: - $ref: '#/components/schemas/DeploymentStorageParameters' - description: Deployment Storage Parameters object - container: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - model: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - resource: - $ref: '#/components/schemas/DeploymentArtifactParameters' - description: Deployment Artifact Parameters object - DeploymentParametersMetaCreateRequest: - type: object - description: >- - Properties for the cloud service provider deployment parameters meta to - create - properties: - cpu: - $ref: '#/components/schemas/DeploymentCpuParametersMeta' - description: Cloud Service Provider Deployment CPU Parameters object - gpu: - $ref: '#/components/schemas/DeploymentGpuParametersMeta' - description: Cloud Service Provider Deployment GPU Parameters object - memory: - $ref: '#/components/schemas/DeploymentMemoryParametersMeta' - description: Cloud Service Provider Deployment Memory Parameters object - storage: - $ref: '#/components/schemas/DeploymentStorageParametersMeta' - description: Cloud Service Provider Deployment Storage Parameters object - required: - - gpu - - storage - DeploymentParametersMetaUpdateRequest: - type: object - description: >- - Properties for the cloud service provider deployment parameters meta to - create - properties: - cpu: - $ref: '#/components/schemas/DeploymentCpuParametersMeta' - description: Cloud Service Provider Deployment CPU Parameters object - gpu: - $ref: '#/components/schemas/DeploymentGpuParametersMeta' - description: Cloud Service Provider Deployment GPU Parameters object - memory: - $ref: '#/components/schemas/DeploymentMemoryParametersMeta' - description: Cloud Service Provider Deployment Memory Parameters object - storage: - $ref: '#/components/schemas/DeploymentStorageParametersMeta' - description: Cloud Service Provider Deployment Storage Parameters object - CloudServiceProviderUpdateRequest: + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: Organization that published this recipe + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + relatedModels: + items: + $ref: '#/components/schemas/Model' + type: array + setup: + description: Text describing recipe setup + type: string + shortDescription: + description: Short description of the recipe + type: string + teamName: + description: Name of the team that the recipe belongs to + type: string + trainingFramework: + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string type: object - description: Request to update existing Cloud Service Provider + RecipeVersion: + description: Recipe version object properties: - displayName: + accuracyReached: + description: Accuracy this recipe reached + format: float + type: number + batchSize: + description: Batch size this recipe was trained with + format: int64 + type: integer + createdByUser: + description: Id of the user who created this recipe type: string - description: Display name of the Cloud Service Provider + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array description: + description: Description of the recipe version type: string - description: Description of the Cloud Service Provider - isEnabled: + gpuModel: + description: GPU model and memory + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' + format: int64 + type: integer + isSigned: + description: Indicates if the version is signed type: boolean - description: Determines if this Cloud Service Provider is enabled - logo: + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z type: string - description: URL for the logo image - attributes: - type: array + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + memoryFootprint: + description: recipe size/memory footprint for inference + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + type: integer + otherContents: items: $ref: '#/components/schemas/ArtifactAttribute' - labels: type: array + performance: + description: Text describing performance of the recipe results + type: string + policy: items: type: string - AIPlaygroundResponse: - type: object - description: Request to fetch an AI Playground config - properties: - artifactName: + type: array + quickStartGuide: + description: Text with a guide to getting started type: string - description: Unique name of the model - artifactType: + releaseNotes: + description: Text describing this release type: string - description: ArtifactTypeEnum of the artifact - namespace: + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB type: string - description: org/team of the model - nvcfFunctionId: + setup: + description: Text describing recipe setup type: string - description: NVCF function id for the model playground - attributes: + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE type: string - description: Metadata json string - openAPISpec: + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. type: string - description: OpenAPI specification for this model + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the recipe in bytes + format: int64 + type: integer + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + type: string + type: object + RecipeFile: + description: Recipe file object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the recipe + maxLength: 1023 + minLength: 1 + type: string + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + type: object + File: + description: File object + properties: createdDate: - type: string description: Creation date in ISO-8601 format pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z - updatedDate: type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the object + maxLength: 1023 + minLength: 1 + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + updatedDate: description: Updated date in ISO-8601 format pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z - RequestStatus: + type: string type: object - description: Request status information + LicenseMetadata: + description: License information for the artifact properties: - statusCode: + configuredLicenseTerms: + $ref: '#/components/schemas/ConfiguredLicenseTerms' + description: License information for the artifact + governingTerms: + description: Comprehensive terms and links related to the license + example:

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

+ maxLength: 1000 + pattern: ^[\s\S]*$ type: string - description: Describes response status reported by the server. - enum: - - UNKNOWN - - SUCCESS - - UNAUTHORIZED - - PAYMENT_REQUIRED - - FORBIDDEN - - TIMEOUT - - EXISTS - - NOT_FOUND - - INTERNAL_ERROR - - INVALID_REQUEST - - INVALID_REQUEST_VERSION - - INVALID_REQUEST_DATA - - METHOD_NOT_ALLOWED - - CONFLICT - - UNPROCESSABLE_ENTITY - - TOO_MANY_REQUESTS - - INSUFFICIENT_STORAGE - - SERVICE_UNAVAILABLE - statusDescription: + licenseId: + description: License ID + example: NVIDIA proprietary + maxLength: 100 + pattern: ^[\s\S]*$ type: string - description: Status description - requestId: + licenseVersion: + description: License version ID + example: v1.0 + maxLength: 100 + pattern: ^[\s\S]*$ type: string - description: Request ID - serverId: + needsAcceptance: + description: Indicator if user needs to accept this license + type: boolean + type: object + CountableResource: + description: Countable Resource object + properties: + defaultValue: + description: 'Deprecated: Default value. Please use actual CloudServiceProvider values instead' + format: int64 + type: integer + maxValue: + description: Maximum value + format: int64 + type: integer + minValue: + description: Minimum value + format: int64 + type: integer + type: object + EnumerableResource: + description: Enumerable Resource object + properties: + defaultItemName: + description: 'Deprecated: Default item name. Please use actual CloudServiceProvider values instead' type: string - description: Server ID - ArtifactAttribute: + items: + items: + $ref: '#/components/schemas/EnumerableResourceItem' + type: array type: object - description: Attribute on the artifact + CustomMetricGroup: + description: Defines the group of custom metrics. properties: - key: + attributes: + items: + $ref: '#/components/schemas/CustomMetric' + type: array + name: + maxLength: 255 type: string + type: object + Dataset: + properties: + license: + description: License of the dataset maxLength: 255 - pattern: '[a-zA-Z0-9]+' - value: type: string + link: + description: Link to the dataset maxLength: 255 - DeploymentCpuParameters: + type: string + name: + description: Name of the dataset + maxLength: 255 + type: string type: object - description: Deployment CPU Parameters object + NvcfContainerConfiguration: + description: NVCF container configuration parameters properties: - count: - type: integer - format: int64 - description: Total count of CPUs - DeploymentGpuParameters: + apiBodyFormat: + description: API body format + type: string + containerArgs: + description: Container arguments + type: string + containerEnvironment: + items: + $ref: '#/components/schemas/MetaData' + type: array + containerImage: + description: Container Image + type: string + healthUri: + description: Health URI + type: string + inferencePort: + description: Inference port + type: string + inferenceUrl: + description: Inference url + type: string + models: + items: + $ref: '#/components/schemas/NvcfContainerModel' + type: array type: object - description: Deployment GPU Parameters object + NvcfDeploymentSpecification: + description: NVCF deployment specification properties: - count: + gpuCount: + description: GPU count + format: int32 type: integer - format: int64 - description: Total count of GPUs - type: + gpuType: + description: GPU type type: string - description: GPU Type - DeploymentMemoryParameters: - type: object - description: Deployment Memory Parameters object - properties: - capacityInGB: + instanceType: + description: Instance type + type: string + maxConcurrency: + description: Maximum concurrency + format: int32 type: integer - format: int64 - description: Capacity in GB - DeploymentStorageParameters: type: object - description: Deployment Storage Parameters object + ConfiguredLicenseTerms: + description: License information for the artifact properties: - capacityInGB: - type: integer - format: int64 - description: Capacity in GB - DeploymentArtifactParameters: + download: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact + hosting: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact type: object - description: Deployment Artifact Parameters object + EnumerableResourceItem: + description: Enumerable Resource Item object properties: - artifactType: - type: string - description: Artifact type - enum: - - MODEL - - MODEL_SCRIPT - - HELM_CHART - - REPOSITORY - - COLLECTION - - ENDPOINT - - BLUEPRINT - - PLAYBOOK - - AGENT - - API - - SKILL - name: - type: string - description: Unique name of the artifact displayName: + description: Display name type: string - description: Display name of the artifact - orgName: + logo: + description: Logo URL type: string - description: Name of the org that the artifact belongs to - teamName: + name: + description: Name type: string - description: Name of the team that the artifact belongs to - versionId: + type: object + CustomMetric: + description: Custom metrics + properties: + key: + maxLength: 255 type: string - description: ID of the version or tag - filePath: + value: + maxLength: 255 type: string - description: Path to a file in an artifact version - required: - - name - - orgName - DeploymentCpuParametersMeta: type: object - description: Cloud Service Provider Deployment CPU Parameters object + MetaData: properties: - count: - $ref: '#/components/schemas/CountableResource' - description: Countable Resource object - required: - - count - DeploymentGpuParametersMeta: + key: + maxLength: 255 + type: string + value: + maxLength: 255 + type: string type: object - description: Cloud Service Provider Deployment GPU Parameters object + NvcfContainerModel: + description: Models version object metadata properties: - count: - $ref: '#/components/schemas/CountableResource' - description: Countable Resource object - type: - $ref: '#/components/schemas/EnumerableResource' - description: Enumerable Resource object - required: - - type - DeploymentMemoryParametersMeta: + name: + description: Model name + type: string + uri: + description: Model URI + type: string + version: + description: Model version + type: string type: object - description: Cloud Service Provider Deployment Memory Parameters object + ConfiguredLicenseTerm: + description: License information for the artifact properties: - capacityInGB: - $ref: '#/components/schemas/CountableResource' - description: Countable Resource object - required: - - capacityInGB - DeploymentStorageParametersMeta: + artifactType: + description: Artifact type + example: model + maxLength: 15 + pattern: ^[\s\S]*$ + type: string + generatedHtml: + description: Generated html + example:

GOVERNING HOSTING TERMS: ...

+ maxLength: 9999 + pattern: ^[\s\S]*$ + type: string + tags: + items: + $ref: '#/components/schemas/LicenseTag' + type: array type: object - description: Cloud Service Provider Deployment Storage Parameters object + LicenseTag: + description: License tag information for individual term properties: - capacityInGB: - $ref: '#/components/schemas/CountableResource' - description: Countable Resource object - required: - - capacityInGB - CountableResource: + category: + description: Category of the tag + example: terms + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + key: + description: Key identifier for the tag + example: nv-open-model + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + label: + description: License Label + example: NVIDIA Open Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + tag: + description: License tag name + example: Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + url: + description: Link to the hosted license + example: https://www.nvidia.com/.../nvidia-open-model-agreement/ + maxLength: 1000 + pattern: ^[\s\S]*$ + type: string + type: object + GetGpusResponse: type: object - description: Countable Resource object properties: - minValue: - type: integer - format: int64 - description: Minimum value - maxValue: - type: integer - format: int64 - description: Maximum value - defaultValue: - type: integer - format: int64 - description: >- - Deprecated: Default value. Please use actual CloudServiceProvider - values instead - EnumerableResource: + gpus: + type: array + items: + $ref: '#/components/schemas/GpuByPciResponse' + GetGpuByPciDeviceIdResponse: type: object - description: Enumerable Resource object properties: - items: + gpu_by_pci_device_id: type: array items: - $ref: '#/components/schemas/EnumerableResourceItem' - defaultItemName: - type: string - description: >- - Deprecated: Default item name. Please use actual - CloudServiceProvider values instead - EnumerableResourceItem: + $ref: '#/components/schemas/GpuByPciResponse' + GetGpuByPciDeviceIdVendorIdResponse: type: object - description: Enumerable Resource Item object properties: - name: - type: string - description: Name - displayName: - type: string - description: Display name - logo: - type: string - description: Logo URL + gpu_by_pci_device_id_vendor_id: + type: array + items: + $ref: '#/components/schemas/GpuByPciResponse' servers: - - url: https://models.ngc.nvidia.com - description: Generated server url - production - x-internal: true + - url: https://api.ngc.nvidia.com diff --git a/provider-dev/source/nvcf_deployments.yaml b/provider-dev/source/nvcf_deployments.yaml index 9ee2f00..0b54c14 100644 --- a/provider-dev/source/nvcf_deployments.yaml +++ b/provider-dev/source/nvcf_deployments.yaml @@ -1,315 +1,315 @@ openapi: 3.1.0 info: - title: nvcf_deployments API - description: nvidia nvcf_deployments API - version: 2.245.1 + title: NVIDIA Cloud Functions - Deployments + description: 'NVCF deployments and GPU specifications, cluster groups and GPU inventory, registry credentials and telemetry endpoints (source: the published NVCF OpenAPI specification; served from api.ngc.nvidia.com).' + version: 2.256.0 paths: - /v2/nvcf/secrets/telemetries/{telemetryId}: - put: - tags: - - User Secret Management - summary: Update secret for a specific Telemetry Id - description: >- - Updates secret for the specific telemetry Id within NVIDIA Cloud - Account. This endpoint requires a bearer token with 'update_secrets' - scope in the HTTP Authorization header. - operationId: updateTelemetrySecret - parameters: - - name: telemetryId - in: path - description: NVIDIA Cloud Account Id - required: true - schema: - type: string - format: uuid - maxLength: 36 - minLength: 36 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateTelemetrySecretRequest' - required: true - responses: - '204': - description: No Content - /v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}: + /v2/nvcf/clusterGroups: get: + deprecated: true + description: 'Lists Cluster Groups for the current account. The response includes cluster groups defined specifically in the current account and publicly available cluster groups such as GFN, OCI, etc. Requires a bearer token with ''list_cluster_groups'' scope in HTTP Authorization header. ' + operationId: getClusterGroups + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterGroupsResponse' + description: OK + summary: List Cluster Groups tags: - - Function Deployment - summary: Get Function Deployment Details - description: >- - Allows Account Admins to retrieve the deployment details of the - specified function version. Access to this endpoint mandates a bearer - token with 'deploy_function' scope in the HTTP Authorization header. + - Cluster Groups and GPUs + parameters: [] + /v2/nvcf/deployments/functions/{function_id}/versions/{function_version_id}: + get: + description: 'Allows Account Admins to retrieve the deployment details of the specified function version. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' operationId: getFunctionDeployment parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version id in: path - description: Function version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/DeploymentResponse' - put: + description: OK + summary: Get Function Deployment Details tags: - Function Deployment - summary: Update Function Deployment - description: ' Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' - operationId: updateFunctionDeployment + post: + description: 'Initiates deployment for the specified function version. Upon invocation of this endpoint, the function''s status transitions to ''DEPLOYING''. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: createFunctionDeployment parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version id in: path - description: Function version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateFunctionDeploymentRequest' + $ref: '#/components/schemas/FunctionDeploymentRequest' required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/DeploymentResponse' - deprecated: true - post: + description: OK + summary: Deploy Function tags: - Function Deployment - summary: Deploy Function - description: >- - Initiates deployment for the specified function version. Upon invocation - of this endpoint, the function's status transitions to 'DEPLOYING'. If - the specified function version is public, then Account Admin cannot - perform this operation. Access to this endpoint mandates a bearer token - with 'deploy_function' scope in the HTTP Authorization header. - operationId: createFunctionDeployment + put: + deprecated: true + description: ' Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: updateFunctionDeployment parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version id in: path - description: Function version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/FunctionDeploymentRequest' + $ref: '#/components/schemas/UpdateFunctionDeploymentRequest' required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/DeploymentResponse' - delete: + description: OK + summary: Update Function Deployment tags: - Function Deployment - summary: Delete Function Deployment - description: >- - Deletes the deployment associated with the specified function. Upon - deletion, any active instances will be terminated, and the function's - status will transition to 'INACTIVE'. To undeploy a function version - gracefully, specify 'graceful=true' query parameter, allowing current - tasks to complete before terminating the instances. If the specified - function version is public, then Account Admin cannot perform this - operation. Access to this endpoint mandates a bearer token with - 'deploy_function' scope in the HTTP Authorization header. + delete: + description: 'Deletes the deployment associated with the specified function. Upon deletion, any active instances will be terminated, and the function''s status will transition to ''INACTIVE''. To undeploy a function version gracefully, specify ''graceful=true'' query parameter, allowing current tasks to complete before terminating the instances. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' operationId: deleteFunctionDeployment parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version id in: path - description: Function version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: graceful + type: string + - description: Query param to deactivate function for graceful shutdown in: query - description: Query param to deactivate function for graceful shutdown + name: graceful required: false schema: - type: boolean default: false + type: boolean responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/FunctionResponse' - /v2/nvcf/telemetries: - get: + description: OK + summary: Delete Function Deployment tags: - - Telemetry Management - summary: List Telemetries - description: >- - Retrieves telemetry configurations for a specific NVIDIA Cloud Account. - requires a bearer token with 'manage_telemetries' scope in the HTTP - Authorization header. - operationId: getTelemetriesByAccount + - Function Deployment + /v2/nvcf/deployments/{deployment_id}: + get: + description: 'Allows Account Admins to retrieve the deployment details of the specified deployment id. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: getFunctionDeployment_1 + parameters: + - description: Deployment id + in: path + name: deployment_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/ListTelemetryResponse' - post: + $ref: '#/components/schemas/DeploymentResponse' + description: OK + summary: Get Function Deployment Details tags: - - Telemetry Management - summary: Create Telemetry - description: >- - Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a - bearer token with 'manage_telemetries' scope in the HTTP Authorization - header. - operationId: createTelemetry + - Function Deployment + /v2/nvcf/deployments/{deployment_id}/gpu-specifications/{gpu_spec_id}: + patch: + description: ' Updates the GPU specification of the specified function version''s deployment. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' + operationId: updateGpuSpecification + parameters: + - description: Deployment id + in: path + name: deployment_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string + - description: GPU Specification id + in: path + name: gpu_spec_id + required: true + schema: + format: uuid + maxLength: 36 + minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/TelemetryRequest' + $ref: '#/components/schemas/UpdateGpuSpecificationRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/TelemetryResponse' - /v2/nvcf/registry-credentials: + $ref: '#/components/schemas/UpdateGpuSpecificationResponse' + description: OK + summary: Update the specified GPU specification under the specified deployment + tags: + - Function Deployment + /v2/nvcf/recognized-registries: get: + description: 'Lists all the registries that are recognized by NVCF. Only when a registry is recognized by NVCF that the users can add its credential to their account and then use it to create functions. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: getRecognizedRegistries + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecognizedRegistriesResponse' + description: OK + summary: List Recognized Registries tags: - Registry Credential Management - summary: List Registry Credentials - description: >- - Lists all the registry credentials associated with the authenticated - NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization - header with 'manage_registries' scope. + parameters: [] + /v2/nvcf/registry-credentials: + get: + description: 'Lists all the registry credentials associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' operationId: listRegistryCredentialDetails parameters: - - name: artifactType + - description: | + Filters registry credentials using the specified 'artifactType' query param. in: query - description: > - Filters registry credentials using the specified 'artifactType' - query param. + name: artifactType required: false schema: - type: array default: - CONTAINER - HELM - MODEL - RESOURCE items: - type: string - format: UTF-8 enum: - CONTAINER - HELM - MODEL - RESOURCE + format: UTF-8 maxLength: 262144 minLength: 0 + type: string maxItems: 2147483647 minItems: 0 + type: array uniqueItems: true - - name: provisionedBy + - description: | + Filters registry credentials using the specified 'provisionedBy' query param. in: query - description: > - Filters registry credentials using the specified 'provisionedBy' - query param. + name: provisionedBy required: false schema: - type: array default: - SYSTEM - USER items: - type: string - format: UTF-8 enum: - SYSTEM - USER + format: UTF-8 maxLength: 262144 minLength: 0 + type: string maxItems: 2147483647 minItems: 0 + type: array uniqueItems: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/ListRegistryCredentialDetailsResponse' - post: + description: OK + summary: List Registry Credentials tags: - Registry Credential Management - summary: Add new registry credential to the account - description: >- - Adds a new registry credential to the account. Requires a bearer token - in the HTTP Authorization header with 'manage_registries' scope. + post: + description: 'Adds a new registry credential to the account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' operationId: addRegistryCredential requestBody: content: @@ -319,82 +319,52 @@ paths: required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/RegistryCredentialDetailsResponse' - /v2/nvcf/registry-credentials/{registryCredentialId}: - get: + description: OK + summary: Add new registry credential to the account tags: - Registry Credential Management - summary: Get Registry Credential Details - description: >- - Retrieves detailed information of the specified registry credential - associated with the authenticated NVIDIA Cloud Account. Requires a - bearer token in the HTTP Authorization header with 'manage_registries' - scope. + parameters: [] + /v2/nvcf/registry-credentials/{registry_credential_id}: + get: + description: 'Retrieves detailed information of the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' operationId: getRegistryCredentialDetails parameters: - - name: registryCredentialId + - description: Registry Credential id in: path - description: Registry Credential id + name: registry_credential_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/RegistryCredentialDetailsResponse' - delete: + description: OK + summary: Get Registry Credential Details tags: - Registry Credential Management - summary: Delete Registry Credential - description: >- - Deletes the specified registry credential associated with the - authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP - Authorization header with 'manage_registries' scope. - operationId: deleteRegistryCredential - parameters: - - name: registryCredentialId - in: path - description: Registry Credential id - required: true - schema: - type: string - format: uuid - maxLength: 36 - minLength: 36 - responses: - '204': - description: No Content patch: - tags: - - Registry Credential Management - summary: Update registry credential - description: >- - Updates the secret and/or the artifact types associated with the - specified registry credential. Artifact types specified in the request - body are added to the set of artifact types that already exist for the - specified registry credential. Requires a bearer token in the HTTP - Authorization header with 'manage_registries' scope. + description: 'Updates the secret and/or the artifact types associated with the specified registry credential. Artifact types specified in the request body are added to the set of artifact types that already exist for the specified registry credential. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' operationId: updateRegistryCredential parameters: - - name: registryCredentialId + - description: Registry Credential id in: path - description: Registry Credential id + name: registry_credential_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: @@ -403,178 +373,158 @@ paths: required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/RegistryCredentialDetailsResponse' - /v2/nvcf/deployments/{deploymentId}/gpu-specifications/{gpuSpecId}: - patch: + description: OK + summary: Update registry credential tags: - - Function Deployment - summary: Update the specified GPU specification under the specified deployment - description: ' Updates the GPU specification of the specified function version''s deployment. It''s important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with ''deploy_function'' scope in the HTTP Authorization header. ' - operationId: updateGpuSpecification + - Registry Credential Management + delete: + description: 'Deletes the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with ''manage_registries'' scope. ' + operationId: deleteRegistryCredential parameters: - - name: deploymentId + - description: Registry Credential id in: path - description: Deployment id + name: registry_credential_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: gpuSpecId + type: string + responses: + '204': + description: No Content + summary: Delete Registry Credential + tags: + - Registry Credential Management + /v2/nvcf/secrets/telemetries/{telemetry_id}: + put: + description: 'Updates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with ''update_secrets'' scope in the HTTP Authorization header. ' + operationId: updateTelemetrySecret + parameters: + - description: NVIDIA Cloud Account Id in: path - description: GPU Specification id + name: telemetry_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateGpuSpecificationRequest' + $ref: '#/components/schemas/UpdateTelemetrySecretRequest' required: true + responses: + '204': + description: No Content + summary: Update secret for a specific Telemetry Id + tags: + - User Secret Management + /v2/nvcf/telemetries: + get: + description: 'Retrieves telemetry configurations for a specific NVIDIA Cloud Account. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. ' + operationId: getTelemetriesByAccount responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UpdateGpuSpecificationResponse' - /v2/nvcf/telemetries/{telemetryId}: - get: + $ref: '#/components/schemas/ListTelemetryResponse' + description: OK + summary: List Telemetries tags: - Telemetry Management - summary: Get Telemetry Details - description: >- - Retrieves the details of a specific telemetry configuration by its ID. - requires a bearer token with 'manage_telemetries' scope in the HTTP - Authorization header. - operationId: getTelemetry - parameters: - - name: telemetryId - in: path - required: true - schema: - type: string - format: uuid - maxLength: 36 - minLength: 36 + parameters: [] + post: + description: 'Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. ' + operationId: createTelemetry + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TelemetryRequest' + required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/TelemetryResponse' - delete: + description: OK + summary: Create Telemetry tags: - Telemetry Management - summary: Delete Telemetry - description: >- - Deletes a specific telemetry configuration for a NVIDIA Cloud Account. - requires a bearer token with 'manage_telemetries' scope in the HTTP - Authorization header. If there any functions that are dependent on the - Telemetry that is being deleted, then response with 400 status code - will be returned. - operationId: deleteTelemetry + parameters: [] + /v2/nvcf/telemetries/{telemetry_id}: + get: + description: 'Retrieves the details of a specific telemetry configuration by its ID. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. ' + operationId: getTelemetry parameters: - - name: telemetryId - in: path + - in: path + name: telemetry_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - responses: - '204': - description: No Content - '400': - description: Cannot be deleted till Functions depend on it - /v2/nvcf/recognized-registries: - get: - tags: - - Registry Credential Management - summary: List Recognized Registries - description: >- - Lists all the registries that are recognized by NVCF. Only when a - registry is recognized by NVCF that the users can add its credential to - their account and then use it to create functions. Requires a bearer - token in the HTTP Authorization header with 'manage_registries' scope. - operationId: getRecognizedRegistries + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/RecognizedRegistriesResponse' - /v2/nvcf/deployments/{deploymentId}: - get: + $ref: '#/components/schemas/TelemetryResponse' + description: OK + summary: Get Telemetry Details tags: - - Function Deployment - summary: Get Function Deployment Details - description: >- - Allows Account Admins to retrieve the deployment details of the - specified deployment id. Access to this endpoint mandates a bearer - token with 'deploy_function' scope in the HTTP Authorization header. - operationId: getFunctionDeployment_1 + - Telemetry Management + delete: + description: 'Deletes a specific telemetry configuration for a NVIDIA Cloud Account. requires a bearer token with ''manage_telemetries'' scope in the HTTP Authorization header. If there any functions that are dependent on the Telemetry that is being deleted, then response with 400 status code will be returned. ' + operationId: deleteTelemetry parameters: - - name: deploymentId - in: path - description: Deployment id + - in: path + name: telemetry_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/DeploymentResponse' - /v2/nvcf/clusterGroups: - get: + '204': + description: No Content + '400': + description: Cannot be deleted till Functions depend on it + summary: Delete Telemetry tags: - - Cluster Groups and GPUs - summary: List Cluster Groups - description: >- - Lists Cluster Groups for the current account. The response includes - cluster groups defined specifically in the current account and publicly - available cluster groups such as GFN, OCI, etc. Requires a bearer token - with 'list_cluster_groups' scope in HTTP Authorization header. - operationId: getClusterGroups - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ClusterGroupsResponse' - deprecated: true + - Telemetry Management components: schemas: - UpdateTelemetrySecretRequest: + ClusterGroupsResponse: + properties: + clusterGroups: + items: + $ref: '#/components/schemas/ClusterGroup' + maxItems: 2147483647 + minItems: 0 + type: array type: object - description: Request payload to update secret + FunctionResponse: + description: Response body with function details properties: - secret: - $ref: '#/components/schemas/SecretDto' - description: Telemetry secret + function: + $ref: '#/components/schemas/FunctionDto' + description: Function details required: - - secret - DeploymentResponse: + - function type: object + DeploymentResponse: description: Function Deployment Response properties: deployment: @@ -582,183 +532,148 @@ components: description: Deployment details required: - deployment - UpdateFunctionDeploymentRequest: type: object - description: Request to update function deployment spec - properties: - deploymentSpecifications: - type: array - description: >- - Deployment specs with GPU, instance-type, etc. details for update - request - items: - $ref: '#/components/schemas/UpdateGpuSpecificationDto' - maxItems: 2147483647 - minItems: 1 - required: - - deploymentSpecifications FunctionDeploymentRequest: - type: object description: Request to deploy a function properties: deploymentSpecifications: - type: array description: GPU specs with GPU, instance-type, clusters etc. details items: $ref: '#/components/schemas/GpuSpecificationDto' maxItems: 2147483647 minItems: 1 + type: array required: - deploymentSpecifications - FunctionResponse: - type: object - description: Response body with function details - properties: - function: - $ref: '#/components/schemas/FunctionDto' - description: Function details - required: - - function - ListTelemetryResponse: type: object - description: Response containing a list of telemetry configurations. + UpdateFunctionDeploymentRequest: + description: Request to update function deployment spec properties: - telemetries: - type: array - description: List of telemetry configurations. + deploymentSpecifications: + description: Deployment specs with GPU, instance-type, etc. details for update request items: - $ref: '#/components/schemas/TelemetryDto' + $ref: '#/components/schemas/UpdateGpuSpecificationDto' maxItems: 2147483647 - minItems: 0 - TelemetryRequest: + minItems: 1 + type: array + required: + - deploymentSpecifications type: object - description: Data Transfer Object (DTO) representing a telemetry request + UpdateGpuSpecificationRequest: + description: Request to update single function deployment GPU Specification properties: - endpoint: - type: string - format: UTF-8 - description: Telemetry endpoint URL - maxLength: 262144 - minLength: 1 - protocol: - type: string - format: UTF-8 - description: Protocol used for communication + autoscalingConfiguration: + $ref: '#/components/schemas/AutoscalingConfigurationDto' + description: Customizable Autoscaling configuration + autoscalingConfigurationPolicy: + description: 'Autoscaling configuration policy. CUSTOM_CONFIGURATION (default): use the provided autoscalingConfig. PLATFORM_CONFIGURATION: remove custom config and use platform defaults.' enum: - - HTTP - - GRPC - maxLength: 262144 - minLength: 0 - provider: - type: string + - CUSTOM_CONFIGURATION + - PLATFORM_CONFIGURATION format: UTF-8 - description: Telemetry provider - enum: - - PROMETHEUS - - GRAFANA_CLOUD - - SPLUNK - - DATADOG - - SERVICENOW - - KRATOS - - KRATOS_THANOS - - TIMESTREAM - - VICTORIAMETRICS - - AZURE_MONITOR - - OTEL_COLLECTOR maxLength: 262144 minLength: 0 - types: - type: array - description: Set of telemetry data types - items: - type: string - enum: - - LOGS - - METRICS - - TRACES - maxItems: 2147483647 - minItems: 1 - uniqueItems: true - secret: - $ref: '#/components/schemas/SecretDto' - description: Single secret associated with the telemetry configuration + type: string + nullable: true + maxInstances: + description: Maximum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + nullable: true + minInstances: + description: Minimum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + nullable: true + type: object + UpdateGpuSpecificationResponse: + description: Update GPU Specification Response + properties: + gpuSpecification: + $ref: '#/components/schemas/GpuSpecificationDto' + description: GPU Specification details required: - - endpoint - - protocol - - provider - - secret - - types - TelemetryResponse: + - gpuSpecification type: object - description: Data Transfer Object (DTO) representing a telemetry response + RecognizedRegistriesResponse: + description: Response body for recognized registries endpoint properties: - telemetry: - $ref: '#/components/schemas/TelemetryDto' - description: Telemetry details - ListRegistryCredentialDetailsResponse: + recognizedRegistries: + additionalProperties: + items: + additionalProperties: + type: string + type: object + type: array + description: Recognized registries + type: object type: object + ListRegistryCredentialDetailsResponse: description: Response body containing list of registry credentials properties: registryCredentials: - type: array description: List of registry credentials items: $ref: '#/components/schemas/RegistryCredentialDetailsDto' maxItems: 2147483647 minItems: 0 + type: array required: - registryCredentials - AddRegistryCredentialRequest: type: object + AddRegistryCredentialRequest: description: Request body to add a registry credential to an account properties: - registryHostname: - type: string - format: UTF-8 - description: Registry hostname - maxLength: 255 - minLength: 1 - pattern: >- - (?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?- - Registry credential - secret value must be base64 encoded string in - username:password format artifactTypes: - type: array description: Artifact types that can be retrieved using this credential items: - type: string enum: - CONTAINER - HELM - MODEL - RESOURCE + type: string maxItems: 2147483647 minItems: 1 - uniqueItems: true - tags: type: array - description: Optional set of tags - items: - type: string - pattern: '[a-zA-Z0-9\-_:=]+' - maxItems: 64 - minItems: 0 uniqueItems: true description: - type: string - format: UTF-8 description: Optional registry credential description + format: UTF-8 maxLength: 262144 minLength: 0 + type: string + nullable: true + registryHostname: + description: Registry hostname + format: UTF-8 + maxLength: 255 + minLength: 1 + pattern: (?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?- - Registry credential - secret value must be base64 encoded string in - username:password format artifactTypeEnums: - type: array description: Optional artifact types to be added to the existing ones items: - type: string enum: - CONTAINER - HELM - MODEL - RESOURCE + type: string maxItems: 2147483647 minItems: 0 + type: array uniqueItems: true - UpdateGpuSpecificationRequest: - type: object - description: Request to update single function deployment GPU Specification - properties: - maxInstances: - type: integer - format: int32 - description: Maximum number of instances for the deployment - maximum: 2147483647 - minimum: -2147483648 - minInstances: - type: integer - format: int32 - description: Minimum number of instances for the deployment - maximum: 2147483647 - minimum: -2147483648 - autoscalingConfiguration: - $ref: '#/components/schemas/AutoscalingConfigurationDto' - description: Customizable Autoscaling configuration - autoscalingConfigurationPolicy: - type: string - format: UTF-8 - description: >- - Autoscaling configuration policy. CUSTOM_CONFIGURATION (default): - use the provided autoscalingConfig. PLATFORM_CONFIGURATION: remove - custom config and use platform defaults. - enum: - - CUSTOM_CONFIGURATION - - PLATFORM_CONFIGURATION - maxLength: 262144 - minLength: 0 - UpdateGpuSpecificationResponse: + nullable: true + secret: + $ref: '#/components/schemas/SecretDto' + description: Registry credential - secret value must be base64 encoded string in username:password format type: object - description: Update GPU Specification Response + UpdateTelemetrySecretRequest: + description: Request payload to update secret properties: - gpuSpecification: - $ref: '#/components/schemas/GpuSpecificationDto' - description: GPU Specification details + secret: + $ref: '#/components/schemas/SecretDto' + description: Telemetry secret required: - - gpuSpecification - RecognizedRegistriesResponse: - type: object - description: Response body for recognized registries endpoint - properties: - recognizedRegistries: - type: object - additionalProperties: - type: array - items: - type: object - additionalProperties: - type: string - description: Recognized registries - ClusterGroupsResponse: + - secret type: object + ListTelemetryResponse: + description: Response containing a list of telemetry configurations. properties: - clusterGroups: - type: array + telemetries: + description: List of telemetry configurations. items: - $ref: '#/components/schemas/ClusterGroup' + $ref: '#/components/schemas/TelemetryDto' maxItems: 2147483647 minItems: 0 - SecretDto: - type: object - description: Data Transfer Object(DTO) representing secret name/value pair - properties: - name: - type: string - format: UTF-8 - description: Secret name - maxLength: 48 - minLength: 1 - pattern: ^[a-z0-9A-Z][a-z0-9A-Z\_\.\-]*$ - value: - $ref: '#/components/schemas/JsonNode' - description: Secret value must be 1 - 32768 chars long - required: - - name - FunctionDeploymentDto: + type: array type: object - description: Function deployment response + TelemetryRequest: + description: Data Transfer Object (DTO) representing a telemetry request properties: - functionId: - type: string - format: uuid - description: Function id - maxLength: 36 - minLength: 36 - functionVersionId: - type: string - format: uuid - description: Function version id - maxLength: 36 - minLength: 36 - deploymentId: - type: string - format: uuid - description: Last deployment id - maxLength: 36 - minLength: 36 - functionName: - type: string + endpoint: + description: Telemetry endpoint URL format: UTF-8 - description: Function name maxLength: 262144 minLength: 1 - ncaId: type: string + protocol: + description: Protocol used for communication + enum: + - HTTP + - GRPC format: UTF-8 - description: NVIDIA Cloud Account Id maxLength: 262144 - minLength: 1 - functionStatus: + minLength: 0 type: string - format: UTF-8 - description: Function status + provider: + description: Telemetry provider enum: - - ACTIVE - - DEPLOYING - - ERROR - - INACTIVE - - DELETED - - DEGRADED - - DEGRADING + - PROMETHEUS + - GRAFANA_CLOUD + - SPLUNK + - DATADOG + - SERVICENOW + - KRATOS + - KRATOS_THANOS + - TIMESTREAM + - VICTORIAMETRICS + - AZURE_MONITOR + - OTEL_COLLECTOR + format: UTF-8 maxLength: 262144 minLength: 0 - healthInfo: + type: string + secret: + $ref: '#/components/schemas/SecretDto' + description: Single secret associated with the telemetry configuration + types: + description: Set of telemetry data types + items: + enum: + - LOGS + - METRICS + - TRACES + type: string + maxItems: 2147483647 + minItems: 1 type: array - description: > - Health info for a deployment specification is included only if there - are any - issues/errors. + uniqueItems: true + required: + - endpoint + - protocol + - provider + - secret + - types + type: object + TelemetryResponse: + description: Data Transfer Object (DTO) representing a telemetry response + properties: + telemetry: + $ref: '#/components/schemas/TelemetryDto' + description: Telemetry details + type: object + ClusterGroup: + properties: + authorizedNcaIds: items: - $ref: '#/components/schemas/DeploymentHealthDto' + type: string maxItems: 2147483647 minItems: 0 - deploymentSpecifications: type: array - description: Function deployment details + clusters: items: - $ref: '#/components/schemas/GpuSpecificationDto' + $ref: '#/components/schemas/Cluster' maxItems: 2147483647 minItems: 0 - createdAt: - type: string - format: date-time - description: Function deployment creation timestamp - maxLength: 30 - minLength: 8 - lastUpdatedAt: - type: string - format: date-time - description: Function deployment modification timestamp - maxLength: 30 - minLength: 8 - required: - - createdAt - - deploymentId - - deploymentSpecifications - - functionId - - functionName - - functionStatus - - functionVersionId - - lastUpdatedAt - - ncaId - UpdateGpuSpecificationDto: - type: object - description: >- - Data Transfer Object (DTO) representing GPU specification for Deployment - Update case. - properties: - gpuSpecificationId: - type: string + type: array + gpus: + items: + $ref: '#/components/schemas/Gpu' + maxItems: 2147483647 + minItems: 0 + type: array + id: format: uuid - description: GPU specification id maxLength: 36 minLength: 36 - gpu: type: string + name: format: UTF-8 - description: >- - GPU name from the cluster. Deprecated: this is read-only field, - should not be specified in update request. maxLength: 262144 minLength: 0 - backend: type: string + ncaId: format: UTF-8 - description: > - Backend/CSP where the GPU powered instance has been launched. The - original value - - would not be updated and it should be the same as original. The - field is required - - only for validation. maxLength: 262144 minLength: 0 - clusters: - type: array - description: > - Specific clusters within instance or worker node powered by the - selected - - instance-type to deploy function. The original value would not be - updated and it - - should be the same as original. The field is required only for - validation. - items: - type: string - maxItems: 2147483647 - minItems: 0 - uniqueItems: true - maxInstances: - type: integer - format: int32 - description: Maximum number of instances for the deployment - maximum: 2147483647 - minimum: -2147483648 - minInstances: - type: integer - format: int32 - description: Minimum number of instances for the deployment - maximum: 2147483647 - minimum: -2147483648 - instanceType: type: string - format: UTF-8 - description: >- - Instance type, based on GPU, assigned to a Worker. Deprecated: this - is read-only field, should not be specified in update request. - maxLength: 262144 - minLength: 0 - maxRequestConcurrency: - type: integer - format: int32 - description: Max request concurrency between 1 (default) and 16384. - maximum: 16384 - minimum: 1 - required: - - maxInstances - - minInstances - GpuSpecificationDto: type: object - description: Data Transfer Object(DTO) representing GPU specification. + FunctionDto: + description: Data Transfer Object (DTO) representing a function properties: - gpuSpecificationId: - type: string - format: uuid - description: GPU specification id - maxLength: 36 - minLength: 36 - gpu: - type: string + activeInstances: + description: List of active instances for this function. + items: + $ref: '#/components/schemas/InstanceDto' + maxItems: 2147483647 + minItems: 0 + type: array + nullable: true + apiBodyFormat: + description: Invocation request body format + enum: + - PREDICT_V2 + - CUSTOM format: UTF-8 - description: GPU name from the cluster maxLength: 262144 - minLength: 1 - backend: + minLength: 0 type: string + nullable: true + containerArgs: + description: Args used to launch the container format: UTF-8 - description: >- - Use clusters instead of this property. Legacy property typically - used when deploying a function to GFN. maxLength: 262144 minLength: 0 - maxInstances: - type: integer - format: int32 - description: Maximum number of instances for the deployment - maximum: 2147483647 - minimum: -2147483648 - minInstances: - type: integer - format: int32 - description: Minimum number of instances for the deployment - maximum: 2147483647 - minimum: -2147483648 - instanceType: type: string - format: UTF-8 - description: Instance type, based on GPU, assigned to a Worker - maxLength: 262144 - minLength: 1 - availabilityZones: - type: array - description: List of availability-zones(or clusters) in the cluster group - items: - type: string - maxItems: 2147483647 - minItems: 0 - maxRequestConcurrency: - type: integer - format: int32 - description: Max request concurrency between 1 (default) and 16384. - maximum: 16384 - minimum: 1 - configuration: - type: object - description: > - Typically used when the function is based on Helm Charts to - substitute - placeholders in values yaml. - clusters: - type: array - description: > - Specific clusters powered by the selected instance-type to deploy - function. + nullable: true + containerEnvironment: + description: Environment settings used to launch the container items: - type: string + $ref: '#/components/schemas/ContainerEnvironmentEntryDto' maxItems: 2147483647 minItems: 0 - uniqueItems: true - regions: type: array - description: > - List of regions allowed to deploy. The instance or worker node will - be in one of - - the specified geographical regions. - items: - type: string - maxItems: 2147483647 - minItems: 0 - uniqueItems: true - attributes: - type: array - description: > - Specific cluster attributes/capabilities to deploy functions. For - example, - - HIPPA Compliant, Confidential Compute Compliant, etc. - items: - type: string - maxItems: 2147483647 - minItems: 0 - uniqueItems: true - cpuArch: + nullable: true + containerImage: + description: Optional custom container + format: uri + type: string + nullable: true + createdAt: + description: Function creation timestamp + format: date-time + maxLength: 30 + minLength: 8 type: string + description: + description: Function/version description format: UTF-8 - description: CPU Architecture details maxLength: 262144 minLength: 0 - os: type: string + nullable: true + functionType: + description: Used to indicate a STREAMING function. Defaults to DEFAULT. + enum: + - DEFAULT + - STREAMING + - LLM format: UTF-8 - description: Operating System details maxLength: 262144 minLength: 0 - driverVersion: type: string + health: + $ref: '#/components/schemas/HealthDto' + description: Function health configuration + healthUri: + deprecated: true + description: Health endpoint for the container or helmChart. Deprecated, use health.uri instead. + format: uri + type: string + helmChart: + description: Optional Helm Chart + format: uri + type: string + nullable: true + helmChartServiceName: + description: | + Helm Chart Service Name specified only when helmChart property is specified format: UTF-8 - description: GPU driver version maxLength: 262144 minLength: 0 - storage: type: string + nullable: true + id: + description: Unique function id + format: uuid + maxLength: 36 + minLength: 36 + type: string + inferencePort: + description: Optional port number where the inference listener is running - defaults to 8000 for Triton + format: int32 + maximum: 2147483647 + minimum: -2147483648 + type: integer + nullable: true + inferenceUrl: + description: Entrypoint for invoking the container to process requests + format: uri + type: string + nullable: true + llmInvocationConfig: + $ref: '#/components/schemas/LlmInvocationConfigDto' + description: Optional function-level LLM invocation configuration. + models: + description: Optional list of models + items: + $ref: '#/components/schemas/FunctionModelDto' + maxItems: 2147483647 + minItems: 0 + type: array + nullable: true + name: + description: Function name format: UTF-8 - description: Amount of available storage, e.g. 80G maxLength: 262144 minLength: 0 - systemMemory: type: string + ncaId: + description: NVIDIA Cloud Account Id format: UTF-8 - description: Amount of RAM maxLength: 262144 minLength: 0 - gpuMemory: type: string + ownedByDifferentAccount: + description: | + Indicates whether the function is owned by another account. If the account + that is being used to lookup functions happens to be authorized to invoke/list + this function which is owned by a different account, then this field is set + to true and ncaId will contain the id of the account that owns the function. + Otherwise, this field is not set as it defaults to false. + type: boolean + nullable: true + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: Optional rate limit policy + resources: + description: Optional set of resources. + items: + $ref: '#/components/schemas/ArtifactDto' + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true + nullable: true + secrets: + description: Optional secret names + items: + type: string + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true + nullable: true + status: + description: Function status + enum: + - ACTIVE + - DEPLOYING + - ERROR + - INACTIVE + - DELETED + - DEGRADED + - DEGRADING format: UTF-8 - description: Amount of GPU memory maxLength: 262144 minLength: 0 - autoscalingConfiguration: - $ref: '#/components/schemas/AutoscalingConfigurationDto' - description: Customizable autoscaling configuration - helmValidationPolicy: - $ref: '#/components/schemas/HelmValidationPolicyDto' - description: Helm validation policy + type: string + tags: + description: Optional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars. + items: + type: string + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true + nullable: true + telemetries: + $ref: '#/components/schemas/TelemetriesDto' + description: Optional telemetry configuration for the function + versionId: + description: Unique function version id + format: uuid + maxLength: 36 + minLength: 36 + type: string required: - - gpu - - instanceType - - maxInstances - - minInstances - FunctionDto: + - createdAt + - functionType + - healthUri + - id + - name + - ncaId + - status + - versionId type: object - description: Data Transfer Object (DTO) representing a function + FunctionDeploymentDto: + description: Function deployment response properties: - id: + createdAt: + description: Function deployment creation timestamp + format: date-time + maxLength: 30 + minLength: 8 type: string + deploymentId: + description: Last deployment id format: uuid - description: Unique function id maxLength: 36 minLength: 36 - ncaId: - type: string - format: UTF-8 - description: NVIDIA Cloud Account Id - maxLength: 262144 - minLength: 0 - versionId: type: string + deploymentSpecifications: + description: Function deployment details + items: + $ref: '#/components/schemas/GpuSpecificationDto' + maxItems: 2147483647 + minItems: 0 + type: array + functionId: + description: Function id format: uuid - description: Unique function version id maxLength: 36 minLength: 36 - name: type: string - format: UTF-8 + functionName: description: Function name + format: UTF-8 maxLength: 262144 - minLength: 0 - status: + minLength: 1 type: string - format: UTF-8 + functionStatus: description: Function status enum: - ACTIVE @@ -1213,514 +1066,550 @@ components: - DELETED - DEGRADED - DEGRADING + format: UTF-8 maxLength: 262144 minLength: 0 - inferenceUrl: type: string - format: uri - description: Entrypoint for invoking the container to process requests - ownedByDifferentAccount: - type: boolean - description: > - Indicates whether the function is owned by another account. If the - account - that is being used to lookup functions happens to be authorized to invoke/list - this function which is owned by a different account, then this field is set - to true and ncaId will contain the id of the account that owns the function. - Otherwise, this field is not set as it defaults to false. - inferencePort: - type: integer - format: int32 - description: >- - Optional port number where the inference listener is running - - defaults to 8000 for Triton - maximum: 2147483647 - minimum: -2147483648 - containerArgs: + functionVersionId: + description: Function version id + format: uuid + maxLength: 36 + minLength: 36 type: string - format: UTF-8 - description: Args used to launch the container - maxLength: 262144 - minLength: 0 - containerEnvironment: - type: array - description: Environment settings used to launch the container + healthInfo: + description: | + Health info for a deployment specification is included only if there are any + issues/errors. items: - $ref: '#/components/schemas/ContainerEnvironmentEntryDto' + $ref: '#/components/schemas/DeploymentHealthDto' maxItems: 2147483647 minItems: 0 - models: type: array - description: Optional list of models - items: - $ref: '#/components/schemas/FunctionModelDto' - maxItems: 2147483647 - minItems: 0 - containerImage: - type: string - format: uri - description: Optional custom container - apiBodyFormat: - type: string - format: UTF-8 - description: Invocation request body format - enum: - - PREDICT_V2 - - CUSTOM - maxLength: 262144 - minLength: 0 - helmChart: - type: string - format: uri - description: Optional Helm Chart - helmChartServiceName: + nullable: true + lastUpdatedAt: + description: Function deployment modification timestamp + format: date-time + maxLength: 30 + minLength: 8 type: string + ncaId: + description: NVIDIA Cloud Account Id format: UTF-8 - description: > - Helm Chart Service Name specified only when helmChart property is - specified maxLength: 262144 - minLength: 0 - healthUri: - type: string - format: uri - deprecated: true - description: >- - Health endpoint for the container or helmChart. Deprecated, use - health.uri instead. - createdAt: + minLength: 1 type: string - format: date-time - description: Function creation timestamp - maxLength: 30 - minLength: 8 - activeInstances: - type: array - description: List of active instances for this function. + required: + - createdAt + - deploymentId + - deploymentSpecifications + - functionId + - functionName + - functionStatus + - functionVersionId + - lastUpdatedAt + - ncaId + type: object + GpuSpecificationDto: + description: Data Transfer Object(DTO) representing GPU specification. + properties: + attributes: + description: | + Specific cluster attributes/capabilities to deploy functions. For example, + HIPPA Compliant, Confidential Compute Compliant, etc. items: - $ref: '#/components/schemas/InstanceDto' + type: string maxItems: 2147483647 minItems: 0 - resources: type: array - description: Optional set of resources. + uniqueItems: true + nullable: true + autoscalingConfiguration: + $ref: '#/components/schemas/AutoscalingConfigurationDto' + description: Customizable autoscaling configuration + availabilityZones: + description: List of availability-zones(or clusters) in the cluster group items: - $ref: '#/components/schemas/ArtifactDto' + type: string maxItems: 2147483647 minItems: 0 - uniqueItems: true - tags: type: array - description: >- - Optional set of tags. Maximum allowed number of tags per function is - 64. Maximum length of each tag is 128 chars. + nullable: true + backend: + description: Use clusters instead of this property. Legacy property typically used when deploying a function to GFN. + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + clusters: + description: | + Specific clusters powered by the selected instance-type to deploy function. items: type: string maxItems: 2147483647 minItems: 0 + type: array uniqueItems: true - description: + nullable: true + configuration: + additionalProperties: true + description: | + Typically used when the function is based on Helm Charts to substitute + placeholders in values yaml. + type: object + cpuArch: + description: CPU Architecture details + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + nullable: true + driverVersion: + description: GPU driver version format: UTF-8 - description: Function/version description maxLength: 262144 minLength: 0 - health: - $ref: '#/components/schemas/HealthDto' - description: Function health configuration - functionType: type: string + nullable: true + gpu: + description: GPU name from the cluster + format: UTF-8 + maxLength: 262144 + minLength: 1 + type: string + gpuMemory: + description: Amount of GPU memory format: UTF-8 - description: Used to indicate a STREAMING function. Defaults to DEFAULT. - enum: - - DEFAULT - - STREAMING - - LLM maxLength: 262144 minLength: 0 - secrets: - type: array - description: Optional secret names - items: - type: string - maxItems: 2147483647 - minItems: 0 - uniqueItems: true - rateLimit: - $ref: '#/components/schemas/RateLimitDto' - description: Optional rate limit policy - telemetries: - $ref: '#/components/schemas/TelemetriesDto' - description: Optional telemetry configuration for the function - required: - - createdAt - - functionType - - healthUri - - id - - name - - ncaId - - status - - versionId - TelemetryDto: - type: object - description: Data Transfer Object (DTO) for Telemetry configurations - properties: - telemetryId: type: string + nullable: true + gpuSpecificationId: + description: GPU specification id format: uuid - description: Unique telemetry ID maxLength: 36 minLength: 36 - name: type: string + nullable: true + helmValidationPolicy: + $ref: '#/components/schemas/HelmValidationPolicyDto' + description: Helm validation policy + instanceType: + description: Instance type, based on GPU, assigned to a Worker format: UTF-8 - description: Telemetry name maxLength: 262144 minLength: 1 - endpoint: type: string + maxInstances: + description: Maximum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + maxRequestConcurrency: + description: Max request concurrency between 1 (default) and 16384. + format: int32 + maximum: 16384 + minimum: 1 + type: integer + nullable: true + minInstances: + description: Minimum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + os: + description: Operating System details format: UTF-8 - description: URL for the telemetry endpoint maxLength: 262144 - minLength: 1 - protocol: + minLength: 0 type: string + nullable: true + regions: + description: | + List of regions allowed to deploy. The instance or worker node will be in one of + the specified geographical regions. + items: + type: string + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true + nullable: true + storage: + description: Amount of available storage, e.g. 80G format: UTF-8 - description: Protocol used for communication - enum: - - HTTP - - GRPC maxLength: 262144 minLength: 0 - provider: type: string + nullable: true + systemMemory: + description: Amount of RAM + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + required: + - gpu + - instanceType + - maxInstances + - minInstances + type: object + UpdateGpuSpecificationDto: + description: Data Transfer Object (DTO) representing GPU specification for Deployment Update case. + properties: + backend: + description: | + Backend/CSP where the GPU powered instance has been launched. The original value + would not be updated and it should be the same as original. The field is required + only for validation. format: UTF-8 - description: Telemetry provider - enum: - - PROMETHEUS - - GRAFANA_CLOUD - - SPLUNK - - DATADOG - - SERVICENOW - - KRATOS - - KRATOS_THANOS - - TIMESTREAM - - VICTORIAMETRICS - - AZURE_MONITOR - - OTEL_COLLECTOR maxLength: 262144 minLength: 0 - types: - type: array - description: Set of telemetry data types + type: string + nullable: true + clusters: + description: | + Specific clusters within instance or worker node powered by the selected + instance-type to deploy function. The original value would not be updated and it + should be the same as original. The field is required only for validation. items: type: string - enum: - - LOGS - - METRICS - - TRACES maxItems: 2147483647 - minItems: 1 + minItems: 0 + type: array uniqueItems: true - createdAt: - type: string - format: date-time - description: Telemetry creation timestamp - maxLength: 30 - minLength: 8 - required: - - createdAt - - endpoint - - name - - protocol - - provider - - telemetryId - - types - RegistryCredentialDetailsDto: - type: object - description: DTO representing a registry credential - properties: - registryCredentialId: + nullable: true + gpu: + description: 'GPU name from the cluster. Deprecated: this is read-only field, should not be specified in update request.' + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + nullable: true + gpuSpecificationId: + description: GPU specification id format: uuid - description: Registry Credential Id maxLength: 36 minLength: 36 - ncaId: - type: string - format: UTF-8 - description: NVIDIA Cloud Account Id owning the Registry Credential - maxLength: 262144 - minLength: 1 - registryCredentialName: - type: string - format: UTF-8 - description: Registry Credential name - maxLength: 262144 - minLength: 1 - registryName: type: string + nullable: true + instanceType: + description: 'Instance type, based on GPU, assigned to a Worker. Deprecated: this is read-only field, should not be specified in update request.' format: UTF-8 - description: Recognized registry name maxLength: 262144 - minLength: 1 - registryHostname: + minLength: 0 type: string - format: UTF-8 - description: Registry hostname - maxLength: 262144 - minLength: 1 + nullable: true + maxInstances: + description: Maximum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + maxRequestConcurrency: + description: Max request concurrency between 1 (default) and 16384. + format: int32 + maximum: 16384 + minimum: 1 + type: integer + nullable: true + minInstances: + description: Minimum number of instances for the deployment + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + required: + - maxInstances + - minInstances + type: object + AutoscalingConfigurationDto: + description: Data Transfer Object(DTO) representing autoscaling configuration + properties: + scaleDownDetails: + $ref: '#/components/schemas/ScalingDetails' + description: Configuration for scaling down + scaleUpDetails: + $ref: '#/components/schemas/ScalingDetails' + description: Configuration for scaling up + type: object + RegistryCredentialDetailsDto: + description: DTO representing a registry credential + properties: artifactTypes: - type: array description: Registry type items: - type: string enum: - CONTAINER - HELM - MODEL - RESOURCE + type: string maxItems: 2147483647 minItems: 1 - uniqueItems: true - tags: type: array - description: Optional set of tags - items: - type: string - maxItems: 2147483647 - minItems: 0 uniqueItems: true - description: + createdAt: + description: Timestamp for registry credential creation + format: date-time + maxLength: 30 + minLength: 8 type: string - format: UTF-8 + description: description: Registry credential description + format: UTF-8 maxLength: 262144 minLength: 0 - provisionedBy: type: string + nullable: true + keyType: + description: Optional registry credential key type format: UTF-8 - description: Registry credential provisioned by system or user - enum: - - SYSTEM - - USER maxLength: 262144 minLength: 0 - lastUpdatedAt: type: string - format: date-time + nullable: true + lastUpdatedAt: description: Timestamp for last registry credential update - maxLength: 30 - minLength: 8 - createdAt: - type: string format: date-time - description: Timestamp for registry credential creation maxLength: 30 minLength: 8 - required: - - artifactTypes - - createdAt - - lastUpdatedAt - - ncaId - - provisionedBy - - registryCredentialId - - registryCredentialName - - registryHostname - - registryName - AutoscalingConfigurationDto: - type: object - description: Data Transfer Object(DTO) representing autoscaling configuration - properties: - scaleUpDetails: - $ref: '#/components/schemas/ScalingDetails' - description: Configuration for scaling up - scaleDownDetails: - $ref: '#/components/schemas/ScalingDetails' - description: Configuration for scaling down - ClusterGroup: - type: object - properties: - id: - type: string - format: uuid - maxLength: 36 - minLength: 36 - name: type: string + ncaId: + description: NVIDIA Cloud Account Id owning the Registry Credential format: UTF-8 maxLength: 262144 - minLength: 0 - ncaId: + minLength: 1 type: string + provisionedBy: + description: Registry credential provisioned by system or user + enum: + - SYSTEM + - USER format: UTF-8 maxLength: 262144 minLength: 0 - authorizedNcaIds: - type: array - items: - type: string - maxItems: 2147483647 - minItems: 0 - gpus: - type: array - items: - $ref: '#/components/schemas/Gpu' - maxItems: 2147483647 - minItems: 0 - clusters: - type: array - items: - $ref: '#/components/schemas/Cluster' - maxItems: 2147483647 - minItems: 0 - JsonNode: {} - DeploymentHealthDto: - type: object - description: Data Transfer Object(DTO) representing deployment error - properties: - icmsRequestId: type: string + registryCredentialId: + description: Registry Credential Id format: uuid - description: ICMS Request ID maxLength: 36 minLength: 36 - gpu: type: string + registryCredentialName: + description: Registry Credential name format: UTF-8 - description: GPU Type as per SDD maxLength: 262144 minLength: 1 - backend: type: string + registryHostname: + description: Registry hostname format: UTF-8 - description: Backend/CSP where the GPU powered instance will be launched maxLength: 262144 minLength: 1 - instanceType: type: string + registryName: + description: Recognized registry name + format: UTF-8 + maxLength: 262144 + minLength: 1 + type: string + tags: + description: Optional set of tags + items: + type: string + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true + nullable: true + required: + - artifactTypes + - createdAt + - lastUpdatedAt + - ncaId + - provisionedBy + - registryCredentialId + - registryCredentialName + - registryHostname + - registryName + type: object + SecretDto: + description: Data Transfer Object(DTO) representing secret name/value pair + properties: + name: + description: Secret name + format: UTF-8 + maxLength: 48 + minLength: 1 + pattern: ^[a-z0-9A-Z][a-z0-9A-Z\_\.\-]*$ + type: string + value: + description: Secret value must be a string or JSON object and 1 - 32768 chars long format: UTF-8 - description: Instance type maxLength: 262144 minLength: 0 - error: type: string + required: + - name + - value + type: object + TelemetryDto: + description: Data Transfer Object (DTO) for Telemetry configurations + properties: + createdAt: + description: Telemetry creation timestamp + format: date-time + maxLength: 30 + minLength: 8 + type: string + endpoint: + description: URL for the telemetry endpoint format: UTF-8 - description: Deployment error maxLength: 262144 minLength: 1 - required: - - backend - - error - - gpu - - icmsRequestId - HelmValidationPolicyDto: - type: object - description: Data Transfer Object(DTO) representing Helm validation policy - properties: + type: string name: + description: Telemetry name + format: UTF-8 + maxLength: 262144 + minLength: 1 type: string + protocol: + description: Protocol used for communication + enum: + - HTTP + - GRPC format: UTF-8 - description: Helm validation policy name. + maxLength: 262144 + minLength: 0 + type: string + provider: + description: Telemetry provider enum: - - Default - - Unrestricted + - PROMETHEUS + - GRAFANA_CLOUD + - SPLUNK + - DATADOG + - SERVICENOW + - KRATOS + - KRATOS_THANOS + - TIMESTREAM + - VICTORIAMETRICS + - AZURE_MONITOR + - OTEL_COLLECTOR + format: UTF-8 maxLength: 262144 minLength: 0 - extraKubernetesTypes: - type: array - description: > - An API Group in Kubernetes is a collection of related functionality. - - When present, must contain at least one entry; each entry must be a - valid - - KubernetesType (group, version, kind). + type: string + telemetryId: + description: Unique telemetry ID + format: uuid + maxLength: 36 + minLength: 36 + type: string + types: + description: Set of telemetry data types items: - $ref: '#/components/schemas/KubernetesType' + enum: + - LOGS + - METRICS + - TRACES + type: string maxItems: 2147483647 minItems: 1 + type: array + uniqueItems: true required: + - createdAt + - endpoint - name - ContainerEnvironmentEntryDto: + - protocol + - provider + - telemetryId + - types type: object - description: Data Transfer Object(DTO) representing a container environment entry + Cluster: properties: - key: - type: string + id: format: UTF-8 - description: Container environment key maxLength: 262144 minLength: 0 - value: type: string + k8sVersion: format: UTF-8 - description: Container environment value maxLength: 262144 minLength: 0 - required: - - key - - value - FunctionModelDto: - type: object - description: >- - Model associated with a function, including optional LLM routing - metadata - properties: - name: type: string + name: format: UTF-8 - description: Model name maxLength: 262144 minLength: 0 - version: type: string + type: object + Gpu: + properties: + instanceTypes: + items: + $ref: '#/components/schemas/InstanceType' + maxItems: 2147483647 + minItems: 0 + type: array + name: format: UTF-8 - description: Model version. Optional for LLM-type functions. maxLength: 262144 minLength: 0 - uri: type: string - format: uri - description: Model URI. Optional for LLM-type functions. - llmConfig: - $ref: '#/components/schemas/LlmConfigDto' - description: >- - LLM-specific configuration for this model. Only relevant for - LLM-type functions. - required: - - name - InstanceDto: type: object + InstanceDto: description: Data Transfer Object(DTO) representing an instance properties: - instanceId: - type: string + backend: + description: Backend where the instance is running format: UTF-8 - description: Unique id of the instance maxLength: 262144 minLength: 0 - functionId: type: string - format: uuid + functionId: description: Function executing on the instance + format: uuid maxLength: 36 minLength: 36 - functionVersionId: type: string - format: uuid + functionVersionId: description: Function version executing on the instance + format: uuid maxLength: 36 minLength: 36 - instanceType: type: string + gpu: + description: GPU name powering the instance format: UTF-8 - description: GPU instance-type powering the instance maxLength: 262144 minLength: 0 - instanceStatus: type: string + icmsRequestId: + description: ICMS request-id used to launch this instance + format: uuid + maxLength: 36 + minLength: 36 + type: string + instanceCreatedAt: + description: Instance creation timestamp + format: date-time + maxLength: 30 + minLength: 8 + type: string + instanceId: + description: Unique id of the instance format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + instanceStatus: description: Instance status enum: - ACTIVE @@ -1730,330 +1619,416 @@ components: - PREEMPTED - DELETED - TERMINATED - maxLength: 262144 - minLength: 0 - icmsRequestId: - type: string - format: uuid - description: ICMS request-id used to launch this instance - maxLength: 36 - minLength: 36 - ncaId: - type: string format: UTF-8 - description: >- - NVIDIA Cloud Account Id that owns the function running on the - instance maxLength: 262144 minLength: 0 - gpu: type: string + instanceType: + description: GPU instance-type powering the instance format: UTF-8 - description: GPU name powering the instance maxLength: 262144 minLength: 0 - backend: type: string + instanceUpdatedAt: + description: Instance's last updated timestamp + format: date-time + maxLength: 30 + minLength: 8 + type: string + location: + description: Location such as zone name or region where the instance is running format: UTF-8 - description: Backend where the instance is running maxLength: 262144 minLength: 0 - location: type: string + ncaId: + description: NVIDIA Cloud Account Id that owns the function running on the instance format: UTF-8 - description: Location such as zone name or region where the instance is running maxLength: 262144 minLength: 0 - instanceCreatedAt: - type: string - format: date-time - description: Instance creation timestamp - maxLength: 30 - minLength: 8 - instanceUpdatedAt: type: string - format: date-time - description: Instance's last updated timestamp - maxLength: 30 - minLength: 8 - ArtifactDto: type: object - description: Data Transfer Object(DTO) representing an artifact + ContainerEnvironmentEntryDto: + description: Data Transfer Object(DTO) representing a container environment entry properties: - name: - type: string + key: + description: Container environment key format: UTF-8 - description: Artifact name maxLength: 262144 minLength: 0 - version: type: string + value: + description: Container environment value format: UTF-8 - description: Artifact version maxLength: 262144 minLength: 0 - uri: type: string - format: uri - description: Artifact URI required: - - name - - uri - - version - HealthDto: + - key + - value type: object - description: Data Transfer Object(DTO) representing a function ne + HealthDto: + description: Data Transfer Object(DTO) representing a function's health configuration properties: + expectedStatusCode: + description: Expected return status code considered as successful. + format: int32 + maximum: 2147483647 + minimum: -2147483648 + type: integer + port: + description: Port number where the health listener is running + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer protocol: - type: string - format: UTF-8 description: HTTP/gPRC protocol type for health endpoint enum: - HTTP - gRPC + format: UTF-8 maxLength: 262144 minLength: 0 - uri: type: string - format: uri - description: Health endpoint for the container or the helmChart - port: - type: integer - format: int32 - description: Port number where the health listener is running - maximum: 2147483647 - minimum: -2147483648 timeout: - type: string - format: duration description: ISO 8601 duration string in PnDTnHnMn.nS format example: PT10S - expectedStatusCode: - type: integer - format: int32 - description: Expected return status code considered as successful. - maximum: 2147483647 - minimum: -2147483648 + format: duration + type: string + uri: + description: Health endpoint for the container or the helmChart + format: uri + type: string required: - expectedStatusCode - port - protocol - timeout - uri - RateLimitDto: type: object - description: Data Transfer Object(DTO) representing Rate limit config + LlmInvocationConfigDto: + description: Function-level LLM invocation configuration. properties: - rateLimit: + priority: + $ref: '#/components/schemas/PriorityDto' + description: Function-level request priority configuration. + type: object + FunctionModelDto: + description: Model associated with a function, including optional LLM routing metadata + properties: + llmConfig: + $ref: '#/components/schemas/LlmConfigDto' + description: LLM-specific configuration for this model. Only relevant for LLM-type functions. + name: + description: Model name + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + uri: + description: Model URI. Optional for LLM-type functions. + format: uri type: string + nullable: true + version: + description: Model version. Optional for LLM-type functions. format: UTF-8 - description: Rate maxLength: 262144 minLength: 0 - pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ + type: string + nullable: true + required: + - name + type: object + RateLimitDto: + description: Data Transfer Object(DTO) representing Rate limit config + properties: exemptedNcaIds: - type: array description: NCA ID Exemptions items: type: string maxItems: 32 minItems: 0 + type: array uniqueItems: true + nullable: true perNcaIdRate: - type: object additionalProperties: type: string description: Per NCA ID Rate - syncCheck: - type: boolean - description: Sync check. Defaults to false + type: object + nullable: true perUserRate: + description: Per-user rate, intended for traffic authenticated with an invocation delegation token (InvocationToken). When set, this single rate is enforced individually against every unique caller identity, in addition to the NCA-tier limit. + format: UTF-8 + maxLength: 262144 + minLength: 0 + pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ type: string + nullable: true + rateLimit: + description: Rate format: UTF-8 - description: >- - Per-user rate, intended for traffic authenticated with an invocation - delegation token (InvocationToken). When set, this single rate is - enforced individually against every unique caller identity, in - addition to the NCA-tier limit. maxLength: 262144 minLength: 0 pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ - TelemetriesDto: + type: string + nullable: true + syncCheck: + description: Sync check. Defaults to false + type: boolean + nullable: true + type: object + ArtifactDto: + description: Data Transfer Object(DTO) representing an artifact + properties: + name: + description: Artifact name + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + uri: + description: Artifact URI + format: uri + type: string + version: + description: Artifact version + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + required: + - name + - uri + - version type: object + TelemetriesDto: description: Telemetry configuration for logs, metrics, and traces. properties: logsTelemetryId: - type: string - format: uuid description: UUID representing the logs telemetry. + format: uuid maxLength: 36 minLength: 36 - metricsTelemetryId: type: string - format: uuid + nullable: true + metricsTelemetryId: description: UUID representing the metrics telemetry. + format: uuid maxLength: 36 minLength: 36 - tracesTelemetryId: type: string - format: uuid + nullable: true + tracesTelemetryId: description: UUID representing the traces telemetry. + format: uuid maxLength: 36 minLength: 36 - ScalingDetails: + type: string + nullable: true type: object + DeploymentHealthDto: + description: Data Transfer Object(DTO) representing deployment error properties: - metric: + backend: + description: Backend/CSP where the GPU powered instance will be launched + format: UTF-8 + maxLength: 262144 + minLength: 1 type: string + error: + description: Deployment error + format: UTF-8 + maxLength: 262144 + minLength: 1 + type: string + gpu: + description: GPU Type as per SDD + format: UTF-8 + maxLength: 262144 + minLength: 1 + type: string + icmsRequestId: + description: ICMS Request ID + format: uuid + maxLength: 36 + minLength: 36 + type: string + instanceType: + description: Instance type + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + required: + - backend + - error + - gpu + - icmsRequestId + type: object + HelmValidationPolicyDto: + description: Data Transfer Object(DTO) representing Helm validation policy + properties: + extraKubernetesTypes: + description: | + An API Group in Kubernetes is a collection of related functionality. + When present, must contain at least one entry; each entry must be a valid + KubernetesType (group, version, kind). + items: + $ref: '#/components/schemas/KubernetesType' + maxItems: 2147483647 + minItems: 1 + type: array + nullable: true + name: + description: Helm validation policy name. + enum: + - Default + - Unrestricted format: UTF-8 - description: Scaling metric maxLength: 262144 minLength: 0 + type: string + required: + - name + type: object + ScalingDetails: + properties: factor: - type: number + description: Scaling factor must be greater-than 1.0 for scale up and less-than 1.0 for scale down. This factor is used to multiply the currentinstance count when specified threshold is met. format: float - description: >- - Scaling factor must be greater-than 1.0 for scale up and less-than - 1.0 for scale down. This factor is used to multiply the - currentinstance count when specified threshold is met. - threshold: - type: integer - format: int32 - description: >- - Scaling threshold (0-100) as a percentage of utilizationupon which - the number of current instances are multiplied with thespecified - factor. - maximum: 2147483647 - minimum: -2147483648 + minimum: 0 + type: number + metric: + description: Scaling metric + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true stickiness: $ref: '#/components/schemas/StickinessWindow' description: Stickiness window configuration + threshold: + description: Scaling threshold (0-100) as a percentage of utilizationupon which the number of current instances are multiplied with thespecified factor. + format: int32 + maximum: 100 + minimum: 0 + type: integer required: - factor - threshold - Gpu: type: object + InstanceType: properties: - name: + default: + type: boolean + description: + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + name: format: UTF-8 maxLength: 262144 minLength: 0 - instanceTypes: - type: array - items: - $ref: '#/components/schemas/InstanceType' - maxItems: 2147483647 - minItems: 0 - Cluster: + type: string type: object + PriorityDto: + description: Function-level request priority. Lower value is higher priority, 0 is highest. properties: - k8sVersion: - type: string + defaultPriority: + description: Default priority. + format: int64 + maximum: 4294967295 + minimum: 0 + type: integer + nullable: true + perAccountPriority: + additionalProperties: + format: int64 + type: integer + description: Per-account priority overrides, keyed by account ID. + type: object + nullable: true + type: object + LlmConfigDto: + description: LLM-specific configuration for a model + properties: + routingMethod: + description: Routing method for this model. format: UTF-8 maxLength: 262144 minLength: 0 - id: type: string + nullable: true + tokenRateLimit: + description: Token-level rate limit for this model. format: UTF-8 maxLength: 262144 minLength: 0 - name: type: string + nullable: true + tokenizer: + description: Tokenizer identifier for this model. format: UTF-8 maxLength: 262144 minLength: 0 - KubernetesType: + type: string + nullable: true + uris: + description: OpenAI-compatible URIs supported by this model (e.g. /v1/chat/completions). Required for LLM models. + items: + type: string + maxItems: 2147483647 + minItems: 1 + type: array + required: + - uris type: object + KubernetesType: properties: group: - type: string - format: UTF-8 description: Name of API Group + format: UTF-8 maxLength: 262144 minLength: 1 - version: type: string + kind: + description: API Group resource or Kind format: UTF-8 - description: Version of API Group maxLength: 262144 minLength: 1 - kind: type: string + version: + description: Version of API Group format: UTF-8 - description: API Group resource or Kind maxLength: 262144 minLength: 1 + type: string required: - group - kind - version - LlmConfigDto: type: object - description: LLM-specific configuration for a model - properties: - uris: - type: array - description: >- - OpenAI-compatible URIs supported by this model (e.g. - /v1/chat/completions). Required for LLM models. - items: - type: string - maxItems: 2147483647 - minItems: 1 - tokenRateLimit: - type: string - format: UTF-8 - description: Token-level rate limit for this model. - maxLength: 262144 - minLength: 0 - tokenizer: - type: string - format: UTF-8 - description: Tokenizer identifier for this model. - maxLength: 262144 - minLength: 0 - routingMethod: - type: string - format: UTF-8 - description: Routing method for this model. - maxLength: 262144 - minLength: 0 - required: - - uris StickinessWindow: - type: object properties: size: - type: string - format: duration - description: >- - Window size must be less than or equal to PT1H and will berounded to - the nearest minute + description: Window size must be less than or equal to PT1H and will berounded to the nearest minute example: PT30M - threshold: - type: string format: duration + type: string + threshold: description: Window threshold must be less than size example: PT5M + format: duration + type: string required: - size - threshold - InstanceType: type: object - properties: - name: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - description: - type: string - format: UTF-8 - maxLength: 262144 - minLength: 0 - default: - type: boolean servers: - - url: https://api.nvcf.nvidia.com - description: Generated server url + - url: https://api.ngc.nvidia.com diff --git a/provider-dev/source/nvcf_functions.yaml b/provider-dev/source/nvcf_functions.yaml index ebae305..86135a6 100644 --- a/provider-dev/source/nvcf_functions.yaml +++ b/provider-dev/source/nvcf_functions.yaml @@ -1,339 +1,367 @@ openapi: 3.1.0 info: - title: nvcf_functions API - description: nvidia nvcf_functions API - version: 2.245.1 + title: NVIDIA Cloud Functions - Functions + description: 'NVCF functions and versions, function metadata, authorizations (function sharing grants), secrets and rate limits (source: the published NVCF OpenAPI specification; management operations served from api.ngc.nvidia.com).' + version: 2.256.0 paths: - /v2/nvcf/secrets/functions/{functionId}/versions/{versionId}: - put: - tags: - - User Secret Management - summary: Update user secrets for a function version - description: >- - Updates secrets for the specified function version. This endpoint - requires a bearer token with 'update_secrets' scope in the HTTP - Authorization header. - operationId: updateFunctionSecrets + /v2/nvcf/authorizations/functions/{function_id}: + get: + description: 'Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: getAuthorizedPartiesForAllVersions parameters: - - name: functionId + - description: Function id in: path - description: Function Id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: versionId + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListAuthorizedPartiesResponse' + description: OK + summary: List Account Authorizations For Function + tags: + - Function Sharing + post: + description: 'Authorizes additional NVIDIA Cloud Accounts to invoke any version of the specified function. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: createAuthorizedPartiesForAllVersions + parameters: + - description: Function id in: path - description: Function Version Id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateFunctionSecretsRequest' + $ref: '#/components/schemas/AuthorizedPartiesRequest' required: true responses: - '204': - description: No Content - /v2/nvcf/ratelimit/functions/{functionId}/versions/{versionId}: - put: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Authorize Accounts To Invoke Function tags: - - User Ratelimit Management - summary: Update user ratelimit for a function version - description: >- - Deprecated: use PUT - /v2/nvcf/functions/{functionId}/versions/{versionId} to update - ratelimit and other mutable function fields. This legacy endpoint only - updates ratelimit for the specified function version and requires a - bearer token with 'update_function' scope in the HTTP Authorization - header. - operationId: updateRateLimit + - Function Sharing + delete: + description: 'Deletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: deleteAuthorizedPartiesForAllVersions parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: versionId + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Delete All Authorizations At Function Level + tags: + - Function Sharing + /v2/nvcf/authorizations/functions/{function_id}/add: + patch: + description: 'Adds the specified NVIDIA Cloud Account to the set of authorized accounts that are can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing inheritable authorized accounts, it results in a response with status code 409. If a function is public, then Account Admin cannot perform this operation. Note that response only includes authz accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: addAuthorizedPartyForAllVersions + parameters: + - description: Function id in: path - description: Function version id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateFunctionRequest' + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' required: true responses: - '204': - description: No Content - deprecated: true - delete: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Authorize Another Account To Invoke, List, and Check Queue Details of Function tags: - - User Ratelimit Management - summary: Delete user ratelimit for a function version - description: >- - Delete ratelimit for the specified function version. This endpoint - requires a bearer token with 'update_function' scope in the HTTP - Authorization header. - operationId: deleteRateLimit + - Function Sharing + /v2/nvcf/authorizations/functions/{function_id}/remove: + patch: + description: 'Removes the specified NVIDIA Cloud Account from the set of authorized accounts that can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized parties, it results in a response with status 404. Also, if the specified account is not in the existing set of inheritable authorized accounts, it results in a response with status 404. If the specified function is public, then Account Admin cannot perform this operation. Note that response only includes the remaining authorized accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: removeAuthorizedPartyForAllVersions parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: versionId + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function + tags: + - Function Sharing + /v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}: + get: + description: 'Gets NVIDIA Cloud Account IDs that are authorized to invoke specified function version. Response includes authorized accounts that were added specifically at the version level and the authorized accounts that were inherited from function level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: getAuthorizedPartiesForSpecificVersion + parameters: + - description: Function id in: path - description: Function version id + name: function_id required: true schema: + format: uuid + maxLength: 36 + minLength: 36 type: string + - description: Function version + in: path + name: function_version_id + required: true + schema: format: uuid maxLength: 36 minLength: 36 + type: string responses: - '204': - description: No Content - /v2/nvcf/metadata/functions/{functionId}/versions/{functionVersionId}: - put: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Get Account Authorizations For Function Version tags: - - Function Management - summary: Update Function Metadata - description: >- - Deprecated: use PUT - /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update - tags, rate limit, model-specific LLM config, and other mutable function - fields. This legacy endpoint updates the same mutable function version - fields for the authenticated NVIDIA Cloud Account and requires a bearer - token with 'update_function' scope in the HTTP Authorization header. - operationId: updateFunctionMetadata + - Function Sharing + post: + description: 'Authorizes additional NVIDIA Cloud Accounts to invoke a specific function version. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Note that the response does NOT include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: createAuthorizedPartiesForSpecificVersion parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version id in: path - description: Version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateFunctionRequest' + $ref: '#/components/schemas/AuthorizedPartiesRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/FunctionResponse' - deprecated: true - /v2/nvcf/functions/{functionId}/versions/{functionVersionId}: - get: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Authorize Accounts To Invoke/List Function Version tags: - - Function Management - summary: Get Function Version Details - description: >- - Retrieves detailed information of the specified function version in the - authenticated NVIDIA Cloud Account. Requires a bearer token with - 'list_functions' or 'list_functions_details' scopes in the HTTP - Authorization header. - operationId: getFunction + - Function Sharing + delete: + description: 'Deletes all the authorized accounts that are directly associated with the specified function version. Authorized parties that are inherited by the function version are not deleted. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: deleteAuthorizedPartiesForSpecificVersion parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version in: path - description: 'Version id ' + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: includeSecrets - in: query - description: > - Query param 'includeSecrets' indicates whether to include secret - names - for the function in the response. - required: false - schema: - type: boolean - default: true + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/FunctionResponse' - put: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Delete All Authorizations At Version Level tags: - - Function Management - summary: Updates mutable fields of the specified function version. - description: >- - Updates mutable fields of the specified function version within the - authenticated NVIDIA Cloud Account. The current request payload supports - tags updates, rate limit updates, and model-specific LLM config updates. - Requires a bearer token with 'update_function' scope in the HTTP - Authorization header. - operationId: updateFunction + - Function Sharing + /v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/add: + patch: + description: 'Adds the specified NVIDIA Cloud Account to the set of authorized accounts that can invoke the specified function version. If the specified function version does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing authorized accounts that are directly associated with the function version, it results in a response wit status code 409. If a function is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: addAuthorizedPartyForSpecificVersion parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version in: path - description: Version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateFunctionRequest' + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/FunctionResponse' - delete: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Authorize Another Account To Invoke, List, and Check Queue Details of Function Version tags: - - Function Management - summary: Delete Function - description: >- - Deletes the specified function version in the authenticated NVIDIA - Cloud Account. Requires a bearer token with 'delete_function' scope in - the HTTP Authorization header. If the function version is public, then - Account Admin cannot delete the function. - operationId: deleteFunction + - Function Sharing + /v2/nvcf/authorizations/functions/{function_id}/versions/{function_version_id}/remove: + patch: + description: 'Removes the specified NVIDIA Cloud Account from the set of authorized accounts that are directly associated with specified function version. If the specified function version does not have any of its own(not inherited) authorized accounts, it results in a response with status 404. Also, if the specified authorized account is not in the set of existing authorized parties that are directly associated with the specified function version, it results in a response with status code 404. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: removeAuthorizedPartyForSpecificVersion parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version in: path - description: Version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + required: true responses: - '204': - description: No Content + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedPartiesResponse' + description: OK + summary: Unauthorize Account From Invoking, Listing, and Checking Queue Details of Function Version + tags: + - Function Sharing /v2/nvcf/functions: get: - tags: - - Function Management - summary: List Functions - description: >- - Lists all the functions associated with the authenticated NVIDIA Cloud - Account. Requires a bearer token with 'list_functions' or - 'list_functions_details' scope in the HTTP Authorization header. + description: Lists all the functions associated with the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scope in the HTTP Authorization header. operationId: getFunctions parameters: - - name: visibility - in: query - description: > - Query param 'visibility' indicates the kind of functions to be - included + - description: | + Query param 'visibility' indicates the kind of functions to be included in the response. + in: query + name: visibility required: false schema: - type: array default: - authorized - private - public items: - type: string - format: UTF-8 enum: - authorized - private - public + format: UTF-8 maxLength: 262144 minLength: 0 + type: string maxItems: 2147483647 minItems: 0 + type: array uniqueItems: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/ListFunctionsResponse' - post: + description: OK + summary: List Functions tags: - Function Management - summary: Create Function - description: >- - Creates a new function within the authenticated NVIDIA Cloud Account. - Requires a bearer token with 'register_function' scope in the HTTP - Authorization header. + post: + description: 'Creates a new function within the authenticated NVIDIA Cloud Account. Requires a bearer token with ''register_function'' scope in the HTTP Authorization header. ' operationId: createFunction requestBody: content: @@ -343,732 +371,557 @@ paths: required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/CreateFunctionResponse' - /v2/nvcf/functions/{functionId}/versions: - get: - tags: - - Function Management - summary: List Function Versions - description: >- - Lists details of all the versions of the specified function in the - authenticated NVIDIA Cloud Account. Requires a bearer token with - 'list_functions' or 'list_functions_details' scopes in the HTTP - Authorization header. - operationId: getFunctions_1 - parameters: - - name: functionId - in: path - description: Function id - required: true - schema: - type: string - format: uuid - maxLength: 36 - minLength: 36 - responses: - '200': description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ListFunctionsResponse' - post: + summary: Create Function tags: - Function Management - summary: Create Function Version - description: >- - Creates a version of the specified function within the authenticated - NVIDIA Cloud Account. If the function is public, then Account Admin - cannot create a version. Requires a bearer token with - 'register_function' scope in the HTTP Authorization header. - operationId: createFunction_1 + parameters: [] + /v2/nvcf/functions/ids: + get: + description: 'Lists ids of all the functions in the authenticated NVIDIA Cloud Account. Requires a bearer token with ''list_functions'' or ''list_functions_details'' scopes in the HTTP Authorization header. ' + operationId: getFunctionIds parameters: - - name: functionId - in: path - description: Function id - required: true - schema: - type: string - format: uuid - maxLength: 36 - minLength: 36 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateFunctionRequest' - required: true + - description: | + Query param 'visibility' indicates the kind of functions to be included + in the response. + in: query + name: visibility + required: false + schema: + default: + - authorized + - private + - public + items: + enum: + - authorized + - private + - public + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/CreateFunctionResponse' - /v2/nvcf/authorizations/functions/{functionId}: - get: + $ref: '#/components/schemas/ListFunctionIdsResponse' + description: OK + summary: List Function Ids tags: - - Function Sharing - summary: List Account Authorizations For Function - description: >- - Lists NVIDIA Cloud Account IDs that are authorized to invoke any version - of the specified function. The response includes an array showing - authorized accounts for each version. Individual versions of a function - can have their own authorized accounts. So, each object in the array - can have different authorized accounts listed. Access to this - functionality mandates the inclusion of a bearer token with the - 'authorize_clients' scope in the HTTP Authorization header - operationId: getAuthorizedPartiesForAllVersions + - Function Management + /v2/nvcf/functions/{function_id}/versions: + get: + description: 'Lists details of all the versions of the specified function in the authenticated NVIDIA Cloud Account. Requires a bearer token with ''list_functions'' or ''list_functions_details'' scopes in the HTTP Authorization header. ' + operationId: getFunctions_1 parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/ListAuthorizedPartiesResponse' - post: + $ref: '#/components/schemas/ListFunctionsResponse' + description: OK + summary: List Function Versions tags: - - Function Sharing - summary: Authorize Accounts To Invoke Function - description: >- - Authorizes additional NVIDIA Cloud Accounts to invoke any version of - the specified function. By default, a function belongs to the NVIDIA - Cloud Account that created it, and the credentials used for function - invocation must reference the same NVIDIA Cloud Account. Upon - invocation of this endpoint, any existing authorized accounts will be - overwritten by the newly specified authorized accounts. Access to this - functionality mandates the inclusion of a bearer token with the - 'authorize_clients' scope in the HTTP Authorization header - operationId: createAuthorizedPartiesForAllVersions + - Function Management + post: + description: 'Creates a version of the specified function within the authenticated NVIDIA Cloud Account. If the function is public, then Account Admin cannot create a version. Requires a bearer token with ''register_function'' scope in the HTTP Authorization header. ' + operationId: createFunction_1 parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/AuthorizedPartiesRequest' + $ref: '#/components/schemas/CreateFunctionRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - delete: - tags: - - Function Sharing - summary: Delete All Authorizations At Function Level - description: >- - Deletes authorizations at the function level. This impacts all versions - of the function. If a function versions has its own set of - authorizations, those are not deleted. If the specified function is - public, then Account Admin cannot perform this operation. Note that the - response does not include any authz accounts at version level. Access - to this functionality mandates the inclusion of a bearer token with the - 'authorize_clients' scope in the HTTP Authorization header - operationId: deleteAuthorizedPartiesForAllVersions - parameters: - - name: functionId - in: path - description: Function id - required: true - schema: - type: string - format: uuid - maxLength: 36 - minLength: 36 - responses: - '200': + $ref: '#/components/schemas/CreateFunctionResponse' description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - /v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}: - get: + summary: Create Function Version tags: - - Function Sharing - summary: Get Account Authorizations For Function Version - description: >- - Gets NVIDIA Cloud Account IDs that are authorized to invoke specified - function version. Response includes authorized accounts that were added - specifically at the version level and the authorized accounts that were - inherited from function level. Access to this functionality mandates - the inclusion of a bearer token with the 'authorize_clients' scope in - the HTTP Authorization header - operationId: getAuthorizedPartiesForSpecificVersion + - Function Management + /v2/nvcf/functions/{function_id}/versions/{function_version_id}: + get: + description: 'Retrieves detailed information of the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with ''list_functions'' or ''list_functions_details'' scopes in the HTTP Authorization header. ' + operationId: getFunction parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: 'Version id ' in: path - description: Function version + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string + - description: | + Query param 'includeSecrets' indicates whether to include secret names + for the function in the response. + in: query + name: includeSecrets + required: false + schema: + default: true + type: boolean responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - post: + $ref: '#/components/schemas/FunctionResponse' + description: OK + summary: Get Function Version Details tags: - - Function Sharing - summary: Authorize Accounts To Invoke/List Function Version - description: >- - Authorizes additional NVIDIA Cloud Accounts to invoke a specific - function version. By default, a function belongs to the NVIDIA Cloud - Account that created it, and the credentials used for function - invocation must reference the same NVIDIA Cloud Account. Upon - invocation of this endpoint, any existing authorized accounts will be - overwritten by the newly specified authorized accounts. Note that the - response does NOT include inherited authorized accounts that were added - at the function level. Access to this functionality mandates the - inclusion of a bearer token with the 'authorize_clients' scope in the - HTTP Authorization header - operationId: createAuthorizedPartiesForSpecificVersion + - Function Management + put: + description: 'Updates mutable fields of the specified function version within the authenticated NVIDIA Cloud Account. The current request payload supports tags updates, rate limit updates, and model-specific LLM config updates. Requires a bearer token with ''update_function'' scope in the HTTP Authorization header. ' + operationId: updateFunction parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Version id in: path - description: Function version id + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/AuthorizedPartiesRequest' + $ref: '#/components/schemas/UpdateFunctionRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - delete: + $ref: '#/components/schemas/FunctionResponse' + description: OK + summary: Updates mutable fields of the specified function version. tags: - - Function Sharing - summary: Delete All Authorizations At Version Level - description: >- - Deletes all the authorized accounts that are directly associated with - the specified function version. Authorized parties that are inherited - by the function version are not deleted. If the specified function - version is public, then Account Admin cannot perform this operation. - Note that the response does not include inherited authorized accounts - that were added at the function level. Access to this functionality - mandates the inclusion of a bearer token with the 'authorize_clients' - scope in the HTTP Authorization header - operationId: deleteAuthorizedPartiesForSpecificVersion + - Function Management + delete: + description: 'Deletes the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with ''delete_function'' scope in the HTTP Authorization header. If the function version is public, then Account Admin cannot delete the function. ' + operationId: deleteFunction parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Version id in: path - description: Function version + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - /v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/remove: - patch: + '204': + description: No Content + summary: Delete Function tags: - - Function Sharing - summary: >- - Unauthorize Account From Invoking, Listing, and Checking Queue Details - of Function Version - description: >- - Removes the specified NVIDIA Cloud Account from the set of authorized - accounts that are directly associated with specified function version. - If the specified function version does not have any of its own(not - inherited) authorized accounts, it results in a response with status - 404. Also, if the specified authorized account is not in the set of - existing authorized parties that are directly associated with the - specified function version, it results in a response with status code - 404. If the specified function version is public, then Account Admin - cannot perform this operation. Note that the response does not include - inherited authorized accounts that were added at the function level. - Access to this functionality mandates the inclusion of a bearer token - with the 'authorize_clients' scope in the HTTP Authorization header - operationId: removeAuthorizedPartyForSpecificVersion + - Function Management + /v2/nvcf/metadata/functions/{function_id}/versions/{function_version_id}: + put: + deprecated: true + description: 'Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update tags, rate limit, model-specific LLM config, and other mutable function fields. This legacy endpoint updates the same mutable function version fields for the authenticated NVIDIA Cloud Account and requires a bearer token with ''update_function'' scope in the HTTP Authorization header. ' + operationId: updateFunctionMetadata parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Version id in: path - description: Function version + name: function_version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + $ref: '#/components/schemas/UpdateFunctionRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - /v2/nvcf/authorizations/functions/{functionId}/versions/{functionVersionId}/add: - patch: + $ref: '#/components/schemas/FunctionResponse' + description: OK + summary: Update Function Metadata tags: - - Function Sharing - summary: >- - Authorize Another Account To Invoke, List, and Check Queue Details of - Function Version - description: >- - Adds the specified NVIDIA Cloud Account to the set of authorized - accounts that can invoke the specified function version. If the - specified function version does not have any existing inheritable - authorized accounts, it results in a response with status 404. If the - specified account is already in the set of existing authorized accounts - that are directly associated with the function version, it results in a - response wit status code 409. If a function is public, then Account - Admin cannot perform this operation. Note that the response does not - include inherited authorized accounts that were added at the function - level. Access to this functionality mandates the inclusion of a bearer - token with the 'authorize_clients' scope in the HTTP Authorization - header - operationId: addAuthorizedPartyForSpecificVersion + - Function Management + /v2/nvcf/ratelimit/functions/{function_id}/versions/{version_id}: + put: + deprecated: true + description: 'Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{versionId} to update ratelimit and other mutable function fields. This legacy endpoint only updates ratelimit for the specified function version and requires a bearer token with ''update_function'' scope in the HTTP Authorization header. ' + operationId: updateRateLimit parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId + type: string + - description: Function version id in: path - description: Function version + name: version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + $ref: '#/components/schemas/UpdateFunctionRequest' required: true responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - /v2/nvcf/authorizations/functions/{functionId}/remove: - patch: + '204': + description: No Content + summary: Update user ratelimit for a function version tags: - - Function Sharing - summary: >- - Unauthorize Account From Invoking, Listing, and Checking Queue Details - of Function - description: >- - Removes the specified NVIDIA Cloud Account from the set of authorized - accounts that can invoke all the versions of the specified function. If - the specified function does not have any existing inheritable - authorized parties, it results in a response with status 404. Also, if - the specified account is not in the existing set of inheritable - authorized accounts, it results in a response with status 404. If the - specified function is public, then Account Admin cannot perform this - operation. Note that response only includes the remaining authorized - accounts at the function level. Access to this functionality mandates - the inclusion of a bearer token with the 'authorize_clients' scope in - the HTTP Authorization header - operationId: removeAuthorizedPartyForAllVersions + - User Ratelimit Management + delete: + description: 'Delete ratelimit for the specified function version. This endpoint requires a bearer token with ''update_function'' scope in the HTTP Authorization header. ' + operationId: deleteRateLimit parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: + format: uuid + maxLength: 36 + minLength: 36 type: string + - description: Function version id + in: path + name: version_id + required: true + schema: format: uuid maxLength: 36 minLength: 36 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PatchAuthorizedPartyRequest' - required: true + type: string responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - /v2/nvcf/authorizations/functions/{functionId}/add: - patch: + '204': + description: No Content + summary: Delete user ratelimit for a function version tags: - - Function Sharing - summary: >- - Authorize Another Account To Invoke, List, and Check Queue Details of - Function - description: >- - Adds the specified NVIDIA Cloud Account to the set of authorized - accounts that are can invoke all the versions of the specified - function. If the specified function does not have any existing - inheritable authorized accounts, it results in a response with status - 404. If the specified account is already in the set of existing - inheritable authorized accounts, it results in a response with status - code 409. If a function is public, then Account Admin cannot perform - this operation. Note that response only includes authz accounts at the - function level. Access to this functionality mandates the inclusion of a - bearer token with the 'authorize_clients' scope in the HTTP - Authorization header - operationId: addAuthorizedPartyForAllVersions + - User Ratelimit Management + /v2/nvcf/secrets/functions/{function_id}/versions/{version_id}: + put: + description: 'Updates secrets for the specified function version. This endpoint requires a bearer token with ''update_secrets'' scope in the HTTP Authorization header. ' + operationId: updateFunctionSecrets parameters: - - name: functionId + - description: Function Id in: path - description: Function id + name: function_id required: true schema: + format: uuid + maxLength: 36 + minLength: 36 type: string + - description: Function Version Id + in: path + name: version_id + required: true + schema: format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/PatchAuthorizedPartyRequest' + $ref: '#/components/schemas/UpdateFunctionSecretsRequest' required: true responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/AuthorizedPartiesResponse' - /v2/nvcf/functions/ids: - get: + '204': + description: No Content + summary: Update user secrets for a function version tags: - - Function Management - summary: List Function Ids - description: >- - Lists ids of all the functions in the authenticated NVIDIA Cloud - Account. Requires a bearer token with 'list_functions' or - 'list_functions_details' scopes in the HTTP Authorization header. - operationId: getFunctionIds - parameters: - - name: visibility - in: query - description: > - Query param 'visibility' indicates the kind of functions to be - included - in the response. - required: false - schema: - type: array - default: - - authorized - - private - - public - items: - type: string - format: UTF-8 - enum: - - authorized - - private - - public - maxLength: 262144 - minLength: 0 - maxItems: 2147483647 - minItems: 0 - uniqueItems: true - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ListFunctionIdsResponse' + - User Secret Management components: schemas: - UpdateFunctionSecretsRequest: + AuthorizedPartiesResponse: + description: Parties authorized to invoke function + properties: + function: + $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' + description: Function with authorized parties and other details + required: + - function type: object - description: Request payload to update secrets + ListAuthorizedPartiesResponse: + description: Parties authorized to invoke function properties: - secrets: - type: array - description: Secrets + functions: + description: Functions with authorized parties and other details items: - $ref: '#/components/schemas/SecretDto' + $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' maxItems: 2147483647 minItems: 0 - uniqueItems: true + type: array required: - - secrets - UpdateFunctionRequest: + - functions type: object - description: Request payload to update mutable function configuration fields. + AuthorizedPartiesRequest: + description: Request to associated authorized parties for a specific version or allversions of a function properties: - tags: - type: array - description: >- - Optional set of function tags. When omitted, the existing value is - preserved. - items: - type: string - pattern: '[a-zA-Z0-9\-_:=]+' - maxItems: 64 - minItems: 0 - uniqueItems: true - rateLimit: - $ref: '#/components/schemas/RateLimitDto' - description: >- - Optional full replacement for the function rate limit configuration. - When omitted, the existing value is preserved. Use the delete - rate-limit endpoint to clear it. - modelUpdates: - type: array - description: Optional list of model-specific updates. + authorizedParties: + description: Parties authorized to invoke function items: - $ref: '#/components/schemas/ModelUpdateDto' + $ref: '#/components/schemas/AuthorizedPartyDto' maxItems: 2147483647 - minItems: 0 - FunctionResponse: + minItems: 1 + type: array + required: + - authorizedParties type: object - description: Response body with function details + PatchAuthorizedPartyRequest: + description: | + Request payload to associate/disassociate authorized party with function properties: - function: - $ref: '#/components/schemas/FunctionDto' - description: Function details + authorizedParty: + $ref: '#/components/schemas/AuthorizedPartyDto' + description: Authorized party required: - - function - ListFunctionsResponse: + - authorizedParty type: object + ListFunctionsResponse: description: Response body containing list of functions properties: functions: - type: array description: List of functions items: $ref: '#/components/schemas/FunctionDto' maxItems: 2147483647 minItems: 0 + type: array required: - functions - CreateFunctionRequest: type: object + CreateFunctionRequest: description: Request payload to create function. properties: - name: - type: string + apiBodyFormat: + description: Invocation request body format + enum: + - PREDICT_V2 + - CUSTOM format: UTF-8 - description: >- - Function name must start with lowercase/uppercase/digit and can only - contain lowercase, uppercase, digit, hyphen, and underscore - characters - maxLength: 128 - minLength: 1 - pattern: ^[a-z0-9A-Z][a-z0-9A-Z\-_]*$ - inferenceUrl: - type: string - format: uri - description: Entrypoint for invoking the container to process a request - healthUri: + maxLength: 262144 + minLength: 0 type: string - format: uri - deprecated: true - description: Health endpoint for the container or the helmChart - inferencePort: - type: integer - format: int32 - description: > - Optional port number where the inference listener is running. - Defaults to 8000 - for Triton. - maximum: 2147483647 - minimum: -2147483648 - health: - $ref: '#/components/schemas/HealthDto' - description: Function health + nullable: true containerArgs: - type: string - format: UTF-8 description: Args to be passed when launching the container + format: UTF-8 maxLength: 262144 minLength: 0 + type: string + nullable: true containerEnvironment: - type: array description: Environment settings for launching the container items: $ref: '#/components/schemas/ContainerEnvironmentEntryDto' maxItems: 2147483647 minItems: 0 - models: type: array - description: Optional list of models - items: - $ref: '#/components/schemas/FunctionModelDto' - maxItems: 2147483647 - minItems: 0 + nullable: true containerImage: - type: string - format: uri description: Optional custom container image - helmChart: + format: uri + type: string + nullable: true + description: + description: Optional function/version description + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + nullable: true + functionType: + description: Optional function type, used to indicate a STREAMING function. Defaults to DEFAULT. + enum: + - DEFAULT + - STREAMING + - LLM + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + health: + $ref: '#/components/schemas/HealthDto' + description: Function health + healthUri: + deprecated: true + description: Health endpoint for the container or the helmChart format: uri + type: string + nullable: true + helmChart: description: Optional Helm Chart - helmChartServiceName: + format: uri type: string + nullable: true + helmChartServiceName: + description: | + Helm Chart Service Name is required when helmChart property is specified format: UTF-8 - description: > - Helm Chart Service Name is required when helmChart property is - specified maxLength: 262144 minLength: 0 - resources: + type: string + nullable: true + inferencePort: + description: | + Optional port number where the inference listener is running. Defaults to 8000 + for Triton. + format: int32 + maximum: 2147483647 + minimum: -2147483648 + type: integer + nullable: true + inferenceUrl: + description: Entrypoint for invoking the container to process a request + format: uri + type: string + llmInvocationConfig: + $ref: '#/components/schemas/LlmInvocationConfigDto' + description: Optional function-level LLM invocation configuration. Only valid for LLM-type functions. + models: + description: Optional list of models + items: + $ref: '#/components/schemas/FunctionModelDto' + maxItems: 2147483647 + minItems: 0 type: array + nullable: true + name: + description: Function name must start with lowercase/uppercase/digit and can only contain lowercase, uppercase, digit, hyphen, and underscore characters + format: UTF-8 + maxLength: 128 + minLength: 1 + pattern: ^[a-z0-9A-Z][a-z0-9A-Z\-_]*$ + type: string + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: Optional rate limit config + resources: description: Optional set of resources items: $ref: '#/components/schemas/ArtifactDto' maxItems: 2147483647 minItems: 0 - uniqueItems: true - apiBodyFormat: - type: string - format: UTF-8 - description: Invocation request body format - enum: - - PREDICT_V2 - - CUSTOM - maxLength: 262144 - minLength: 0 - tags: type: array - description: Optional set of tags - could be empty. Provided by user - items: - type: string - pattern: '[a-zA-Z0-9\-_:=]+' - maxItems: 64 - minItems: 0 uniqueItems: true - description: - type: string - format: UTF-8 - description: Optional function/version description - maxLength: 262144 - minLength: 0 + nullable: true secrets: - type: array description: Optional secrets items: $ref: '#/components/schemas/SecretDto' maxItems: 2147483647 minItems: 0 + type: array + uniqueItems: true + nullable: true + tags: + description: Optional set of tags - could be empty. Provided by user + items: + pattern: '[a-zA-Z0-9\-_:=]+' + type: string + maxItems: 64 + minItems: 0 + type: array uniqueItems: true - functionType: - type: string - format: UTF-8 - description: >- - Optional function type, used to indicate a STREAMING function. - Defaults to DEFAULT. - enum: - - DEFAULT - - STREAMING - - LLM - maxLength: 262144 - minLength: 0 - rateLimit: - $ref: '#/components/schemas/RateLimitDto' - description: Optional rate limit config + nullable: true telemetries: $ref: '#/components/schemas/TelemetriesDto' description: Optional telemetry configuration for logs, metrics, and traces. required: - inferenceUrl - name - CreateFunctionResponse: type: object + CreateFunctionResponse: description: Response body for create function request. properties: function: @@ -1076,315 +929,315 @@ components: description: Details of the newly created function required: - function - ListAuthorizedPartiesResponse: - type: object - description: Parties authorized to invoke function - properties: - functions: - type: array - description: Functions with authorized parties and other details - items: - $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' - maxItems: 2147483647 - minItems: 0 - required: - - functions - AuthorizedPartiesRequest: - type: object - description: >- - Request to associated authorized parties for a specific version or - allversions of a function - properties: - authorizedParties: - type: array - description: Parties authorized to invoke function - items: - $ref: '#/components/schemas/AuthorizedPartyDto' - maxItems: 2147483647 - minItems: 1 - required: - - authorizedParties - AuthorizedPartiesResponse: - type: object - description: Parties authorized to invoke function - properties: - function: - $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' - description: Function with authorized parties and other details - required: - - function - PatchAuthorizedPartyRequest: type: object - description: | - Request payload to associate/disassociate authorized party with function - properties: - authorizedParty: - $ref: '#/components/schemas/AuthorizedPartyDto' - description: Authorized party - required: - - authorizedParty ListFunctionIdsResponse: - type: object description: Response body containing list of function ids in an account properties: functionIds: - type: array description: List of function ids items: - type: string format: uuid + type: string maxItems: 2147483647 minItems: 0 + type: array required: - functionIds - SecretDto: type: object - description: Data Transfer Object(DTO) representing secret name/value pair + FunctionResponse: + description: Response body with function details properties: - name: - type: string - format: UTF-8 - description: Secret name - maxLength: 48 - minLength: 1 - pattern: ^[a-z0-9A-Z][a-z0-9A-Z\_\.\-]*$ - value: - $ref: '#/components/schemas/JsonNode' - description: Secret value must be 1 - 32768 chars long + function: + $ref: '#/components/schemas/FunctionDto' + description: Function details required: - - name - RateLimitDto: + - function type: object - description: Data Transfer Object(DTO) representing Rate limit config + UpdateFunctionRequest: + description: Request payload to update mutable function configuration fields. properties: - rateLimit: - type: string - format: UTF-8 - description: Rate - maxLength: 262144 - minLength: 0 - pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ - exemptedNcaIds: + llmInvocationConfig: + $ref: '#/components/schemas/LlmInvocationConfigDto' + description: Optional function-level LLM invocation configuration. When omitted, the existing value is preserved. + modelUpdates: + description: Optional list of model-specific updates. + items: + $ref: '#/components/schemas/ModelUpdateDto' + maxItems: 2147483647 + minItems: 0 type: array - description: NCA ID Exemptions + nullable: true + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: Optional full replacement for the function rate limit configuration. When omitted, the existing value is preserved. Use the delete rate-limit endpoint to clear it. + tags: + description: Optional set of function tags. When omitted, the existing value is preserved. items: + pattern: '[a-zA-Z0-9\-_:=]+' type: string - maxItems: 32 + maxItems: 64 minItems: 0 + type: array uniqueItems: true - perNcaIdRate: - type: object - additionalProperties: - type: string - description: Per NCA ID Rate - syncCheck: - type: boolean - description: Sync check. Defaults to false - perUserRate: - type: string - format: UTF-8 - description: >- - Per-user rate, intended for traffic authenticated with an invocation - delegation token (InvocationToken). When set, this single rate is - enforced individually against every unique caller identity, in - addition to the NCA-tier limit. - maxLength: 262144 - minLength: 0 - pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ - ModelUpdateDto: + nullable: true type: object - description: Model-specific update request. + UpdateFunctionSecretsRequest: + description: Request payload to update secrets properties: - modelName: - type: string - format: UTF-8 - description: Name of the model to update. - maxLength: 262144 - minLength: 1 - llmConfig: - $ref: '#/components/schemas/LlmConfigUpdateDto' - description: Optional updates to this model's LLM config fields. + secrets: + description: Secrets + items: + $ref: '#/components/schemas/SecretDto' + maxItems: 2147483647 + minItems: 0 + type: array + uniqueItems: true required: - - modelName - FunctionDto: + - secrets type: object - description: Data Transfer Object (DTO) representing a function + AuthorizedPartiesByFunctionDto: + description: Data Transfer Object(DTO) representing a function with authorized accounts properties: + authorizedParties: + description: Authorized parties allowed to invoke the function + items: + $ref: '#/components/schemas/AuthorizedPartyDto' + maxItems: 2147483647 + minItems: 0 + type: array + nullable: true id: - type: string + description: Function id format: uuid - description: Unique function id maxLength: 36 minLength: 36 - ncaId: type: string - format: UTF-8 + ncaId: description: NVIDIA Cloud Account Id + format: UTF-8 maxLength: 262144 - minLength: 0 - versionId: + minLength: 1 type: string + versionId: + description: Function version id format: uuid - description: Unique function version id maxLength: 36 minLength: 36 - name: type: string + nullable: true + required: + - id + - ncaId + type: object + AuthorizedPartyDto: + description: Data Transfer Object(DTO) representing an authorized party. + properties: + clientId: + description: |- + Client Id -- 'sub' claim in the JWT. This field should not be + specified anymore. format: UTF-8 - description: Function name maxLength: 262144 minLength: 0 - status: type: string + nullable: true + ncaId: + description: NVIDIA Cloud Account authorized to invoke the function + format: UTF-8 + maxLength: 262144 + minLength: 1 + type: string + required: + - ncaId + type: object + FunctionDto: + description: Data Transfer Object (DTO) representing a function + properties: + activeInstances: + description: List of active instances for this function. + items: + $ref: '#/components/schemas/InstanceDto' + maxItems: 2147483647 + minItems: 0 + type: array + nullable: true + apiBodyFormat: + description: Invocation request body format + enum: + - PREDICT_V2 + - CUSTOM format: UTF-8 - description: Function status - enum: - - ACTIVE - - DEPLOYING - - ERROR - - INACTIVE - - DELETED - - DEGRADED - - DEGRADING maxLength: 262144 minLength: 0 - inferenceUrl: type: string - format: uri - description: Entrypoint for invoking the container to process requests - ownedByDifferentAccount: - type: boolean - description: > - Indicates whether the function is owned by another account. If the - account - that is being used to lookup functions happens to be authorized to invoke/list - this function which is owned by a different account, then this field is set - to true and ncaId will contain the id of the account that owns the function. - Otherwise, this field is not set as it defaults to false. - inferencePort: - type: integer - format: int32 - description: >- - Optional port number where the inference listener is running - - defaults to 8000 for Triton - maximum: 2147483647 - minimum: -2147483648 + nullable: true containerArgs: - type: string - format: UTF-8 description: Args used to launch the container + format: UTF-8 maxLength: 262144 minLength: 0 + type: string + nullable: true containerEnvironment: - type: array description: Environment settings used to launch the container items: $ref: '#/components/schemas/ContainerEnvironmentEntryDto' maxItems: 2147483647 minItems: 0 - models: type: array - description: Optional list of models - items: - $ref: '#/components/schemas/FunctionModelDto' - maxItems: 2147483647 - minItems: 0 + nullable: true containerImage: - type: string - format: uri description: Optional custom container - apiBodyFormat: + format: uri + type: string + nullable: true + createdAt: + description: Function creation timestamp + format: date-time + maxLength: 30 + minLength: 8 type: string + description: + description: Function/version description format: UTF-8 - description: Invocation request body format + maxLength: 262144 + minLength: 0 + type: string + nullable: true + functionType: + description: Used to indicate a STREAMING function. Defaults to DEFAULT. enum: - - PREDICT_V2 - - CUSTOM + - DEFAULT + - STREAMING + - LLM + format: UTF-8 maxLength: 262144 minLength: 0 - helmChart: type: string + health: + $ref: '#/components/schemas/HealthDto' + description: Function health configuration + healthUri: + deprecated: true + description: Health endpoint for the container or helmChart. Deprecated, use health.uri instead. format: uri + type: string + helmChart: description: Optional Helm Chart - helmChartServiceName: + format: uri type: string + nullable: true + helmChartServiceName: + description: | + Helm Chart Service Name specified only when helmChart property is specified format: UTF-8 - description: > - Helm Chart Service Name specified only when helmChart property is - specified maxLength: 262144 minLength: 0 - healthUri: type: string + nullable: true + id: + description: Unique function id + format: uuid + maxLength: 36 + minLength: 36 + type: string + inferencePort: + description: Optional port number where the inference listener is running - defaults to 8000 for Triton + format: int32 + maximum: 2147483647 + minimum: -2147483648 + type: integer + nullable: true + inferenceUrl: + description: Entrypoint for invoking the container to process requests format: uri - deprecated: true - description: >- - Health endpoint for the container or helmChart. Deprecated, use - health.uri instead. - createdAt: type: string - format: date-time - description: Function creation timestamp - maxLength: 30 - minLength: 8 - activeInstances: - type: array - description: List of active instances for this function. + nullable: true + llmInvocationConfig: + $ref: '#/components/schemas/LlmInvocationConfigDto' + description: Optional function-level LLM invocation configuration. + models: + description: Optional list of models items: - $ref: '#/components/schemas/InstanceDto' + $ref: '#/components/schemas/FunctionModelDto' maxItems: 2147483647 minItems: 0 - resources: type: array + nullable: true + name: + description: Function name + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + ncaId: + description: NVIDIA Cloud Account Id + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + ownedByDifferentAccount: + description: | + Indicates whether the function is owned by another account. If the account + that is being used to lookup functions happens to be authorized to invoke/list + this function which is owned by a different account, then this field is set + to true and ncaId will contain the id of the account that owns the function. + Otherwise, this field is not set as it defaults to false. + type: boolean + nullable: true + rateLimit: + $ref: '#/components/schemas/RateLimitDto' + description: Optional rate limit policy + resources: description: Optional set of resources. items: $ref: '#/components/schemas/ArtifactDto' maxItems: 2147483647 minItems: 0 - uniqueItems: true - tags: type: array - description: >- - Optional set of tags. Maximum allowed number of tags per function is - 64. Maximum length of each tag is 128 chars. + uniqueItems: true + nullable: true + secrets: + description: Optional secret names items: type: string maxItems: 2147483647 minItems: 0 + type: array uniqueItems: true - description: - type: string + nullable: true + status: + description: Function status + enum: + - ACTIVE + - DEPLOYING + - ERROR + - INACTIVE + - DELETED + - DEGRADED + - DEGRADING format: UTF-8 - description: Function/version description maxLength: 262144 minLength: 0 - health: - $ref: '#/components/schemas/HealthDto' - description: Function health configuration - functionType: type: string - format: UTF-8 - description: Used to indicate a STREAMING function. Defaults to DEFAULT. - enum: - - DEFAULT - - STREAMING - - LLM - maxLength: 262144 - minLength: 0 - secrets: - type: array - description: Optional secret names + tags: + description: Optional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars. items: type: string maxItems: 2147483647 minItems: 0 + type: array uniqueItems: true - rateLimit: - $ref: '#/components/schemas/RateLimitDto' - description: Optional rate limit policy + nullable: true telemetries: $ref: '#/components/schemas/TelemetriesDto' description: Optional telemetry configuration for the function + versionId: + description: Unique function version id + format: uuid + maxLength: 36 + minLength: 36 + type: string required: - createdAt - functionType @@ -1394,246 +1247,269 @@ components: - ncaId - status - versionId - HealthDto: type: object - description: Data Transfer Object(DTO) representing a function ne + ContainerEnvironmentEntryDto: + description: Data Transfer Object(DTO) representing a container environment entry properties: - protocol: + key: + description: Container environment key + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + value: + description: Container environment value format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + required: + - key + - value + type: object + HealthDto: + description: Data Transfer Object(DTO) representing a function's health configuration + properties: + expectedStatusCode: + description: Expected return status code considered as successful. + format: int32 + maximum: 2147483647 + minimum: -2147483648 + type: integer + port: + description: Port number where the health listener is running + format: int32 + maximum: 2147483647 + minimum: 0 + type: integer + protocol: description: HTTP/gPRC protocol type for health endpoint enum: - HTTP - gRPC + format: UTF-8 maxLength: 262144 minLength: 0 - uri: type: string - format: uri - description: Health endpoint for the container or the helmChart - port: - type: integer - format: int32 - description: Port number where the health listener is running - maximum: 2147483647 - minimum: -2147483648 timeout: - type: string - format: duration description: ISO 8601 duration string in PnDTnHnMn.nS format example: PT10S - expectedStatusCode: - type: integer - format: int32 - description: Expected return status code considered as successful. - maximum: 2147483647 - minimum: -2147483648 + format: duration + type: string + uri: + description: Health endpoint for the container or the helmChart + format: uri + type: string required: - expectedStatusCode - port - protocol - timeout - uri - ContainerEnvironmentEntryDto: type: object - description: Data Transfer Object(DTO) representing a container environment entry + LlmInvocationConfigDto: + description: Function-level LLM invocation configuration. properties: - key: + priority: + $ref: '#/components/schemas/PriorityDto' + description: Function-level request priority configuration. + type: object + FunctionModelDto: + description: Model associated with a function, including optional LLM routing metadata + properties: + llmConfig: + $ref: '#/components/schemas/LlmConfigDto' + description: LLM-specific configuration for this model. Only relevant for LLM-type functions. + name: + description: Model name + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + uri: + description: Model URI. Optional for LLM-type functions. + format: uri + type: string + nullable: true + version: + description: Model version. Optional for LLM-type functions. + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string + nullable: true + required: + - name + type: object + RateLimitDto: + description: Data Transfer Object(DTO) representing Rate limit config + properties: + exemptedNcaIds: + description: NCA ID Exemptions + items: + type: string + maxItems: 32 + minItems: 0 + type: array + uniqueItems: true + nullable: true + perNcaIdRate: + additionalProperties: + type: string + description: Per NCA ID Rate + type: object + nullable: true + perUserRate: + description: Per-user rate, intended for traffic authenticated with an invocation delegation token (InvocationToken). When set, this single rate is enforced individually against every unique caller identity, in addition to the NCA-tier limit. format: UTF-8 - description: Container environment key maxLength: 262144 minLength: 0 - value: + pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ type: string + nullable: true + rateLimit: + description: Rate format: UTF-8 - description: Container environment value maxLength: 262144 minLength: 0 - required: - - key - - value - FunctionModelDto: + pattern: ^(?!.*-([SMHD]).*-\1)[1-9]\d*-[SMHD](,\s*[1-9]\d*-[SMHD])*$ + type: string + nullable: true + syncCheck: + description: Sync check. Defaults to false + type: boolean + nullable: true type: object - description: >- - Model associated with a function, including optional LLM routing - metadata + ArtifactDto: + description: Data Transfer Object(DTO) representing an artifact properties: name: - type: string + description: Artifact name format: UTF-8 - description: Model name maxLength: 262144 minLength: 0 - version: type: string + uri: + description: Artifact URI + format: uri + type: string + version: + description: Artifact version format: UTF-8 - description: Model version. Optional for LLM-type functions. maxLength: 262144 minLength: 0 - uri: type: string - format: uri - description: Model URI. Optional for LLM-type functions. - llmConfig: - $ref: '#/components/schemas/LlmConfigDto' - description: >- - LLM-specific configuration for this model. Only relevant for - LLM-type functions. required: - name - ArtifactDto: + - uri + - version type: object - description: Data Transfer Object(DTO) representing an artifact + SecretDto: + description: Data Transfer Object(DTO) representing secret name/value pair properties: name: - type: string + description: Secret name format: UTF-8 - description: Artifact name - maxLength: 262144 - minLength: 0 - version: + maxLength: 48 + minLength: 1 + pattern: ^[a-z0-9A-Z][a-z0-9A-Z\_\.\-]*$ type: string + value: + description: Secret value must be a string or JSON object and 1 - 32768 chars long format: UTF-8 - description: Artifact version maxLength: 262144 minLength: 0 - uri: type: string - format: uri - description: Artifact URI required: - name - - uri - - version - TelemetriesDto: + - value type: object + TelemetriesDto: description: Telemetry configuration for logs, metrics, and traces. properties: logsTelemetryId: - type: string - format: uuid description: UUID representing the logs telemetry. - maxLength: 36 - minLength: 36 - metricsTelemetryId: - type: string format: uuid - description: UUID representing the metrics telemetry. maxLength: 36 minLength: 36 - tracesTelemetryId: type: string + nullable: true + metricsTelemetryId: + description: UUID representing the metrics telemetry. format: uuid - description: UUID representing the traces telemetry. maxLength: 36 minLength: 36 - AuthorizedPartiesByFunctionDto: - type: object - description: >- - Data Transfer Object(DTO) representing a function with authorized - accounts - properties: - id: type: string + nullable: true + tracesTelemetryId: + description: UUID representing the traces telemetry. format: uuid - description: Function id maxLength: 36 minLength: 36 - ncaId: - type: string - format: UTF-8 - description: NVIDIA Cloud Account Id - maxLength: 262144 - minLength: 1 - versionId: type: string - format: uuid - description: Function version id - maxLength: 36 - minLength: 36 - authorizedParties: - type: array - description: Authorized parties allowed to invoke the function - items: - $ref: '#/components/schemas/AuthorizedPartyDto' - maxItems: 2147483647 - minItems: 0 - required: - - id - - ncaId - AuthorizedPartyDto: + nullable: true type: object - description: Data Transfer Object(DTO) representing an authorized party. + ModelUpdateDto: + description: Model-specific update request. properties: - clientId: - type: string - format: UTF-8 - description: |- - Client Id -- 'sub' claim in the JWT. This field should not be - specified anymore. - maxLength: 262144 - minLength: 0 - ncaId: - type: string + llmConfig: + $ref: '#/components/schemas/LlmConfigUpdateDto' + description: Optional updates to this model's LLM config fields. + modelName: + description: Name of the model to update. format: UTF-8 - description: NVIDIA Cloud Account authorized to invoke the function maxLength: 262144 minLength: 1 + type: string required: - - ncaId - JsonNode: {} - LlmConfigUpdateDto: + - modelName type: object - description: Partial update payload for LLM-specific model configuration fields. - properties: - tokenRateLimit: - type: string - format: UTF-8 - description: >- - Updated token-level rate limit for the model. When omitted, the - existing value is preserved. - maxLength: 262144 - minLength: 0 - routingMethod: - type: string - format: UTF-8 - description: >- - Updated routing method for the model. When omitted, the existing - value is preserved. - maxLength: 262144 - minLength: 0 InstanceDto: - type: object description: Data Transfer Object(DTO) representing an instance properties: - instanceId: - type: string + backend: + description: Backend where the instance is running format: UTF-8 - description: Unique id of the instance maxLength: 262144 minLength: 0 - functionId: type: string - format: uuid + functionId: description: Function executing on the instance + format: uuid maxLength: 36 minLength: 36 - functionVersionId: type: string - format: uuid + functionVersionId: description: Function version executing on the instance + format: uuid maxLength: 36 minLength: 36 - instanceType: type: string + gpu: + description: GPU name powering the instance format: UTF-8 - description: GPU instance-type powering the instance maxLength: 262144 minLength: 0 - instanceStatus: type: string + icmsRequestId: + description: ICMS request-id used to launch this instance + format: uuid + maxLength: 36 + minLength: 36 + type: string + instanceCreatedAt: + description: Instance creation timestamp + format: date-time + maxLength: 30 + minLength: 8 + type: string + instanceId: + description: Unique id of the instance format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + instanceStatus: description: Instance status enum: - ACTIVE @@ -1643,85 +1519,104 @@ components: - PREEMPTED - DELETED - TERMINATED + format: UTF-8 maxLength: 262144 minLength: 0 - icmsRequestId: type: string - format: uuid - description: ICMS request-id used to launch this instance - maxLength: 36 - minLength: 36 - ncaId: + instanceType: + description: GPU instance-type powering the instance + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + instanceUpdatedAt: + description: Instance's last updated timestamp + format: date-time + maxLength: 30 + minLength: 8 type: string + location: + description: Location such as zone name or region where the instance is running format: UTF-8 - description: >- - NVIDIA Cloud Account Id that owns the function running on the - instance maxLength: 262144 minLength: 0 - gpu: type: string + ncaId: + description: NVIDIA Cloud Account Id that owns the function running on the instance format: UTF-8 - description: GPU name powering the instance maxLength: 262144 minLength: 0 - backend: type: string + type: object + PriorityDto: + description: Function-level request priority. Lower value is higher priority, 0 is highest. + properties: + defaultPriority: + description: Default priority. + format: int64 + maximum: 4294967295 + minimum: 0 + type: integer + nullable: true + perAccountPriority: + additionalProperties: + format: int64 + type: integer + description: Per-account priority overrides, keyed by account ID. + type: object + nullable: true + type: object + LlmConfigDto: + description: LLM-specific configuration for a model + properties: + routingMethod: + description: Routing method for this model. format: UTF-8 - description: Backend where the instance is running maxLength: 262144 minLength: 0 - location: type: string + nullable: true + tokenRateLimit: + description: Token-level rate limit for this model. format: UTF-8 - description: Location such as zone name or region where the instance is running maxLength: 262144 minLength: 0 - instanceCreatedAt: type: string - format: date-time - description: Instance creation timestamp - maxLength: 30 - minLength: 8 - instanceUpdatedAt: + nullable: true + tokenizer: + description: Tokenizer identifier for this model. + format: UTF-8 + maxLength: 262144 + minLength: 0 type: string - format: date-time - description: Instance's last updated timestamp - maxLength: 30 - minLength: 8 - LlmConfigDto: - type: object - description: LLM-specific configuration for a model - properties: + nullable: true uris: - type: array - description: >- - OpenAI-compatible URIs supported by this model (e.g. - /v1/chat/completions). Required for LLM models. + description: OpenAI-compatible URIs supported by this model (e.g. /v1/chat/completions). Required for LLM models. items: type: string maxItems: 2147483647 minItems: 1 - tokenRateLimit: - type: string + type: array + required: + - uris + type: object + LlmConfigUpdateDto: + description: Partial update payload for LLM-specific model configuration fields. + properties: + routingMethod: + description: Updated routing method for the model. When omitted, the existing value is preserved. format: UTF-8 - description: Token-level rate limit for this model. maxLength: 262144 minLength: 0 - tokenizer: type: string + nullable: true + tokenRateLimit: + description: Updated token-level rate limit for the model. When omitted, the existing value is preserved. format: UTF-8 - description: Tokenizer identifier for this model. maxLength: 262144 minLength: 0 - routingMethod: type: string - format: UTF-8 - description: Routing method for this model. - maxLength: 262144 - minLength: 0 - required: - - uris + nullable: true + type: object servers: - - url: https://api.nvcf.nvidia.com - description: Generated server url + - url: https://api.ngc.nvidia.com diff --git a/provider-dev/source/nvcf_invocation.yaml b/provider-dev/source/nvcf_invocation.yaml index 9c1b09a..30c0def 100644 --- a/provider-dev/source/nvcf_invocation.yaml +++ b/provider-dev/source/nvcf_invocation.yaml @@ -1,1159 +1,1081 @@ openapi: 3.1.0 info: - title: nvcf_invocation API - description: nvidia nvcf_invocation API - version: 2.245.1 + title: NVIDIA Cloud Functions - Invocation + description: NVCF HTTP-polling invocation (pexec and status), assets and invocation assertion tokens (served from api.nvcf.nvidia.com). + version: 2.256.0 paths: - /v2/nvcf/tokens/functions: - post: + /v2/nvcf/assets: + get: + deprecated: true + description: 'List assets owned by the current NVIDIA Cloud Account. Requires a bearer token with ''invoke_function'' scope in the HTTP Authorization header. ' + operationId: getAssets + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListAssetsResponse' + description: OK + summary: List Assets tags: - - Function Invocation Assertion Token - summary: Issue Function Invocation Token - description: >- - Issues an assertion token from Notary Service for specified functionIds - and/or functionVersionIds - operationId: issueMultiFunctionsInvocationToken + - Asset Management + parameters: [] + post: + deprecated: true + description: 'Creates a unique id representing an asset and a pre-signed URL to upload the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. Requires a bearer token with ''invoke_function'' scope in the HTTP Authorization header. ' + operationId: createAsset requestBody: content: application/json: schema: - $ref: '#/components/schemas/MultiFunctionsInvocationTokenRequest' + $ref: '#/components/schemas/CreateAssetRequest' required: true responses: '200': - description: Invocation assertion token is issued - content: - '*/*': - schema: - $ref: '#/components/schemas/InvocationTokenResponse' - '403': - description: > - Either missing scope in the auth(JWT / ApiKey) token and/or missing - resource entry - in the ApiKey for the function. - content: - '*/*': - schema: - $ref: '#/components/schemas/InvocationTokenResponse' - '429': - description: >- - Client is doing too many requests per second and should slow down - request rate. content: - '*/*': + application/json: schema: - $ref: '#/components/schemas/InvocationTokenResponse' - /v2/nvcf/tokens/functions/{functionId}/versions/{functionVersionId}: - post: + $ref: '#/components/schemas/CreateAssetResponse' + description: OK + summary: Create Asset tags: - - Function Invocation Assertion Token - summary: Issue Function Invocation Token - description: >- - Issues an assertion token from Notary Service for a specific functionId - and/or functionVersionId - operationId: issueInvocationToken + - Asset Management + parameters: [] + /v2/nvcf/assets/{asset_id}: + get: + deprecated: true + description: 'Returns details for the specified asset-id belonging to the current NVIDIA Cloud Account. Requires a bearer token with ''invoke_function'' scope in the HTTP Authorization header. ' + operationId: getAsset parameters: - - name: functionId + - description: Asset id in: path + name: asset_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: functionVersionId - in: path - required: true - schema: type: string - format: uuid - maxLength: 36 - minLength: 36 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/InvocationTokenRequest' - required: true responses: '200': - description: Invocation assertion token is issued - content: - '*/*': - schema: - $ref: '#/components/schemas/InvocationTokenResponse' - '403': - description: > - Either missing scope in the auth(JWT / ApiKey) token and/or missing - resource entry - in the ApiKey for the function. - content: - '*/*': - schema: - $ref: '#/components/schemas/InvocationTokenResponse' - '429': - description: >- - Client is doing too many requests per second and should slow down - request rate. content: - '*/*': + application/json: schema: - $ref: '#/components/schemas/InvocationTokenResponse' - /v2/nvcf/tokens/functions/{functionId}: - post: + $ref: '#/components/schemas/AssetResponse' + description: OK + summary: Show Asset Details tags: - - Function Invocation Assertion Token - summary: Issue Function Invocation Token - description: >- - Issues an assertion token from Notary Service for a specific functionId - and/or functionVersionId - operationId: issueInvocationToken_1 + - Asset Management + delete: + deprecated: true + description: 'Deletes asset belonging to the current NVIDIA Cloud Account. Requires a bearer token with ''invoke_function'' scope in the HTTP Authorization header. ' + operationId: deleteAsset parameters: - - name: functionId + - description: Id of the asset to be deleted in: path + name: asset_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/InvocationTokenRequest' - required: true + type: string responses: - '200': - description: Invocation assertion token is issued - content: - '*/*': - schema: - $ref: '#/components/schemas/InvocationTokenResponse' - '403': - description: > - Either missing scope in the auth(JWT / ApiKey) token and/or missing - resource entry - in the ApiKey for the function. - content: - '*/*': - schema: - $ref: '#/components/schemas/InvocationTokenResponse' - '429': - description: >- - Client is doing too many requests per second and should slow down - request rate. - content: - '*/*': - schema: - $ref: '#/components/schemas/InvocationTokenResponse' - /v2/nvcf/pexec/functions/{functionId}: - post: + '204': + description: No Content + summary: Delete Asset tags: - - Function Invocation - summary: Call Function - description: >- - Deprecated and will be removed soon. Please use the new NVCF Invocation - API endpoint to invoke a function. Invokes the specified function that - was successfully deployed. If the version is not specified, any active - function versions will handle the request. If the version is specified - in the URI, then the request is exclusively processed by the designated - version of the function. By default, this endpoint will block for 5 - seconds. If the request is not fulfilled before the timeout, it's - status is considered in-progress or pending and the response includes - HTTP status code 202 with an invocation request ID, indicating that the - client should commence polling for the result using the invocation - request ID. Access to this endpoint mandates inclusion of a bearer - token with 'invoke_function' scope in the HTTP Authorization header. - Additionally, this endpoint has the capability to provide updates on - the progress of the request, contingent upon the workload's provision - of such information. In-progress responses are returned in order. If no - in-progress response is received during polling you will receive the - most recent in-progress response. Only the first 256 unread in-progress - messages are kept. + - Asset Management + /v2/nvcf/pexec/functions/{function_id}: + post: + deprecated: true + description: 'Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it''s status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with ''invoke_function'' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload''s provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ' operationId: invokeFunction parameters: - - name: NVCF-INPUT-ASSET-REFERENCES - in: header + - in: header + name: NVCF-INPUT-ASSET-REFERENCES required: false schema: - type: array items: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string maxItems: 2147483647 minItems: 0 - - name: NVCF-POLL-SECONDS - in: header + type: array + nullable: true + - in: header + name: NVCF-POLL-SECONDS required: false schema: - type: integer format: int32 maximum: 300 minimum: 0 - - name: functionId - in: path + type: integer + nullable: true + - in: path + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - type: object + type: string + description: (opaque JSON object) required: true responses: '200': - description: Invocation is fulfilled - headers: - NVCF-REQID: - description: Invocation Request Id - style: simple - schema: - type: string - NVCF-PERCENT-COMPLETE: - description: Percentage complete - style: simple - schema: - type: string - NVCF-STATUS: - description: Invocation status - style: simple - schema: - type: string content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - '202': - description: Result is pending. Client should poll using the requestId. + short: + format: int32 + type: integer + type: object + description: Invocation is fulfilled headers: - NVCF-REQID: - description: Invocation Request Id - style: simple - schema: - type: string NVCF-PERCENT-COMPLETE: description: Percentage complete + schema: + type: string style: simple + NVCF-REQID: + description: Invocation Request Id schema: type: string + style: simple NVCF-STATUS: description: Invocation status - style: simple schema: type: string + style: simple + '202': content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - '302': - description: > - Client should use the URL specified in the 'Location' response - header to fetch - large result. + short: + format: int32 + type: integer + type: object + description: Result is pending. Client should poll using the requestId. headers: + NVCF-PERCENT-COMPLETE: + description: Percentage complete + schema: + type: string + style: simple NVCF-REQID: description: Invocation Request Id + schema: + type: string + style: simple + NVCF-STATUS: + description: Invocation status + schema: + type: string style: simple + '302': + description: | + Client should use the URL specified in the 'Location' response header to fetch + large result. + headers: + Location: + description: URL to get the result schema: type: string + style: simple NVCF-PERCENT-COMPLETE: description: Percentage complete - style: simple schema: type: string - NVCF-STATUS: - description: Invocation status style: simple + NVCF-REQID: + description: Invocation Request Id schema: type: string - Location: - description: URL to get the result style: simple + NVCF-STATUS: + description: Invocation status schema: type: string + style: simple '402': - description: >- - Cloud credits expired for public functions. Please contact NVIDIA - representatives. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean + short: + format: int32 + type: integer + type: object + description: Cloud credits expired for public functions. Please contact NVIDIA representatives. '403': - description: > - Either missing scope in the auth(JWT / ApiKey) token and/or missing - resource entry - in the ApiKey for the function. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean + short: + format: int32 + type: integer + type: object + description: | + Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry + in the ApiKey for the function. '429': - description: >- - Client is doing too many requests per second and should slow down - request rate. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - deprecated: true - /v2/nvcf/pexec/functions/{functionId}/versions/{versionId}: - post: + short: + format: int32 + type: integer + type: object + description: Client is doing too many requests per second and should slow down request rate. + summary: Call Function tags: - Function Invocation - summary: Call Function - description: >- - Deprecated and will be removed soon. Please use the new NVCF Invocation - API endpoint to invoke a function. Invokes the specified function that - was successfully deployed. If the version is not specified, any active - function versions will handle the request. If the version is specified - in the URI, then the request is exclusively processed by the designated - version of the function. By default, this endpoint will block for 5 - seconds. If the request is not fulfilled before the timeout, it's - status is considered in-progress or pending and the response includes - HTTP status code 202 with an invocation request ID, indicating that the - client should commence polling for the result using the invocation - request ID. Access to this endpoint mandates inclusion of a bearer - token with 'invoke_function' scope in the HTTP Authorization header. - Additionally, this endpoint has the capability to provide updates on - the progress of the request, contingent upon the workload's provision - of such information. In-progress responses are returned in order. If no - in-progress response is received during polling you will receive the - most recent in-progress response. Only the first 256 unread in-progress - messages are kept. + /v2/nvcf/pexec/functions/{function_id}/versions/{version_id}: + post: + deprecated: true + description: 'Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it''s status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with ''invoke_function'' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload''s provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ' operationId: invokeFunction_1 parameters: - - name: NVCF-INPUT-ASSET-REFERENCES - in: header + - in: header + name: NVCF-INPUT-ASSET-REFERENCES required: false schema: - type: array items: - type: string format: UTF-8 maxLength: 262144 minLength: 0 + type: string maxItems: 2147483647 minItems: 0 - - name: NVCF-POLL-SECONDS - in: header + type: array + nullable: true + - in: header + name: NVCF-POLL-SECONDS required: false schema: - type: integer format: int32 maximum: 300 minimum: 0 - - name: functionId - in: path + type: integer + nullable: true + - in: path + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: versionId + type: string + - description: Function version id in: path + name: version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string requestBody: content: application/json: schema: - type: object + type: string + description: (opaque JSON object) required: true responses: '200': - description: Invocation is fulfilled - headers: - NVCF-REQID: - description: Invocation Request Id - style: simple - schema: - type: string - NVCF-PERCENT-COMPLETE: - description: Percentage complete - style: simple - schema: - type: string - NVCF-STATUS: - description: Invocation status - style: simple - schema: - type: string content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - '202': - description: Result is pending. Client should poll using the requestId. + short: + format: int32 + type: integer + type: object + description: Invocation is fulfilled headers: - NVCF-REQID: - description: Invocation Request Id - style: simple - schema: - type: string NVCF-PERCENT-COMPLETE: description: Percentage complete + schema: + type: string style: simple + NVCF-REQID: + description: Invocation Request Id schema: type: string + style: simple NVCF-STATUS: description: Invocation status - style: simple schema: type: string + style: simple + '202': content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - '302': - description: > - Client should use the URL specified in the 'Location' response - header to fetch - large result. + short: + format: int32 + type: integer + type: object + description: Result is pending. Client should poll using the requestId. headers: + NVCF-PERCENT-COMPLETE: + description: Percentage complete + schema: + type: string + style: simple NVCF-REQID: description: Invocation Request Id + schema: + type: string + style: simple + NVCF-STATUS: + description: Invocation status + schema: + type: string style: simple + '302': + description: | + Client should use the URL specified in the 'Location' response header to fetch + large result. + headers: + Location: + description: URL to get the result schema: type: string + style: simple NVCF-PERCENT-COMPLETE: description: Percentage complete - style: simple schema: type: string - NVCF-STATUS: - description: Invocation status style: simple + NVCF-REQID: + description: Invocation Request Id schema: type: string - Location: - description: URL to get the result style: simple + NVCF-STATUS: + description: Invocation status schema: type: string + style: simple '402': - description: >- - Cloud credits expired for public functions. Please contact NVIDIA - representatives. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean + short: + format: int32 + type: integer + type: object + description: Cloud credits expired for public functions. Please contact NVIDIA representatives. '403': - description: > - Either missing scope in the auth(JWT / ApiKey) token and/or missing - resource entry - in the ApiKey for the function. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string - int: - type: integer - format: int32 - long: - type: integer - format: int64 - float: + direct: + type: boolean + double: + format: double type: number + float: format: float - double: type: number - format: double - direct: - type: boolean + int: + format: int32 + type: integer + long: + format: int64 + type: integer readOnly: type: boolean + short: + format: int32 + type: integer + type: object + description: | + Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry + in the ApiKey for the function. '429': - description: >- - Client is doing too many requests per second and should slow down - request rate. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - deprecated: true - /v2/nvcf/assets: - get: - tags: - - Asset Management - summary: List Assets - description: >- - List assets owned by the current NVIDIA Cloud Account. Requires a - bearer token with 'invoke_function' scope in the HTTP Authorization - header. - operationId: getAssets - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ListAssetsResponse' - deprecated: true - post: - tags: - - Asset Management - summary: Create Asset - description: >- - Creates a unique id representing an asset and a pre-signed URL to upload - the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. - Requires a bearer token with 'invoke_function' scope in the HTTP - Authorization header. - operationId: createAsset - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAssetRequest' - required: true - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAssetResponse' - deprecated: true - /v2/nvcf/pexec/status/{requestId}: - get: + short: + format: int32 + type: integer + type: object + description: Client is doing too many requests per second and should slow down request rate. + summary: Call Function tags: - Function Invocation - summary: Poll For Result Using Function Invocation Request - description: >- - Deprecated and will be removed soon. Please use the new NVCF Invocation - API endpoint to invoke a function and stream results without polling. - Retrieves the status of an in-progress or pending request using its - unique invocation request ID. If the result is available, it will be - included in the response, marking the request as fulfilled. Conversely, - if the result is not yet available, the request is deemed pending. - Access to this endpoint mandates inclusion of a bearer token with - 'invoke_function' scope in the HTTP Authorization header. In-progress - responses are returned in order. If no in-progress response is received - during polling you will receive the most recent in-progress response. - Only the first 256 unread in-progress messages are kept. + /v2/nvcf/pexec/status/{request_id}: + get: + deprecated: true + description: 'Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function and stream results without polling. Retrieves the status of an in-progress or pending request using its unique invocation request ID. If the result is available, it will be included in the response, marking the request as fulfilled. Conversely, if the result is not yet available, the request is deemed pending. Access to this endpoint mandates inclusion of a bearer token with ''invoke_function'' scope in the HTTP Authorization header. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. ' operationId: getFunctionInvocationResult parameters: - - name: requestId + - description: Invocation Request Id in: path - description: Invocation Request Id + name: request_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: '200': - description: Invocation is fulfilled - headers: - NVCF-REQID: - description: Invocation Request Id - style: simple - schema: - type: string - NVCF-PERCENT-COMPLETE: - description: Percentage complete - style: simple - schema: - type: string - NVCF-STATUS: - description: Invocation status - style: simple - schema: - type: string content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - '202': - description: Result is pending. Client should poll using the requestId. + short: + format: int32 + type: integer + type: object + description: Invocation is fulfilled headers: - NVCF-REQID: - description: Invocation Request Id - style: simple - schema: - type: string NVCF-PERCENT-COMPLETE: description: Percentage complete + schema: + type: string style: simple + NVCF-REQID: + description: Invocation Request Id schema: type: string + style: simple NVCF-STATUS: description: Invocation status - style: simple schema: type: string + style: simple + '202': content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - '302': - description: > - Client should use the URL specified in the 'Location' response - header to fetch - large result. + short: + format: int32 + type: integer + type: object + description: Result is pending. Client should poll using the requestId. headers: + NVCF-PERCENT-COMPLETE: + description: Percentage complete + schema: + type: string + style: simple NVCF-REQID: description: Invocation Request Id + schema: + type: string style: simple + NVCF-STATUS: + description: Invocation status + schema: + type: string + style: simple + '302': + description: | + Client should use the URL specified in the 'Location' response header to fetch + large result. + headers: + Location: + description: URL to get the result schema: type: string + style: simple NVCF-PERCENT-COMPLETE: description: Percentage complete - style: simple schema: type: string - NVCF-STATUS: - description: Invocation status style: simple + NVCF-REQID: + description: Invocation Request Id schema: type: string - Location: - description: URL to get the result style: simple + NVCF-STATUS: + description: Invocation status schema: type: string + style: simple '402': - description: >- - Cloud credits expired for public functions. Please contact NVIDIA - representatives. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean + short: + format: int32 + type: integer + type: object + description: Cloud credits expired for public functions. Please contact NVIDIA representatives. '403': - description: > - Either missing scope in the auth(JWT / ApiKey) token and/or missing - resource entry - in the ApiKey for the function. content: '*/*': schema: - type: object properties: - short: - type: integer - format: int32 char: type: string + direct: + type: boolean + double: + format: double + type: number + float: + format: float + type: number int: - type: integer format: int32 - long: type: integer + long: format: int64 - float: - type: number - format: float - double: - type: number - format: double - direct: - type: boolean + type: integer readOnly: type: boolean - deprecated: true - /v2/nvcf/assets/{assetId}: - get: + short: + format: int32 + type: integer + type: object + description: | + Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry + in the ApiKey for the function. + summary: Poll For Result Using Function Invocation Request tags: - - Asset Management - summary: Show Asset Details - description: >- - Returns details for the specified asset-id belonging to the current - NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' - scope in the HTTP Authorization header. - operationId: getAsset + - Function Invocation + /v2/nvcf/tokens/functions: + post: + description: 'Issues an assertion token from Notary Service for specified functionIds and/or functionVersionIds ' + operationId: issueMultiFunctionsInvocationToken + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MultiFunctionsInvocationTokenRequest' + required: true + responses: + '200': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: Invocation assertion token is issued + '403': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: | + Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry + in the ApiKey for the function. + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: Client is doing too many requests per second and should slow down request rate. + summary: Issue Function Invocation Token + tags: + - Function Invocation Assertion Token + parameters: [] + /v2/nvcf/tokens/functions/{function_id}: + post: + description: 'Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ' + operationId: issueInvocationToken_1 parameters: - - name: assetId - in: path - description: Asset id + - in: path + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InvocationTokenRequest' + required: true responses: '200': - description: OK content: - application/json: + '*/*': schema: - $ref: '#/components/schemas/AssetResponse' - deprecated: true - delete: + $ref: '#/components/schemas/InvocationTokenResponse' + description: Invocation assertion token is issued + '403': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: | + Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry + in the ApiKey for the function. + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: Client is doing too many requests per second and should slow down request rate. + summary: Issue Function Invocation Token tags: - - Asset Management - summary: Delete Asset - description: >- - Deletes asset belonging to the current NVIDIA Cloud Account. Requires a - bearer token with 'invoke_function' scope in the HTTP Authorization - header. - operationId: deleteAsset + - Function Invocation Assertion Token + /v2/nvcf/tokens/functions/{function_id}/versions/{function_version_id}: + post: + description: 'Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId ' + operationId: issueInvocationToken parameters: - - name: assetId - in: path - description: Id of the asset to be deleted + - in: path + name: function_id required: true schema: + format: uuid + maxLength: 36 + minLength: 36 type: string + - description: Function version id + in: path + name: function_version_id + required: true + schema: format: uuid maxLength: 36 minLength: 36 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InvocationTokenRequest' + required: true responses: - '204': - description: No Content - deprecated: true + '200': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: Invocation assertion token is issued + '403': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: | + Either missing scope in the auth(JWT / ApiKey) token and/or missing resource entry + in the ApiKey for the function. + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/InvocationTokenResponse' + description: Client is doing too many requests per second and should slow down request rate. + summary: Issue Function Invocation Token + tags: + - Function Invocation Assertion Token components: schemas: - MultiFunctionsInvocationTokenRequest: - type: object - description: Request body for issuing a function invocation token - properties: - functions: - type: array - description: Functions to invoke - items: - $ref: '#/components/schemas/BasicFunctionDto' - maxItems: 4 - minItems: 0 - clientId: - type: string - format: UTF-8 - description: >- - ClientId for client to pass in to track who will eventually use the - token - maxLength: 262144 - minLength: 1 - required: - - clientId - - functions - InvocationTokenResponse: - type: object - description: Function invocation token response - properties: - access_token: - type: string - format: UTF-8 - description: Token issued by Notary Service - maxLength: 262144 - minLength: 0 - expires_in: - type: integer - format: int32 - description: Token expiration time in seconds - maximum: 2147483647 - minimum: -2147483648 - InvocationTokenRequest: - type: object - description: Request body for issuing a function invocation token - properties: - clientId: - type: string - format: UTF-8 - description: >- - ClientId for client to pass in to track who will eventually use the - token - maxLength: 262144 - minLength: 1 - required: - - clientId ListAssetsResponse: - type: object description: Response body containing list of assets of the current nca id properties: assets: - type: array description: List of assets uploaded for the nca id items: $ref: '#/components/schemas/AssetDto' maxItems: 2147483647 minItems: 0 - CreateAssetRequest: + type: array + required: + - assets type: object - description: >- - Request payload to create an asset-id and the corresponding pre-signed - URL to upload an asset of specified content-type to AWS S3 bucket. + CreateAssetRequest: + description: Request payload to create an asset-id and the corresponding pre-signed URL to upload an asset of specified content-type to AWS S3 bucket. properties: contentType: - type: string - format: UTF-8 description: Content type of the asset such image/png, image/jpeg, etc. + format: UTF-8 maxLength: 262144 minLength: 0 - description: type: string - format: UTF-8 + description: description: Asset description + format: UTF-8 maxLength: 262144 minLength: 0 + type: string required: - contentType - description - CreateAssetResponse: type: object - description: >- - Response body containing asset-id and the corresponding pre-signed URL - to upload an asset of specified content-type to AWS S3 bucket. + CreateAssetResponse: + description: Response body containing asset-id and the corresponding pre-signed URL to upload an asset of specified content-type to AWS S3 bucket. properties: assetId: - type: string - format: uuid description: Unique id of the asset to be uploaded to AWS S3 bucket + format: uuid maxLength: 36 minLength: 36 - uploadUrl: type: string - format: url - description: Pre-signed upload URL to upload asset contentType: - type: string - format: UTF-8 description: Content type of the asset such image/png, image/jpeg, etc. + format: UTF-8 maxLength: 262144 - minLength: 0 - description: + minLength: 1 type: string - format: UTF-8 + description: description: Asset description to be used when uploading the asset + format: UTF-8 maxLength: 262144 - minLength: 0 - AssetResponse: + minLength: 1 + type: string + uploadUrl: + description: Pre-signed upload URL to upload asset + format: url + type: string + required: + - assetId + - contentType + - description + - uploadUrl type: object + AssetResponse: properties: asset: $ref: '#/components/schemas/AssetDto' required: - asset - BasicFunctionDto: type: object - description: Basic Data Transfer Object (DTO) representing a function + MultiFunctionsInvocationTokenRequest: + description: Request body for issuing a function invocation token properties: - functionId: + clientId: + description: ClientId for client to pass in to track who will eventually use the token + format: UTF-8 + maxLength: 262144 + minLength: 1 type: string - format: uuid - description: Unique function id - maxLength: 36 - minLength: 36 - functionVersionId: + functions: + description: Functions to invoke + items: + $ref: '#/components/schemas/BasicFunctionDto' + maxItems: 4 + minItems: 0 + type: array + required: + - clientId + - functions + type: object + InvocationTokenResponse: + description: Function invocation token response + properties: + access_token: + description: Token issued by Notary Service + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + expires_in: + description: Token expiration time in seconds + format: int32 + maximum: 2147483647 + minimum: -2147483648 + type: integer + type: object + InvocationTokenRequest: + description: Request body for issuing a function invocation token + properties: + clientId: + description: ClientId for client to pass in to track who will eventually use the token + format: UTF-8 + maxLength: 262144 + minLength: 1 type: string - format: uuid - description: Unique function version id - maxLength: 36 - minLength: 36 required: - - functionId - AssetDto: + - clientId type: object + AssetDto: description: Data Transfer Object(DTO) representing an asset properties: assetId: - type: string - format: uuid description: Asset id + format: uuid maxLength: 36 minLength: 36 - description: type: string - format: UTF-8 - description: Description specified when creating the asset - maxLength: 262144 - minLength: 0 contentType: - type: string - format: UTF-8 description: Content-type specified when creating the asset + format: UTF-8 maxLength: 262144 minLength: 0 - createdAt: type: string - format: date-time + nullable: true + createdAt: description: Timestamp specified when creating the asset + format: date-time maxLength: 30 minLength: 8 + type: string + nullable: true + description: + description: Description specified when creating the asset + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + type: object + BasicFunctionDto: + description: Basic Data Transfer Object (DTO) representing a function + properties: + functionId: + description: Unique function id + format: uuid + maxLength: 36 + minLength: 36 + type: string + functionVersionId: + description: Unique function version id + format: uuid + maxLength: 36 + minLength: 36 + type: string + nullable: true + required: + - functionId + type: object servers: - url: https://api.nvcf.nvidia.com - description: Generated server url diff --git a/provider-dev/source/nvcf_queues.yaml b/provider-dev/source/nvcf_queues.yaml index 3c50cd1..1f0f66c 100644 --- a/provider-dev/source/nvcf_queues.yaml +++ b/provider-dev/source/nvcf_queues.yaml @@ -1,174 +1,147 @@ openapi: 3.1.0 info: - title: nvcf_queues API - description: nvidia nvcf_queues API - version: 2.245.1 + title: NVIDIA Cloud Functions - Queues + description: NVCF request queue details per function and version, and queue position per request (served from api.nvcf.nvidia.com). + version: 2.256.0 paths: - /v2/nvcf/queues/{requestId}/position: + /v2/nvcf/queues/functions/{function_id}: get: - tags: - - Queue Details - summary: Queue Position - description: >- - Using the specified function invocation request id, returns the - estimated position of the corresponding message up to 1000 in the - queue. Requires a bearer token or an api-key with 'queue_details' scope - in the HTTP Authorization header. - operationId: getPositionInQueue + description: 'Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with ''queue_details'' scope in the HTTP Authorization header. ' + operationId: getQueuesDetails_1 parameters: - - name: requestId + - description: Function id in: path - description: Function invocation request id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/GetPositionInQueueResponse' - /v2/nvcf/queues/functions/{functionId}/versions/{versionId}: - get: + $ref: '#/components/schemas/GetQueuesResponse' + description: OK + summary: Queue Details tags: - Queue Details - summary: Queue Details - description: >- - Provides details of all the queues associated with the specified - function. If a function has multiple versions and they are all - deployed, then the response includes details of all the queues. If the - specified function is public, then Account Admin cannot perform this - operation. Requires a bearer token or an api-key with 'queue_details' - scope in the HTTP Authorization header. + /v2/nvcf/queues/functions/{function_id}/versions/{version_id}: + get: + description: 'Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with ''queue_details'' scope in the HTTP Authorization header. ' operationId: getQueuesDetails parameters: - - name: functionId + - description: Function id in: path - description: Function id + name: function_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 - - name: versionId + type: string + - description: Function version id in: path - description: Function version id + name: version_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/GetQueuesResponse' - /v2/nvcf/queues/functions/{functionId}: - get: + description: OK + summary: Queue Details tags: - Queue Details - summary: Queue Details - description: >- - Provides details of all the queues associated with the specified - function. If a function has multiple versions and they are all - deployed, then the response includes details of all the queues. If the - specified function is public, then Account Admin cannot perform this - operation. Requires a bearer token or an api-key with 'queue_details' - scope in the HTTP Authorization header. - operationId: getQueuesDetails_1 + /v2/nvcf/queues/{request_id}/position: + get: + description: 'Using the specified function invocation request id, returns the estimated position of the corresponding message up to 1000 in the queue. Requires a bearer token or an api-key with ''queue_details'' scope in the HTTP Authorization header. ' + operationId: getPositionInQueue parameters: - - name: functionId + - description: Function invocation request id in: path - description: Function id + name: request_id required: true schema: - type: string format: uuid maxLength: 36 minLength: 36 + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/GetQueuesResponse' + $ref: '#/components/schemas/GetPositionInQueueResponse' + description: OK + summary: Queue Position + tags: + - Queue Details components: schemas: - GetPositionInQueueResponse: - type: object - description: Request position in queue for invocation request - properties: - functionVersionId: - type: string - format: uuid - description: Function version id - maxLength: 36 - minLength: 36 - functionId: - type: string - format: uuid - description: Function id - maxLength: 36 - minLength: 36 - positionInQueue: - type: integer - format: int32 - description: Position of request in queue - maximum: 2147483647 - minimum: -2147483648 - required: - - functionId - - functionVersionId GetQueuesResponse: - type: object description: Request queue details of all the functions with same id in an account properties: functionId: - type: string - format: uuid description: Function id + format: uuid maxLength: 36 minLength: 36 + type: string queues: - type: array description: Details of all the queues associated with same named functions items: $ref: '#/components/schemas/QueueDto' maxItems: 2147483647 minItems: 0 + type: array required: - functionId - queues - QueueDto: type: object - description: >- - Data Transfer Object(DTO) representing a request queue for function - version + GetPositionInQueueResponse: + description: Request position in queue for invocation request properties: - functionVersionId: - type: string + functionId: + description: Function id format: uuid + maxLength: 36 + minLength: 36 + type: string + functionVersionId: description: Function version id + format: uuid maxLength: 36 minLength: 36 - functionName: type: string - format: UTF-8 + positionInQueue: + description: Position of request in queue + format: int32 + maximum: 2147483647 + minimum: -2147483648 + type: integer + required: + - functionId + - functionVersionId + type: object + QueueDto: + description: Data Transfer Object(DTO) representing a request queue for function version + properties: + functionName: description: Function name + format: UTF-8 maxLength: 262144 minLength: 0 - functionStatus: type: string - format: UTF-8 + functionStatus: description: Function status enum: - ACTIVE @@ -178,18 +151,26 @@ components: - DELETED - DEGRADED - DEGRADING + format: UTF-8 maxLength: 262144 minLength: 0 + type: string + functionVersionId: + description: Function version id + format: uuid + maxLength: 36 + minLength: 36 + type: string queueDepth: - type: integer - format: int32 description: Approximate number of messages in the request queue + format: int32 maximum: 2147483647 minimum: -2147483648 + type: integer required: - functionName - functionStatus - functionVersionId + type: object servers: - url: https://api.nvcf.nvidia.com - description: Generated server url diff --git a/provider-dev/source/orgs.yaml b/provider-dev/source/orgs.yaml index ae3091c..135f78e 100644 --- a/provider-dev/source/orgs.yaml +++ b/provider-dev/source/orgs.yaml @@ -1,1453 +1,1407 @@ openapi: 3.0.1 info: - title: orgs API - description: nvidia orgs API - version: v3.249.6 + title: NVIDIA NGC Organizations + description: 'NGC organizations, teams, users and team members, role grants, invitations and the current user (source: the NGC API definition harvested from the API explorer).' + version: v3.249.17 paths: - /v3/orgs/proto-org: - post: - tags: - - Orgs - summary: Create Organization from ProtoOrg - description: >- - Create a new organization based on the org info retrieved from the - ProtoOrg. - operationId: createOrganizationFromProtoOrg + /roles: + get: + description: List of roles in NGC and their scopes + operationId: getRoles parameters: - - name: ncid - in: cookie - required: false - schema: - type: string - default: '' - - name: VisitorID - in: cookie + - description: flag indicate if hidden roles should be included + in: query + name: show-hidden required: false schema: - type: string - default: '' - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OrgCreateRequestV3' - required: true + default: false + type: boolean responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/OrgResponse' + $ref: '#/components/schemas/UserRoleDefinitionsResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v3/orgs: - post: + description: Service Unavailable + summary: NGC Roles tags: - - Orgs - summary: Create Organization from Scratch - description: Create a new organization based on the org info provided in the request. - operationId: createOrganizationFromScratch + - Services + /starfleetIds/{starfleet_id}: + get: + description: Get User details in org by starfleet Id + operationId: getUserInOrg_1 parameters: - - name: ncid - in: cookie - required: false - schema: - type: string - default: '' - - name: VisitorID - in: cookie - required: false + - in: path + name: starfleet_id + required: true schema: type: string - default: '' - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OrgCreateRequestV3' - required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/OrgResponse' + $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/users/me/api-key: - post: + description: Service Unavailable + summary: Get User in org tags: - Users Management - summary: Generate API Key - description: Generate API Key - operationId: generateUserApiKey + /team/{team_name}/starfleetIds/{starfleet_id}: + get: + description: Get User details in team by starfleet Id + operationId: getUserInTeamByStarfleetId + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: starfleet_id + required: true + schema: + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserKeyResponse' + $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/users/me: - get: + description: Service Unavailable + summary: Get User in team tags: - Users Management - summary: Who am I? - description: What am I? - operationId: whoAmI + /team/{team_name}/users: + get: + description: Get list of users in team. (User Admin in team privileges required) + operationId: listUsersInTeam parameters: - - name: org-name + - in: path + name: team_name + required: true + schema: + type: string + - description: The page number of result in: query + name: page-number required: false schema: - type: string + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + - description: User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: '#/components/schemas/UserListResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - patch: + description: Service Unavailable + summary: List users in team tags: - Users Management - summary: Edit current user profile - description: Edit current user profile - operationId: editUserProfile + post: + description: Creates a User and add them to a team within the org. + operationId: createUserInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: query + name: send-email + required: false + schema: + default: true + type: boolean + - description: If the IDP ID is provided then it is used instead of the one configured for the organization + in: query + name: idp-id + required: false + schema: + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/UserUpdateRequest' + $ref: '#/components/schemas/UserCreateRequest' required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v3/orgs/proto-org/validate: - get: + description: Service Unavailable + summary: Creates a User in team tags: - - Orgs - summary: Validate org creation invite - description: Validate org creation from proto org - operationId: protoOrgInvitationValidate + - Users Management + /team/{team_name}/users/invitations: + get: + description: List invitations in a team. (Team User Admin privileges required) + operationId: listInvitationsForUserInTeam parameters: - - name: invitation_token + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result in: query - description: JWT that contains org owner email and proto org identifier + name: page-size + required: false + schema: + format: int32 + type: integer + - in: query + name: orderBy + required: false + schema: + enum: + - NAME_ASC + - NAME_DESC + type: string + - in: path + name: team_name required: true schema: type: string + - description: User Search Parameters + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/OrgInvitationResponse' + $ref: '#/components/schemas/UserInvitationListResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/orgs: - get: + description: Service Unavailable + summary: List user invitations in a team. tags: - - Orgs - summary: List Organizations - description: List all organizations of the user - operationId: listOrganizations_1 + - Users Management + /team/{team_name}/users/invitations/{id}: + delete: + description: Delete a specific invitation in an team. (Org Admin or Team User Admin privileges required) + operationId: deleteUserInvitationInTeam parameters: - - name: Filter using PEC ID - in: query - required: false - schema: - type: string - - name: Filter using org name - in: query - required: false - schema: - type: string - - name: Filter using org display name - in: query - required: false - schema: - type: string - - name: Filter using org owner name - in: query - required: false + - in: path + name: team_name + required: true schema: type: string - - name: Filter using org owner email - in: query - required: false + - in: path + name: id + required: true schema: type: string - - name: page-number - in: query - description: The page number of result - required: false - schema: - type: integer - format: int32 - - name: page-size - in: query - description: The page size of result - required: false - schema: - type: integer - format: int32 responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/OrgListResponse' + $ref: '#/components/schemas/Response' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /roles: - get: + description: Service Unavailable + summary: Delete a specific invitation in a team. tags: - - Services - summary: NGC Roles - description: List of roles in NGC and their scopes - operationId: getRoles + - Users Management + /team/{team_name}/users/invitations/{id}/resend-invitation-email: + get: + description: Resend email of a specific invitation in a team (Org or Team User Admin privileges required). + operationId: resendUserInvitationEmailInTeam parameters: - - name: show-hidden - in: query - description: flag indicate if hidden roles should be included - required: false + - in: path + name: team_name + required: true schema: - type: boolean - default: false + type: string + - in: path + name: id + required: true + schema: + type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserRoleDefinitionsResponse' + $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v3/orgs/{org_name}/users/nca-invitations: - post: + description: Service Unavailable + summary: Resend email of a specific invitation in a team. tags: - Users Management - summary: Invite User to NCA (org version) - description: Invites and creates a User in org - operationId: inviteUserToNcaInOrg + /team/{team_name}/users/{id}: + post: + description: Add a User to team + operationId: addUserToTeam parameters: - - name: org_name - in: path + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: id required: true schema: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UserNcaInvitationRequest' - required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: '#/components/schemas/Response' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/org/{org_name}/users: - get: + description: Service Unavailable + summary: Add a User to team tags: - Users Management - summary: List users In org - description: >- - Get list of users in organization. (User Admin in org privileges - required) - operationId: listUsersInOrg + /teams: + get: + description: List all Teams + operationId: listTeams parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: exclude-from-team + - description: The page number of result in: query - description: Name of team to exclude members from + name: page-number required: false schema: - type: string - - name: page-number - in: query - description: The page number of result - required: false - schema: - type: integer format: int32 - - name: page-size - in: query - description: The page size of result - required: false - schema: type: integer - format: int32 - - name: q + - description: The page size of result in: query - description: >- - User Search Parameters. Only 'filters' and 'orderBy' for 'name' and - 'email' are implemented + name: page-size required: false schema: - $ref: '#/components/schemas/SearchParams' + format: int32 + type: integer responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserListResponse' + $ref: '#/components/schemas/TeamListResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - post: + description: Service Unavailable + summary: List Teams tags: - - Users Management - summary: Creates a User in org - description: Creates a User - operationId: createUserInOrg - parameters: - - name: ncid - in: cookie - required: false - schema: - type: string - default: '' - - name: VisitorID - in: cookie - required: false - schema: - type: string - default: '' - - name: org_name - in: path - required: true - schema: - type: string - - name: send-email - in: query - required: false - schema: - type: boolean - default: true - - name: idp-id - in: query - description: >- - If the IDP ID is provided then it is used instead of the one - configured for the organization - required: false - schema: - type: string + - Teams + post: + description: Create team in org. (Org Admin Privileges Required) + operationId: createTeam + parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/UserCreateRequest' + $ref: '#/components/schemas/TeamCreateRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: '#/components/schemas/TeamCreateResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/org/{org_name}/teams: - get: + description: Service Unavailable + summary: Create Team tags: - Teams - summary: List Teams - description: List all Teams - operationId: listTeams + /teams/{team_name}: + get: + description: Get Team by name + operationId: getTeam parameters: - - name: org_name - in: path + - in: path + name: team_name required: true schema: type: string - - name: page-number - in: query - description: The page number of result - required: false - schema: - type: integer - format: int32 - - name: page-size - in: query - description: The page size of result - required: false - schema: - type: integer - format: int32 responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/TeamListResponse' + $ref: '#/components/schemas/TeamResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - post: + description: Service Unavailable + summary: Get Team tags: - Teams - summary: Create Team - description: Create team in org. (Org Admin Privileges Required) - operationId: createTeam + patch: + description: Edit a Team + operationId: editTeam parameters: - - name: org_name - in: path + - in: path + name: team_name required: true schema: type: string @@ -1455,2093 +1409,3360 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/TeamCreateRequest' + $ref: '#/components/schemas/TeamUpdateRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/TeamCreateResponse' + $ref: '#/components/schemas/TeamResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v3/orgs/{org_name}/users/{user_email-or-id}/add-role: - patch: + description: Service Unavailable + summary: Edit Team tags: - - Users Management - summary: Invite user or add role in org - description: Invite if user does not exist, otherwise add role in org - operationId: addRoleOrInviteUserToOrg + - Teams + delete: + description: Delete a Team + operationId: deleteTeam parameters: - - name: ncid - in: cookie - required: false - schema: - type: string - default: '' - - name: VisitorID - in: cookie - required: false - schema: - type: string - default: '' - - name: org_name - in: path - required: true - schema: - type: string - - name: user_email_or_id - in: path + - in: path + name: team_name required: true schema: type: string - - name: roles - in: query - required: true - schema: - type: array - items: - type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: '#/components/schemas/Response' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/orgs/{org_name}: - get: + description: Service Unavailable + summary: Delete Team tags: - - Orgs - summary: Get Organization - description: Get organization information - operationId: getOrganization + - Teams + /users: + get: + description: Get list of users in organization. (User Admin in org privileges required) + operationId: listUsersInOrg parameters: - - name: org_name - in: path - required: true + - description: Name of team to exclude members from + in: query + name: exclude-from-team + required: false schema: type: string - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/OrgResponse' - '302': - description: Found - '400': - description: Bad Request + - description: The page number of result + in: query + name: page-number + required: false + schema: + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + - description: User Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserListResponse' + description: OK + '302': + description: Found + '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - patch: + description: Service Unavailable + summary: List users In org tags: - - Orgs - summary: Update Organization - description: Update organization information - operationId: updateOrganization + - Users Management + post: + description: Creates a User + operationId: createUserInOrg parameters: - - name: org_name - in: path - required: true + - in: query + name: send-email + required: false + schema: + default: true + type: boolean + - description: If the IDP ID is provided then it is used instead of the one configured for the organization + in: query + name: idp-id + required: false schema: type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/OrgProfileUpdateRequest' + $ref: '#/components/schemas/UserCreateRequest' required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/OrgResponse' + $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/org/{org_name}/teams/{team_name}: - get: + description: Service Unavailable + summary: Creates a User in org tags: - - Teams - summary: Get Team - description: Get Team by name - operationId: getTeam + - Users Management + /users/invitations: + get: + description: List invitations in an org. (Org User Admin privileges required) + operationId: listInvitationsForUserInOrg parameters: - - name: org_name - in: path - required: true + - description: The page number of result + in: query + name: page-number + required: false schema: - type: string - - name: team_name - in: path - required: true + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false + schema: + format: int32 + type: integer + - in: query + name: orderBy + required: false schema: + enum: + - NAME_ASC + - NAME_DESC type: string + - description: User Search Parameters + in: query + name: q + required: false + schema: + $ref: '#/components/schemas/SearchParams' responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/TeamResponse' + $ref: '#/components/schemas/UserInvitationListResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - delete: + description: Service Unavailable + summary: List user invitations in an org. tags: - - Teams - summary: Delete Team - description: Delete a Team - operationId: deleteTeam + - Users Management + /users/invitations/{id}: + delete: + description: Delete a specific invitation in an org. (Org User Admin privileges required) + operationId: deleteUserInvitationInOrg parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: team_name - in: path + - in: path + name: id required: true schema: type: string responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/Response' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - patch: + description: Service Unavailable + summary: Delete a specific invitation in an org. tags: - - Teams - summary: Edit Team - description: Edit a Team - operationId: editTeam + - Users Management + /users/invitations/{id}/resend-invitation-email: + get: + description: Resend email of a specific invitation in an org (Org User Admin privileges required). + operationId: resendUserInvitationEmailInOrg parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: team_name - in: path + - in: path + name: id required: true schema: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TeamUpdateRequest' - required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/TeamResponse' + $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v3/orgs/{org_name}/users/{user_email-or-id}: - get: + description: Service Unavailable + summary: Resend email of a specific invitation in an org. tags: - Users Management - summary: Get user in an org by email or id. - description: Get info and role/invitation in an org by email or id - operationId: listUserRolesInOrg + /v2/orgs: + get: + description: List all organizations of the user + operationId: listOrganizations_1 parameters: - - name: org_name - in: path - required: true + - description: The page number of result + in: query + name: page-number + required: false schema: - type: string - - name: user_email_or_id - in: path - required: true + format: int32 + type: integer + - description: The page size of result + in: query + name: page-size + required: false schema: - type: string + format: int32 + type: integer responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: '#/components/schemas/OrgListResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/org/{org_name}/users/invitations/{id}/resend-invitation-email: - get: + description: Service Unavailable + summary: List Organizations tags: - - Users Management - summary: Resend email of a specific invitation in an org. - description: >- - Resend email of a specific invitation in an org (Org User Admin - privileges required). - operationId: resendUserInvitationEmailInOrg + - Orgs + /v2/orgs/{org_name}: + get: + description: Get organization information + operationId: getOrganization parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: invitation ID - in: path + - in: path + name: org_name required: true schema: type: string responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: '#/components/schemas/OrgResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/org/{org_name}/users/invitations: - get: + description: Service Unavailable + summary: Get Organization tags: - - Users Management - summary: List user invitations in an org. - description: List invitations in an org. (Org User Admin privileges required) - operationId: listInvitationsForUserInOrg + - Orgs + patch: + description: Update organization information + operationId: updateOrganization parameters: - - name: org_name - in: path + - in: path + name: org_name required: true schema: type: string - - name: page-number - in: query - description: The page number of result - required: false - schema: - type: integer - format: int32 - - name: page-size - in: query - description: The page size of result - required: false - schema: - type: integer - format: int32 - - name: orderBy - in: query - required: false - schema: - type: string - enum: - - NAME_ASC - - NAME_DESC - - name: q - in: query - description: User Search Parameters - required: false - schema: - $ref: '#/components/schemas/SearchParams' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgProfileUpdateRequest' + required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/UserInvitationListResponse' + $ref: '#/components/schemas/OrgResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/org/{org_name}/starfleetIds/{starfleet_id}: - get: + description: Service Unavailable + summary: Update Organization tags: - - Users Management - summary: Get User in org - description: Get User details in org by starfleet Id - operationId: getUserInOrg_1 + - Orgs + /v2/users/me: + get: + description: What am I? + operationId: whoAmI parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: starfleet_id - in: path - required: true + - in: query + name: org-name + required: false schema: type: string responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v3/orgs/{org_name}/users/{user_email-or-id}/remove-role: - delete: + description: Service Unavailable + summary: Who am I? tags: - Users Management - summary: Remove role or invitation in org - description: Remove role in org if user exists, otherwise remove invitation - operationId: removeRoleOrInvitationInOrg - parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: user_email_or_id - in: path - required: true - schema: - type: string - - name: roles - in: query - required: false - schema: - type: array - items: - type: string + patch: + description: Edit current user profile + operationId: editUserProfile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserUpdateRequest' + required: true responses: '200': - description: OK content: application/json: schema: $ref: '#/components/schemas/UserResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v3/orgs/{org_name}/users/{id}: - delete: + description: Service Unavailable + summary: Edit current user profile tags: - Users Management - summary: Remove User from org - description: Remove User from org. - operationId: removeUserFromOrg - parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: user id or b64encoded email - in: path - required: true - schema: - type: string - - name: anonymize - in: query - description: If anonymize is true, then org owner permission is required. - required: false - schema: - type: boolean - default: false + parameters: [] + /v2/users/me/api-key: + post: + description: Generate API Key + operationId: generateUserApiKey responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/UserKeyResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': - description: Service Unavailable content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' - /v2/org/{org_name}/users/invitations/{id}: - delete: + description: Service Unavailable + summary: Generate API Key tags: - Users Management - summary: Delete a specific invitation in an org. - description: >- - Delete a specific invitation in an org. (Org User Admin privileges - required) - operationId: deleteUserInvitationInOrg - parameters: - - name: org_name - in: path - required: true - schema: - type: string - - name: invitation ID - in: path - required: true - schema: - type: string + parameters: [] + /v3/orgs: + post: + description: Create a new organization based on the org info provided in the request. + operationId: createOrganizationFromScratch + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgCreateRequestV3' + required: true responses: '200': - description: OK content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/OrgResponse' + description: OK '302': description: Found '400': - description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Request '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized '402': - description: Payment Required content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Payment Required '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Forbidden '404': - description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Found '405': - description: Method Not Allowed content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed '409': - description: Object Exists content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Object Exists '415': - description: Unsupported Media Type content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type '422': - description: Unprocessable Entity content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity '429': - description: Too Many Requests content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests '451': description: Unavailable For Legal Reasons '500': - description: Internal Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + description: Internal Error '501': - description: Not Implemented content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented '502': - description: Bad Gateway content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' description: Service Unavailable + summary: Create Organization from Scratch + tags: + - Orgs + /v3/orgs/proto-org: + post: + description: Create a new organization based on the org info retrieved from the ProtoOrg. + operationId: createOrganizationFromProtoOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrgCreateRequestV3' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': content: '*/*': schema: $ref: '#/components/schemas/ErrorResponse' -components: - schemas: - UserNcaInvitationRequest: - type: object - properties: - message: - type: string - description: Is a message to the new user - inviteAs: - type: string - description: Nca allow users to be invited as Admin and as Member - enum: - - ADMIN - - MEMBER - email: - maxLength: 128 - minLength: 7 - type: string - description: Is the user email - invitationExpirationIn: - type: integer - description: Is the numbers of days the invitation will expire - format: int32 - description: NCA User invitation request - UserResponse: - type: object - properties: - activationToken: - type: string - description: token needed to activate the user to enable login and other features - userRoles: - type: array - description: DEPRECATED - Please use roles inside user - items: - $ref: '#/components/schemas/UserRole' - requestStatus: - $ref: '#/components/schemas/RequestStatus' - ncaRole: - type: string - description: NCA role - enum: - - UNKNOWN - - ADMINISTRATOR - - MEMBER - - OWNER - - PENDING - user: - $ref: '#/components/schemas/User' - description: ' about one user' - ErrorResponse: - type: object - properties: - requestStatus: - $ref: '#/components/schemas/RequestStatus' - OrgCreateRequestV3: - type: object - properties: - salesforceAccountIndustry: - type: string - description: Company or organization industry - pecName: - type: string - description: product end customer name for enterprise(Fleet Command) product - orgOwner: - $ref: '#/components/schemas/OrgOwnerV3' - displayName: - maxLength: 255 - minLength: 1 - type: string - description: Name of the organization that will be shown to users. - name: - maxLength: 64 - minLength: 2 - type: string - description: Organization name - sendEmail: - type: boolean - description: Send email to org owner or not. Default is true - country: - type: string - description: user country - description: - maxLength: 128 - type: string - description: optional description of the organization - initiator: - type: string - description: Identify the initiator of the org request - productEnablements: - type: array - items: - $ref: '#/components/schemas/ProductEnablement' - ncaNumber: - type: string - description: NVIDIA Cloud Account Number - pecSfdcId: - type: string - description: >- - product end customer salesforce.com Id (external customer Id) for - enterprise(Fleet Command) product - ncaId: - type: string - description: NVIDIA Cloud Account Identifier - isInternal: - type: boolean - description: Is NVIDIA internal org or not - protoOrgId: - type: string - description: Proto org identifier - type: - type: string - enum: - - UNKNOWN - - CLOUD - - ENTERPRISE - - INDIVIDUAL - productSubscriptions: - type: array - description: This should be deprecated, use productEnablements instead + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Create Organization from ProtoOrg + tags: + - Orgs + /v3/orgs/proto-org/validate: + get: + description: Validate org creation from proto org + operationId: protoOrgInvitationValidate + parameters: + - description: JWT that contains org owner email and proto org identifier + in: query + name: invitation_token + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OrgInvitationResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Validate org creation invite + tags: + - Orgs + /teams/{team_name}/users/nca-invitations: + post: + description: Invites and creates a User in team + operationId: inviteUserToNcaInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserNcaInvitationRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite User to NCA (team version) + tags: + - Users Management + /teams/{team_name}/users/{id}: + delete: + description: Remove User from team. + operationId: removeUserFromTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: id + required: true + schema: + type: string + - description: If anonymize is true, then org owner permission is required. + in: query + name: anonymize + required: false + schema: + default: false + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove User from team + tags: + - Users Management + /teams/{team_name}/users/{user_email_or_id}: + get: + description: Get info and role/invitation in a team by email or id + operationId: listUserRolesInOrgTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: user_email_or_id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Get user in a team by email or id. + tags: + - Users Management + /teams/{team_name}/users/{user_email_or_id}/add-role: + patch: + description: Invite if user does not exist, otherwise add role in team + operationId: addRoleOrInviteUserToTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: true + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite user or add role in team + tags: + - Users Management + /teams/{team_name}/users/{user_email_or_id}/remove-role: + delete: + description: Remove role in team if user exists, otherwise remove invitation + operationId: removeRoleOrInvitationInTeam + parameters: + - in: path + name: team_name + required: true + schema: + type: string + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: false + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove role or invitation in team + tags: + - Users Management + /users/nca-invitations: + post: + description: Invites and creates a User in org + operationId: inviteUserToNcaInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserNcaInvitationRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite User to NCA (org version) + tags: + - Users Management + /users/{id}: + delete: + description: Remove User from org. + operationId: removeUserFromOrg + parameters: + - in: path + name: id + required: true + schema: + type: string + - description: If anonymize is true, then org owner permission is required. + in: query + name: anonymize + required: false + schema: + default: false + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove User from org + tags: + - Users Management + /users/{user_email_or_id}: + get: + description: Get info and role/invitation in an org by email or id + operationId: listUserRolesInOrg + parameters: + - in: path + name: user_email_or_id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Get user in an org by email or id. + tags: + - Users Management + /users/{user_email_or_id}/add-role: + patch: + description: Invite if user does not exist, otherwise add role in org + operationId: addRoleOrInviteUserToOrg + parameters: + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: true + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Invite user or add role in org + tags: + - Users Management + /users/{user_email_or_id}/remove-role: + delete: + description: Remove role in org if user exists, otherwise remove invitation + operationId: removeRoleOrInvitationInOrg + parameters: + - in: path + name: user_email_or_id + required: true + schema: + type: string + - in: query + name: roles + required: false + schema: + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: OK + '302': + description: Found + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unauthorized + '402': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Payment Required + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Found + '405': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Method Not Allowed + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Object Exists + '415': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unsupported Media Type + '422': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unprocessable Entity + '429': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Too Many Requests + '451': + description: Unavailable For Legal Reasons + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Internal Error + '501': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Not Implemented + '502': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Bad Gateway + '503': + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Service Unavailable + summary: Remove role or invitation in org + tags: + - Users Management +components: + schemas: + UserRoleDefinitionsResponse: + description: Response containing all the roles defined in NGC and their allowed actions + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + roles: + description: List of roles items: - $ref: '#/components/schemas/ProductSubscription' - description: Request to create new Organization in v3 flow - OrgResponse: + $ref: '#/components/schemas/UserRoleDefinition' + type: array type: object + ErrorResponse: properties: - organizations: - $ref: '#/components/schemas/Organization' requestStatus: $ref: '#/components/schemas/RequestStatus' - description: info about an organizations - UserKeyResponse: - required: - - key type: object + UserResponse: + description: ' about one user' properties: - cloudNfsKey: + activationToken: + description: token needed to activate the user to enable login and other features type: string - cloudNfsKeyPwd: + ncaRole: + description: NCA role + enum: + - UNKNOWN + - ADMINISTRATOR + - MEMBER + - OWNER + - PENDING type: string requestStatus: $ref: '#/components/schemas/RequestStatus' - key: - maxLength: 255 - type: string - cloudNfsUserName: - type: string - description: response to a request to access key such as docker token - SearchParams: + user: + $ref: '#/components/schemas/User' + userRoles: + description: DEPRECATED - Please use roles inside user + items: + $ref: '#/components/schemas/UserRole' + type: array type: object + SearchParams: properties: - orderBy: - type: array + fields: items: - $ref: '#/components/schemas/SearchParamOrderBy' - queryFields: + type: string type: array + filters: items: - type: string - scoredSize: - type: integer - format: int64 - pageSize: - type: integer - format: int64 - fields: + $ref: '#/components/schemas/SearchParamFilter' type: array + groupBy: + type: string + orderBy: items: - type: string + $ref: '#/components/schemas/SearchParamOrderBy' + type: array page: + format: int64 type: integer + pageSize: format: int64 - filters: - type: array - items: - $ref: '#/components/schemas/SearchParamFilter' + type: integer query: type: string - groupBy: - type: string - UserListResponse: + queryFields: + items: + type: string + type: array + scoredSize: + format: int64 + type: integer type: object + UserListResponse: + description: Response for List User reponse properties: paginationInfo: $ref: '#/components/schemas/PaginationInfo' requestStatus: $ref: '#/components/schemas/RequestStatus' users: - type: array description: information about the user items: $ref: '#/components/schemas/User' - description: Response for List User reponse - UserCreateRequest: - required: - - email + type: array type: object + UserCreateRequest: + description: object used request user creation in an existing org properties: - roleType: + email: + description: Email address of the user. This should be unique. + maxLength: 128 + minLength: 6 + type: string + emailOptIn: + description: indicates if user has opt in to nvidia emails + type: boolean + eulaAccepted: + description: indicates if user has accepted EULA + type: boolean + name: + description: user name + maxLength: 64 + minLength: 1 type: string + roleType: description: DEPRECATED - use roleTypes which allows multiple roles + type: string roleTypes: - type: array description: feature roles to give to the user items: - type: string description: feature roles to give to the user - name: - maxLength: 64 - minLength: 1 + type: string + type: array + salesforceContactJobRole: + description: user job role type: string - description: user name - eulaAccepted: - type: boolean - description: indicates if user has accepted EULA - emailOptIn: - type: boolean - description: indicates if user has opt in to nvidia emails userMetadata: $ref: '#/components/schemas/UserMetadata' - salesforceContactJobRole: + required: + - email + type: object + UserInvitationListResponse: + description: Response for a list of user invitations. + properties: + invitations: + description: List of invitations. + items: + $ref: '#/components/schemas/UserInvitation' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + Response: + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + type: object + TeamListResponse: + description: listing of all teams + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + teams: + items: + $ref: '#/components/schemas/Team' + type: array + type: object + TeamCreateRequest: + description: Request to create new Team + properties: + description: + description: description of the team + maxLength: 255 type: string - description: user job role - email: - maxLength: 128 - minLength: 6 + name: + description: team name + maxLength: 19 + minLength: 2 type: string - description: Email address of the user. This should be unique. - description: object used request user creation in an existing org - TeamListResponse: + required: + - name + type: object + TeamCreateResponse: + description: response to an team creation request, includes unique team id + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + team: + $ref: '#/components/schemas/Team' + type: object + TeamResponse: + description: details about one team + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + team: + $ref: '#/components/schemas/Team' + type: object + TeamUpdateRequest: + description: object used to update information about existing team + properties: + description: + description: description of the team + maxLength: 255 + type: string + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' type: object + OrgListResponse: + description: List of organizations. properties: + organizations: + items: + $ref: '#/components/schemas/Organization' + type: array paginationInfo: $ref: '#/components/schemas/PaginationInfo' requestStatus: $ref: '#/components/schemas/RequestStatus' - teams: - type: array - items: - $ref: '#/components/schemas/Team' - description: listing of all teams - TeamCreateRequest: - required: - - name - type: object - properties: - name: - maxLength: 19 - minLength: 2 - type: string - description: team name - description: - maxLength: 255 - type: string - description: description of the team - description: Request to create new Team - TeamCreateResponse: type: object + OrgResponse: + description: info about an organizations properties: + organizations: + $ref: '#/components/schemas/Organization' requestStatus: $ref: '#/components/schemas/RequestStatus' - team: - $ref: '#/components/schemas/Team' - description: response to an team creation request, includes unique team id - UserUpdateRequest: type: object + OrgProfileUpdateRequest: + description: Object used to update Org profile information properties: - hasSignedBaseCommandManagerEULA: - type: boolean - description: >- - indicates if user has accepted Base Command Manager End User License - Agreement. - hasSignedContainerPublishingEULA: - type: boolean - description: indicates if user has accepted container publishing eula - name: - maxLength: 64 + description: + description: optional description of the organization + maxLength: 128 + type: string + displayName: + description: Name of the organization that will be shown to users + maxLength: 255 minLength: 1 type: string - description: user name - hasSignedLlmEULA: - type: boolean - description: indicates if user has accepted LLM End User License Agreement. - hasSignedPrivacyPolicy: - type: boolean - description: indicates if the user has signed the Privacy Policy - hasSignedNvidiaEULA: + type: object + UserUpdateRequest: + description: object used to request user update + properties: + hasEmailOptIn: + description: indicates if user has opt in to nvidia emails type: boolean - description: indicates if user has accepted NVIDIA EULA - hasSignedCuOptEULA: + hasSignedAODTEULA: + description: indicates if user has accepted AODT End User License Agreement. type: boolean - description: indicates if user has accepted CuOpt End User License Agreement. - hasSignedEarth2EULA: + hasSignedAiFoundryPartnershipsEULA: + description: indicates if user has accepted AI Foundry Partnerships End User License Agreement. type: boolean - description: indicates if user has accepted Earth-2 End User License Agreement. hasSignedBaseCommandEULA: - type: boolean description: indicates if user has accepted Base Command EULA - hasSignedOmniverseEULA: type: boolean - description: indicates if user has accepted Omniverse End User License Agreement. - hasSignedNVAIEEULA: + hasSignedBaseCommandManagerEULA: + description: indicates if user has accepted Base Command Manager End User License Agreement. type: boolean - description: >- - indicates if user has accepted Fleet Command End User License - Agreement. - hasSignedAODTEULA: + hasSignedBioNeMoEULA: + description: indicates if user has accepted BioNeMo End User License Agreement. type: boolean - description: indicates if user has accepted AODT End User License Agreement. - hasEmailOptIn: + hasSignedContainerPublishingEULA: + description: indicates if user has accepted container publishing eula type: boolean - description: indicates if user has opt in to nvidia emails - hasSignedThirdPartyRegistryShareEULA: + hasSignedCuOptEULA: + description: indicates if user has accepted CuOpt End User License Agreement. type: boolean - description: >- - indicates if user has consented to share their registration info - with other parties - userMetadata: - $ref: '#/components/schemas/UserMetadata' - hasSignedEgxEULA: + hasSignedEULA: + description: indicates if user has accepted NGC EULA + type: boolean + hasSignedEarth2EULA: + description: indicates if user has accepted Earth-2 End User License Agreement. type: boolean + hasSignedEgxEULA: description: indicates if user has accepted EGX EULA + type: boolean hasSignedFleetCommandEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. + type: boolean + hasSignedLlmEULA: + description: indicates if user has accepted LLM End User License Agreement. + type: boolean + hasSignedNVAIEEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. type: boolean - description: >- - indicates if user has accepted Fleet Command End User License - Agreement. hasSignedNVQCEULA: + description: indicates if user has accepted Nvidia Quantum Cloud End User License Agreement. type: boolean - description: >- - indicates if user has accepted Nvidia Quantum Cloud End User License - Agreement. - hasSignedEULA: + hasSignedNvidiaEULA: + description: indicates if user has accepted NVIDIA EULA type: boolean - description: indicates if user has accepted NGC EULA - hasSignedBioNeMoEULA: + hasSignedOmniverseEULA: + description: indicates if user has accepted Omniverse End User License Agreement. type: boolean - description: indicates if user has accepted BioNeMo End User License Agreement. - hasSignedAiFoundryPartnershipsEULA: + hasSignedPrivacyPolicy: + description: indicates if the user has signed the Privacy Policy type: boolean - description: >- - indicates if user has accepted AI Foundry Partnerships End User - License Agreement. - description: object used to request user update - OrgProfileUpdateRequest: - type: object - properties: - displayName: - maxLength: 255 + hasSignedThirdPartyRegistryShareEULA: + description: indicates if user has consented to share their registration info with other parties + type: boolean + name: + description: user name + maxLength: 64 minLength: 1 type: string - description: Name of the organization that will be shown to users - description: - maxLength: 128 - type: string - description: optional description of the organization - description: Object used to update Org profile information - TeamResponse: - type: object - properties: - requestStatus: - $ref: '#/components/schemas/RequestStatus' - team: - $ref: '#/components/schemas/Team' - description: details about one team - Response: + userMetadata: + $ref: '#/components/schemas/UserMetadata' type: object + UserKeyResponse: + description: response to a request to access key such as docker token properties: + cloudNfsKey: + type: string + cloudNfsKeyPwd: + type: string + cloudNfsUserName: + type: string + key: + maxLength: 255 + type: string requestStatus: $ref: '#/components/schemas/RequestStatus' - TeamUpdateRequest: + required: + - key type: object + OrgCreateRequestV3: + description: Request to create new Organization in v3 flow properties: - repoScanSettings: - $ref: '#/components/schemas/RepoScanSettings' + country: + description: user country + type: string description: + description: optional description of the organization + maxLength: 128 + type: string + displayName: + description: Name of the organization that will be shown to users. maxLength: 255 + minLength: 1 type: string - description: description of the team - infinityManagerSettings: - $ref: '#/components/schemas/InfinityManagerSettings' - description: object used to update information about existing team - OrgInvitationResponse: - type: object - properties: - orgInvitation: - $ref: '#/components/schemas/OrgInvitation' - requestStatus: - $ref: '#/components/schemas/RequestStatus' - description: Invitation Validation Response. - OrgListResponse: - type: object - properties: - organizations: - type: array + initiator: + description: Identify the initiator of the org request + type: string + isInternal: + description: Is NVIDIA internal org or not + type: boolean + name: + description: Organization name + maxLength: 64 + minLength: 2 + type: string + ncaId: + description: NVIDIA Cloud Account Identifier + type: string + ncaNumber: + description: NVIDIA Cloud Account Number + type: string + orgOwner: + $ref: '#/components/schemas/OrgOwnerV3' + pecName: + description: product end customer name for enterprise(Fleet Command) product + type: string + pecSfdcId: + description: product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product + type: string + productEnablements: items: - $ref: '#/components/schemas/Organization' - paginationInfo: - $ref: '#/components/schemas/PaginationInfo' - requestStatus: - $ref: '#/components/schemas/RequestStatus' - description: List of organizations. - UserInvitationListResponse: - type: object - properties: - paginationInfo: - $ref: '#/components/schemas/PaginationInfo' - requestStatus: - $ref: '#/components/schemas/RequestStatus' - invitations: + $ref: '#/components/schemas/ProductEnablement' type: array - description: List of invitations. + productSubscriptions: + description: This should be deprecated, use productEnablements instead items: - $ref: '#/components/schemas/UserInvitation' - description: Response for a list of user invitations. - UserRoleDefinitionsResponse: + $ref: '#/components/schemas/ProductSubscription' + type: array + protoOrgId: + description: Proto org identifier + type: string + salesforceAccountIndustry: + description: Company or organization industry + type: string + sendEmail: + description: Send email to org owner or not. Default is true + type: boolean + type: + enum: + - UNKNOWN + - CLOUD + - ENTERPRISE + - INDIVIDUAL + type: string type: object + OrgInvitationResponse: + description: Invitation Validation Response. properties: + orgInvitation: + $ref: '#/components/schemas/OrgInvitation' requestStatus: $ref: '#/components/schemas/RequestStatus' - roles: - type: array - description: List of roles - items: - $ref: '#/components/schemas/UserRoleDefinition' - description: >- - Response containing all the roles defined in NGC and their allowed - actions - UserRole: type: object + UserNcaInvitationRequest: + description: NCA User invitation request properties: - roleTypes: - type: array - description: DEPRECATED - List of role types that the user have - items: - type: string - description: DEPRECATED - List of role types that the user have - targetSystemUserIdentifier: - $ref: '#/components/schemas/TargetSystemUserIdentifier' - orgRoles: - type: array - description: List of org role types that the user have - items: - type: string - description: List of org role types that the user have - team: - $ref: '#/components/schemas/Team' - org: - $ref: '#/components/schemas/Organization' - teamRoles: - type: array - description: List of team role types that the user have - items: - type: string - description: List of team role types that the user have - description: List of roles that the user have - RequestStatus: + email: + description: Is the user email + maxLength: 128 + minLength: 7 + type: string + invitationExpirationIn: + description: Is the numbers of days the invitation will expire + format: int32 + type: integer + inviteAs: + description: Nca allow users to be invited as Admin and as Member + enum: + - ADMIN + - MEMBER + type: string + message: + description: Is a message to the new user + type: string type: object + RequestStatus: properties: + requestId: + type: string serverId: type: string statusCode: - type: string description: Describes response status reported by the server. enum: - UNKNOWN @@ -3567,716 +4788,695 @@ components: - UNAVAILABLE_FOR_LEGAL_REASONS - BAD_GATEWAY - PRECONDITION_FAILED - statusDescription: type: string - requestId: + statusDescription: type: string - User: type: object + UserRoleDefinition: + description: List of roles properties: - hasSignedContainerPublishingEULA: - type: boolean - description: indicates if user has accepted container publishing eula - hasSignedLlmEULA: - type: boolean - description: indicates if user has accepted LLM End User License Agreement. - hasSignedBaseCommandEULA: - type: boolean - description: >- - indicates if user has accepted Base Command End User License - Agreement. - storageQuota: - type: array - description: Storage quota for this user. - items: - $ref: '#/components/schemas/UserStorageQuota' - lastLoginDate: - type: string - description: Last time the user logged in - hasSignedEgxEULA: - type: boolean - description: >- - [Deprecated] indicates if user has accepted EGX End User License - Agreement. - hasBetaAccess: - type: boolean - description: Determines if the user has beta access - id: - type: integer - description: unique Id of this user. - format: int64 - isDeleted: - type: boolean - description: Indicates if user was deleted from the system. - hasSignedAiFoundryPartnershipsEULA: - type: boolean - description: indicates if user has accepted AI Foundry Partnerships eula - jobPositionTitle: - type: string - description: Title of user's job position. - verified: - type: boolean - description: Is user's email or phone number is verified - hasSignedEarth2EULA: - type: boolean - description: indicates if user has accepted Earth-2 eula - hasSignedNvidiaEULA: - type: boolean - description: >- - Determines if the user has signed the NVIDIA End User License - Agreement. - updatedDate: - type: string - description: Updated date for this user - firstLoginDate: - type: string - description: Last time the user logged in - email: - maxLength: 128 - minLength: 7 - type: string - description: Email address of the user. This should be unique. - hasSignedBioNeMoEULA: - type: boolean - description: indicates if user has accepted BioNeMo End User License Agreement. - hasSignedBaseCommandManagerEULA: - type: boolean - description: >- - indicates if user has accepted Base Command Manager End User License - Agreement. - hasSignedPrivacyPolicy: - type: boolean - description: Determines if the user has signed the Privacy Policy. - hasSignedEULA: - type: boolean - description: >- - Determines if the user has signed the NGC End User License - Agreement. - isSAML: - type: boolean - description: Determines if the user is a SAML account or not. - hasSignedAODTEULA: - type: boolean - description: indicates if user has accepted AODT End User License Agreement. - createdDate: - type: string - description: Created date for this user - starfleetId: - type: string - description: unique starfleet id of this user. - hasSignedNVQCEULA: - type: boolean - description: >- - indicates if user has accepted Nvidia Quantum Cloud End User License - Agreement. - isActive: - type: boolean - description: Determines if the user is active or not. - name: - maxLength: 64 - minLength: 1 - type: string - description: user name - roles: - type: array - description: List of roles that the user have + allowedActions: + description: List of actions that this role allows items: - $ref: '#/components/schemas/UserRole' - userMetadata: - $ref: '#/components/schemas/UserMetadata' - hasSubscribedToEmail: - type: boolean - description: Determines if the user has opted in email subscription. - hasSignedCuOptEULA: - type: boolean - description: indicates if user has accepted CuOpt eula - clientId: - type: string - description: unique auth client id of this user. - hasSignedOmniverseEULA: - type: boolean - description: indicates if user has accepted Omniverse End User License Agreement. - idpType: - type: string - description: Type of IDP, Identity Provider. Used for login. - enum: - - NVIDIA - - ENTERPRISE - hasProfile: - type: boolean - description: indicate if user profile has been completed. - hasSignedFleetCommandEULA: - type: boolean - description: >- - indicates if user has accepted Fleet Command End User License - Agreement. - hasSignedNVAIEEULA: - type: boolean - description: >- - indicates if user has accepted Fleet Command End User License - Agreement. - hasSignedThirdPartyRegistryShareEULA: - type: boolean - description: >- - indicates if user has consented to share their registration info - with other parties - description: information about the user - OrgOwnerV3: - required: - - email - type: object - properties: - starfleetId: - type: string - description: Starfleet ID of the org owner. - fullName: - maxLength: 64 - minLength: 1 - type: string - description: Org owner name. - idpId: - type: string - description: Identity Provider ID of the org owner. - email: - maxLength: 128 - type: string - description: Email address of the org owner. - description: Org owner. - ProductEnablement: - required: - - productName - - type - type: object - properties: - type: - type: string - description: Product Enablement Types - enum: - - NGC_ADMIN_EVAL - - NGC_ADMIN_NFR - - NGC_ADMIN_COMMERCIAL - - EMS_EVAL - - EMS_NFR - - EMS_COMMERCIAL - - NGC_ADMIN_DEVELOPER - expirationDate: - type: string - description: >- - Date on which the subscription expires. The subscription is invalid - after this date. (yyyy-MM-dd) - poDetails: + $ref: '#/components/schemas/ServiceAccess' type: array - items: - $ref: '#/components/schemas/PurchaseOrder' - productName: - type: string - description: Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc) - description: Product Enablement - ProductSubscription: - required: - - productName - type: object - properties: - startDate: - type: string - description: Date on which the subscription becomes active. (yyyy-MM-dd) - productName: - type: string - description: Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc). - emsEntitlementType: - type: string - description: >- - EMS Subscription type. (options: EMS_EVAL, EMS_NFR and - EMS_COMMERCIAL) - enum: - - EMS_EVAL - - EMS_NFR - - EMS_COMMERICAL - - EMS_COMMERCIAL - expirationDate: + displayName: + description: Display Name of the role type: string - description: >- - Date on which the subscription expires. The subscription is invalid - after this date. (yyyy-MM-dd) - type: + name: + description: Name of the role type: string - description: >- - Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, - NGC_ADMIN_COMMERCIAL) - enum: - - NGC_ADMIN_EVAL - - NGC_ADMIN_NFR - - NGC_ADMIN_COMMERCIAL - id: + product: + $ref: '#/components/schemas/RoleProduct' + shortDisplayName: + description: Short Display Name of the role type: string - description: Unique entitlement identifier - description: Product Subscription - Organization: type: object + User: + description: information about the user properties: - isSecureCredentialSharingServiceEnabled: - type: boolean - description: Secure Credential Sharing Service enable flag for an organization - isInternal: - type: boolean - description: Is NVIDIA internal org or not - idpId: + clientId: + description: unique auth client id of this user. type: string - description: Identity Provider ID. - usersInfo: - $ref: '#/components/schemas/UsersInfo' - pecSfdcId: + createdDate: + description: Created date for this user type: string - description: >- - Product end customer salesforce.com Id (external customer Id). - pecSfdcId is for EMS (entitlement management service) to track - external paid customer. - id: - type: integer - description: Unique Id of this team. - format: int64 - isRegistrySSEEnabled: - type: boolean - description: >- - If a server side encryption is enabled for private registry (models, - resources) - alternateContact: - $ref: '#/components/schemas/AlternateContact' - canAddOn: - type: boolean - description: Identifies if the org can be reused. - infinityManagerSettings: - $ref: '#/components/schemas/InfinityManagerSettings' - billingAccountId: + email: + description: Email address of the user. This should be unique. + maxLength: 128 + minLength: 7 type: string - description: Billing account ID. - type: + firstLoginDate: + description: Last time the user logged in type: string + hasBetaAccess: + description: Determines if the user has beta access + type: boolean + hasProfile: + description: indicate if user profile has been completed. + type: boolean + hasSignedAODTEULA: + description: indicates if user has accepted AODT End User License Agreement. + type: boolean + hasSignedAiFoundryPartnershipsEULA: + description: indicates if user has accepted AI Foundry Partnerships eula + type: boolean + hasSignedBaseCommandEULA: + description: indicates if user has accepted Base Command End User License Agreement. + type: boolean + hasSignedBaseCommandManagerEULA: + description: indicates if user has accepted Base Command Manager End User License Agreement. + type: boolean + hasSignedBioNeMoEULA: + description: indicates if user has accepted BioNeMo End User License Agreement. + type: boolean + hasSignedContainerPublishingEULA: + description: indicates if user has accepted container publishing eula + type: boolean + hasSignedCuOptEULA: + description: indicates if user has accepted CuOpt eula + type: boolean + hasSignedEULA: + description: Determines if the user has signed the NGC End User License Agreement. + type: boolean + hasSignedEarth2EULA: + description: indicates if user has accepted Earth-2 eula + type: boolean + hasSignedEgxEULA: + description: '[Deprecated] indicates if user has accepted EGX End User License Agreement.' + type: boolean + hasSignedFleetCommandEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. + type: boolean + hasSignedLlmEULA: + description: indicates if user has accepted LLM End User License Agreement. + type: boolean + hasSignedNVAIEEULA: + description: indicates if user has accepted Fleet Command End User License Agreement. + type: boolean + hasSignedNVQCEULA: + description: indicates if user has accepted Nvidia Quantum Cloud End User License Agreement. + type: boolean + hasSignedNvidiaEULA: + description: Determines if the user has signed the NVIDIA End User License Agreement. + type: boolean + hasSignedOmniverseEULA: + description: indicates if user has accepted Omniverse End User License Agreement. + type: boolean + hasSignedPrivacyPolicy: + description: Determines if the user has signed the Privacy Policy. + type: boolean + hasSignedThirdPartyRegistryShareEULA: + description: indicates if user has consented to share their registration info with other parties + type: boolean + hasSubscribedToEmail: + description: Determines if the user has opted in email subscription. + type: boolean + id: + description: unique Id of this user. + format: int64 + type: integer + idpType: + description: Type of IDP, Identity Provider. Used for login. enum: - - UNKNOWN - - CLOUD + - NVIDIA - ENTERPRISE - - INDIVIDUAL - isProto: + type: string + isActive: + description: Determines if the user is active or not. type: boolean - description: Indicates when the org is a proto org - repoScanSettings: - $ref: '#/components/schemas/RepoScanSettings' - ncaAccountNumber: + isDeleted: + description: Indicates if user was deleted from the system. + type: boolean + isSAML: + description: Determines if the user is a SAML account or not. + type: boolean + jobPositionTitle: + description: Title of user's job position. type: string - description: NVIDIA Cloud Account Number. - description: + lastLoginDate: + description: Last time the user logged in type: string - description: Optional description of the organization. - productEnablements: - type: array - items: - $ref: '#/components/schemas/ProductEnablement' name: - type: string - description: Organization name. - orgOwner: - $ref: '#/components/schemas/OrgOwner' - displayName: - maxLength: 255 + description: user name + maxLength: 64 minLength: 1 type: string - description: Name of the organization that will be shown to users. - productSubscriptions: - type: array + roles: + description: List of roles that the user have items: - $ref: '#/components/schemas/ProductSubscription' - country: + $ref: '#/components/schemas/UserRole' + type: array + starfleetId: + description: unique starfleet id of this user. type: string - description: ISO country code of the organization. - industry: + storageQuota: + description: Storage quota for this user. + items: + $ref: '#/components/schemas/UserStorageQuota' + type: array + updatedDate: + description: Updated date for this user type: string - description: Industry of the organization. - isSeparateInfluxDbUsed: - type: boolean - description: >- - If a separate influx db used for an organization in BCP for job - telemetry - isDatasetServiceEnabled: - type: boolean - description: Dataset Service enable flag for an organization - isSecretsManagerServiceEnabled: - type: boolean - description: Secrets Manager Service enable flag for an organization - isQuickStartEnabled: + userMetadata: + $ref: '#/components/schemas/UserMetadata' + verified: + description: Is user's email or phone number is verified type: boolean - description: Quick Start enable flag for an organization - orgOwners: + type: object + UserRole: + description: List of roles that the user have + properties: + org: + $ref: '#/components/schemas/Organization' + orgRoles: + description: List of org role types that the user have + items: + description: List of org role types that the user have + type: string type: array - description: Org owners + roleTypes: + description: DEPRECATED - List of role types that the user have items: - $ref: '#/components/schemas/OrgOwner' - description: Information about the Organization - SearchParamOrderBy: + description: DEPRECATED - List of role types that the user have + type: string + type: array + targetSystemUserIdentifier: + $ref: '#/components/schemas/TargetSystemUserIdentifier' + team: + $ref: '#/components/schemas/Team' + teamRoles: + description: List of team role types that the user have + items: + description: List of team role types that the user have + type: string + type: array type: object + SearchParamFilter: properties: field: type: string value: type: string - enum: - - ASC - - DESC - SearchParamFilter: type: object + SearchParamOrderBy: properties: field: type: string value: + enum: + - ASC + - DESC type: string - PaginationInfo: type: object + PaginationInfo: + description: object that describes the pagination information properties: - totalPages: - type: integer - description: Total number of pages available - format: int64 index: - type: integer description: Page index of results format: int32 - totalResults: type: integer - description: Total number of results available - format: int64 nextPage: + description: Serialized pointer to the next results page. Should be used for fetching next page. Can be empty type: string - description: >- - Serialized pointer to the next results page. Should be used for - fetching next page. Can be empty size: - type: integer description: Number of results in page format: int32 - description: object that describes the pagination information - UserMetadata: + type: integer + totalPages: + description: Total number of pages available + format: int64 + type: integer + totalResults: + description: Total number of results available + format: int64 + type: integer type: object + UserMetadata: + description: Metadata information about the user. properties: - companyUrl: + company: + description: Name of the company + maxLength: 128 type: string + companyUrl: description: Company URL - firstName: - maxLength: 255 type: string - description: User's first name country: - type: string description: Country of the user - company: - maxLength: 128 type: string - description: Name of the company - role: + firstName: + description: User's first name + maxLength: 255 + type: string + industry: + description: Industry segment type: string - description: Role of the user in the company interest: - type: array description: List of development areas that user has interest items: - type: string description: List of development areas that user has interest + type: string + type: array lastName: + description: User's last name maxLength: 255 type: string - description: User's last name - industry: + role: + description: Role of the user in the company type: string - description: Industry segment - description: Metadata information about the user. - Team: type: object + UserInvitation: + description: User invitation to an NGC org or team properties: - repoScanSettings: - $ref: '#/components/schemas/RepoScanSettings' + createdDate: + description: Date on which the invitation was created. (ISO-8601 format) + type: string + email: + description: Email address of the user. + maxLength: 128 + minLength: 7 + type: string + id: + description: Unique invitation ID + type: string + isProcessed: + description: Flag indicating if the invitation has already been accepted by the user. + type: boolean name: + description: user name + maxLength: 64 + minLength: 1 + type: string + org: + description: Org to which a user was invited. + type: string + roles: + description: List of roles that the user have. + items: + description: List of roles that the user have. + type: string + type: array + team: + description: Team to which a user was invited. + type: string + type: + description: Type of invitation. The invitation is either to an organization or to a team within organization. + enum: + - ORGANIZATION + - TEAM + type: string + type: object + Team: + description: Information about the team + properties: + description: + description: description of the team type: string - description: team name - infinityManagerSettings: - $ref: '#/components/schemas/InfinityManagerSettings' id: - type: integer description: unique Id of this team. format: int64 + type: integer + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' isDeleted: - type: boolean description: indicates if the team is deleted or not - description: + type: boolean + name: + description: team name type: string - description: description of the team - description: Information about the team - RepoScanSettings: + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' type: object + InfinityManagerSettings: + description: Infinity manager setting definition properties: - repoScanAllowOverride: + infinityManagerEnableTeamOverride: + description: Allow override settings at team level. Only used in org level object + type: boolean + infinityManagerEnabled: + description: Enable the infinity manager or not. Used both in org and team level object type: boolean + type: object + RepoScanSettings: + description: Repo scan setting definition + properties: + repoScanAllowOverride: description: Allow org admin to override the org level repo scan settings - repoScanShowResults: type: boolean - description: Allow showing scan results to CLI or UI - repoScanEnabled: + repoScanByDefault: + description: Allow repository scanning by default type: boolean - description: Enable the repository scan or not. Only used in org level object repoScanEnableNotifications: - type: boolean description: Sends notification to end user after scanning is done - repoScanByDefault: type: boolean - description: Allow repository scanning by default repoScanEnableTeamOverride: - type: boolean description: Allow override settings at team level. Only used in org level object - description: Repo scan setting definition - InfinityManagerSettings: + type: boolean + repoScanEnabled: + description: Enable the repository scan or not. Only used in org level object + type: boolean + repoScanShowResults: + description: Allow showing scan results to CLI or UI + type: boolean type: object + Organization: + description: Information about the Organization properties: - infinityManagerEnabled: + alternateContact: + $ref: '#/components/schemas/AlternateContact' + billingAccountId: + description: Billing account ID. + type: string + canAddOn: + description: Identifies if the org can be reused. type: boolean - description: >- - Enable the infinity manager or not. Used both in org and team level - object - infinityManagerEnableTeamOverride: + country: + description: ISO country code of the organization. + type: string + description: + description: Optional description of the organization. + type: string + displayName: + description: Name of the organization that will be shown to users. + maxLength: 255 + minLength: 1 + type: string + id: + description: Unique Id of this team. + format: int64 + type: integer + idpId: + description: Identity Provider ID. + type: string + industry: + description: Industry of the organization. + type: string + infinityManagerSettings: + $ref: '#/components/schemas/InfinityManagerSettings' + isDatasetServiceEnabled: + description: Dataset Service enable flag for an organization type: boolean - description: Allow override settings at team level. Only used in org level object - description: Infinity manager setting definition - OrgInvitation: + isInternal: + description: Is NVIDIA internal org or not + type: boolean + isProto: + description: Indicates when the org is a proto org + type: boolean + isQuickStartEnabled: + description: Quick Start enable flag for an organization + type: boolean + isRegistrySSEEnabled: + description: If a server side encryption is enabled for private registry (models, resources) + type: boolean + isSecretsManagerServiceEnabled: + description: Secrets Manager Service enable flag for an organization + type: boolean + isSecureCredentialSharingServiceEnabled: + description: Secure Credential Sharing Service enable flag for an organization + type: boolean + isSeparateInfluxDbUsed: + description: If a separate influx db used for an organization in BCP for job telemetry + type: boolean + name: + description: Organization name. + type: string + ncaAccountNumber: + description: NVIDIA Cloud Account Number. + type: string + orgOwner: + $ref: '#/components/schemas/OrgOwner' + orgOwners: + description: Org owners + items: + $ref: '#/components/schemas/OrgOwner' + type: array + pecSfdcId: + description: Product end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer. + type: string + productEnablements: + items: + $ref: '#/components/schemas/ProductEnablement' + type: array + productSubscriptions: + items: + $ref: '#/components/schemas/ProductSubscription' + type: array + repoScanSettings: + $ref: '#/components/schemas/RepoScanSettings' + type: + enum: + - UNKNOWN + - CLOUD + - ENTERPRISE + - INDIVIDUAL + type: string + usersInfo: + $ref: '#/components/schemas/UsersInfo' type: object + OrgOwnerV3: + description: Org owner. properties: - protoOrgId: - type: string - description: Proto Org identifier. email: + description: Email address of the org owner. + maxLength: 128 type: string - description: Email address of the user. - description: Org invitation to NGC - UserInvitation: + fullName: + description: Org owner name. + maxLength: 64 + minLength: 1 + type: string + idpId: + description: Identity Provider ID of the org owner. + type: string + starfleetId: + description: Starfleet ID of the org owner. + type: string + required: + - email + type: object + ProductEnablement: + description: Product Enablement + properties: + expirationDate: + description: Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd) + type: string + poDetails: + items: + $ref: '#/components/schemas/PurchaseOrder' + type: array + productName: + description: Product Name (NVAIE, BASE_COMMAND, REGISTRY, etc) + type: string + type: + description: Product Enablement Types + enum: + - NGC_ADMIN_EVAL + - NGC_ADMIN_NFR + - NGC_ADMIN_COMMERCIAL + - EMS_EVAL + - EMS_NFR + - EMS_COMMERCIAL + - NGC_ADMIN_DEVELOPER + type: string + required: + - productName + - type type: object + ProductSubscription: + description: Product Subscription properties: - name: - maxLength: 64 - minLength: 1 - type: string - description: user name - roles: - type: array - description: List of roles that the user have. - items: - type: string - description: List of roles that the user have. - createdDate: + emsEntitlementType: + description: 'EMS Subscription type. (options: EMS_EVAL, EMS_NFR and EMS_COMMERCIAL)' + enum: + - EMS_EVAL + - EMS_NFR + - EMS_COMMERICAL + - EMS_COMMERCIAL type: string - description: Date on which the invitation was created. (ISO-8601 format) - isProcessed: - type: boolean - description: >- - Flag indicating if the invitation has already been accepted by the - user. - team: + expirationDate: + description: Date on which the subscription expires. The subscription is invalid after this date. (yyyy-MM-dd) type: string - description: Team to which a user was invited. id: + description: Unique entitlement identifier type: string - description: Unique invitation ID - org: + productName: + description: Product Name (NVAIE, BASE_COMMAND, FleetCommand, REGISTRY, etc). type: string - description: Org to which a user was invited. - type: + startDate: + description: Date on which the subscription becomes active. (yyyy-MM-dd) type: string - description: >- - Type of invitation. The invitation is either to an organization or - to a team within organization. + type: + description: 'Subscription type. (options: NGC_ADMIN_EVAL, NGC_ADMIN_NFR, NGC_ADMIN_COMMERCIAL)' enum: - - ORGANIZATION - - TEAM - email: - maxLength: 128 - minLength: 7 + - NGC_ADMIN_EVAL + - NGC_ADMIN_NFR + - NGC_ADMIN_COMMERCIAL type: string + required: + - productName + type: object + OrgInvitation: + description: Org invitation to NGC + properties: + email: description: Email address of the user. - description: User invitation to an NGC org or team - UserRoleDefinition: + type: string + protoOrgId: + description: Proto Org identifier. + type: string type: object + ServiceAccess: + description: List of actions that this role allows properties: - shortDisplayName: + accessLevels: + description: List of access levels that this role allows + items: + description: List of access levels that this role allows + type: string + type: array + service: + description: Service that this role allows type: string - description: Short Display Name of the role - product: - $ref: '#/components/schemas/RoleProduct' + type: object + RoleProduct: + description: Product information of the role + properties: displayName: + description: Display Name of the product from the product catalog to which this role is associated with type: string - description: Display Name of the role name: + description: Name of the product from the product catalog to which this role is associated with type: string - description: Name of the role - allowedActions: - type: array - description: List of actions that this role allows - items: - $ref: '#/components/schemas/ServiceAccess' - description: List of roles - TargetSystemUserIdentifier: type: object + UserStorageQuota: + description: represents user storage quota for a given ace and available unused storage properties: - uid: - type: integer - description: uid of the user on this team - format: int64 - orgName: - type: string - description: Org context for the job - userId: - type: integer - description: Unique ID of the user who submitted the job + aceId: + description: id of the ace format: int64 - teamName: - type: string - description: Team context for the job - gid: type: integer - description: gid of the user on this team - format: int64 - starfleetId: + aceName: + description: name of the ace type: string - description: Starfleet ID of the user creating the job. - description: Information about the user who is attempting to run the job - UserStorageQuota: - type: object - properties: available: - type: integer description: Available space in bytes format: int64 - datasetsUsage: type: integer - description: Space used by datasets in bytes + datasetCount: + description: Number of datasets that are a part of user's used storage format: int64 - aceName: - type: string - description: name of the ace - workspacesCount: type: integer - description: Number of workspaces that are a part of user's used storage + datasetsUsage: + description: Space used by datasets in bytes format: int64 + type: integer orgName: + description: The org name that this user quota tied to. This is needed for analytics type: string - description: >- - The org name that this user quota tied to. This is needed for - analytics - resultsetCount: + quota: + description: Assigned quota in bytes + format: int64 type: integer + resultsetCount: description: Number of resultsets that are a part of user's used storage format: int64 - quota: type: integer - description: Assigned quota in bytes + resultsetsUsage: + description: Space used by resultsets in bytes format: int64 + type: integer storageClusterDescription: - type: string description: Description of this storage cluster - storageClusterUuid: type: string + storageClusterName: + description: Name of storage cluster + type: string + storageClusterUuid: description: Identifier to this storage cluster - datasetCount: - type: integer - description: Number of datasets that are a part of user's used storage - format: int64 - aceId: - type: integer - description: id of the ace + type: string + workspacesCount: + description: Number of workspaces that are a part of user's used storage format: int64 - resultsetsUsage: type: integer - description: Space used by resultsets in bytes - format: int64 workspacesUsage: - type: integer description: Space used by workspaces in bytes format: int64 - storageClusterName: - type: string - description: Name of storage cluster - description: >- - represents user storage quota for a given ace and available unused - storage - PurchaseOrder: + type: integer type: object + TargetSystemUserIdentifier: + description: Information about the user who is attempting to run the job properties: - pkId: + gid: + description: gid of the user on this team + format: int64 + type: integer + orgName: + description: Org context for the job type: string - description: PAK (Product Activation Key) identifier. - entitlementId: + starfleetId: + description: Starfleet ID of the user creating the job. type: string - description: Entitlement identifier. - description: Purchase Order. - UsersInfo: - type: object - properties: - totalUsers: + teamName: + description: Team context for the job + type: string + uid: + description: uid of the user on this team + format: int64 type: integer - description: Total number of users. + userId: + description: Unique ID of the user who submitted the job format: int64 - description: Users information. - AlternateContact: + type: integer type: object + AlternateContact: + description: Org Owner Alternate Contact properties: - fullName: - maxLength: 255 - type: string - description: Full name of the alternate contact. email: + description: Alternate contact's email. maxLength: 128 minLength: 6 type: string - description: Alternate contact's email. - description: Org Owner Alternate Contact - OrgOwner: - required: - - email + fullName: + description: Full name of the alternate contact. + maxLength: 255 + type: string type: object + OrgOwner: + description: Org owner. properties: + email: + description: Email address of the org owner. + maxLength: 128 + type: string fullName: + description: Org owner name. maxLength: 64 minLength: 1 type: string - description: Org owner name. - email: - maxLength: 128 - type: string - description: Email address of the org owner. lastLoginDate: - type: string description: Last time the org owner logged in. - description: Org owner. - RoleProduct: + type: string + required: + - email type: object + UsersInfo: + description: Users information. properties: - displayName: - type: string - description: >- - Display Name of the product from the product catalog to which this - role is associated with - name: - type: string - description: >- - Name of the product from the product catalog to which this role is - associated with - description: Product information of the role - ServiceAccess: + totalUsers: + description: Total number of users. + format: int64 + type: integer type: object + PurchaseOrder: + description: Purchase Order. properties: - service: + entitlementId: + description: Entitlement identifier. type: string - description: Service that this role allows - accessLevels: - type: array - description: List of access levels that this role allows - items: - type: string - description: List of access levels that this role allows - description: List of actions that this role allows + pkId: + description: PAK (Product Activation Key) identifier. + type: string + type: object servers: - url: https://api.ngc.nvidia.com diff --git a/provider-dev/source/private_registry.yaml b/provider-dev/source/private_registry.yaml new file mode 100644 index 0000000..35d5ef6 --- /dev/null +++ b/provider-dev/source/private_registry.yaml @@ -0,0 +1,17588 @@ +openapi: 3.1.0 +info: + title: NVIDIA NGC Private Registry + description: 'Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes).' + version: 0.0.1-SNAPSHOT +paths: + /encryption-keys: + get: + description: List encryption keys in org + operationId: listKeysInOrg + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List encryption keys in org + tags: + - Encryption Keys + /encryption-keys/{key_id}: + get: + description: List artifacts for encryption key in org + operationId: listArtifactsForKeyInOrg + parameters: + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: query + name: artifact-type + required: false + schema: + default: MODEL + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts for encryption key in org + tags: + - Encryption Keys + delete: + description: Revoke encryption key and disassociate from all artifacts in org + operationId: deleteKeyFromOrg + parameters: + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke encryption key in org + tags: + - Encryption Keys + /team/{team_name}/encryption-keys: + get: + description: List encryption keys in org/team + operationId: listKeysInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List encryption keys in org/team + tags: + - Encryption Keys + /team/{team_name}/encryption-keys/{key_id}: + get: + description: List artifacts for encryption key in org/team + operationId: listArtifactsForKeyInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: query + name: artifactType + required: false + schema: + default: MODEL + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KeyArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts for encryption key in org/team + tags: + - Encryption Keys + delete: + description: Revoke encryption key and disassociate from all artifacts in org/team + operationId: deleteKeyFromTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Key ID + in: path + name: key_id + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke encryption key in org/team + tags: + - Encryption Keys + /team/{team}/workflows/{workflow_id}: + get: + description: Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team. + operationId: getWorkflowStatusForTeam + parameters: + - description: Team name + in: path + name: team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Workflow identifier + in: path + name: workflow_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + '*/*': + schema: + $ref: '#/components/schemas/WorkflowStatusResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get team-scoped workflow status + tags: + - Workflows + /workflows/{workflow_id}: + get: + description: Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization. + operationId: getWorkflowStatus + parameters: + - description: Workflow identifier + in: path + name: workflow_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + '*/*': + schema: + $ref: '#/components/schemas/WorkflowStatusResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get workflow status + tags: + - Workflows + /collections: + get: + description: List collections the user can access in the specified org + operationId: listCollectionsInOrg + parameters: + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collections in org + tags: + - Collections + post: + description: Create collection in org + operationId: createCollectionInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create collection in org + tags: + - Collections + /collections/{collection_name}: + get: + description: Get collection details in org + operationId: getCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get collection in org + tags: + - Collections + patch: + description: Update collection details in org + operationId: updateCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update collection in org + tags: + - Collections + delete: + description: Delete collection in the specified org + operationId: deleteCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete collection in org + tags: + - Collections + /collections/{collection_name}/artifacts: + patch: + description: Patch collection in the specified org + operationId: patchCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPatchRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Patch collection in org + tags: + - Collections + /collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org from another org and team + operationId: addArtifactToCollectionInOrgFromAnotherOrgAndTeam + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org from another org and team + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org from another org + operationId: removeArtifactFromCollectionInOrgFromAnotherOrgAndTeam + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org from another org + tags: + - Collections + /collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org from another org + operationId: addArtifactToCollectionInOrgFromAnotherOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org from another org + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org from another org + operationId: removeArtifactFromCollectionInOrgFromAnotherOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org from another org + tags: + - Collections + /collections/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org + operationId: listCollectionArtifactsInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collection artifacts in org + tags: + - Collections + /collections/{collection_name}/share/product: + put: + description: Publish collection to product + operationId: publishCollectionFromRequest + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish collection to product + tags: + - Publish + /collections/{collection_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org + operationId: addArtifactToCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org + operationId: removeArtifactFromCollectionInOrg + parameters: + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org + tags: + - Collections + /helm-charts/{artifact_name}/versions: + get: + description: List chart versions in org + operationId: listHelmChartVersionsInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List chart versions in org + tags: + - Helm Charts + /helm-charts/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in org + operationId: getHelmChartVersionInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get chart version in org + tags: + - Helm Charts + patch: + description: Update chart version information in org e.g. upload status + operationId: updateHelmChartVersionInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update chart version in org + tags: + - Helm Charts + /models: + get: + description: This operation lists models the user can access in the org. + operationId: listModelsInOrg + parameters: + - deprecated: true + description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - deprecated: true + description: '[Deprecated] Page reference, Use page-number instead' + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List models in org + tags: + - Models + post: + description: This operation creates a model in the org. + operationId: createModelInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model in org + tags: + - Models + /models/{artifact_name}/versions/{version_id}/stash: + patch: + description: Stash artifact version information in org during upload paused state + operationId: stashArtifactVersionInOrg + parameters: + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Stash artifact version in org + tags: + - Model Version + /models/{model_name}: + get: + description: This operation gets info of a model in the org. + operationId: getModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model details in org + tags: + - Models + patch: + description: This operation updates details of a model in the org. + operationId: updateModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model in org + tags: + - Models + /models/{model_name}/encryption-key: + delete: + description: Disassociate encryption key from model in org and mark it for offline deletion + operationId: disassociateKeyFromModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Disassociate encryption key from model in org + tags: + - Models + /models/{model_name}/shares/org: + put: + description: This operation shares an org model with the org. + operationId: shareModelInOrgWithOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share org model with the org + tags: + - Models + delete: + description: This operation revokes a shared org model with the org. + operationId: revokeShareModelInOrgWithOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared org model with the org + tags: + - Models + /models/{model_name}/shares/team/{target_team}: + put: + description: This operation shares an org model with the team. + operationId: shareModelInOrgWithTeam + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share org model with the specified team + tags: + - Models + delete: + description: This operation revokes a shared org model with the team. + operationId: revokeShareModelInOrgWithTeam + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared org model with the specified team + tags: + - Models + /models/{model_name}/versions: + get: + description: List model versions in org + operationId: listModelVersionsInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model versions in org + tags: + - Model Version + post: + description: Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createModelVersionInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model version in org + tags: + - Model Version + /models/{model_name}/versions/{version_id}: + get: + description: Get model version in org + operationId: getModelVersionInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model version in org + tags: + - Model Version + patch: + description: Update model version information in org e.g. upload status + operationId: updateModelVersionInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model version in org + tags: + - Model Version + /models/{model_name}/versions/{version_id}/files: + get: + description: List files of the model version in org + operationId: listModeFilesInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model files in org + tags: + - Model Version Files + /recipes: + get: + description: List recipes the user can access in the specified org + operationId: listRecipesInOrg + parameters: + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in org + tags: + - Resources + post: + description: Create recipe in org + operationId: createRecipeInOrg + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in org + tags: + - Resources + /recipes/{recipe_name}: + get: + description: Get recipe in org + operationId: getRecipeInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in org + tags: + - Resources + patch: + description: Update recipe details in org + operationId: updateRecipeInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in org + tags: + - Resources + /recipes/{recipe_name}/versions: + get: + description: List recipe versions in org + operationId: listRecipeVersionsInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in org + tags: + - Resource Versions + post: + description: Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in org + tags: + - Resource Versions + /recipes/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org + operationId: getRecipeVersionInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in org + tags: + - Resource Versions + patch: + description: Update recipe version information in org e.g. upload status + operationId: updateRecipeVersionInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in org + tags: + - Resource Versions + /recipes/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in org + operationId: listRecipeFilesInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in org + tags: + - Resource Version Files endpoints + /repositories/{container_name}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer + parameters: + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + /repositories/{container_name}/tags/{container_tag}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer_2 + parameters: + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container tag + in: path + name: container_tag + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + /resources: + get: + description: List recipes the user can access in the specified org + operationId: listRecipesInOrg_1 + parameters: + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in org + tags: + - Resources + post: + description: Create recipe in org + operationId: createRecipeInOrg_1 + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in org + tags: + - Resources + /resources/{recipe_name}: + get: + description: Get recipe in org + operationId: getRecipeInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in org + tags: + - Resources + patch: + description: Update recipe details in org + operationId: updateRecipeInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in org + tags: + - Resources + /resources/{recipe_name}/versions: + get: + description: List recipe versions in org + operationId: listRecipeVersionsInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in org + tags: + - Resource Versions + post: + description: Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in org + tags: + - Resource Versions + /resources/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in org + operationId: getRecipeVersionInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in org + tags: + - Resource Versions + patch: + description: Update recipe version information in org e.g. upload status + operationId: updateRecipeVersionInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in org + tags: + - Resource Versions + /resources/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in org + operationId: listRecipeFilesInOrg_1 + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in org + tags: + - Resource Version Files endpoints + /team/{team_name}/collections: + get: + description: List collections the user can access in the specified org and team + operationId: listCollectionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collections in team + tags: + - Collections + post: + description: Create collection in org and team + operationId: createCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create collection in org and team + tags: + - Collections + /team/{team_name}/collections/{collection_name}: + get: + description: Get collection details in team + operationId: getCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get collection in team + tags: + - Collections + patch: + description: Update collection details in team + operationId: updateCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update collection in team + tags: + - Collections + delete: + description: Delete collection in the specified org and team + operationId: deleteCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete collection in org and team + tags: + - Collections + /team/{team_name}/collections/{collection_name}/artifacts: + patch: + description: Patch collection in the specified org and team + operationId: patchCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPatchRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Patch collection in org and team + tags: + - Collections + /team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org and team from another org and team + operationId: addArtifactToCollectionInTeamFromAnotherOrgAndTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org and team from another org and team + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org and team from another org and team + operationId: removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact team name + in: path + name: artifact_team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org and team from another org and team + tags: + - Collections + /team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org and team from another org + operationId: addArtifactToCollectionInTeamFromAnotherOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org and team from another org + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org and team from another org + operationId: removeArtifactFromCollectionInTeamFromAnotherOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact organization name + in: path + name: artifact_org_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org and team from another org + tags: + - Collections + /team/{team_name}/collections/{collection_name}/artifacts/{artifact_type}: + get: + description: List collection artifacts the user can access in the specified org and team + operationId: listCollectionArtifactsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List collection artifacts in org and team + tags: + - Collections + /team/{team_name}/collections/{collection_name}/share/product: + put: + description: Publish collection to product + operationId: publishCollectionFromRequest_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish collection to product + tags: + - Publish + /team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name}: + put: + description: Add artifact to the specified collection in the specified org and team + operationId: addArtifactToCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Add artifact to collection in org and team + tags: + - Collections + delete: + description: Remove artifact from the specified collection in the specified org and team + operationId: removeArtifactFromCollectionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Collection name + in: path + name: collection_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Remove artifact from collection in org and team + tags: + - Collections + /team/{team_name}/helm-charts/{artifact_name}/versions: + get: + description: List chart versions in team + operationId: listHelmChartVersionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List chart versions in team + tags: + - Helm Charts + /team/{team_name}/helm-charts/{artifact_name}/versions/{version_id}: + get: + description: Get chart version in team + operationId: getHelmChartVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get chart version in team + tags: + - Helm Charts + patch: + description: Update chart version information in team e.g. upload status + operationId: updateHelmChartVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update chart version in team + tags: + - Helm Charts + /team/{team_name}/models: + get: + description: This operation lists models the user can access in the org/team. + operationId: listModelsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - deprecated: true + description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - deprecated: true + description: '[Deprecated] Page reference, Use page-number instead' + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List models in team + tags: + - Models + post: + description: This operation creates a model in the org/team. + operationId: createModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model in team + tags: + - Models + /team/{team_name}/models/{artifact_name}/versions/{version_id}/stash: + patch: + description: Stash artifact version information in team in model version upload paused state + operationId: stashArtifactVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Stash artifact version in team + tags: + - Model Version + /team/{team_name}/models/{model_name}: + get: + description: This operation gets info of a model in the org/team. + operationId: getModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model in team + tags: + - Models + patch: + description: This operation updates details of a model in the org/team. + operationId: updateModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model in team + tags: + - Models + /team/{team_name}/models/{model_name}/encryption-key: + delete: + description: Disassociate encryption key from model in team and mark it for offline deletion + operationId: disassociateKeyFromModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Disassociate encryption key from model in team + tags: + - Models + /team/{team_name}/models/{model_name}/shares/org: + put: + description: This operation shares a team model with the org. + operationId: shareModelInTeamWithOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share team model with the org + tags: + - Models + delete: + description: This operation revokes a shared team model with the org. + operationId: revokeShareModelInTeamWithOrg + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared team model with the org + tags: + - Models + /team/{team_name}/models/{model_name}/shares/team/{target_team}: + put: + description: This operation shares a team model with the team. + operationId: shareModelInTeamWithTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Share team model with the specified team + tags: + - Models + delete: + description: This operation revokes a shared team model with the team. + operationId: revokeShareModelInTeamWithTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Target team name + in: path + name: target_team + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Revoke shared team model with the specified team + tags: + - Models + /team/{team_name}/models/{model_name}/versions: + get: + description: List model versions in team + operationId: listModelVersionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model versions in team + tags: + - Model Version + post: + description: Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createModelVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create model version in team. + tags: + - Model Version + /team/{team_name}/models/{model_name}/versions/{version_id}: + get: + description: Get model version in team + operationId: getModelVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get model version in team + tags: + - Model Version + patch: + description: Update model version information in team e.g. upload status + operationId: updateModelVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update model version in team + tags: + - Model Version + /team/{team_name}/models/{model_name}/versions/{version_id}/files: + get: + description: List files of the model version in team + operationId: listModeFilesInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List model files in team + tags: + - Model Version Files + /team/{team_name}/recipes: + get: + description: List recipes the user can access in the specified org and team + operationId: listRecipesInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in team + tags: + - Resources + post: + description: Create recipe in team + operationId: createRecipeInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in team + tags: + - Resources + /team/{team_name}/recipes/{recipe_name}: + get: + description: Get recipe details in team + operationId: getRecipeInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in team + tags: + - Resources + patch: + description: Update recipe details in team + operationId: updateRecipeInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in team + tags: + - Resources + /team/{team_name}/recipes/{recipe_name}/versions: + get: + description: List recipe versions in team + operationId: listRecipeVersionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in team + tags: + - Resource Versions + post: + description: Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in team + tags: + - Resource Versions + /team/{team_name}/recipes/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team + operationId: getRecipeVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in team + tags: + - Resource Versions + patch: + description: Update recipe version information in team e.g. upload status + operationId: updateRecipeVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in team + tags: + - Resource Versions + /team/{team_name}/recipes/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in team + operationId: listRecipeFilesInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in team + tags: + - Resource Version Files endpoints + /team/{team_name}/repositories/{container_name}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + /team/{team_name}/repositories/{container_name}/tags/{container_tag}/associated-models: + get: + description: List associated model versions by container + operationId: listModelVersionsAssociatedByContainer_3 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container name + in: path + name: container_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Container tag + in: path + name: container_tag + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 1000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModelVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List associated model versions by container + tags: + - Model Version + /team/{team_name}/resources: + get: + description: List recipes the user can access in the specified org and team + operationId: listRecipesInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Application name + in: query + name: app-name + required: false + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipes in team + tags: + - Resources + post: + description: Create recipe in team + operationId: createRecipeInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe in team + tags: + - Resources + /team/{team_name}/resources/{recipe_name}: + get: + description: Get recipe details in team + operationId: getRecipeInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe in team + tags: + - Resources + patch: + description: Update recipe details in team + operationId: updateRecipeInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe in team + tags: + - Resources + /team/{team_name}/resources/{recipe_name}/versions: + get: + description: List recipe versions in team + operationId: listRecipeVersionsInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Sort order + in: query + name: sort-order + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Release Type + in: query + name: release-type + required: false + schema: + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe versions in team + tags: + - Resource Versions + post: + description: Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + operationId: createRecipeVersionInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create recipe version in team + tags: + - Resource Versions + /team/{team_name}/resources/{recipe_name}/versions/{version_id}: + get: + description: Get recipe version in team + operationId: getRecipeVersionInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get recipe version in team + tags: + - Resource Versions + patch: + description: Update recipe version information in team e.g. upload status + operationId: updateRecipeVersionInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Create zip of version content + in: query + name: create-zip + required: false + schema: + type: boolean + - description: Set version to latest + in: query + name: set-latest + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update recipe version in team + tags: + - Resource Versions + /team/{team_name}/resources/{recipe_name}/versions/{version_id}/files: + get: + description: List recipe files in team + operationId: listRecipeFilesInTeam_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page reference + in: query + name: page-reference + required: false + schema: + format: UTF-8 + maxLength: 1024 + minLength: 0 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RecipeVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List recipe files in team + tags: + - Resource Version Files endpoints + /team/{team_name}/{artifact_type}: + get: + description: List artifacts the user can access in the specified org and team + operationId: listArtifactsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts in team + tags: + - Artifacts + post: + description: Create artifact in team + operationId: createArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact in team + tags: + - Artifacts + /team/{team_name}/{artifact_type}/{artifact_name}: + get: + description: Get artifact details in team + operationId: getArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact in team + tags: + - Artifacts + put: + description: Replace artifact details in team + operationId: replaceArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Replace artifact in team + tags: + - Artifacts + patch: + description: Update artifact details in team + operationId: updateArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact in team + tags: + - Artifacts + delete: + description: Delete artifact in team + operationId: deleteArtifactInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact in team + tags: + - Artifacts + /team/{team_name}/{artifact_type}/{artifact_name}/catalog/flags: + get: + description: Get the Catalog Public flags for artifact in team + operationId: getPublicFlagsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCatalogFlags' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get Catalog flags + tags: + - Publish + /team/{team_name}/{artifact_type}/{artifact_name}/collections: + get: + description: List artifact collections the user can access in the specified org and team + operationId: listArtifactCollectionsInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact collections in org and team + tags: + - Collections + /team/{team_name}/{artifact_type}/{artifact_name}/collections/sync-release-type-labels: + post: + description: Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication. + operationId: syncCollectionReleaseTypeLabelsForArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Sync collection release type labels for artifact + tags: + - Collections + /team/{team_name}/{artifact_type}/{artifact_name}/deployments/params: + get: + description: List artifact deployment parameters in team + operationId: listArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact deployment parameters in team + tags: + - Artifact deployment parameters + /team/{team_name}/{artifact_type}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get artifact deployment parameters details in team + operationId: getArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact deployment parameters details in team + tags: + - Artifact deployment parameters + post: + description: Create artifact deployment parameters in team + operationId: createArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: No auto labels + in: query + name: no-auto-labels + required: false + schema: + type: boolean + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact deployment parameters in team + tags: + - Artifact deployment parameters + patch: + description: Update artifact deployment parameters in team + operationId: updateArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact deployment parameters in team + tags: + - Artifact deployment parameters + delete: + description: Delete artifact deployment parameters in team + operationId: deleteArtifactDeploymentParametersInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact deployment parameters in team + tags: + - Artifact deployment parameters + /team/{team_name}/{artifact_type}/{artifact_name}/license/acceptance: + post: + description: Record license acceptance for an org artifact. + operationId: acceptArtifactLicense_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptArtifactLicenseRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Accept artifact license + tags: + - Publish + /team/{team_name}/{artifact_type}/{artifact_name}/release-type: + put: + description: Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team. + operationId: updateReleaseLabel_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateReleaseTypeRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact version release type + tags: + - Publish + /team/{team_name}/{artifact_type}/{artifact_name}/share: + put: + description: Publish artifact to public + operationId: publishArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Indicates if guest users can download this artifact + in: query + name: guest-can-download + required: true + schema: + type: boolean + - description: Indicates if artifact is listed publicly + in: query + name: public-can-list + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to public + tags: + - Publish + delete: + description: Undo publishing of artifact to public + operationId: undoPublishArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of artifact to public + tags: + - Publish + /team/{team_name}/{artifact_type}/{artifact_name}/share/product: + put: + description: Publish artifact to product + operationId: publishArtifactFromRequest_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to product + tags: + - Publish + delete: + description: Undo publishing of product artifacts + operationId: undoPublishProduct_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of product artifacts + tags: + - Publish + /team/{team_name}/{artifact_type}/{artifact_name}/terms-of-service: + put: + description: Update artifact terms of service + operationId: updateTermsOfService_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact terms of service + tags: + - Publish + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}: + delete: + description: Delete a artifact version in team + operationId: deleteArtifactVersionInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete a artifact version in team + tags: + - Artifact Versions + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/configs: + patch: + description: Update artifact version with configs like policy badge + operationId: updateTagLevelPublishConfigs_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateArtifactVersionConfigs' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact version with configs like policy badge + tags: + - Publish + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}: + post: + description: Create artifact version deployment url in team + operationId: createArtifactDeploymentUrlInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact version deployment url in team + tags: + - Artifact deployment parameters + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in team + operationId: listArtifactFilesInTeam + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact files in team + tags: + - Artifact Version Files + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/signature: + put: + description: Request to sign artifact version + operationId: signArtifactVersion_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactDownloadResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + tags: + - ArtifactSigning + /{artifact_type}: + get: + description: List artifacts the user can access in the specified org + operationId: listArtifactsInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifacts in org + tags: + - Artifacts + post: + description: Create artifact in org + operationId: createArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact in org + tags: + - Artifacts + /{artifact_type}/{artifact_name}: + get: + description: Get artifact details in org + operationId: getArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact in org + tags: + - Artifacts + put: + description: Replace artifact details in org + operationId: replaceArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Replace artifact in org + tags: + - Artifacts + patch: + description: Update artifact details in org + operationId: updateArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact in org + tags: + - Artifacts + delete: + description: Delete artifact in org + operationId: deleteArtifactInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact in org + tags: + - Artifacts + /{artifact_type}/{artifact_name}/catalog/flags: + get: + description: Get the Catalog Public flags for artifact in org + operationId: getPublicFlagsInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactCatalogFlags' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get Catalog flags + tags: + - Publish + /{artifact_type}/{artifact_name}/collections: + get: + description: List artifact collections the user can access in the specified org + operationId: listArtifactCollectionsInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + - description: Order by + in: query + name: order-by + required: false + schema: + enum: + - ALPHABETIC_ASC + - ALPHABETIC_DESC + - CREATED_DATE_ASC + - CREATED_DATE_DESC + - SEMVER_ASC + - SEMVER_DESC + - DISPLAY_NAME_ASC + - DISPLAY_NAME_DESC + - UPDATED_DATE_ASC + - UPDATED_DATE_DESC + - PUBLISHER_ASC + - PUBLISHER_DESC + - BUILT_BY_ASC + - BUILT_BY_DESC + - RESOURCE_ID_ASC + - RESOURCE_ID_DESC + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact collections in org + tags: + - Collections + /{artifact_type}/{artifact_name}/collections/sync-release-type-labels: + post: + description: Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication. + operationId: syncCollectionReleaseTypeLabelsForArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Sync collection release type labels for artifact + tags: + - Collections + /{artifact_type}/{artifact_name}/deployments/params: + get: + description: List artifact deployment parameters in org + operationId: listArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact deployment parameters in org + tags: + - Artifact deployment parameters + /{artifact_type}/{artifact_name}/deployments/{csp_name}/params: + get: + description: Get artifact deployment parameters details in org + operationId: getArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Inherit CSP parameters + in: query + name: inherit-csp-parameters + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get artifact deployment parameters details in org + tags: + - Artifact deployment parameters + post: + description: Create artifact deployment parameters in org + operationId: createArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: No auto labels + in: query + name: no-auto-labels + required: false + schema: + type: boolean + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact deployment parameters in org + tags: + - Artifact deployment parameters + patch: + description: Update artifact deployment parameters in org + operationId: updateArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Merge CSP parameters in response + in: query + name: merge-csp-parameters + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParametersUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentParameters' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact deployment parameters in org + tags: + - Artifact deployment parameters + delete: + description: Delete artifact deployment parameters in org + operationId: deleteArtifactDeploymentParametersInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete artifact deployment parameters in org + tags: + - Artifact deployment parameters + /{artifact_type}/{artifact_name}/license/acceptance: + post: + description: Record license acceptance for an org artifact. + operationId: acceptArtifactLicense + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptArtifactLicenseRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Accept artifact license + tags: + - Publish + /{artifact_type}/{artifact_name}/release-type: + put: + description: Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team. + operationId: updateReleaseLabel + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateReleaseTypeRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact version release type + tags: + - Publish + /{artifact_type}/{artifact_name}/share: + put: + description: Publish artifact to public + operationId: publishArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Indicates if guest users can download this artifact + in: query + name: guest-can-download + required: true + schema: + type: boolean + - description: Indicates if artifact is listed publicly + in: query + name: public-can-list + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to public + tags: + - Publish + delete: + description: Undo publishing of artifact to public + operationId: undoPublishArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of artifact to public + tags: + - Publish + /{artifact_type}/{artifact_name}/share/product: + put: + description: Publish artifact to product + operationId: publishArtifactFromRequest + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact to product + tags: + - Publish + delete: + description: Undo publishing of product artifacts + operationId: undoPublishProduct + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Undo publishing of product artifacts + tags: + - Publish + /{artifact_type}/{artifact_name}/terms-of-service: + put: + description: Update artifact terms of service + operationId: updateTermsOfService + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactPublishRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update artifact terms of service + tags: + - Publish + /{artifact_type}/{artifact_name}/versions/{version_id}: + delete: + description: Delete a artifact version in org + operationId: deleteArtifactVersionInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete a artifact version in org + tags: + - Artifact Versions + /{artifact_type}/{artifact_name}/versions/{version_id}/configs: + patch: + description: Update artifact version with configs like policy badge + operationId: updateTagLevelPublishConfigs + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateArtifactVersionConfigs' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Publish artifact version with configs like policy badge + tags: + - Publish + /{artifact_type}/{artifact_name}/versions/{version_id}/deployments/{csp_name}: + post: + description: Create artifact version deployment url in org + operationId: createArtifactDeploymentUrlInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - repositories + - recipes + - models + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Cloud service provider name + in: path + name: csp_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentUrlResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create artifact version deployment url in org + tags: + - Artifact deployment parameters + /{artifact_type}/{artifact_name}/versions/{version_id}/files: + get: + description: List files of the artifact version in org + operationId: listArtifactFilesInOrg + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Page size + in: query + name: page-size + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 5000 + minLength: 0 + minimum: 1 + type: string + - description: Page number - zero based index + in: query + name: page-number + required: false + schema: + format: UTF-8 + maxLength: 262144 + maximum: 10000 + minLength: 0 + minimum: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactVersionFileListResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: List artifact files in org + tags: + - Artifact Version Files + /{artifact_type}/{artifact_name}/versions/{version_id}/signature: + put: + description: Request to sign artifact version + operationId: signArtifactVersion + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ArtifactDownloadResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + tags: + - ArtifactSigning + /team/{team_name}/{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan: + post: + description: Initiates malwares can for the artifact + operationId: initiateMalwareScan_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Contact email + in: query + name: contact-email + required: false + schema: + format: UTF-8 + maxLength: 320 + minLength: 0 + type: string + - description: Nspect identifier + in: query + name: nspect-id + required: false + schema: + format: UTF-8 + maxLength: 64 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Initiates malwares can for the artifact + tags: + - MalwareScan + /team/{team_name}/{artifact_type}/spec: + post: + description: Create AI Playground for artifactType + operationId: createModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create AI Playground for artifactType + tags: + - AIPlayground + /team/{team_name}/{artifact_type}/{artifact_name}/purge: + delete: + description: Purge Search DB for deleted artifacts + operationId: purgeDeletedArtifact_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Purge Search DB + tags: + - Artifacts + /team/{team_name}/{artifact_type}/{artifact_name}/spec: + get: + description: Get AI Playground for artifactType + operationId: getModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get AI Playground for artifactType + tags: + - AIPlayground + put: + description: Update AI Playground for artifactType + operationId: updateModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update AI Playground for artifactType + tags: + - AIPlayground + delete: + description: Delete AI Playground for artifactType + operationId: deleteModelArtifactsSpec_1 + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete AI Playground for artifactType + tags: + - AIPlayground + /{artifact_type}/{artifact_name}/versions/{version_id}/malware-scan: + post: + description: Initiates malwares can for the artifact + operationId: initiateMalwareScan + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string + - description: Contact email + in: query + name: contact-email + required: false + schema: + format: UTF-8 + maxLength: 320 + minLength: 0 + type: string + - description: Nspect identifier + in: query + name: nspect-id + required: false + schema: + format: UTF-8 + maxLength: 64 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Initiates malwares can for the artifact + tags: + - MalwareScan + /{artifact_type}/spec: + post: + description: Create AI Playground for artifactType + operationId: createModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundCreateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Create AI Playground for artifactType + tags: + - AIPlayground + /{artifact_type}/{artifact_name}/purge: + delete: + description: Purge Search DB for deleted artifacts + operationId: purgeDeletedArtifact + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Artifact name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Purge Search DB + tags: + - Artifacts + /{artifact_type}/{artifact_name}/spec: + get: + description: Get AI Playground for artifactType + operationId: getModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Get AI Playground for artifactType + tags: + - AIPlayground + put: + description: Update AI Playground for artifactType + operationId: updateModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AIPlaygroundResponse' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Update AI Playground for artifactType + tags: + - AIPlayground + delete: + description: Delete AI Playground for artifactType + operationId: deleteModelArtifactsSpec + parameters: + - description: Artifact type + in: path + name: artifact_type + required: true + schema: + enum: + - models + - helm-charts + - endpoints + - agents + - blueprints + - apis + - playbooks + - skills + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + - description: Model name + in: path + name: artifact_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Too many requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + description: Internal Error + summary: Delete AI Playground for artifactType + tags: + - AIPlayground +components: + schemas: + KeyListResponse: + description: Response to list keys request + properties: + encryptionKeys: + items: + $ref: '#/components/schemas/KeyItem' + type: array + type: object + Response: + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + WorkflowStatusUrlResponse: + description: Response containing workflow status URL and ID + properties: + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + statusUrl: + description: URL to check the workflow status + type: string + workflowId: + description: ID of the workflow + type: string + type: object + KeyArtifactListResponse: + description: Response containing a list of artifacts associated with a key + properties: + artifacts: + items: + $ref: '#/components/schemas/ArtifactItem' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + WorkflowStatusResponse: + description: Response containing workflow status information + properties: + cloneStatus: + $ref: '#/components/schemas/CloneStatus' + description: Progress of cloning artifact version files + duration: + description: Wall-clock execution duration as an ISO-8601 duration (e.g. PT1H30M5S, PT0.001S); Omitted while IN_PROGRESS. + type: string + endTime: + description: UTC instant when the workflow reached a closed state; omitted while IN_PROGRESS. + format: date-time + type: string + message: + description: Human-readable message about the workflow status + maxLength: 255 + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + startTime: + description: UTC instant when the workflow execution started. + format: date-time + type: string + status: + description: Current status of the workflow + enum: + - IN_PROGRESS + - COMPLETED + - FAILED + - CANCELED + - TERMINATED + - CONTINUED_AS_NEW + - TIMED_OUT + - UNKNOWN + type: string + workflowType: + description: Workflow type. + enum: + - CLONE + - CUSTOMER_MANAGED_KEY + type: string + required: + - message + - requestStatus + - status + type: object + CollectionListResponse: + description: Response to list collections request + properties: + collections: + items: + $ref: '#/components/schemas/Collection' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionCreateRequest: + description: Properties for the collections to be created + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: organization that built the collection + type: string + category: + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + name: + description: Unique name of the collection + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + ownerName: + description: Name of the user who owns this collection + maxLength: 255 + type: string + publisher: + description: organization that published the collection + maxLength: 255 + type: string + shortDescription: + description: Short description of the collection + maxLength: 255 + type: string + required: + - category + - name + - shortDescription + type: object + CollectionResponse: + description: Response to create collection request + properties: + collection: + $ref: '#/components/schemas/Collection' + description: Collection object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionUpdateRequest: + description: Properties for the collection to update + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: organization that built the collection + type: string + category: + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + ownerName: + description: Name of the user who owns this collection + maxLength: 255 + type: string + publisher: + description: organization that published the collection + maxLength: 255 + type: string + shortDescription: + description: Short description of the collection + maxLength: 255 + type: string + type: object + CollectionPatchRequest: + description: Properties for the collection to patch + properties: + operations: + items: + $ref: '#/components/schemas/CollectionOperation' + maxItems: 100 + maxItems: 100 + type: array + type: object + ArtifactListResponse: + description: Response to list artifacts request + properties: + artifacts: + items: + $ref: '#/components/schemas/Artifact' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + CollectionPublishRequest: + description: Request to publish a collection + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + canGuestPull: + type: boolean + canPublicList: + type: boolean + isPublic: + type: boolean + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + type: object + ArtifactVersionListResponse: + description: Response to list artifact versions request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersions: + items: + $ref: '#/components/schemas/ArtifactVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionResponse: + description: Response to artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionUpdateRequest: + description: Version properties to update + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + description: + description: Description of the artifact version + maxLength: 255 + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + type: object + ModelListResponse: + description: Response to list models request + properties: + models: + items: + $ref: '#/components/schemas/Model' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelCreateRequest: + description: Properties for the models to be created + properties: + application: + description: Application of the model + maxLength: 255 + type: string + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + maxLength: 255 + type: string + description: + description: Description of the model + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + encryptionKey: + $ref: '#/components/schemas/EncryptionKey' + description: Customer Managed Key shard configuration for the model + explainability: + description: Text describing explainability for this model + type: string + framework: + description: Framework used to train this model + maxLength: 255 + type: string + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model + maxLength: 255 + type: string + name: + description: Unique name of the model + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + ownerName: + description: Name of the user who owns this model + maxLength: 255 + type: string + precision: + description: Precision this model was trained with + maxLength: 255 + type: string + privacy: + description: Text describing the privacy for this model + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the repository + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the model + maxLength: 255 + type: string + required: + - framework + - name + - precision + type: object + ModelResponse: + description: Response to create model request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelUpdateRequest: + description: Properties for the model to update + properties: + application: + description: Application of the model + maxLength: 255 + type: string + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + maxLength: 255 + type: string + description: + description: Description of the model + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + explainability: + description: Text describing explainability for this model + type: string + framework: + description: Framework used to train this model + maxLength: 255 + type: string + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model + maxLength: 255 + type: string + ownerName: + description: Name of the user who owns this model + maxLength: 255 + type: string + precision: + description: Precision this model was trained with + maxLength: 255 + type: string + privacy: + description: Text describing the privacy for this model + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the repository + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the model + maxLength: 255 + type: string + type: object + ModelVersionListResponse: + description: Response to list model versions request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersions: + items: + $ref: '#/components/schemas/ModelVersion' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionCreateRequest: + description: Properties for the model version to be created + properties: + accuracyReached: + description: Accuracy this model reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this model was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the model version + maxLength: 255 + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + id: + description: 'Deprecated: Please use version instead. Unique ID of the version' + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + memoryFootprint: + description: Model size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + minimum: 0 + type: integer + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + ownerName: + description: Name of the user who owns this version + maxLength: 255 + type: string + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + pattern: '[^/]+' + type: string + type: object + ModelVersionResponse: + description: Response to create a model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ModelVersionUpdateRequest: + description: Version properties to update + properties: + accuracyReached: + description: Accuracy this model reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this model was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the model version + maxLength: 255 + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + memoryFootprint: + description: Model size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + minimum: 0 + type: integer + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + ownerName: + description: Name of the user who owns this version + maxLength: 255 + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + type: object + ModelVersionFileListResponse: + description: Response to list files for model version request + properties: + model: + $ref: '#/components/schemas/Model' + description: Model object + modelFiles: + items: + $ref: '#/components/schemas/ModelFile' + type: array + modelVersion: + $ref: '#/components/schemas/ModelVersion' + description: Model version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeListResponse: + description: Response to list recipes request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipes: + items: + $ref: '#/components/schemas/Recipe' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeCreateRequest: + description: Properties for the recipe to create + properties: + advanced: + description: Text for describing advanced information + type: string + application: + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + type: string + builtBy: + description: organization that built the recipe + maxLength: 255 + type: string + description: + description: Description of the recipe + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model this recipe produces + maxLength: 255 + type: string + name: + description: Unique name of the recipe + maxLength: 128 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + performance: + description: Text describing performance of the recipe results + type: string + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the recipe + maxLength: 255 + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + setup: + description: Text describing recipe setup + type: string + shortDescription: + description: Short description of the recipe + maxLength: 255 + type: string + trainingFramework: + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + type: string + required: + - application + - modelFormat + - name + - precision + - publicDatasetUsed + - shortDescription + - trainingFramework + type: object + RecipeResponse: + description: Response to recipe request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeUpdateRequest: + description: Properties for the recipe to update + properties: + advanced: + description: Text for describing advanced information + type: string + application: + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + type: string + builtBy: + description: organization that built the recipe + maxLength: 255 + type: string + description: + description: Description of the recipe + type: string + displayName: + description: Display name + maxLength: 64 + minLength: 2 + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + modelFormat: + description: Format of the model this recipe produces + maxLength: 255 + type: string + performance: + description: Text describing performance of the recipe results + type: string + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + type: string + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the recipe + maxLength: 255 + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + relatedModels: + items: + $ref: '#/components/schemas/ModelSimplified' + type: array + setup: + description: Text describing recipe setup + type: string + shortDescription: + description: Short description of the recipe + maxLength: 255 + type: string + trainingFramework: + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + type: string + type: object + RecipeVersionListResponse: + description: Response to list recipe versions request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersions: + items: + $ref: '#/components/schemas/RecipeVersion' + type: array + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionCreateRequest: + description: Properties for the recipe version to be created + properties: + accuracyReached: + description: Accuracy this recipe reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this recipe was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the recipe version + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + id: + description: 'Deprecated: Please use version instead. Unique ID of the version' + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + memoryFootprint: + description: Recipe size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + minimum: 0 + type: integer + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + performance: + description: Text describing performance of the recipe results + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + releaseNotes: + description: Text describing this release + type: string + setup: + description: Text describing recipe setup + type: string + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + pattern: '[^/]+' + type: string + type: object + RecipeVersionResponse: + description: Response to recipe version request + properties: + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + RecipeVersionUpdateRequest: + description: Version properties to update + properties: + accuracyReached: + description: Accuracy this recipe reached + format: float + maximum: 100 + minimum: 0 + type: number + batchSize: + description: Batch size this recipe was trained with + format: int64 + minimum: 0 + type: integer + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the recipe version + type: string + gpuModel: + description: GPU model and memory + maxLength: 255 + type: string + memoryFootprint: + description: Recipe size/memory footprint for inference + maxLength: 255 + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + minimum: 0 + type: integer + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + performance: + description: Text describing performance of the recipe results + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + releaseNotes: + description: Text describing this release + type: string + setup: + description: Text describing recipe setup + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + type: object + RecipeVersionFileListResponse: + description: Response to list files for recipe version request + properties: + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + recipe: + $ref: '#/components/schemas/Recipe' + description: Recipe object + recipeFiles: + items: + $ref: '#/components/schemas/RecipeFile' + type: array + recipeVersion: + $ref: '#/components/schemas/RecipeVersion' + description: Recipe version object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactCreateRequest: + description: Properties for the artifact to create + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + bias: + description: Text describing bias in the model + maxLength: 128000 + type: string + builtBy: + description: organization that built the artifact + maxLength: 255 + type: string + description: + description: Description of the artifact + maxLength: 128000 + type: string + displayName: + description: Display name + maxLength: 128 + minLength: 2 + type: string + explainability: + description: Text describing explainability for this model + maxLength: 128000 + type: string + labels: + items: + maxLength: 255 + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + name: + description: Unique name of the artifact + maxLength: 250 + minLength: 1 + pattern: ^[a-z][a-z\d._-]*$ + type: string + privacy: + description: Text describing the privacy for this model + maxLength: 128000 + type: string + publisher: + description: organization that published the artifact + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + maxLength: 128000 + type: string + shortDescription: + description: Short description of the artifact + maxLength: 255 + type: string + type: object + ArtifactResponse: + description: Response to artifact request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactUpdateRequest: + description: Properties for the artifact to update + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the artifact + maxLength: 255 + type: string + description: + description: Description of the artifact + type: string + displayName: + description: Display name + maxLength: 128 + minLength: 2 + type: string + explainability: + description: Text describing explainability for this model + type: string + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + labelsV2: + items: + type: string + type: array + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + maxLength: 255 + type: string + privacy: + description: Text describing the privacy for this model + type: string + publisher: + description: organization that published the artifact + maxLength: 255 + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the artifact + maxLength: 255 + type: string + type: object + ArtifactCatalogFlags: + description: Artifact Catalog Flags object + properties: + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + isListedToPublic: + description: Flag indicating if artifact is listed and searchable + type: boolean + isPublic: + description: Determines if this artifact is publicly accessible + type: boolean + type: object + DeploymentParametersListResponse: + description: Response to list deployment parameters request + properties: + artifact: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + csp: + description: Cloud Service Provider name + type: string + deploymentParameters: + items: + $ref: '#/components/schemas/DeploymentParameters' + type: array + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + DeploymentParameters: + description: Deployment Artifact Parameters object + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + csp: + description: Cloud Service Provider name + type: string + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersUpdateRequest: + description: Request to update existing deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentParametersCreateRequest: + description: Request to create a new deployment parameters + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + AcceptArtifactLicenseRequest: + description: Request body to accept an org-scoped artifact license. + properties: + licenseId: + description: License identifier to accept (must match a licenseId from the artifact's published licenseTerms). + example: NVIDIA Proprietary + maxLength: 256 + minLength: 1 + pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ + type: string + licenseVersion: + description: License version to accept (must match licenseVersion for that license on the artifact). + example: 1 + maxLength: 128 + minLength: 1 + pattern: ^[a-zA-Z0-9][a-zA-Z0-9\s._+()/:'-]*$ + type: string + required: + - licenseId + - licenseVersion + type: object + UpdateReleaseTypeRequest: + description: Request to update release type of an artifact version + properties: + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + version: + description: Artifact version + type: string + required: + - version + type: object + ArtifactPublishRequest: + description: Request to publish an artifact + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + canGuestPull: + type: boolean + canPublicList: + type: boolean + isPublic: + type: boolean + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + type: object + UpdateArtifactVersionConfigs: + description: Request to publish an artifact + properties: + policy: + items: + enum: + - GOV_READY + - FedRAMP + type: string + type: array + type: object + DeploymentUrlCreateRequest: + description: Request to create a new deployment url + properties: + container: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + cpu: + $ref: '#/components/schemas/DeploymentCpuParameters' + description: Deployment CPU Parameters object + gpu: + $ref: '#/components/schemas/DeploymentGpuParameters' + description: Deployment GPU Parameters object + memory: + $ref: '#/components/schemas/DeploymentMemoryParameters' + description: Deployment Memory Parameters object + model: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + resource: + $ref: '#/components/schemas/DeploymentArtifactParameters' + description: Deployment Artifact Parameters object + storage: + $ref: '#/components/schemas/DeploymentStorageParameters' + description: Deployment Storage Parameters object + type: object + DeploymentUrlResponse: + description: Response to create a new deployment url + properties: + csp: + description: Cloud Service Provider name + type: string + deploymentParameters: + $ref: '#/components/schemas/DeploymentParameters' + description: Deployment Artifact Parameters object + deploymentUrl: + description: Deployment URL + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactVersionFileListResponse: + description: Response to list files for artifact version request + properties: + artifact: + $ref: '#/components/schemas/Artifact' + description: Artifact object + artifactFiles: + items: + $ref: '#/components/schemas/File' + type: array + artifactVersion: + $ref: '#/components/schemas/ArtifactVersion' + description: Artifact version object + paginationInfo: + $ref: '#/components/schemas/PaginationInfo' + description: Pagination Information + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + type: object + ArtifactDownloadResponse: + description: Response body to download a single file of an artifact + properties: + filepath: + description: The filepath of the artifact + type: string + requestStatus: + $ref: '#/components/schemas/RequestStatus' + description: Request status information + url: + description: Presigned url for single file download + type: string + required: + - url + type: object + AIPlaygroundCreateRequest: + description: Request to create a new AI Playground config + properties: + artifactName: + description: Unique name of the model + type: string + attributes: + description: Metadata json string + type: string + nvcfFunctionId: + description: NVCF function id for the model playground + type: string + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground + type: string + openAPISpec: + description: OpenAPI specification for this model + type: string + required: + - artifactName + - nvcfFunctionId + type: object + AIPlaygroundResponse: + description: Request to fetch an AI Playground config + properties: + artifactName: + description: Unique name of the model + type: string + artifactType: + description: ArtifactTypeEnum of the artifact + type: string + attributes: + description: Metadata json string + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + namespace: + description: org/team of the model + type: string + nvcfFunctionId: + description: NVCF function id for the model playground + type: string + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground + type: string + openAPISpec: + description: OpenAPI specification for this model + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + AIPlaygroundUpdateRequest: + description: Request to update an AI Playground config + properties: + attributes: + description: Metadata json string + type: string + nvcfFunctionId: + description: NVCF function id for the model playground + type: string + nvcfInferencePath: + description: NVCF inference path (invocation route) for the model playground + type: string + openAPISpec: + description: OpenAPI specification for this model + type: string + type: object + KeyItem: + description: Key item with ID and create timestamp string + properties: + created: + description: 'The creation timestamp of the key item in ISO-8601 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ.' + example: '2025-04-19T22:30:00.123Z' + format: regex + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the encryption key + maxLength: 255 + type: string + encryptionKeyId: + description: The encryption key identifier in UUID format. + example: 196afcf4-d6c8-4116-aa25-34a718a14f43 + format: regex + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ + type: string + required: + - created + - encryptionKeyId + type: object + RequestStatus: + description: Request status information + properties: + requestId: + description: Request ID + type: string + serverId: + description: Server ID + type: string + statusCode: + description: Describes response status reported by the server. + enum: + - UNKNOWN + - SUCCESS + - UNAUTHORIZED + - PAYMENT_REQUIRED + - FORBIDDEN + - TIMEOUT + - EXISTS + - NOT_FOUND + - INTERNAL_ERROR + - INVALID_REQUEST + - INVALID_REQUEST_VERSION + - INVALID_REQUEST_DATA + - METHOD_NOT_ALLOWED + - CONFLICT + - UNPROCESSABLE_ENTITY + - TOO_MANY_REQUESTS + - INSUFFICIENT_STORAGE + - SERVICE_UNAVAILABLE + type: string + statusDescription: + description: Status description + type: string + type: object + ArtifactItem: + description: Artifact item with name and description + properties: + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + description: + description: Description of the artifact + type: string + displayName: + description: Display name of the artifact + type: string + name: + description: Name of the artifact + type: string + required: + - description + - name + type: object + CloneStatus: + description: Progress of cloning artifact version files + properties: + filesCopied: + description: Number of files copied + format: int64 + type: integer + internalCheckpointStateCleanup: + description: 'Internal-only: When the async clone workflow is completed, this field shows if the internal checkpoint files were successfully cleaned up in the storage - CLEAN if no objects remain (cleanup succeeded or unused), NOT_EMPTY if objects remain, ERROR if verification could not be performed. Omitted when not applicable.' + enum: + - CLEAN + - NOT_EMPTY + - ERROR + type: string + percentageFilesCloned: + description: Percentage of files cloned + format: double + type: number + sizeCopied: + description: Combined file size copied + format: int64 + type: integer + totalFiles: + description: Total files at source + format: int64 + type: integer + totalSize: + description: Combined file size at source + format: int64 + type: integer + type: object + Collection: + description: Collection object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + builtBy: + description: Organization that built the collection + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + category: + enum: + - HEALTHCARE + - SMART_CITIES + - RETAIL + - MANUFACTURING + - SUPERCOMPUTING + - ROBOTICS + - AUTOMOTIVE + - TELECOMMUNICATIONS + - FINANCE + - OIL_AND_GAS + - NATURAL_LANGUAGE_PROCESSING + - AUTOMATIC_SPEECH_RECOGNITION + - INTELLIGENT_VIDEO_ANALYTICS + - OBJECT_DETECTION + - IMAGE_CLASSIFICATION + - ANNOTATION + - IMAGE_SYNTHESIS + - MACHINE_LEARNING + - DEEP_LEARNING + - INFRASTRUCTURE + - HIGH_PERFORMANCE_COMPUTING + - WINDOWS_RTX_ACCELERATED_MODELS + - BEGINNER + - ADVANCED + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the collection + type: string + displayName: + description: Display name + type: string + isPublic: + description: Determines if this collection is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the collection + type: string + orgName: + description: Name of the org that the collection belongs to + type: string + ownerName: + description: Name of the user who owns this version + type: string + policyLabels: + items: + type: string + type: array + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publisher: + description: Organization that published this collection + type: string + shortDescription: + description: Short description of the collection + type: string + size: + description: Total count of collection items + format: int64 + type: integer + teamName: + description: Name of the team that the collection belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + required: + - category + type: object + PaginationInfo: + description: Pagination Information + properties: + index: + description: Page index of results + format: int32 + type: integer + nextPage: + description: Serialized pointer to the next results page. Should be used for fetching next page. Can be empty + type: string + size: + description: Number of results in page + format: int32 + type: integer + totalPages: + description: Total number of pages available + format: int64 + type: integer + totalResults: + description: Total number of results available + format: int64 + type: integer + type: object + ArtifactAttribute: + description: Attribute on the artifact + properties: + key: + maxLength: 255 + pattern: '[a-zA-Z0-9]+' + type: string + value: + maxLength: 255 + type: string + type: object + CollectionOperation: + description: Collection operation object + properties: + operation: + description: Collection operation + maxLength: 255 + type: string + path: + description: Path to a collection item in a scoped format + maxLength: 255 + pattern: ^(/(?!/)([\w- %\.(?!\.)])+)+$ + type: string + type: object + Artifact: + description: Artifact object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + bias: + description: Text describing bias in the artifact + type: string + builtBy: + description: Organization that built the helm chart + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the helm chart + type: string + displayName: + description: Display name + type: string + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact + type: string + explainability: + description: Text describing the explainability for this artifact + type: string + hasSignedVersion: + description: Indicates if the artifact has any signed versions + type: boolean + isFavourite: + description: Flag indicating if helm chart is user's favorite + type: boolean + isPublic: + description: Determines if this helm chart is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionId: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + name: + description: Unique name of the helm chart + type: string + orgName: + description: Name of the org that the helm chart belongs to + type: string + ownerName: + description: Name of the user who owns this version + type: string + policyLabels: + items: + type: string + type: array + privacy: + description: Text describing the privacy for this artifact + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publisher: + description: Organization that published this helm chart + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the artifact + type: string + shortDescription: + description: Short description of the helm chart + type: string + teamName: + description: Name of the team that the helm chart belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + ArtifactVersion: + description: Artifact version object + properties: + attributes: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + createdByUser: + description: Id of the user who created this version + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the version + type: string + id: + description: Unique ID of the version + type: string + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + policy: + items: + type: string + type: array + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the version in bytes + format: int64 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + Model: + description: Model object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + application: + description: Application of the model + type: string + bias: + description: Text describing bias in the model + type: string + builtBy: + description: organization that built the repository + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the model + type: string + displayName: + description: Display name + type: string + encryptionKeyId: + description: ID of the customer managed encryption key associated with this artifact + type: string + explainability: + description: Text describing explainability for this model + type: string + framework: + description: Framework used to train this model + type: string + hasPlayground: + description: indicate if the Model has AI Playground configured + type: boolean + hasSignedVersion: + description: Indicates if the model has any signed versions + type: boolean + isFavourite: + description: Flag indicating if model is user's favorite + type: boolean + isPlaygroundEnabled: + description: indicate if AI Playground is enabled in the catalog + type: boolean + isPublic: + description: Determines if model is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionGpuModel: + description: GPU model and memory used for the latest version + type: string + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + modelFormat: + description: Format of the model + type: string + name: + description: Unique name of the model + type: string + orgName: + description: Name of the org that the model belongs to + type: string + ownerName: + description: Name of model's owner + type: string + policyLabels: + items: + type: string + type: array + precision: + description: Precision this model was trained with + type: string + privacy: + description: Text describing the privacy for this model + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: organization that published the repository + type: string + safetyAndSecurity: + description: Text for describing the safety and security in the model + type: string + shortDescription: + description: Short description of the model + type: string + teamName: + description: Name of the team that the model belongs to + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + versions: + items: + type: string + type: array + type: object + EncryptionKey: + description: Customer Managed Key shard configuration for the model + properties: + description: + description: Description for a new customer key shard + type: string + encryptionKeyId: + description: ID of the existing customer key shard to use + type: string + useExistingKey: + description: Whether to use an existing customer key shard or should a new one be created + type: boolean + required: + - useExistingKey + type: object + LicenseMetadata: + description: License information for the artifact + properties: + configuredLicenseTerms: + $ref: '#/components/schemas/ConfiguredLicenseTerms' + description: License information for the artifact + governingTerms: + description: Comprehensive terms and links related to the license + example:

GOVERNING HOSTING TERMS: Use of the model is governed by the NVIDIA Open Model Agreement.

+ maxLength: 1000 + pattern: ^[\s\S]*$ + type: string + licenseId: + description: License ID + example: NVIDIA proprietary + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + licenseVersion: + description: License version ID + example: v1.0 + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + needsAcceptance: + description: Indicator if user needs to accept this license + type: boolean + type: object + Dataset: + properties: + license: + description: License of the dataset + maxLength: 255 + type: string + link: + description: Link to the dataset + maxLength: 255 + type: string + name: + description: Name of the dataset + maxLength: 255 + type: string + type: object + ModelVersion: + description: Model version object + properties: + accuracyReached: + description: Accuracy this model reached + format: float + type: number + batchSize: + description: Batch size this model was trained with + format: int64 + type: integer + createdByUser: + description: Id of the user who created this model + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the model version + type: string + gpuModel: + description: GPU model and memory + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' + format: int64 + type: integer + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + memoryFootprint: + description: Model size/memory footprint for inference + type: string + numberOfEpochs: + description: Number of epochs this model trained + format: int64 + type: integer + nvcfContainerConfiguration: + $ref: '#/components/schemas/NvcfContainerConfiguration' + description: NVCF container configuration parameters + nvcfDeploymentSpecification: + $ref: '#/components/schemas/NvcfDeploymentSpecification' + description: NVCF deployment specification + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + ownerName: + description: Name of the user who owns this version + type: string + policy: + items: + type: string + type: array + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the model in bytes + format: int64 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + type: string + type: object + CustomMetricGroup: + description: Defines the group of custom metrics. + properties: + attributes: + items: + $ref: '#/components/schemas/CustomMetric' + type: array + name: + maxLength: 255 + type: string + type: object + NvcfContainerConfiguration: + description: NVCF container configuration parameters + properties: + apiBodyFormat: + description: API body format + type: string + containerArgs: + description: Container arguments + type: string + containerEnvironment: + items: + $ref: '#/components/schemas/MetaData' + type: array + containerImage: + description: Container Image + type: string + healthUri: + description: Health URI + type: string + inferencePort: + description: Inference port + type: string + inferenceUrl: + description: Inference url + type: string + models: + items: + $ref: '#/components/schemas/NvcfContainerModel' + type: array + type: object + NvcfDeploymentSpecification: + description: NVCF deployment specification + properties: + gpuCount: + description: GPU count + format: int32 + type: integer + gpuType: + description: GPU type + type: string + instanceType: + description: Instance type + type: string + maxConcurrency: + description: Maximum concurrency + format: int32 + type: integer + type: object + ModelFile: + description: Model file object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the model + maxLength: 1023 + minLength: 1 + type: string + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + type: object + Recipe: + description: Recipe object + properties: + accessType: + enum: + - LISTED + - EXCLUSIVE + - NOT_LISTED + type: string + advanced: + description: Text for describing advanced information + type: string + application: + enum: + - CLASSIFICATION + - OBJECT_DETECTION + - SEGMENTATION + - TRANSLATION + - TEXT_TO_SPEECH + - RECOMMENDER + - SENTIMENT + - NLP + - KUBEFLOW_PIPELINE + - OTHER + - SPEAKER_VERIFICATION + - PUNCTUATION_AND_CAPITALIZATION + - DIALOG_STATE_TRACKING + - SPEAKER_DIARIZATION + - SPEAKER_RECOGNITION + - SPEECH_SYNTHESIS + - VOICE_ACTIVITY_DETECTION + - SPEECH_RECOGNITION + - LANGUAGE_MODELING + - NAMED_ENTITY_RECOGNITION + - TEXT_CLASSIFICATION + - TEXT_PROCESSING + - QUESTION_ANSWERING + - CONTENT_GENERATION + type: string + builtBy: + description: Organization that built the recipe + type: string + canGuestDownload: + description: Indicates if a guest user can download + type: boolean + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the recipe + type: string + displayName: + description: Display name + type: string + hasSignedVersion: + description: Indicates if the recipe has any signed versions + type: boolean + isFavourite: + description: Flag indicating if recipe is user's favorite + type: boolean + isPublic: + description: Determines if this recipe is publicly accessible + type: boolean + isReadOnly: + description: indicate if current user has read only permissions (deprecated) + type: boolean + labels: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + latestVersionId: + description: 'Deprecated: Please use latestVersionIdStr instead. ID of the latest version' + format: int64 + type: integer + latestVersionIdStr: + description: ID of the latest version + type: string + latestVersionSizeInBytes: + description: Size of the latest version in bytes + format: int64 + type: integer + licenseTerms: + items: + $ref: '#/components/schemas/LicenseMetadata' + type: array + logo: + description: URL for the logo image + type: string + modelFormat: + description: Format of the model this recipe produces + type: string + name: + description: Unique name of the recipe + type: string + orgName: + description: Name of the org that the recipe belongs to + type: string + performance: + description: Text describing performance of the recipe results + type: string + policyLabels: + items: + type: string + type: array + precision: + enum: + - FP16 + - FP32 + - INT8 + - FPBOTH + - OTHER + - ALL + type: string + productNames: + items: + pattern: ^[a-zA-Z]+[a-zA-Z0-9-.+_\s]+ + type: string + type: array + publicDatasetUsed: + $ref: '#/components/schemas/Dataset' + publisher: + description: Organization that published this recipe + type: string + quickStartGuide: + description: Text with a guide to getting started + type: string + relatedModels: + items: + $ref: '#/components/schemas/Model' + type: array + setup: + description: Text describing recipe setup + type: string + shortDescription: + description: Short description of the recipe + type: string + teamName: + description: Name of the team that the recipe belongs to + type: string + trainingFramework: + enum: + - TensorFlow + - Caffe2 + - CNTK + - Torch + - PyTorch + - MXNet + - Keras + - Other + - TransferLearningToolkit + - TensorFlow2 + type: string + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + ModelSimplified: + description: Model object + properties: + name: + description: Unique name of the model + type: string + orgName: + description: Name of the org that the model belongs to + type: string + teamName: + description: Name of the team that the model belongs to + type: string + required: + - name + - orgName + type: object + RecipeVersion: + description: Recipe version object + properties: + accuracyReached: + description: Accuracy this recipe reached + format: float + type: number + batchSize: + description: Batch size this recipe was trained with + format: int64 + type: integer + createdByUser: + description: Id of the user who created this recipe + type: string + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + customMetrics: + items: + $ref: '#/components/schemas/CustomMetricGroup' + type: array + description: + description: Description of the recipe version + type: string + gpuModel: + description: GPU model and memory + type: string + id: + description: 'Deprecated: Please use versionId instead. Unique ID of the version' + format: int64 + type: integer + isSigned: + description: Indicates if the version is signed + type: boolean + malwareScanDate: + description: Scan date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + malwareScanStatus: + description: Malware scan status + enum: + - NOT_SCANNED + - IN_PROGRESS + - CLEAN + - SUSPICIOUS + - FAILED + - MALICIOUS + type: string + memoryFootprint: + description: recipe size/memory footprint for inference + type: string + numberOfEpochs: + description: Number of epochs this recipe trained + format: int64 + type: integer + otherContents: + items: + $ref: '#/components/schemas/ArtifactAttribute' + type: array + performance: + description: Text describing performance of the recipe results + type: string + policy: + items: + type: string + type: array + quickStartGuide: + description: Text with a guide to getting started + type: string + releaseNotes: + description: Text describing this release + type: string + releaseType: + description: Release type enum for the artifact version in the product lifecycle. + enum: + - BETA + - GA + - EA + - FEATURE + - PRODUCTION + - LTSB + type: string + setup: + description: Text describing recipe setup + type: string + status: + description: Version status + enum: + - UPLOAD_PENDING + - UPLOAD_COMPLETE + type: string + storageVersion: + description: The storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. + type: string + totalFileCount: + description: Total file count + format: int64 + type: integer + totalSizeInBytes: + description: Total size of the recipe in bytes + format: int64 + type: integer + versionId: + description: Unique version id. Please use this instead of 'id' + maxLength: 255 + type: string + type: object + RecipeFile: + description: Recipe file object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the recipe + maxLength: 1023 + minLength: 1 + type: string + sha256_base64: + description: Base64 encoded sha256 hash of the artifact file + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + type: object + DeploymentArtifactParameters: + description: Deployment Artifact Parameters object + properties: + artifactType: + description: Artifact type + enum: + - MODEL + - MODEL_SCRIPT + - HELM_CHART + - REPOSITORY + - COLLECTION + - ENDPOINT + - BLUEPRINT + - PLAYBOOK + - AGENT + - API + - SKILL + type: string + displayName: + description: Display name of the artifact + type: string + filePath: + description: Path to a file in an artifact version + type: string + name: + description: Unique name of the artifact + type: string + orgName: + description: Name of the org that the artifact belongs to + type: string + teamName: + description: Name of the team that the artifact belongs to + type: string + versionId: + description: ID of the version or tag + type: string + required: + - name + - orgName + type: object + DeploymentCpuParameters: + description: Deployment CPU Parameters object + properties: + count: + description: Total count of CPUs + format: int64 + type: integer + type: object + DeploymentGpuParameters: + description: Deployment GPU Parameters object + properties: + count: + description: Total count of GPUs + format: int64 + type: integer + type: + description: GPU Type + type: string + type: object + DeploymentMemoryParameters: + description: Deployment Memory Parameters object + properties: + capacityInGB: + description: Capacity in GB + format: int64 + type: integer + type: object + DeploymentStorageParameters: + description: Deployment Storage Parameters object + properties: + capacityInGB: + description: Capacity in GB + format: int64 + type: integer + type: object + File: + description: File object + properties: + createdDate: + description: Creation date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + description: + description: Description of the file + type: string + path: + description: Relative file path from the root of the object + maxLength: 1023 + minLength: 1 + type: string + sizeInBytes: + description: Size of the file in bytes + format: int64 + minimum: 0 + type: integer + updatedDate: + description: Updated date in ISO-8601 format + pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z + type: string + type: object + ConfiguredLicenseTerms: + description: License information for the artifact + properties: + download: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact + hosting: + $ref: '#/components/schemas/ConfiguredLicenseTerm' + description: License information for the artifact + type: object + CustomMetric: + description: Custom metrics + properties: + key: + maxLength: 255 + type: string + value: + maxLength: 255 + type: string + type: object + MetaData: + properties: + key: + maxLength: 255 + type: string + value: + maxLength: 255 + type: string + type: object + NvcfContainerModel: + description: Models version object metadata + properties: + name: + description: Model name + type: string + uri: + description: Model URI + type: string + version: + description: Model version + type: string + type: object + ConfiguredLicenseTerm: + description: License information for the artifact + properties: + artifactType: + description: Artifact type + example: model + maxLength: 15 + pattern: ^[\s\S]*$ + type: string + generatedHtml: + description: Generated html + example:

GOVERNING HOSTING TERMS: ...

+ maxLength: 9999 + pattern: ^[\s\S]*$ + type: string + tags: + items: + $ref: '#/components/schemas/LicenseTag' + type: array + type: object + LicenseTag: + description: License tag information for individual term + properties: + category: + description: Category of the tag + example: terms + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + key: + description: Key identifier for the tag + example: nv-open-model + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + label: + description: License Label + example: NVIDIA Open Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + tag: + description: License tag name + example: Model Agreement + maxLength: 100 + pattern: ^[\s\S]*$ + type: string + url: + description: Link to the hosted license + example: https://www.nvidia.com/.../nvidia-open-model-agreement/ + maxLength: 1000 + pattern: ^[\s\S]*$ + type: string + type: object +servers: + - url: https://api.ngc.nvidia.com diff --git a/tests/integration/mock_nvidia_server.mjs b/tests/integration/mock_nvidia_server.mjs new file mode 100644 index 0000000..58b45ac --- /dev/null +++ b/tests/integration/mock_nvidia_server.mjs @@ -0,0 +1,369 @@ +#!/usr/bin/env node + +// Mock NGC + NVCF API for integration-testing the generated nvidia provider +// without an account. One HTTP server plays both hosts (api.ngc.nvidia.com +// and api.nvcf.nvidia.com - the test registry points both at it; routing +// is by path) and serves canned JSON in the wire shapes the definitions and +// the ngcsdk data classes declare: +// +// NGC core {: [...], paginationInfo: {index, size, totalPages, +// totalResults}, requestStatus} list envelopes with zero-based +// page-number / page-size paging; {: {...}, +// requestStatus} entity envelopes; {requestStatus} for writes +// without a body; camelCase properties; kebab-case query +// parameters +// catalog the same envelopes without auth for public artifacts; a bare +// JSON array for /v2/gpus (wire-proven 2026-07-14) +// NVCF {functions: [...]} / {function: {...}} envelopes on +// api.ngc.nvidia.com; queues, assets and the HTTP-polling +// invocation (202 + NVCF-REQID, then the function's own +// response body on the status poll) on api.nvcf.nvidia.com +// +// Every request outside the public catalog must carry +// `Authorization: Bearer ` or it is rejected 401 (the NGC +// error envelope; an empty body on the NVCF host) - this proves the +// provider's bearer wiring (NGC_API_KEY). +// +// Two organizations are served: ORG_A (what NGC_ORG resolves to in the +// tests) and ORG_B (to prove a WHERE org_name value beats the environment); +// any other org is 404. Mutable in-memory stores make the registry model, +// NVCF function/version, authorization and deployment lifecycles +// round-trip realistically. +// +// Exports startMockServer() for the test runner; also runnable standalone: +// node tests/integration/mock_nvidia_server.mjs [port] + +import http from 'http'; +import { URL } from 'url'; + +export const EXPECTED_TOKEN = 'nvapi-mock0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEF'; +export const ORG_A = 'mockorg0001'; +export const ORG_B = 'mockorg0002'; +export const TEAM = 'mockteam'; +export const FUNCTION_ID = 'f1a2b3c4-0000-4000-8000-000000000001'; +export const VERSION_ID = 'a1b2c3d4-0000-4000-8000-000000000001'; +export const REQUEST_ID = 'r1a2b3c4-0000-4000-8000-000000000001'; +export const NCA_ID = 'nca-mock-0001'; + +const ts = '2026-08-01T02:03:04.000Z'; +let counter = 0; +const newId = (prefix) => `${prefix}${String(++counter).padStart(4, '0')}-0000-4000-8000-000000000000`.slice(0, 36); + +function requestStatus() { + return { statusCode: 'SUCCESS', statusDescription: 'Request successful', requestId: newId('req'), serverId: 'mock' }; +} + +// --------------------------------------------------------------------------- +// fixtures +// --------------------------------------------------------------------------- + +function orgObj(name, i) { + return { id: 1000 + i, name, displayName: `Mock Org ${i}`, description: 'mock organization', type: 'ENTERPRISE', country: 'AU', isInternal: false, isDatasetServiceEnabled: false, orgOwner: { email: 'owner@example.com', fullName: 'Mock Owner' } }; +} +const ORGS = [ORG_A, ORG_B, 'mockorg0003', 'mockorg0004', 'mockorg0005'].map((n, i) => orgObj(n, i + 1)); + +function userObj(id, email, name, roles = ['REGISTRY_READ']) { + return { id, email, name, isActive: true, createdDate: ts, updatedDate: ts, starfleetId: `sf-${id}`, roles: [{ org: { name: ORG_A }, orgRoles: roles }] }; +} +const USERS = [userObj(1, 'alice@example.com', 'Alice'), userObj(2, 'bob@example.com', 'Bob', ['REGISTRY_READ', 'REGISTRY_USER'])]; + +function teamObj(name, i) { + return { id: 200 + i, name, description: `mock team ${i}`, isDeleted: false }; +} +const TEAMS = [teamObj(TEAM, 1), teamObj('mockteam2', 2)]; + +function modelObj(org, name, extra = {}) { + return { + name, displayName: `Mock ${name}`, orgName: org, application: 'Inference', framework: 'PyTorch', precision: 'FP16', + shortDescription: 'mock model', description: 'a mock model', createdDate: ts, updatedDate: ts, latestVersionIdStr: '1.0', + latestVersionSizeInBytes: 1024, isPublic: false, canGuestDownload: false, labels: ['mock'], ...extra + }; +} +// the wire carries a numeric id and the string versionId ("1.0"); the SDK +// documents versionId as the one to use +function modelVersionObj(versionId, id) { + return { id, versionId, createdDate: ts, updatedDate: ts, status: 'UPLOAD_COMPLETE', totalFileCount: 1, totalSizeInBytes: 1024, description: 'mock version', gpuModel: 'A100', framework: 'PyTorch' }; +} + +function functionObj(id, versionId, name, extra = {}) { + return { + id, ncaId: NCA_ID, versionId, name, status: 'INACTIVE', inferenceUrl: '/v1/infer', inferencePort: 8000, healthUri: '/health', + containerImage: 'nvcr.io/mock/echo:latest', apiBodyFormat: 'CUSTOM', functionType: 'DEFAULT', createdAt: ts, activeInstances: [], + tags: ['mock'], ...extra + }; +} +function clusterGroupObj(id, name, gpus) { + return { + id, name, ncaId: NCA_ID, authorizedNcaIds: [NCA_ID], + gpus: gpus.map((g) => ({ name: g, instanceTypes: [{ name: `GCP.GPU.${g}_1x`, description: `1x ${g}`, default: true }] })), + clusters: [{ id: `${id}-c1`, name: `${name}-cluster-1`, k8sVersion: '1.30' }] + }; +} +const CLUSTER_GROUPS = [clusterGroupObj('cg-0001', 'GFN', ['L40', 'L40S']), clusterGroupObj('cg-0002', 'GCP', ['H100', 'A100'])]; + +function gpuObj(displayName, pciDeviceId, memory) { + return { displayName, pciDeviceId, pciVendorId: '10DE', pciSubsystemDeviceId: '0000', memorySizeGb: memory, formFactor: 'SXM', cudaMajorVersion: '12', cudaMinorVersion: '4', gpuCounts: ['1', '2', '4', '8'], labelName: displayName.toLowerCase(), createdAt: ts, updatedAt: ts }; +} +const GPUS = [gpuObj('A100', '20B2', 80), gpuObj('H100', '2330', 80), gpuObj('L40S', '26B9', 48)]; + +const CATALOG_MODELS = [modelObj('nvidia', 'llama-3.1-8b-instruct', { isPublic: true, canGuestDownload: true }), modelObj('nvidia', 'nemotron-4-340b', { isPublic: true, canGuestDownload: true })]; + +// mutable stores +const state = { + models: new Map([[ORG_A, new Map([['resnet50', modelObj(ORG_A, 'resnet50')], ['bert-base', modelObj(ORG_A, 'bert-base')]])], [ORG_B, new Map([['whisper', modelObj(ORG_B, 'whisper')]])]]), + teamModels: new Map([[`${ORG_A}/${TEAM}`, new Map([['team-model', modelObj(ORG_A, 'team-model', { teamName: TEAM })]])]]), + functions: new Map([[FUNCTION_ID, new Map([[VERSION_ID, functionObj(FUNCTION_ID, VERSION_ID, 'mock-echo', { status: 'ACTIVE' })]])]]), + authorizations: new Map([[FUNCTION_ID, [{ ncaId: 'nca-partner-0001' }]]]), + deployments: new Map(), + pollStatus: new Map() +}; + +// --------------------------------------------------------------------------- +// helpers +// --------------------------------------------------------------------------- + +function send(res, code, body, headers = {}) { + const payload = body === undefined ? '' : (typeof body === 'string' ? body : JSON.stringify(body)); + res.writeHead(code, { 'Content-Type': 'application/json', ...headers }); + res.end(payload); +} +function ngcError(res, code, statusCode, message) { + send(res, code, { requestStatus: { statusCode, statusDescription: message, requestId: newId('req') } }); +} +function readBody(req) { + return new Promise((resolve) => { + let data = ''; + req.on('data', (c) => { data += c; }); + req.on('end', () => { + if (!data) return resolve({}); + try { resolve(JSON.parse(data)); } catch { resolve({ _raw: data }); } + }); + }); +} + +// zero-based page-number / page-size paging with the NGC paginationInfo +// envelope; defaultPageSize simulates the server-side page cap so +// pagination-aware clients must walk index/totalPages +function page(items, url, defaultPageSize = 2) { + const size = parseInt(url.searchParams.get('page-size') || '0', 10) || defaultPageSize; + const index = parseInt(url.searchParams.get('page-number') || '0', 10) || 0; + const totalPages = Math.max(1, Math.ceil(items.length / size)); + return { items: items.slice(index * size, index * size + size), paginationInfo: { index, size, totalPages, totalResults: items.length } }; +} +function listEnvelope(key, items, url) { + const { items: pageItems, paginationInfo } = page(items, url); + return { [key]: pageItems, paginationInfo, requestStatus: requestStatus() }; +} + +function isPublicPath(p) { + return /^\/v2\/(models|resources|recipes|collections|gpus|helm-charts|containers)(\/|$)/.test(p); +} + +// --------------------------------------------------------------------------- +// routes +// --------------------------------------------------------------------------- + +async function handle(req, res, log) { + const url = new URL(req.url, 'http://localhost'); + const p = url.pathname; + const m = req.method; + const body = ['POST', 'PUT', 'PATCH', 'DELETE'].includes(m) ? await readBody(req) : null; + log.push({ method: m, path: p, query: Object.fromEntries(url.searchParams), authorization: req.headers['authorization'] || '', contentType: req.headers['content-type'] || '', body }); + + const auth = req.headers['authorization'] || ''; + const authed = auth === `Bearer ${EXPECTED_TOKEN}`; + if (!authed && !isPublicPath(p)) { + if (p.startsWith('/v2/nvcf/')) return send(res, 401, undefined); + return ngcError(res, 401, 'UNAUTHORIZED', 'Authentication required'); + } + + let x; + + // ----------------------------------------------------------- orgs (kas) + if (m === 'GET' && p === '/v2/orgs') return send(res, 200, listEnvelope('organizations', ORGS, url)); + if ((x = p.match(/^\/v2\/orgs\/([^/]+)$/)) && m === 'GET') { + const org = ORGS.find((o) => o.name === x[1]); + return org ? send(res, 200, { organizations: org, requestStatus: requestStatus() }) : ngcError(res, 404, 'NOT_FOUND', `org ${x[1]} not found`); + } + if (m === 'GET' && p === '/v2/users/me') return send(res, 200, { user: USERS[0], userRoles: [{ org: { name: ORG_A }, orgRoles: ['REGISTRY_READ'] }], ncaRole: 'MEMBER', requestStatus: requestStatus() }); + if ((x = p.match(/^\/v2\/org\/([^/]+)\/users$/)) && m === 'GET') { + if (![ORG_A, ORG_B].includes(x[1])) return ngcError(res, 404, 'NOT_FOUND', `org ${x[1]} not found`); + return send(res, 200, listEnvelope('users', USERS, url)); + } + if ((x = p.match(/^\/v3\/orgs\/([^/]+)\/users\/([^/]+)$/)) && m === 'GET') { + const u = USERS.find((u) => u.email === x[2] || String(u.id) === x[2]); + return u ? send(res, 200, { user: u, requestStatus: requestStatus() }) : ngcError(res, 404, 'NOT_FOUND', 'user not found'); + } + if ((x = p.match(/^\/v2\/org\/([^/]+)\/teams$/)) && m === 'GET') return send(res, 200, listEnvelope('teams', TEAMS, url)); + if ((x = p.match(/^\/v2\/org\/([^/]+)\/teams\/([^/]+)$/)) && m === 'GET') { + const t = TEAMS.find((t) => t.name === x[2]); + return t ? send(res, 200, { team: t, requestStatus: requestStatus() }) : ngcError(res, 404, 'NOT_FOUND', 'team not found'); + } + if ((x = p.match(/^\/v2\/org\/([^/]+)\/team\/([^/]+)\/users$/)) && m === 'GET') return send(res, 200, listEnvelope('users', USERS.slice(0, 1), url)); + + // --------------------------------------------------- private registry + if ((x = p.match(/^\/v2\/org\/([^/]+)\/team\/([^/]+)\/models$/)) && m === 'GET') { + const store = state.teamModels.get(`${x[1]}/${x[2]}`) || new Map(); + return send(res, 200, listEnvelope('models', [...store.values()], url)); + } + if ((x = p.match(/^\/v2\/org\/([^/]+)\/models$/))) { + const store = state.models.get(x[1]); + if (!store) return ngcError(res, 404, 'NOT_FOUND', `org ${x[1]} not found`); + if (m === 'GET') return send(res, 200, listEnvelope('models', [...store.values()], url)); + if (m === 'POST') { + const name = body?.name; + if (!name || !body.framework || !body.precision) return ngcError(res, 400, 'BAD_REQUEST', 'name, framework and precision are required'); + const model = modelObj(x[1], name, { displayName: body.displayName || name, framework: body.framework, precision: body.precision, shortDescription: body.shortDescription || '', application: body.application || '' }); + store.set(name, model); + return send(res, 200, { model, requestStatus: requestStatus() }); + } + } + if ((x = p.match(/^\/v2\/org\/([^/]+)\/models\/([^/]+)$/))) { + const store = state.models.get(x[1]); + const model = store?.get(x[2]); + if (!model) return ngcError(res, 404, 'NOT_FOUND', `model ${x[2]} not found`); + if (m === 'GET') return send(res, 200, { model, requestStatus: requestStatus() }); + if (m === 'PATCH') { + Object.assign(model, body, { updatedDate: '2026-08-02T00:00:00.000Z' }); + return send(res, 200, { model, requestStatus: requestStatus() }); + } + } + if ((x = p.match(/^\/v2\/org\/([^/]+)\/models\/([^/]+)\/versions$/)) && m === 'GET') { + const model = state.models.get(x[1])?.get(x[2]); + if (!model) return ngcError(res, 404, 'NOT_FOUND', 'model not found'); + const { items, paginationInfo } = page([modelVersionObj('1.0', 101), modelVersionObj('1.1', 102)], url); + return send(res, 200, { model, modelVersions: items, paginationInfo, requestStatus: requestStatus() }); + } + if ((x = p.match(/^\/v2\/org\/([^/]+)\/models\/([^/]+)\/versions\/([^/]+)$/)) && m === 'GET') { + const model = state.models.get(x[1])?.get(x[2]); + if (!model) return ngcError(res, 404, 'NOT_FOUND', 'model not found'); + return send(res, 200, { model, modelVersion: modelVersionObj(x[3], x[3] === '1.1' ? 102 : 101), requestStatus: requestStatus() }); + } + // generic artifact delete (typed models have no DELETE - deletion rides + // /v2/org/{org}/{artifact_type}/{artifact_name}) + if ((x = p.match(/^\/v2\/org\/([^/]+)\/([^/]+)\/([^/]+)$/)) && m === 'DELETE' && x[2] === 'models') { + const store = state.models.get(x[1]); + if (!store?.has(x[3])) return ngcError(res, 404, 'NOT_FOUND', `model ${x[3]} not found`); + store.delete(x[3]); + return send(res, 200, { requestStatus: requestStatus() }); + } + + // ------------------------------------------------------------- catalog + if (m === 'GET' && p === '/v2/models') return send(res, 200, listEnvelope('models', CATALOG_MODELS, url)); + if ((x = p.match(/^\/v2\/models\/([^/]+)\/([^/]+)$/)) && m === 'GET') { + const model = CATALOG_MODELS.find((mm) => mm.orgName === x[1] && mm.name === x[2]); + return model ? send(res, 200, { model, requestStatus: requestStatus() }) : ngcError(res, 404, 'NOT_FOUND', 'model not found'); + } + if (m === 'GET' && p === '/v2/gpus') return send(res, 200, GPUS); + if (m === 'GET' && p === '/v2/collections') return send(res, 200, listEnvelope('collections', [{ name: 'nemo', orgName: 'nvidia', displayName: 'NeMo', category: 'Framework', createdDate: ts }], url)); + + // --------------------------------------------- NVCF management (ngc host) + if (m === 'GET' && p === '/v2/nvcf/functions') { + const all = [...state.functions.values()].flatMap((versions) => [...versions.values()]); + return send(res, 200, { functions: all }); + } + if (m === 'GET' && p === '/v2/nvcf/functions/ids') return send(res, 200, { functionIds: [...state.functions.keys()] }); + if (m === 'POST' && p === '/v2/nvcf/functions') { + if (!body?.name || !body?.inferenceUrl) return send(res, 400, { type: 'about:blank', title: 'Bad Request', detail: 'name and inferenceUrl are required' }); + const id = newId('fn'); + const versionId = newId('ver'); + const fn = functionObj(id, versionId, body.name, { inferenceUrl: body.inferenceUrl, containerImage: body.containerImage || null, helmChart: body.helmChart || null, apiBodyFormat: body.apiBodyFormat || 'PREDICT_V2', status: 'INACTIVE' }); + state.functions.set(id, new Map([[versionId, fn]])); + return send(res, 200, { function: fn }); + } + if ((x = p.match(/^\/v2\/nvcf\/functions\/([^/]+)\/versions$/))) { + const versions = state.functions.get(x[1]); + if (!versions) return send(res, 404, { type: 'about:blank', title: 'Not Found', detail: `function ${x[1]} not found` }); + if (m === 'GET') return send(res, 200, { functions: [...versions.values()] }); + if (m === 'POST') { + const versionId = newId('ver'); + const first = [...versions.values()][0]; + const fn = functionObj(x[1], versionId, first.name, { inferenceUrl: body?.inferenceUrl || first.inferenceUrl, containerImage: body?.containerImage || first.containerImage }); + versions.set(versionId, fn); + return send(res, 200, { function: fn }); + } + } + if ((x = p.match(/^\/v2\/nvcf\/functions\/([^/]+)\/versions\/([^/]+)$/))) { + const fn = state.functions.get(x[1])?.get(x[2]); + if (!fn) return send(res, 404, { type: 'about:blank', title: 'Not Found', detail: 'function version not found' }); + if (m === 'GET') return send(res, 200, { function: fn }); + if (m === 'PUT') { Object.assign(fn, body || {}); return send(res, 200, { function: fn }); } + if (m === 'DELETE') { + state.functions.get(x[1]).delete(x[2]); + if (state.functions.get(x[1]).size === 0) state.functions.delete(x[1]); + return send(res, 204, undefined); + } + } + if ((x = p.match(/^\/v2\/nvcf\/authorizations\/functions\/([^/]+)(\/versions\/([^/]+))?(\/add|\/remove)?$/))) { + if (!state.functions.has(x[1])) return send(res, 404, { type: 'about:blank', title: 'Not Found', detail: 'function not found' }); + const parties = state.authorizations.get(x[1]) || []; + const dto = () => ({ id: x[1], ncaId: NCA_ID, versionId: x[3] || VERSION_ID, authorizedParties: state.authorizations.get(x[1]) || [] }); + if (m === 'GET' && !x[2]) return send(res, 200, { functions: [dto()] }); + if (m === 'GET') return send(res, 200, { function: dto() }); + if (m === 'PATCH' && x[4] === '/add') { state.authorizations.set(x[1], [...parties, body.authorizedParty]); return send(res, 200, { function: dto() }); } + if (m === 'PATCH' && x[4] === '/remove') { state.authorizations.set(x[1], parties.filter((a) => a.ncaId !== body.authorizedParty?.ncaId)); return send(res, 200, { function: dto() }); } + if (m === 'POST') { state.authorizations.set(x[1], body.authorizedParties || []); return send(res, 200, { function: dto() }); } + if (m === 'DELETE') { state.authorizations.set(x[1], []); return send(res, 200, { function: dto() }); } + } + if (m === 'GET' && p === '/v2/nvcf/clusterGroups') return send(res, 200, { clusterGroups: CLUSTER_GROUPS }); + if ((x = p.match(/^\/v2\/nvcf\/deployments\/functions\/([^/]+)\/versions\/([^/]+)$/))) { + const fn = state.functions.get(x[1])?.get(x[2]); + if (!fn) return send(res, 404, { type: 'about:blank', title: 'Not Found', detail: 'function version not found' }); + const key = `${x[1]}/${x[2]}`; + if (m === 'POST') { + const dep = { deploymentId: newId('dep'), functionId: x[1], functionVersionId: x[2], functionName: fn.name, functionStatus: 'DEPLOYING', ncaId: NCA_ID, deploymentSpecifications: body?.deploymentSpecifications || [], createdAt: ts, lastUpdatedAt: ts }; + state.deployments.set(key, dep); + fn.status = 'DEPLOYING'; + return send(res, 200, { deployment: dep }); + } + const dep = state.deployments.get(key); + if (!dep) return send(res, 404, { type: 'about:blank', title: 'Not Found', detail: 'no deployment for this function version' }); + if (m === 'GET') return send(res, 200, { deployment: dep }); + if (m === 'PUT') { dep.deploymentSpecifications = body?.deploymentSpecifications || dep.deploymentSpecifications; dep.lastUpdatedAt = '2026-08-02T00:00:00.000Z'; return send(res, 200, { deployment: dep }); } + if (m === 'DELETE') { state.deployments.delete(key); fn.status = 'INACTIVE'; return send(res, 200, { function: fn }); } + } + if ((x = p.match(/^\/v2\/nvcf\/deployments\/([^/]+)$/)) && m === 'GET') { + const dep = [...state.deployments.values()].find((d) => d.deploymentId === x[1]); + return dep ? send(res, 200, { deployment: dep }) : send(res, 404, { type: 'about:blank', title: 'Not Found', detail: 'deployment not found' }); + } + + // ------------------------------------------ NVCF queues / invocation (nvcf host) + if ((x = p.match(/^\/v2\/nvcf\/queues\/functions\/([^/]+)$/)) && m === 'GET') { + const versions = state.functions.get(x[1]); + if (!versions) return send(res, 404, undefined); + return send(res, 200, { functionId: x[1], queues: [...versions.values()].map((fn) => ({ functionVersionId: fn.versionId, functionName: fn.name, functionStatus: fn.status, queueDepth: 0 })) }); + } + if ((x = p.match(/^\/v2\/nvcf\/queues\/([^/]+)\/position$/)) && m === 'GET') return send(res, 200, { functionId: FUNCTION_ID, functionVersionId: VERSION_ID, positionInQueue: 0 }); + if ((x = p.match(/^\/v2\/nvcf\/pexec\/functions\/([^/]+)(\/versions\/([^/]+))?$/)) && m === 'POST') { + if (!state.functions.has(x[1])) return send(res, 404, undefined); + const reqId = newId('inv'); + state.pollStatus.set(reqId, { input: body, done: false }); + return send(res, 202, {}, { 'NVCF-REQID': reqId, 'NVCF-STATUS': 'pending-evaluation' }); + } + if ((x = p.match(/^\/v2\/nvcf\/pexec\/status\/([^/]+)$/)) && m === 'GET') { + const st = state.pollStatus.get(x[1]) || (x[1] === REQUEST_ID ? { input: { prompt: 'hi' }, done: true } : null); + if (!st) return send(res, 404, undefined); + return send(res, 200, { echo: st.input, result: 'ok' }, { 'NVCF-REQID': x[1], 'NVCF-STATUS': 'fulfilled' }); + } + if (m === 'GET' && p === '/v2/nvcf/assets') return send(res, 200, { assets: [{ assetId: 'asset-0001', description: 'mock asset', contentType: 'image/png', size: 1024, createdAt: ts }] }); + + if (p.startsWith('/v2/nvcf/')) return send(res, 404, { type: 'about:blank', title: 'Not Found', detail: `no mock route for ${m} ${p}` }); + return ngcError(res, 404, 'NOT_FOUND', `no mock route for ${m} ${p}`); +} + +export function startMockServer(port = 0) { + const log = []; + const server = http.createServer((req, res) => { + handle(req, res, log).catch((err) => send(res, 500, { error: err.message })); + }); + return new Promise((resolve) => { + server.listen(port, '127.0.0.1', () => resolve({ server, port: server.address().port, log, state })); + }); +} + +// standalone mode +if (process.argv[1]?.endsWith('mock_nvidia_server.mjs')) { + const { port } = await startMockServer(parseInt(process.argv[2] || '18081', 10)); + console.log(`mock NGC + NVCF API listening on http://127.0.0.1:${port}`); + console.log(`expects: Authorization: Bearer ${EXPECTED_TOKEN}; orgs ${ORG_A}, ${ORG_B}; team ${TEAM}; function ${FUNCTION_ID} / version ${VERSION_ID}`); +} diff --git a/tests/integration/probe.mjs b/tests/integration/probe.mjs new file mode 100644 index 0000000..75c72dc --- /dev/null +++ b/tests/integration/probe.mjs @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +// Developer probe: start the mock NGC / NVCF server, materialise the test +// registry (as run_integration_tests.mjs does) and run the SQL statements +// given on the command line, printing stackql's stdout/stderr and the wire +// calls the mock saw for each. Handy when a binding misbehaves. +// +// Usage: node tests/integration/probe.mjs "SELECT ..." "EXEC ..." [--env KEY=VALUE ...] [--unset KEY] + +import { spawn } from 'child_process'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { startMockServer, EXPECTED_TOKEN, ORG_A } from './mock_nvidia_server.mjs'; +import { buildTestRegistry, findStackql } from './registry.mjs'; + +const here = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(here, '..', '..'); + +const args = process.argv.slice(2); +const sqls = []; +const envOverrides = {}; +for (let i = 0; i < args.length; i++) { + if (args[i] === '--env') { const [k, ...v] = args[++i].split('='); envOverrides[k] = v.join('='); } + else if (args[i] === '--unset') { envOverrides[args[++i]] = undefined; } + else sqls.push(args[i]); +} + +const { server, port, log } = await startMockServer(); +const registry = buildTestRegistry(port); +const bin = findStackql(); + +function run(sql) { + return new Promise((resolve) => { + const env = { ...process.env, NGC_API_KEY: EXPECTED_TOKEN, NGC_ORG: ORG_A, ...envOverrides }; + for (const [k, v] of Object.entries(envOverrides)) if (v === undefined) delete env[k]; + const child = spawn(bin, [`--registry=${registry}`, 'exec', sql, '--output', 'json'], { cwd: repoRoot, env }); + let out = '', err = ''; + child.stdout.on('data', (d) => { out += d; }); + child.stderr.on('data', (d) => { err += d; }); + child.on('close', () => resolve({ out: out.trim(), err: err.trim() })); + }); +} + +try { + for (const sql of sqls) { + const mark = log.length; + const { out, err } = await run(sql); + console.log(`\n=== ${sql}`); + console.log(`stdout: ${out.slice(0, 1500)}`); + if (err) console.log(`stderr: ${err.slice(0, 900)}`); + for (const e of log.slice(mark)) console.log(`wire: ${e.method} ${e.path} query=${JSON.stringify(e.query)} auth=${e.authorization ? 'yes' : 'no'} ct=${e.contentType} body=${JSON.stringify(e.body)}`); + } +} finally { + server.close(); +} diff --git a/tests/integration/registry.mjs b/tests/integration/registry.mjs new file mode 100644 index 0000000..c8d94dd --- /dev/null +++ b/tests/integration/registry.mjs @@ -0,0 +1,58 @@ +// Shared helpers for the integration runner and the probe: stackql binary +// resolution and the TEST COPY of the generated provider whose servers +// point at the mock. +// +// The vendor hosts are https-only and cannot address the mock, so the +// generated provider (provider-dev/openapi) is copied to +// tests/integration/.registry-tmp (gitignored, recreated each run) with +// every server URL rewritten to http://localhost:: the two root hosts +// (api.ngc.nvidia.com, api.nvcf.nvidia.com - both land on the one mock, +// which routes by path) and the path-level org templates, whose org_name +// variable and x-stackQL-envVar are preserved. provider-dev/** is never +// modified. + +import { existsSync, rmSync, cpSync, readdirSync, readFileSync, writeFileSync } from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import yaml from 'js-yaml'; + +const here = path.dirname(fileURLToPath(import.meta.url)); +export const repoRoot = path.resolve(here, '..', '..'); +export const NGC_HOST = 'https://api.ngc.nvidia.com'; +export const NVCF_HOST = 'https://api.nvcf.nvidia.com'; + +export function findStackql() { + if (process.env.STACKQL) return process.env.STACKQL; + const local = path.join(repoRoot, process.platform === 'win32' ? 'stackql.exe' : 'stackql'); + if (existsSync(local)) return local; + return 'stackql'; // PATH +} + +export function buildTestRegistry(port) { + const srcDir = path.join(repoRoot, 'provider-dev', 'openapi'); + const tmpDir = path.join(here, '.registry-tmp'); + rmSync(tmpDir, { recursive: true, force: true }); + cpSync(srcDir, tmpDir, { recursive: true }); + const servicesDir = path.join(tmpDir, 'src', 'nvidia', 'v00.00.00000', 'services'); + const base = `http://localhost:${port}`; + const rewrite = (url) => url.replace(NGC_HOST, base).replace(NVCF_HOST, base); + let orgTemplates = 0; + for (const f of readdirSync(servicesDir)) { + if (!f.endsWith('.yaml')) continue; + const fp = path.join(servicesDir, f); + const doc = yaml.load(readFileSync(fp, 'utf8')); + if (!doc.servers?.[0]?.url) throw new Error(`no top-level servers block found in ${f}`); + doc.servers = doc.servers.map((s) => ({ ...s, url: rewrite(s.url) })); + for (const [p, item] of Object.entries(doc.paths || {})) { + if (!item.servers) continue; + item.servers = item.servers.map((s) => ({ ...s, url: rewrite(s.url) })); + const v = item.servers[0].variables?.org_name; + if (!v || v['x-stackQL-envVar'] !== 'NGC_ORG') throw new Error(`${f}: path ${p} lost its org_name server variable / x-stackQL-envVar in the copy`); + orgTemplates++; + } + writeFileSync(fp, yaml.dump(doc, { lineWidth: -1, noRefs: true })); + } + if (orgTemplates === 0) throw new Error('no path-level org server templates found - was post_process run?'); + const regPath = tmpDir.split(path.sep).join('/'); + return JSON.stringify({ url: `file://${regPath}`, localDocRoot: regPath, verifyConfig: { nopVerify: true } }); +} diff --git a/tests/integration/run_integration_tests.mjs b/tests/integration/run_integration_tests.mjs new file mode 100644 index 0000000..36b6d77 --- /dev/null +++ b/tests/integration/run_integration_tests.mjs @@ -0,0 +1,239 @@ +#!/usr/bin/env node + +// Integration tests: run the generated nvidia provider (local file +// registry, test copy pointed at the mock) against the mock NGC + NVCF API +// and assert row-level results for each operation archetype: +// - the bearer token (the mock 401s anything else) +// - list envelopes unwrapped per resource ($.organizations, $.models, +// $.functions, $.clusterGroups, $.queues), entity envelopes ($.user, +// $.model, $.function, $.deployment), the bare-array GPU catalog +// - page_number pagination over paginationInfo (three pages walked) and +// LIMIT pushed down to page-size +// - org_name resolved from NGC_ORG (x-stackQL-envVar on the path-level +// server template), a WHERE value beating the environment, the +// unset-env failure mode, and the *_by_team twin routing +// - snake_case surface: kebab query parameters (resolve_labels -> +// resolve-labels) and camelCase body properties (display_name -> +// displayName) via request.nativeCasing +// - the registry model INSERT / UPDATE / DELETE lifecycle (delete via the +// generic artifacts resource) +// - the NVCF function INSERT (function + first version), version get, +// authorization grants INSERT / SELECT / DELETE, deployment INSERT / +// SELECT / DELETE, queue details on the second host, the polling +// invocation EXEC (opaque JSON body) and the status SELECT +// - a 404 surfaced +// +// Requires a stackql binary: $STACKQL, ./stackql, or `stackql` on PATH. +// +// Usage: node tests/integration/run_integration_tests.mjs [--verbose] + +import { spawn } from 'child_process'; +import { startMockServer, EXPECTED_TOKEN, ORG_A, ORG_B, TEAM, FUNCTION_ID, VERSION_ID, REQUEST_ID } from './mock_nvidia_server.mjs'; +import { buildTestRegistry, findStackql, repoRoot } from './registry.mjs'; + +const verbose = process.argv.includes('--verbose'); +const t0 = Date.now(); +const stackqlBin = findStackql(); + +// IMPORTANT: must be async (spawn, not spawnSync) - the mock server runs on +// this process's event loop, so a synchronous wait for stackql deadlocks. +function makeRunSql(registry) { + return function runSql(sql, envOverrides = {}) { + return new Promise((resolve) => { + const env = { ...process.env, NGC_API_KEY: EXPECTED_TOKEN, NGC_ORG: ORG_A, ...envOverrides }; + for (const [k, v] of Object.entries(envOverrides)) if (v === undefined) delete env[k]; + const child = spawn(stackqlBin, [`--registry=${registry}`, 'exec', sql, '--output', 'json'], { cwd: repoRoot, env }); + let stdout = '', stderr = ''; + child.stdout.on('data', (d) => { stdout += d; }); + child.stderr.on('data', (d) => { stderr += d; }); + const timer = setTimeout(() => child.kill(), 120000); + child.on('error', (e) => { clearTimeout(timer); resolve({ rows: null, err: String(e) }); }); + child.on('close', () => { + clearTimeout(timer); + stdout = stdout.trim(); + stderr = stderr.trim(); + if (verbose) console.log(` sql: ${sql}\n out: ${stdout.slice(0, 400)}${stderr ? `\n err: ${stderr.slice(0, 400)}` : ''}`); + const errish = /http response status code: [45]|error|panic|FindRoute|no matching operation|cannot find matching operation|disallowed|cannot find any viable servers|not supported|required/i; + if (errish.test(stderr)) return resolve({ rows: null, err: stderr }); + if (!stdout) return resolve({ rows: [], err: null }); + try { + const val = (v) => (v === 'true' ? true : v === 'false' ? false : (typeof v === 'string' && /^-?\d+(\.\d+)?$/.test(v)) ? Number(v) : v); + const parsed = JSON.parse(stdout); + const rows = Array.isArray(parsed) ? parsed.map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, val(v)]))) : parsed ?? []; + resolve({ rows, err: null, text: stdout }); + } catch { + resolve({ rows: [{ _text: stdout }], err: errish.test(stdout) ? stdout : null, text: stdout }); // DML status text + } + }); + }); + }; +} + +const results = []; +function check(name, cond, note = '') { + results.push({ name, pass: !!cond, note }); + console.log(` ${cond ? 'PASS' : 'FAIL'} ${name}${!cond && note ? ` [${String(note).slice(0, 260)}]` : ''}`); +} + +const { server, port, log, state } = await startMockServer(); +const registry = buildTestRegistry(port); +const runSql = makeRunSql(registry); +console.log(`mock NGC + NVCF API on localhost:${port}, stackql: ${stackqlBin}`); + +const calls = (mark, method, p) => log.slice(mark).filter((e) => e.method === method && e.path === p); +const has = (rows, key, value) => Array.isArray(rows) && rows.some((r) => r[key] === value); + +try { + // --- meta sanity + let r = await runSql('SHOW SERVICES IN nvidia'); + check('show services (7)', r.rows && r.rows.length === 7, r.err || `got ${r.rows?.length}`); + + // --- bearer wiring: the mock 401s anything without the token + r = await runSql('SELECT name FROM nvidia.orgs.orgs', { NGC_API_KEY: 'nvapi-wrong' }); + check('wrong NGC_API_KEY -> 401 surfaced', r.err && /401/.test(r.err), r.err || JSON.stringify(r.rows)); + let mark = log.length; + r = await runSql('SELECT name, display_name FROM nvidia.orgs.orgs'); + check('orgs list unwraps $.organizations (5 rows over 3 pages of 2)', r.rows && r.rows.length === 5 && has(r.rows, 'name', ORG_A), r.err || JSON.stringify(r.rows)); + check('bearer token sent on every call', log.slice(mark).every((e) => e.authorization === `Bearer ${EXPECTED_TOKEN}`), JSON.stringify(log.slice(mark).map((e) => e.authorization))); + const orgCalls = calls(mark, 'GET', '/v2/orgs'); + check('page_number pagination walked page-number 0,1,2 (+ the terminating out-of-range page)', + orgCalls.length >= 3 && orgCalls.slice(1).every((c) => c.query['page-number'] !== undefined) && orgCalls.some((c) => c.query['page-number'] === '2'), + JSON.stringify(orgCalls.map((c) => c.query))); + check('snake_case aliases on the wire camelCase (display_name column)', r.rows && r.rows[0] && 'display_name' in r.rows[0], JSON.stringify(r.rows?.[0])); + + // --- LIMIT pushdown to page-size + mark = log.length; + r = await runSql('SELECT name FROM nvidia.orgs.orgs LIMIT 1'); + check('LIMIT 1 -> one row, page-size=1 on the wire', r.rows && r.rows.length === 1 && calls(mark, 'GET', '/v2/orgs')[0]?.query['page-size'] === '1', r.err || JSON.stringify(calls(mark, 'GET', '/v2/orgs').map((c) => c.query))); + + // --- entity envelope: current user ($.user) + r = await runSql('SELECT email, name FROM nvidia.orgs.current_user'); + check('current_user get unwraps $.user (email column)', r.rows && r.rows.length === 1 && r.rows[0].email === 'alice@example.com', r.err || JSON.stringify(r.rows)); + r = await runSql(`SELECT name FROM nvidia.orgs.orgs WHERE org_name = '${ORG_B}'`); + check('orgs get on the root path ($.organizations object) by org_name', r.rows && r.rows.length === 1 && r.rows[0].name === ORG_B, r.err || JSON.stringify(r.rows)); + + // --- org_name from NGC_ORG via the path-level server template + mark = log.length; + r = await runSql('SELECT name, framework FROM nvidia.private_registry.models'); + check('models list with org_name from NGC_ORG (no WHERE) -> /v2/org//models, 2 rows via $.models', r.rows && r.rows.length === 2 && calls(mark, 'GET', `/v2/org/${ORG_A}/models`).length > 0, r.err || `rows ${r.rows?.length}; calls ${JSON.stringify(log.slice(mark).map((e) => e.path))}`); + mark = log.length; + r = await runSql(`SELECT name FROM nvidia.private_registry.models WHERE org_name = '${ORG_B}'`); + check('WHERE org_name beats NGC_ORG (-> /v2/org/ORG_B/models, 1 row)', r.rows && r.rows.length === 1 && r.rows[0].name === 'whisper' && calls(mark, 'GET', `/v2/org/${ORG_B}/models`).length > 0, r.err || JSON.stringify(r.rows)); + r = await runSql('SELECT name FROM nvidia.private_registry.models', { NGC_ORG: undefined }); + check('NGC_ORG unset and no WHERE org_name -> error (no viable server: the org_name variable is unresolved)', r.err && /org_name|viable servers/.test(r.err), r.err || JSON.stringify(r.rows)); + mark = log.length; + r = await runSql(`SELECT name, org_name FROM nvidia.private_registry.models WHERE team_name = '${TEAM}'`); + check('team_name routes to the *_by_team twin (/v2/org/ORG_A/team/TEAM/models)', r.rows && r.rows.length === 1 && r.rows[0].name === 'team-model' && calls(mark, 'GET', `/v2/org/${ORG_A}/team/${TEAM}/models`).length > 0, r.err || JSON.stringify(log.slice(mark).map((e) => e.path))); + mark = log.length; + r = await runSql("SELECT name, display_name, latest_version_id_str FROM nvidia.private_registry.models WHERE model_name = 'resnet50'"); + check('models get unwraps $.model (WHERE model_name)', r.rows && r.rows.length === 1 && r.rows[0].display_name === 'Mock resnet50' && calls(mark, 'GET', `/v2/org/${ORG_A}/models/resnet50`).length > 0, r.err || JSON.stringify(r.rows)); + + // --- kebab query parameters via nativeCasing (resolve_labels -> resolve-labels) + mark = log.length; + r = await runSql("SELECT name FROM nvidia.private_registry.models WHERE resolve_labels = 'true'"); + const rl = calls(mark, 'GET', `/v2/org/${ORG_A}/models`); + check('snake WHERE key on a kebab wire param (resolve_labels -> resolve-labels=true)', r.rows && r.rows.length === 2 && rl.length > 0 && rl[0].query['resolve-labels'] === 'true', r.err || JSON.stringify(rl.map((c) => c.query))); + + // --- model versions ($.modelVersions list, $.modelVersion get) + r = await runSql("SELECT id, version_id, status FROM nvidia.private_registry.model_versions WHERE model_name = 'resnet50'"); + check('model_versions list unwraps $.modelVersions (2 rows; numeric id, string version_id)', r.rows && r.rows.length === 2 && /"version_id":"1\.0"/.test(r.text || '') && /"version_id":"1\.1"/.test(r.text || '') && has(r.rows, 'id', 101), r.err || JSON.stringify(r.rows)); + r = await runSql("SELECT id, version_id, gpu_model FROM nvidia.private_registry.model_versions WHERE model_name = 'resnet50' AND version_id = '1.1'"); + check('model_versions get unwraps $.modelVersion (resource-named property wins over $.model)', r.rows && r.rows.length === 1 && /"version_id":"1\.1"/.test(r.text || '') && r.rows[0].id === 102 && r.rows[0].gpu_model === 'A100', r.err || JSON.stringify(r.rows)); + + // --- registry model lifecycle: INSERT (camelCase body via nativeCasing), UPDATE, DELETE via artifacts + mark = log.length; + r = await runSql("INSERT INTO nvidia.private_registry.models (name, display_name, framework, precision, application, short_description) SELECT 'it-model', 'IT Model', 'PyTorch', 'FP16', 'Inference', 'created by the integration test'"); + const post = calls(mark, 'POST', `/v2/org/${ORG_A}/models`); + check('model INSERT -> POST with camelCase body (displayName, shortDescription)', !r.err && post.length === 1 && post[0].body.displayName === 'IT Model' && post[0].body.shortDescription === 'created by the integration test' && post[0].body.framework === 'PyTorch', r.err || JSON.stringify(post.map((c) => c.body))); + r = await runSql("SELECT name, display_name FROM nvidia.private_registry.models WHERE model_name = 'it-model'"); + check('model visible after INSERT', r.rows && r.rows.length === 1 && r.rows[0].display_name === 'IT Model', r.err || JSON.stringify(r.rows)); + mark = log.length; + r = await runSql("UPDATE nvidia.private_registry.models SET display_name = 'IT Model v2' WHERE model_name = 'it-model'"); + const patch = calls(mark, 'PATCH', `/v2/org/${ORG_A}/models/it-model`); + check('model UPDATE -> PATCH with {displayName}', !r.err && patch.length === 1 && patch[0].body.displayName === 'IT Model v2', r.err || JSON.stringify(patch.map((c) => c.body))); + r = await runSql("SELECT display_name FROM nvidia.private_registry.models WHERE model_name = 'it-model'"); + check('model reflects UPDATE', r.rows && r.rows[0]?.display_name === 'IT Model v2', r.err || JSON.stringify(r.rows)); + mark = log.length; + r = await runSql("DELETE FROM nvidia.private_registry.artifacts WHERE artifact_type = 'models' AND artifact_name = 'it-model'"); + check('model DELETE via artifacts (artifact_type = models) -> DELETE /v2/org/ORG_A/models/it-model', !r.err && calls(mark, 'DELETE', `/v2/org/${ORG_A}/models/it-model`).length === 1, r.err || JSON.stringify(log.slice(mark).map((e) => `${e.method} ${e.path}`))); + r = await runSql('SELECT name FROM nvidia.private_registry.models'); + check('model gone after DELETE', r.rows && !has(r.rows, 'name', 'it-model'), r.err || JSON.stringify(r.rows)); + + // --- catalog: public reads (envelope + bare array) + r = await runSql('SELECT name, org_name, can_guest_download FROM nvidia.catalog.models'); + check('catalog models list ($.models, no org scope)', r.rows && r.rows.length === 2 && has(r.rows, 'name', 'llama-3.1-8b-instruct'), r.err || JSON.stringify(r.rows)); + r = await runSql("SELECT name, display_name FROM nvidia.catalog.models WHERE org_name = 'nvidia' AND model_name = 'nemotron-4-340b'"); + check('catalog model get ($.model) by org_name + model_name path params', r.rows && r.rows.length === 1 && r.rows[0].display_name === 'Mock nemotron-4-340b', r.err || JSON.stringify(r.rows)); + r = await runSql('SELECT display_name, pci_device_id, memory_size_gb FROM nvidia.catalog.gpus'); + check('catalog gpus (bare array wrapped) -> 3 rows with display_name / memory_size_gb', r.rows && r.rows.length === 3 && has(r.rows, 'display_name', 'H100') && r.rows[0].memory_size_gb === 80, r.err || JSON.stringify(r.rows)); + + // --- NVCF: functions, ids, cluster groups + r = await runSql('SELECT id, name, status, version_id FROM nvidia.nvcf_functions.functions'); + check('nvcf functions list ($.functions)', r.rows && r.rows.length === 1 && r.rows[0].id === FUNCTION_ID && r.rows[0].status === 'ACTIVE', r.err || JSON.stringify(r.rows)); + r = await runSql('SELECT function_id FROM nvidia.nvcf_functions.function_ids'); + check('function_ids (scalar list transform -> function_id column)', r.rows && r.rows.length === 1 && r.rows[0].function_id === FUNCTION_ID, r.err || JSON.stringify(r.rows)); + r = await runSql("SELECT id, name, json_extract(gpus, '$[0].name') AS first_gpu FROM nvidia.nvcf_deployments.cluster_groups"); + check('cluster_groups ($.clusterGroups) with gpus as JSON (the GPU estate query)', r.rows && r.rows.length === 2 && has(r.rows, 'first_gpu', 'L40') && has(r.rows, 'first_gpu', 'H100'), r.err || JSON.stringify(r.rows)); + + // --- NVCF function lifecycle: INSERT function, version get, authorization grants, deployment, delete + mark = log.length; + r = await runSql("INSERT INTO nvidia.nvcf_functions.functions (name, inference_url, container_image, api_body_format) SELECT 'it-echo', '/echo', 'nvcr.io/mock/echo:latest', 'CUSTOM'"); + const fnPost = calls(mark, 'POST', '/v2/nvcf/functions'); + check('function INSERT -> POST /v2/nvcf/functions with camelCase body (inferenceUrl, containerImage)', !r.err && fnPost.length === 1 && fnPost[0].body.inferenceUrl === '/echo' && fnPost[0].body.containerImage === 'nvcr.io/mock/echo:latest', r.err || JSON.stringify(fnPost.map((c) => c.body))); + r = await runSql("SELECT id, version_id, name FROM nvidia.nvcf_functions.functions WHERE name = 'it-echo'"); + const created = r.rows?.find((x) => x.name === 'it-echo'); + check('created function visible in the fleet list', !!created, r.err || JSON.stringify(r.rows)); + if (created) { + r = await runSql(`SELECT name, status, inference_url FROM nvidia.nvcf_functions.function_versions WHERE function_id = '${created.id}' AND function_version_id = '${created.version_id}'`); + check('function_versions get ($.function) by function_id + function_version_id', r.rows && r.rows.length === 1 && r.rows[0].inference_url === '/echo', r.err || JSON.stringify(r.rows)); + + // authorizations: grants-as-data + mark = log.length; + r = await runSql(`INSERT INTO nvidia.nvcf_functions.authorizations (function_id, authorized_party) SELECT '${created.id}', '{"ncaId": "nca-partner-0002"}'`); + const addCall = calls(mark, 'PATCH', `/v2/nvcf/authorizations/functions/${created.id}/add`); + check('authorization INSERT -> PATCH .../add with {authorizedParty: {ncaId}}', !r.err && addCall.length === 1 && addCall[0].body.authorizedParty?.ncaId === 'nca-partner-0002', r.err || JSON.stringify(addCall.map((c) => c.body))); + r = await runSql(`SELECT id, json_extract(authorized_parties, '$[0].ncaId') AS party FROM nvidia.nvcf_functions.authorizations WHERE function_id = '${created.id}'`); + check('authorizations list ($.functions) shows the grant', r.rows && r.rows.length === 1 && r.rows[0].party === 'nca-partner-0002', r.err || JSON.stringify(r.rows)); + mark = log.length; + r = await runSql(`DELETE FROM nvidia.nvcf_functions.authorizations WHERE function_id = '${created.id}' AND authorized_party = '{"ncaId": "nca-partner-0002"}'`); + check('authorization DELETE -> PATCH .../remove', !r.err && calls(mark, 'PATCH', `/v2/nvcf/authorizations/functions/${created.id}/remove`).length === 1, r.err || JSON.stringify(log.slice(mark).map((e) => `${e.method} ${e.path}`))); + + // deployment round trip (deployment specifications as a JSON blob) + mark = log.length; + r = await runSql(`INSERT INTO nvidia.nvcf_deployments.deployments (function_id, function_version_id, deployment_specifications) SELECT '${created.id}', '${created.version_id}', '[{"gpu": "L40", "backend": "GFN", "instanceType": "GCP.GPU.L40_1x", "minInstances": 1, "maxInstances": 1}]'`); + const depPost = calls(mark, 'POST', `/v2/nvcf/deployments/functions/${created.id}/versions/${created.version_id}`); + check('deployment INSERT -> POST with deploymentSpecifications array', !r.err && depPost.length === 1 && Array.isArray(depPost[0].body.deploymentSpecifications) && depPost[0].body.deploymentSpecifications[0].gpu === 'L40', r.err || JSON.stringify(depPost.map((c) => c.body))); + r = await runSql(`SELECT deployment_id, function_status, json_extract(deployment_specifications, '$[0].gpu') AS gpu FROM nvidia.nvcf_deployments.deployments WHERE function_id = '${created.id}' AND function_version_id = '${created.version_id}'`); + check('deployment get ($.deployment) with the spec blob', r.rows && r.rows.length === 1 && r.rows[0].gpu === 'L40' && r.rows[0].function_status === 'DEPLOYING', r.err || JSON.stringify(r.rows)); + r = await runSql(`DELETE FROM nvidia.nvcf_deployments.deployments WHERE function_id = '${created.id}' AND function_version_id = '${created.version_id}'`); + check('deployment DELETE', !r.err, r.err); + + // queue details on the second host (api.nvcf.nvidia.com) + mark = log.length; + r = await runSql(`SELECT function_version_id, function_status, queue_depth FROM nvidia.nvcf_queues.queues WHERE function_id = '${created.id}'`); + check('queues list ($.queues) on the nvcf host', r.rows && r.rows.length === 1 && r.rows[0].queue_depth === 0 && calls(mark, 'GET', `/v2/nvcf/queues/functions/${created.id}`).length === 1, r.err || JSON.stringify(r.rows)); + + // polling invocation: EXEC with an opaque JSON body, then the status SELECT + mark = log.length; + r = await runSql(`EXEC nvidia.nvcf_invocation.invocations.invoke @function_id = '${created.id}', @body = '{"prompt": "hello"}'`); + const inv = calls(mark, 'POST', `/v2/nvcf/pexec/functions/${created.id}`); + check('invoke EXEC -> POST /v2/nvcf/pexec/functions/{id} with the body JSON verbatim', !r.err && inv.length === 1 && inv[0].body?.prompt === 'hello', r.err || JSON.stringify(inv.map((c) => c.body))); + + r = await runSql(`DELETE FROM nvidia.nvcf_functions.function_versions WHERE function_id = '${created.id}' AND function_version_id = '${created.version_id}'`); + check('function version DELETE (204)', !r.err, r.err); + r = await runSql('SELECT name FROM nvidia.nvcf_functions.functions'); + check('function gone after DELETE', r.rows && !has(r.rows, 'name', 'it-echo'), r.err || JSON.stringify(r.rows)); + } + r = await runSql(`SELECT response FROM nvidia.nvcf_invocation.invocation_status WHERE request_id = '${REQUEST_ID}'`); + check('invocation_status SELECT wraps the raw response body into a response column', r.rows && r.rows.length === 1 && /"result"/.test(String(r.rows[0].response)), r.err || JSON.stringify(r.rows)); + + // --- 404 surfaced + r = await runSql("SELECT name FROM nvidia.private_registry.models WHERE model_name = 'does-not-exist'"); + check('404 surfaced as an error', r.err && /404/.test(r.err), r.err || JSON.stringify(r.rows)); +} finally { + server.close(); +} + +const failed = results.filter((x) => !x.pass); +console.log(`\n${results.length - failed.length}/${results.length} passed in ${((Date.now() - t0) / 1000).toFixed(1)}s`); +process.exit(failed.length ? 1 : 0); diff --git a/tests/offline_validation.mjs b/tests/offline_validation.mjs new file mode 100644 index 0000000..eadc344 --- /dev/null +++ b/tests/offline_validation.mjs @@ -0,0 +1,142 @@ +#!/usr/bin/env node + +// Quick offline validation of the generated provider against the local file +// registry - no network, no server. Runs SHOW SERVICES / SHOW RESOURCES / +// SHOW METHODS and DESCRIBE EXTENDED over representative resources and +// asserts expected counts and mappings, including the x-stackQL-envVar +// behaviour of the org_name server variable (NGC_ORG). Exit 1 on any +// failure. +// +// Usage: node tests/offline_validation.mjs +// Binary resolution: $STACKQL, ./stackql(.exe), then PATH. + +import { spawn } from 'child_process'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const regPath = path.join(repoRoot, 'provider-dev', 'openapi').replace(/\\/g, '/'); +const registry = JSON.stringify({ url: `file://${regPath}`, localDocRoot: regPath, verifyConfig: { nopVerify: true } }); + +function findBinary() { + if (process.env.STACKQL && fs.existsSync(process.env.STACKQL)) return process.env.STACKQL; + for (const name of ['stackql', 'stackql.exe']) { + const local = path.join(repoRoot, name); + if (fs.existsSync(local)) return local; + } + return 'stackql'; // PATH +} +const bin = findBinary(); + +function runSql(sql, envOverrides = {}) { + return new Promise((resolve) => { + const env = { ...process.env, ...envOverrides }; + for (const [k, v] of Object.entries(envOverrides)) if (v === undefined) delete env[k]; + const child = spawn(bin, [`--registry=${registry}`, 'exec', sql, '--output', 'json'], { cwd: repoRoot, env }); + let stdout = '', stderr = ''; + child.stdout.on('data', (d) => (stdout += d)); + child.stderr.on('data', (d) => (stderr += d)); + child.on('close', (code) => { + let rows = []; + try { rows = JSON.parse(stdout) ?? []; } catch { rows = []; } + resolve({ code, rows, stdout, stderr }); + }); + child.on('error', (err) => resolve({ code: -1, rows: [], stdout: '', stderr: String(err) })); + }); +} + +const results = []; +function check(name, cond, note = '') { + results.push({ name, pass: !!cond, note }); + console.log(` ${cond ? 'PASS' : 'FAIL'} ${name}${cond ? '' : ` [${String(note).slice(0, 220)}]`}`); +} +const names = (rows) => rows.map((x) => x.name).sort(); +const cols = (rows) => rows.map((c) => c.name); + +const EXPECTED_SERVICES = ['catalog', 'nvcf_deployments', 'nvcf_functions', 'nvcf_invocation', 'nvcf_queues', 'orgs', 'private_registry']; +const EXPECTED_RESOURCES = { + catalog: ['artifact_deployment_params', 'artifact_files', 'artifact_specs', 'artifacts', 'collection_artifacts', 'collections', 'csp_deployment_params', 'csp_deployment_params_meta', 'csps', 'gpus', 'helm_chart_versions', 'model_files', 'model_versions', 'models', 'nim_metadata', 'recipe_files', 'recipe_versions', 'recipes', 'resource_files', 'resource_versions', 'resources'], + nvcf_deployments: ['cluster_groups', 'deployment_gpu_specs', 'deployments', 'recognized_registries', 'registry_credentials', 'telemetries', 'telemetry_secrets'], + nvcf_functions: ['authorizations', 'function_ids', 'function_metadata', 'function_ratelimits', 'function_secrets', 'function_versions', 'functions'], + nvcf_invocation: ['assets', 'invocation_status', 'invocations', 'tokens'], + nvcf_queues: ['queue_positions', 'queues'], + orgs: ['current_user', 'orgs', 'proto_orgs', 'roles', 'team_invitations', 'team_member_roles', 'team_members', 'teams', 'user_invitations', 'user_roles', 'users'], + private_registry: ['artifact_catalog_flags', 'artifact_collections', 'artifact_deployment_params', 'artifact_deployments', 'artifact_files', 'artifact_product_shares', 'artifact_shares', 'artifact_signatures', 'artifact_specs', 'artifact_version_configs', 'artifact_versions', 'artifacts', 'collection_artifacts', 'collection_product_shares', 'collections', 'encryption_keys', 'helm_chart_versions', 'license_acceptances', 'model_encryption_keys', 'model_files', 'model_shares', 'model_versions', 'models', 'recipe_files', 'recipe_versions', 'recipes', 'repository_associated_models', 'resource_files', 'resource_versions', 'resources', 'workflows'] +}; +const NO_ENV = { NGC_ORG: undefined }; +const WITH_ENV = { NGC_ORG: 'mock-org' }; + +console.log(`stackql: ${bin}`); +let r = await runSql('SHOW SERVICES IN nvidia'); +check('SHOW SERVICES (7)', r.rows.length === 7 && JSON.stringify(names(r.rows)) === JSON.stringify(EXPECTED_SERVICES), r.stderr || JSON.stringify(names(r.rows))); + +let resourceTotal = 0; +for (const [svc, expected] of Object.entries(EXPECTED_RESOURCES)) { + r = await runSql(`SHOW RESOURCES IN nvidia.${svc}`); + resourceTotal += r.rows.length; + check(`SHOW RESOURCES IN nvidia.${svc} (${expected.length})`, JSON.stringify(names(r.rows)) === JSON.stringify(expected), r.stderr || JSON.stringify(names(r.rows))); +} +check('83 resources in total', resourceTotal === 83, String(resourceTotal)); + +// org_name server variable: required only when NGC_ORG is unset +r = await runSql('SHOW METHODS IN nvidia.private_registry.models', NO_ENV); +let m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('private_registry.models methods (8: list/get/create/update + _by_team twins)', r.rows.length === 8 && ['list', 'get', 'create', 'update', 'list_by_team', 'get_by_team', 'create_by_team', 'update_by_team'].every((k) => m[k]), JSON.stringify(Object.keys(m))); +check('models.list requires org_name when NGC_ORG is unset; get requires model_name + org_name; list_by_team adds team_name', + m.list?.RequiredParams === 'org_name' && /model_name/.test(m.get?.RequiredParams) && /org_name/.test(m.get?.RequiredParams) && /team_name/.test(m.list_by_team?.RequiredParams) && /org_name/.test(m.list_by_team?.RequiredParams), JSON.stringify([m.list, m.get, m.list_by_team])); +check('models verbs (list/get SELECT, create INSERT, update UPDATE)', m.list?.SQLVerb === 'SELECT' && m.get?.SQLVerb === 'SELECT' && m.create?.SQLVerb === 'INSERT' && m.update?.SQLVerb === 'UPDATE', JSON.stringify(m)); +check('models.create requires the body fields framework, name, precision (naive body translate)', ['framework', 'name', 'precision'].every((p) => String(m.create?.RequiredParams || '').includes(p)), JSON.stringify(m.create)); +r = await runSql('SHOW METHODS IN nvidia.private_registry.models', WITH_ENV); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('models: org_name is optional when NGC_ORG is set (x-stackQL-envVar on the path-level server template)', !String(m.list?.RequiredParams || '').trim() && m.get?.RequiredParams === 'model_name' && m.list_by_team?.RequiredParams === 'team_name', JSON.stringify([m.list, m.get, m.list_by_team])); + +// orgs: root paths keep org_name as a path parameter; the current user needs nothing +r = await runSql('SHOW METHODS IN nvidia.orgs.orgs', WITH_ENV); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('orgs.orgs: list (no params), get (org_name, a root path), create INSERT, update UPDATE', !String(m.list?.RequiredParams || '').trim() && m.get?.RequiredParams === 'org_name' && m.create?.SQLVerb === 'INSERT' && m.update?.SQLVerb === 'UPDATE', JSON.stringify(r.rows)); +r = await runSql('SHOW METHODS IN nvidia.orgs.users', WITH_ENV); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('orgs.users: list/get/get_by_starfleet_id SELECT, create INSERT (email), delete DELETE (id)', m.list?.SQLVerb === 'SELECT' && m.get?.RequiredParams === 'user_email_or_id' && /email/.test(m.create?.RequiredParams) && m.delete?.RequiredParams === 'id', JSON.stringify(r.rows)); +r = await runSql('SHOW METHODS IN nvidia.orgs.team_members', WITH_ENV); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('orgs.team_members: list/get by team_name, add INSERT, remove DELETE (Private Registry team scoping, exempt from the 2026-09 schedule)', m.list?.RequiredParams === 'team_name' && m.add?.SQLVerb === 'INSERT' && m.remove?.SQLVerb === 'DELETE', JSON.stringify(r.rows)); + +// NVCF: no org scope (the personal key implies the org); two hosts by service +r = await runSql('SHOW METHODS IN nvidia.nvcf_functions.functions'); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('nvcf_functions.functions: list (no params) SELECT, create INSERT requiring inference_url + name', !String(m.list?.RequiredParams || '').trim() && /inference_url/.test(m.create?.RequiredParams) && /name/.test(m.create?.RequiredParams), JSON.stringify(r.rows)); +r = await runSql('SHOW METHODS IN nvidia.nvcf_functions.function_versions'); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('function_versions: list (function_id), get (function_id + function_version_id), create INSERT, update UPDATE, delete DELETE', m.list?.RequiredParams === 'function_id' && /function_version_id/.test(m.get?.RequiredParams) && m.create?.SQLVerb === 'INSERT' && m.update?.SQLVerb === 'UPDATE' && m.delete?.SQLVerb === 'DELETE', JSON.stringify(r.rows)); +r = await runSql('SHOW METHODS IN nvidia.nvcf_functions.authorizations'); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('authorizations (grants-as-data): list SELECT, add INSERT, remove DELETE, set REPLACE, delete_all EXEC', m.list?.SQLVerb === 'SELECT' && m.add?.SQLVerb === 'INSERT' && m.remove?.SQLVerb === 'DELETE' && m.set?.SQLVerb === 'REPLACE' && m.delete_all?.SQLVerb === 'EXEC', JSON.stringify(r.rows)); +r = await runSql('SHOW METHODS IN nvidia.nvcf_deployments.deployments'); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('deployments: get/get_by_id SELECT, create INSERT (deployment_specifications), update UPDATE, delete DELETE', m.get?.SQLVerb === 'SELECT' && m.get_by_id?.RequiredParams === 'deployment_id' && /deployment_specifications/.test(m.create?.RequiredParams) && m.update?.SQLVerb === 'UPDATE' && m.delete?.SQLVerb === 'DELETE', JSON.stringify(r.rows)); +r = await runSql('SHOW METHODS IN nvidia.nvcf_invocation.invocations'); +m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); +check('invocations: invoke / invoke_version are EXEC taking function_id and body (opaque JSON body wrapper)', m.invoke?.SQLVerb === 'EXEC' && /function_id/.test(m.invoke?.RequiredParams) && /body/.test(m.invoke?.RequiredParams) && m.invoke_version?.SQLVerb === 'EXEC', JSON.stringify(r.rows)); + +// DESCRIBE EXTENDED on the representative resources (snake_case aliases of the camelCase wire) +r = await runSql('DESCRIBE EXTENDED nvidia.private_registry.models'); +check('DESCRIBE private_registry.models projects the Model entity (name, display_name, framework, latest_version_id_str, updated_date)', ['name', 'display_name', 'framework', 'latest_version_id_str', 'updated_date'].every((c) => cols(r.rows).includes(c)) && !cols(r.rows).includes('request_status'), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_functions.functions'); +check('DESCRIBE nvcf_functions.functions (id, name, status, version_id, container_image, inference_url)', ['id', 'name', 'status', 'version_id', 'container_image', 'inference_url'].every((c) => cols(r.rows).includes(c)), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_deployments.cluster_groups'); +check('DESCRIBE cluster_groups (id, name, gpus, clusters, nca_id - the GPU estate)', ['id', 'name', 'gpus', 'clusters', 'nca_id'].every((c) => cols(r.rows).includes(c)), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.catalog.gpus'); +check('DESCRIBE catalog.gpus projects the GPU catalog rows (display_name, pci_device_id, memory_size_gb)', ['display_name', 'pci_device_id', 'memory_size_gb'].every((c) => cols(r.rows).includes(c)) && !cols(r.rows).includes('column_anon'), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_functions.function_ids'); +check('DESCRIBE function_ids (scalar list re-shaped to a function_id column)', JSON.stringify(cols(r.rows)) === JSON.stringify(['function_id']), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.orgs.users'); +check('DESCRIBE orgs.users (email, name, roles)', ['email', 'name', 'roles'].every((c) => cols(r.rows).includes(c)), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.orgs.orgs'); +check('DESCRIBE orgs.orgs (name, display_name, id, type)', ['name', 'display_name', 'id', 'type'].every((c) => cols(r.rows).includes(c)), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_invocation.invocations'); +check('DESCRIBE invocations is not selectable (EXEC is the surface)', /not supported/i.test(r.stdout + r.stderr), r.stdout); + +const failed = results.filter((x) => !x.pass); +console.log(`\n${results.length - failed.length}/${results.length} passed`); +if (failed.length) process.exit(1); diff --git a/tests/smoke_test.py b/tests/smoke_test.py new file mode 100644 index 0000000..c342b0d --- /dev/null +++ b/tests/smoke_test.py @@ -0,0 +1,354 @@ +#!/usr/bin/env python3 +"""pystackql smoke test for the nvidia (NVIDIA NGC + NVCF) stackql provider. + +Exercises the salient resources against a real NGC organization, tiered by +what the credentials can reach: + + tier 1 public catalog reads (models, GPU catalog) - no org needed + tier 2 organization and private registry reads (orgs, current user, + users, teams, registry models, team-scoped twins when NGC_TEAM is + set) and a cheap, self-cleaning registry model INSERT / UPDATE / + DELETE lifecycle (metadata only - free) + tier 3 NVCF reads (functions, function ids, cluster groups and GPUs) + and a function INSERT / version get / authorization list / DELETE + lifecycle (creating an undeployed function is free). The suite + detects Cloud Functions enablement from the cluster-groups read and + skips tier 3 with a notice when the org is not enabled or the key + lacks the organization-level Cloud Functions scope. + gated --with-nvcf-deploy: deploy the smoke function on the smallest + instance type of the first cluster group, wait for it to become + ACTIVE, then delete the deployment. Billable GPU minutes (well + under $1); needs NVCF_SMOKE_CONTAINER_IMAGE (an image in the org's + private registry, e.g. nvcr.io//echo:latest). Always torn + down, even on failure. + +Everything created is named `stackql-smoke-`; before running, the +script sweeps breadcrumbs with that prefix (registry models, NVCF +functions and their deployments) so each run starts from a clean slate. + +Credentials and target org come from the environment, exactly as the +provider itself reads them (the NVIDIA Terraform provider's variables): + + export NGC_API_KEY=nvapi-... # NGC Personal API Key (bearer) + export NGC_ORG=0123456789ab # the test org (x-stackQL-envVar) + export NGC_TEAM=ml-platform # optional: exercises the *_by_team methods + +Never run this against a production organization. + +Usage: + pip install pystackql + python tests/smoke_test.py # local provider-dev/openapi registry (default) + python tests/smoke_test.py --live # the published provider in the stackql registry + python tests/smoke_test.py --read-only # read smokes only, no writes + python tests/smoke_test.py --with-nvcf-deploy # also the gated NVCF deploy lifecycle + python tests/smoke_test.py --cleanup-only # just sweep breadcrumbs +""" + +from __future__ import annotations + +import argparse +import json +import os +import re +import sys +import time +from pathlib import Path + +BASE_DIR = Path(__file__).resolve().parents[1] +SMOKE_PREFIX = "stackql-smoke-" +INTER_REQUEST_DELAY_S = 0.5 +# x-stackQL-envVar server variable resolution landed in stackql v0.10.601; +# pystackql manages its own stackql binary, so the harness upgrades it when older. +MIN_STACKQL_VERSION = (0, 10, 601) + +ERROR_RE = re.compile( + r"http response status code: [45]|over HTTP error|error assembling|" + r"cannot find matching operation|FindRoute|no matching operation|" + r"cannot find any viable servers|parser error|panic|" + r"no request body for operation|schema unsuitable|Unauthorized|Forbidden|UNAUTHORIZED", + re.I, +) +RATE_LIMIT_RE = re.compile(r"status code: 429|Too Many Requests|rate limit", re.I) +NVCF_DISABLED_RE = re.compile(r"status code: 40[134]|not enabled|not authorized|UNAUTHORIZED|Forbidden", re.I) + + +class Smoke: + def __init__(self, args: argparse.Namespace) -> None: + self.args = args + self.stamp = str(int(time.time()))[-6:] + self.name = f"{SMOKE_PREFIX}{self.stamp}" + self.results: list[tuple[str, str, str]] = [] + self.requests = 0 + self.nvcf_enabled: bool | None = None + + for var in ("NGC_API_KEY", "NGC_ORG"): + if not os.environ.get(var): + sys.exit(f"{var} is not set - see the module docstring") + self.org = os.environ["NGC_ORG"] + self.team = os.environ.get("NGC_TEAM") or "" + + from pystackql import StackQL + + if not args.live: + reg_path = (BASE_DIR / "provider-dev" / "openapi").resolve() + reg_url = "file://" + reg_path.as_posix() + self.sq = StackQL(output="dict", custom_registry=reg_url) + # pystackql only serialises {"url": ...}; a local file registry + # additionally needs localDocRoot + nopVerify - patch the exec + # params in place (compact JSON, shell-quoted). + full = json.dumps( + {"url": reg_url, "localDocRoot": reg_path.as_posix(), "verifyConfig": {"nopVerify": True}}, + separators=(",", ":"), + ) + if sys.platform.startswith("win"): + quoted = '"' + full.replace('"', '\\"') + '"' + else: + import shlex + quoted = shlex.quote(full) + params = getattr(getattr(self.sq, "local_query_executor", None), "params", None) or self.sq.params + for i, p in enumerate(params): + if p == "--registry": + params[i + 1] = quoted + break + else: + self.sq = StackQL(output="dict") + self.sq.executeStmt("REGISTRY PULL nvidia") + self.ensure_stackql_version() + + def ensure_stackql_version(self) -> None: + def parse(v: str) -> tuple[int, ...]: + return tuple(int(x) for x in re.findall(r"\d+", str(v))[:3]) + + current = parse(getattr(self.sq, "version", "") or "") + if current and current >= MIN_STACKQL_VERSION: + return + print(f"stackql {self.sq.version} is older than v{'.'.join(map(str, MIN_STACKQL_VERSION))} - upgrading pystackql's binary") + self.sq.upgrade(showprogress=False) + if parse(self.sq.version) < MIN_STACKQL_VERSION: + sys.exit(f"stackql {self.sq.version} is still too old after upgrade") + + # ------------------------------------------------------------------ core + def q(self, sql: str): + if self.requests: + time.sleep(INTER_REQUEST_DELAY_S) + self.requests += 1 + try: + if sql.lstrip().upper().startswith(("SELECT", "SHOW", "DESCRIBE")) or "RETURNING" in sql.upper(): + out = self.sq.execute(sql) + else: + out = self.sq.executeStmt(sql) + except Exception as exc: # noqa: BLE001 + return [], str(exc) + text = json.dumps(out, default=str) + if RATE_LIMIT_RE.search(text): + return out if isinstance(out, list) else [out], "RATE LIMITED (429) - harness pacing bug: " + text + if ERROR_RE.search(text): + return out if isinstance(out, list) else [out], text + if isinstance(out, list) and out and isinstance(out[0], dict) and "error" in out[0]: + return out, text + return out if isinstance(out, list) else [out], None + + def step(self, name: str, sql: str, expect_rows: bool = False, contains: str | None = None): + rows, err = self.q(sql) + if err: + self.results.append((name, "FAIL", err[:200])) + print(f" FAIL {name} [{err[:140]}]") + return None + blob = json.dumps(rows, default=str) + if expect_rows and not rows: + self.results.append((name, "FAIL", "expected rows, got none")) + print(f" FAIL {name} [no rows]") + return None + if contains and contains not in blob: + self.results.append((name, "FAIL", f"'{contains}' not in result")) + print(f" FAIL {name} ['{contains}' not in {blob[:100]}]") + return None + self.results.append((name, "PASS", "")) + print(f" PASS {name}") + return rows + + def note(self, name: str, ok: bool, detail: str = "") -> None: + self.results.append((name, "PASS" if ok else "FAIL", detail)) + print(f" {'PASS' if ok else 'FAIL'} {name}{(' [' + detail[:120] + ']') if detail and not ok else ''}") + + def skip(self, name: str, why: str) -> None: + self.results.append((name, "SKIP", why)) + print(f" SKIP {name} [{why[:120]}]") + + def wait_for(self, name: str, sql: str, pred, timeout: int = 600, interval: int = 15): + start = time.time() + last = None + while time.time() - start < timeout: + rows, err = self.q(sql) + last = err or json.dumps(rows, default=str)[:160] + if not err and pred(rows): + self.results.append((name, "PASS", f"{int(time.time() - start)}s")) + print(f" PASS {name} ({int(time.time() - start)}s)") + return True + time.sleep(interval) + self.results.append((name, "FAIL", f"timeout: {last}")) + print(f" FAIL {name} [timeout: {last}]") + return False + + # ------------------------------------------------------- breadcrumb sweep + def cleanup_breadcrumbs(self) -> None: + print("== breadcrumb sweep ==") + rows, err = self.q("SELECT name FROM nvidia.private_registry.models") + if err: + print(f" WARN registry sweep list failed: {err[:120]}") + else: + for r in rows: + if str(r.get("name", "")).startswith(SMOKE_PREFIX): + print(f" sweeping registry model {r['name']}") + self.q(f"DELETE FROM nvidia.private_registry.artifacts WHERE artifact_type = 'models' AND artifact_name = '{r['name']}'") + rows, err = self.q("SELECT id, version_id, name, status FROM nvidia.nvcf_functions.functions") + if err: + print(f" WARN nvcf sweep list failed (NVCF may not be enabled): {err[:120]}") + return + for r in rows: + if str(r.get("name", "")).startswith(SMOKE_PREFIX): + print(f" sweeping nvcf function {r['name']} ({r['id']}/{r['version_id']}, {r.get('status')})") + if str(r.get("status")) not in ("INACTIVE", ""): + self.q(f"DELETE FROM nvidia.nvcf_deployments.deployments WHERE function_id = '{r['id']}' AND function_version_id = '{r['version_id']}'") + self.q(f"DELETE FROM nvidia.nvcf_functions.function_versions WHERE function_id = '{r['id']}' AND function_version_id = '{r['version_id']}'") + + # -------------------------------------------------------------- read path + def read_smokes(self) -> None: + print("== tier 1: public catalog ==") + self.step("show services", "SHOW SERVICES IN nvidia", expect_rows=True, contains="nvcf_functions") + self.step("catalog models (public, paginated, LIMIT pushdown)", "SELECT name, org_name, display_name FROM nvidia.catalog.models LIMIT 5", expect_rows=True) + self.step("catalog model get (nvidia org)", "SELECT name, display_name, latest_version_id_str FROM nvidia.catalog.models WHERE org_name = 'nvidia' AND model_name = 'llama-3.1-8b-instruct'") + self.step("catalog GPU catalog (bare array)", "SELECT display_name, pci_device_id, memory_size_gb FROM nvidia.catalog.gpus", expect_rows=True) + self.step("catalog collections", "SELECT name, org_name, display_name FROM nvidia.catalog.collections LIMIT 5") + + print(f"== tier 2: organization {self.org} ==") + self.step("current user ($.user)", "SELECT email, name FROM nvidia.orgs.current_user", expect_rows=True) + self.step("orgs the key can see", "SELECT name, display_name, type FROM nvidia.orgs.orgs", expect_rows=True, contains=self.org) + self.step("org get (root path, WHERE org_name)", f"SELECT name, display_name FROM nvidia.orgs.orgs WHERE org_name = '{self.org}'", expect_rows=True) + self.step("org users (NGC_ORG resolved, paginated)", "SELECT email, name, is_active FROM nvidia.orgs.users", expect_rows=True) + self.step("org teams", "SELECT name, description FROM nvidia.orgs.teams") + self.step("registry models (NGC_ORG resolved)", "SELECT name, framework, latest_version_id_str, updated_date FROM nvidia.private_registry.models") + self.step("registry artifacts (containers, generic resource)", "SELECT name, display_name, updated_date FROM nvidia.private_registry.artifacts WHERE artifact_type = 'containers'") + self.step("registry collections", "SELECT name, display_name FROM nvidia.private_registry.collections") + if self.team: + self.step("registry models by team (*_by_team twin)", f"SELECT name FROM nvidia.private_registry.models WHERE team_name = '{self.team}'") + self.step("team members", f"SELECT email, name FROM nvidia.orgs.team_members WHERE team_name = '{self.team}'") + else: + self.skip("registry models by team", "NGC_TEAM not set") + + print("== tier 3: NVCF ==") + rows, err = self.q("SELECT id, name FROM nvidia.nvcf_deployments.cluster_groups") + if err and NVCF_DISABLED_RE.search(err): + self.nvcf_enabled = False + self.skip("cluster groups / GPU inventory", "Cloud Functions not enabled for this org or key lacks the org-level Cloud Functions scope: " + err[:80]) + return + if err: + self.nvcf_enabled = False + self.note("cluster groups / GPU inventory", False, err) + return + self.nvcf_enabled = True + self.note("cluster groups / GPU inventory (the GPU estate)", True) + self.step("GPU types per cluster group (json_each over gpus)", "SELECT cg.name AS cluster_group, json_extract(g.value, '$.name') AS gpu FROM nvidia.nvcf_deployments.cluster_groups cg, json_each(cg.gpus) g") + self.step("nvcf functions (fleet state)", "SELECT id, name, status, version_id FROM nvidia.nvcf_functions.functions") + self.step("nvcf function ids (scalar list transform)", "SELECT function_id FROM nvidia.nvcf_functions.function_ids") + self.step("nvcf telemetries", "SELECT telemetry_id, name, provider FROM nvidia.nvcf_deployments.telemetries") + self.step("nvcf registry credentials", "SELECT name, registry_credential_id FROM nvidia.nvcf_deployments.registry_credentials") + + # ------------------------------------------------------------- write path + def registry_model_lifecycle(self) -> None: + name = self.name + print(f"== registry model lifecycle ({name}) - metadata only, free ==") + self.step("model INSERT", f"INSERT INTO nvidia.private_registry.models (name, display_name, framework, precision, application, short_description) SELECT '{name}', 'StackQL smoke', 'PyTorch', 'FP16', 'Other', 'created by the stackql smoke suite'") + rows, err = self.q(f"SELECT name, display_name FROM nvidia.private_registry.models WHERE model_name = '{name}'") + self.note("model visible after INSERT", not err and bool(rows) and rows[0].get("name") == name, err or "not found") + self.step("model UPDATE (display_name)", f"UPDATE nvidia.private_registry.models SET display_name = 'StackQL smoke v2' WHERE model_name = '{name}'") + self.step("model reflects UPDATE", f"SELECT display_name FROM nvidia.private_registry.models WHERE model_name = '{name}'", expect_rows=True, contains="v2") + self.step("model versions (empty for a new model)", f"SELECT id, status FROM nvidia.private_registry.model_versions WHERE model_name = '{name}'") + self.step("model DELETE (via artifacts, artifact_type = models)", f"DELETE FROM nvidia.private_registry.artifacts WHERE artifact_type = 'models' AND artifact_name = '{name}'") + rows, err = self.q("SELECT name FROM nvidia.private_registry.models") + self.note("model gone after DELETE", not err and all(r.get("name") != name for r in rows), err or "") + + def nvcf_function_lifecycle(self) -> None: + name = self.name + image = os.environ.get("NVCF_SMOKE_CONTAINER_IMAGE") or "nvcr.io/nvidia/nvcf/echo:latest" + print(f"== nvcf function lifecycle ({name}) - undeployed function, free ==") + self.step("function INSERT (function + first version)", f"INSERT INTO nvidia.nvcf_functions.functions (name, inference_url, container_image, api_body_format) SELECT '{name}', '/echo', '{image}', 'CUSTOM'") + rows, err = self.q(f"SELECT id, version_id, status FROM nvidia.nvcf_functions.functions WHERE name = '{name}'") + fn = next((r for r in rows or [] if r), None) + self.note("function visible in the fleet list", bool(fn), err or "not found") + if not fn: + return + fid, vid = fn["id"], fn["version_id"] + try: + self.step("function version get ($.function)", f"SELECT name, status, inference_url, container_image FROM nvidia.nvcf_functions.function_versions WHERE function_id = '{fid}' AND function_version_id = '{vid}'", expect_rows=True, contains=name) + self.step("authorizations list (grants-as-data)", f"SELECT id, version_id, authorized_parties FROM nvidia.nvcf_functions.authorizations WHERE function_id = '{fid}'") + self.step("queue details on api.nvcf.nvidia.com", f"SELECT function_version_id, function_status, queue_depth FROM nvidia.nvcf_queues.queues WHERE function_id = '{fid}'") + if self.args.with_nvcf_deploy: + self.nvcf_deploy_lifecycle(fid, vid) + finally: + self.step("function version DELETE", f"DELETE FROM nvidia.nvcf_functions.function_versions WHERE function_id = '{fid}' AND function_version_id = '{vid}'") + rows, err = self.q("SELECT name FROM nvidia.nvcf_functions.functions") + self.note("function gone after DELETE", not err and all(r.get("name") != name for r in rows), err or "") + + def nvcf_deploy_lifecycle(self, fid: str, vid: str) -> None: + print("== gated: NVCF deploy lifecycle (smallest instance type, billable minutes) ==") + if not os.environ.get("NVCF_SMOKE_CONTAINER_IMAGE"): + self.skip("deployment INSERT", "NVCF_SMOKE_CONTAINER_IMAGE not set (an image in the org's private registry is required to deploy)") + return + rows, err = self.q("SELECT name, gpus FROM nvidia.nvcf_deployments.cluster_groups") + if err or not rows: + self.note("cluster group for the deployment", False, err or "no cluster groups") + return + cg = rows[0] + gpus = cg["gpus"] if isinstance(cg["gpus"], list) else json.loads(cg["gpus"] or "[]") + if not gpus or not gpus[0].get("instanceTypes"): + self.note("cluster group has an instance type", False, json.dumps(cg, default=str)[:120]) + return + gpu = gpus[0]["name"] + itype = gpus[0]["instanceTypes"][0]["name"] + spec = json.dumps([{"gpu": gpu, "backend": cg["name"], "instanceType": itype, "minInstances": 1, "maxInstances": 1}]) + try: + self.step(f"deployment INSERT ({cg['name']} / {gpu} / {itype})", f"INSERT INTO nvidia.nvcf_deployments.deployments (function_id, function_version_id, deployment_specifications) SELECT '{fid}', '{vid}', '{spec}'") + self.wait_for("function ACTIVE", f"SELECT function_status FROM nvidia.nvcf_deployments.deployments WHERE function_id = '{fid}' AND function_version_id = '{vid}'", lambda rows: rows and rows[0].get("function_status") == "ACTIVE", timeout=900, interval=20) + finally: + self.step("deployment DELETE (always)", f"DELETE FROM nvidia.nvcf_deployments.deployments WHERE function_id = '{fid}' AND function_version_id = '{vid}'") + self.wait_for("function INACTIVE after undeploy", f"SELECT status FROM nvidia.nvcf_functions.function_versions WHERE function_id = '{fid}' AND function_version_id = '{vid}'", lambda rows: rows and rows[0].get("status") in ("INACTIVE", "ERROR"), timeout=300, interval=15) + + # ---------------------------------------------------------------- summary + def summary(self) -> int: + print("\n== summary ==") + counts = {"PASS": 0, "FAIL": 0, "SKIP": 0} + for name, status, note in self.results: + counts[status] = counts.get(status, 0) + 1 + if status != "PASS": + print(f" {status:5s} {name} [{note[:110]}]") + print(f" {counts['PASS']} passed, {counts['FAIL']} failed, {counts['SKIP']} skipped; {self.requests} statements " + f"(registry: {'public' if self.args.live else 'local'}, org: {self.org}, nvcf: {self.nvcf_enabled})") + return 1 if counts["FAIL"] else 0 + + +def main() -> int: + ap = argparse.ArgumentParser(description="nvidia provider smoke test") + ap.add_argument("--live", action="store_true", help="run against the published provider in the stackql registry (default: the local provider-dev/openapi file registry)") + ap.add_argument("--cleanup-only", action="store_true", help="sweep stackql-smoke-* breadcrumbs and exit") + ap.add_argument("--read-only", action="store_true", help="read smokes only") + ap.add_argument("--with-nvcf-deploy", action="store_true", help="also run the gated NVCF deploy lifecycle (billable GPU minutes; needs NVCF_SMOKE_CONTAINER_IMAGE)") + args = ap.parse_args() + + smoke = Smoke(args) + print(f"nvidia smoke test registry={'public' if args.live else 'local'} org={smoke.org} team={smoke.team or '-'} name={smoke.name} stackql={smoke.sq.version}") + smoke.cleanup_breadcrumbs() + if args.cleanup_only: + return 0 + smoke.read_smokes() + if not args.read_only: + smoke.registry_model_lifecycle() + if smoke.nvcf_enabled: + smoke.nvcf_function_lifecycle() + else: + smoke.skip("nvcf function lifecycle", "Cloud Functions not enabled for this org / key") + return smoke.summary() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 0000000..dc32d51 --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,23 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# vendored shared docusaurus config (cloned at build time) +.shared-config diff --git a/website/.gitkeep b/website/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/website/README.md b/website/README.md new file mode 100644 index 0000000..b28211a --- /dev/null +++ b/website/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. + +## Installation + +```bash +yarn +``` + +## Local Development + +```bash +yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +## Build + +```bash +yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +## Deployment + +Using SSH: + +```bash +USE_SSH=true yarn deploy +``` + +Not using SSH: + +```bash +GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/website/docs/index.md b/website/docs/index.md new file mode 100644 index 0000000..9aed1b4 --- /dev/null +++ b/website/docs/index.md @@ -0,0 +1,282 @@ +--- +title: nvidia +hide_title: false +hide_table_of_contents: false +keywords: + - nvidia + - ngc + - nvcf + - nvidia cloud functions + - ngc private registry + - gpu inventory + - stackql + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, provision and manage the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (functions, versions, deployments, cluster groups and GPUs, sharing grants), the NGC private registry and public catalog (models, resources, helm charts, collections), and NGC organizations, teams and users +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +id: 'provider-intro' +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; + +Query, provision and operate the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (NVCF: functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, function sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, containers and helm charts as metadata, collections, shares, encryption keys), the public NGC catalog (artifact metadata, the GPU and cloud service provider catalogs - readable without an account) and NGC organizations, teams, users, roles and invitations. GPU capacity by cluster group, NVCF function fleet state by deployment specification, function sharing audits and registry estate reports are the queries this provider exists for. + + +:::info[Provider Summary] + +total services: __7__ +total resources: __83__ + +::: + +See also: +[[` SHOW `]](https://stackql.io/docs/language-spec/show) [[` DESCRIBE `]](https://stackql.io/docs/language-spec/describe) [[` REGISTRY `]](https://stackql.io/docs/language-spec/registry) +* * * + +## Installation + +To pull the latest version of the `nvidia` provider, run the following command: + +```bash +REGISTRY PULL nvidia; +``` +> To view previous provider versions or to pull a specific provider version, see [here](https://stackql.io/docs/language-spec/registry). + +## Scope + +This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (338 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. + +## Authentication + +The provider authenticates with an NGC Personal API Key as a bearer token. Generate one in the NGC console under Setup -> Generate Personal API Key, granting the service scopes you need (Private Registry for the registry service; Cloud Functions for the `nvcf_*` services - at the organization level, since a key with a team-level Cloud Functions role does not work with NVCF), export it as (the same variable the NVIDIA Terraform provider and the NGC CLI read), and StackQL picks it up with no further configuration: + +```bash +export NGC_API_KEY='nvapi-...' +export NGC_ORG='0123456789ab' # optional, see organization scope +``` + +or using PowerShell: + +```powershell +$env:NGC_API_KEY = 'nvapi-...' +$env:NGC_ORG = '0123456789ab' +``` + +The public catalog (`nvidia.catalog`) serves public artifact metadata and the GPU catalog without any credential; the variable still has to be set for the provider to run, but any value works for those reads. + +## Organization scope + +Registry and organization resources are scoped to an NGC organization, addressed by its name (`org_name` - the org id shown under Organization -> Setup, for example `0123456789ab`). `org_name` is a server variable resolved from the environment variable when it is set, so queries against one organization need no `WHERE org_name` clause: + +```sql +SELECT name, display_name, framework, latest_version_id_str, updated_date +FROM nvidia.private_registry.models; +``` + +A `WHERE org_name = '...'` value always takes precedence over the environment, which is how a single session addresses several organizations. With the variable unset, `org_name` is a required parameter on every org-scoped method (visible in `SHOW METHODS`) and must be supplied per query. To discover the organizations the key can see: + +```sql +SELECT name, display_name, type FROM nvidia.orgs.orgs; +``` + +Team-scoped registry paths are exposed as `*_by_team` methods on the same resources - add `team_name` to the `WHERE` clause and the team-scoped operation is selected: + +```sql +SELECT name, updated_date +FROM nvidia.private_registry.models +WHERE team_name = 'ml-platform'; +``` + +NVCF resources carry no organization in their paths: the key determines the organization. + +## Pagination and casing + +NGC core collections (organizations, users, teams, registry artifacts and versions) page with `page-number` and `page-size`; StackQL follows `paginationInfo.index` / `totalPages` transparently, so a `SELECT` returns every row, and `SELECT ... LIMIT n` is pushed to the wire as `page-size`. Columns are snake_case aliases of the camelCase wire properties (`displayName` -> `display_name`); query parameters are addressed in snake_case too (`resolve_labels`, `page_size`) and translated to the kebab-case wire names. + +## Deprecations + +NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those path families are excluded from the provider. Private Registry team scoping is exempt from that schedule and stays mapped (the `*_by_team` methods). Refreshes of the provider are reviewed spec diffs against content-hash pins. + +## Example queries + +### GPU capacity by cluster group + +What GPU capacity exists, and where - the NVCF cluster groups the organization can deploy to, with their GPU types and instance types: + +```sql +SELECT cg.name AS cluster_group, + json_extract(g.value, '$.name') AS gpu, + json_extract(g.value, '$.instanceTypes[0].name') AS instance_type, + json_extract(cg.clusters, '$[0].name') AS cluster +FROM nvidia.nvcf_deployments.cluster_groups cg, + json_each(cg.gpus) g +ORDER BY cluster_group, gpu; +``` + +### NVCF function fleet state + +Every function version with its status, the container or helm chart it runs and its GPU deployment specification: + +```sql +SELECT f.name, f.status, f.version_id, + f.container_image, f.helm_chart, + json_extract(d.deployment_specifications, '$[0].gpu') AS gpu, + json_extract(d.deployment_specifications, '$[0].instanceType') AS instance_type, + json_extract(d.deployment_specifications, '$[0].minInstances') AS min_instances, + json_extract(d.deployment_specifications, '$[0].maxInstances') AS max_instances +FROM nvidia.nvcf_functions.functions f +LEFT JOIN nvidia.nvcf_deployments.deployments d + ON d.function_id = f.id AND d.function_version_id = f.version_id +WHERE f.status = 'ACTIVE'; +``` + +Deployed functions with more than one minimum instance - the standing GPU spend: + +```sql +SELECT function_name, function_status, + json_extract(deployment_specifications, '$[0].gpu') AS gpu, + json_extract(deployment_specifications, '$[0].minInstances') AS min_instances +FROM nvidia.nvcf_deployments.deployments +WHERE function_id = 'fe97aa46-c8ea-4237-ba56-1212036f4d0f' + AND function_version_id = '868d2192-6819-4b53-89f5-3c7fb1df2a72'; +``` + +### Function sharing audit + +Which NVIDIA Cloud Accounts may invoke a function - the authorization grants as data: + +```sql +SELECT id AS function_id, version_id, nca_id AS owner, + json_extract(authorized_parties, '$[*].ncaId') AS authorized_accounts +FROM nvidia.nvcf_functions.authorizations +WHERE function_id = 'fe97aa46-c8ea-4237-ba56-1212036f4d0f'; +``` + +### Registry estate report + +Models in the private registry by framework, with size and update recency (with `NGC_ORG` set): + +```sql +SELECT name, framework, precision, + latest_version_id_str AS latest_version, + latest_version_size_in_bytes / 1048576 AS latest_version_mb, + updated_date +FROM nvidia.private_registry.models +ORDER BY updated_date DESC; +``` + +Containers, helm charts and resources through the generic artifacts resource: + +```sql +SELECT name, display_name, latest_version_id_str, updated_date +FROM nvidia.private_registry.artifacts +WHERE artifact_type = 'containers'; +``` + +### Public catalog, no account needed + +```sql +SELECT name, org_name, display_name, framework +FROM nvidia.catalog.models +LIMIT 20; + +SELECT display_name, pci_device_id, memory_size_gb, form_factor +FROM nvidia.catalog.gpus; +``` + +### Organization membership + +Users in the organization with their roles: + +```sql +SELECT email, name, is_active, last_login_date, + json_extract(roles, '$[0].orgRoles') AS org_roles +FROM nvidia.orgs.users; +``` + +### Provisioning + +Mutations use the same SQL grammar - `INSERT` creates, `UPDATE` patches, `DELETE` removes, and lifecycle actions are `EXEC` methods. Body columns are the snake_case spellings of the wire properties. A function with a first version, its deployment on the smallest instance, and the teardown: + +```sql +-- create the function (and its first version) +INSERT INTO nvidia.nvcf_functions.functions (name, inference_url, container_image, api_body_format) +SELECT 'echo-demo', '/echo', 'nvcr.io/0123456789ab/echo:latest', 'CUSTOM'; + +-- deploy the version (the specification is a JSON array of {gpu, backend, instanceType, minInstances, maxInstances}) +INSERT INTO nvidia.nvcf_deployments.deployments (function_id, function_version_id, deployment_specifications) +SELECT 'fe97aa46-...', '868d2192-...', + '[{"gpu": "L40", "backend": "GFN", "instanceType": "GCP.GPU.L40_1x", "minInstances": 1, "maxInstances": 1}]'; + +-- share it with another NVIDIA Cloud Account +INSERT INTO nvidia.nvcf_functions.authorizations (function_id, authorized_party) +SELECT 'fe97aa46-...', '{"ncaId": "nca-partner-id"}'; + +-- undeploy, then delete the version +DELETE FROM nvidia.nvcf_deployments.deployments +WHERE function_id = 'fe97aa46-...' AND function_version_id = '868d2192-...'; + +DELETE FROM nvidia.nvcf_functions.function_versions +WHERE function_id = 'fe97aa46-...' AND function_version_id = '868d2192-...'; +``` + +Invoke a function through the HTTP-polling form and read the result: + +```sql +EXEC nvidia.nvcf_invocation.invocations.invoke + @function_id = 'fe97aa46-...', + @body = '{"prompt": "hello"}'; + +SELECT response +FROM nvidia.nvcf_invocation.invocation_status +WHERE request_id = ''; +``` + +Registry metadata is provisioned the same way: + +```sql +INSERT INTO nvidia.private_registry.models (name, display_name, framework, precision, application, short_description) +SELECT 'resnet50-finetuned', 'ResNet-50 fine-tuned', 'PyTorch', 'FP16', 'Classification', 'fine-tuned on internal data'; + +UPDATE nvidia.private_registry.models +SET display_name = 'ResNet-50 fine-tuned v2' +WHERE model_name = 'resnet50-finetuned'; + +DELETE FROM nvidia.private_registry.artifacts +WHERE artifact_type = 'models' AND artifact_name = 'resnet50-finetuned'; +``` + +### The whole GPU estate in one statement + +NVCF cluster-group GPU types alongside the hyperscaler GPU instance inventory, using the `aws`, `google` and `azure` providers: + +```sql +SELECT 'nvcf' AS platform, cg.name AS location, json_extract(g.value, '$.name') AS gpu +FROM nvidia.nvcf_deployments.cluster_groups cg, json_each(cg.gpus) g +UNION ALL +SELECT 'aws', region, json_extract(gpu_info, '$.Gpus[0].Name') +FROM aws.ec2.instance_types +WHERE region = 'us-east-1' AND gpu_info IS NOT NULL +UNION ALL +SELECT 'google', json_extract(zone, '$'), json_extract(accelerators, '$[0].guestAcceleratorType') +FROM google.compute.machine_types +WHERE project = 'my-project' AND zone = 'us-central1-a' AND accelerators IS NOT NULL; +``` + + +## Services + diff --git a/website/docs/services/catalog/artifact_deployment_params/index.md b/website/docs/services/catalog/artifact_deployment_params/index.md new file mode 100644 index 0000000..2c3b7cf --- /dev/null +++ b/website/docs/services/catalog/artifact_deployment_params/index.md @@ -0,0 +1,457 @@ +--- +title: artifact_deployment_params +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_deployment_params + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_deployment_params resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, artifact_type, artifact_name, csp_nameinherit_csp_parametersGet public artifact deployment parameters details in team
org_name, artifact_type, artifact_name, csp_nameinherit_csp_parametersGet public artifact deployment parameters details in org
org_name, team_name, artifact_type, artifact_nameinherit_csp_parametersList public artifact deployment parameters in team
org_name, artifact_type, artifact_nameinherit_csp_parametersList public artifact deployment parameters in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Cloud service provider name
string (UTF-8)Organization name
string (UTF-8)Team name
booleanInherit CSP parameters
+ +## `SELECT` examples + + + + +Get public artifact deployment parameters details in team + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.catalog.artifact_deployment_params +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND csp_name = '{{ csp_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + + +Get public artifact deployment parameters details in org + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.catalog.artifact_deployment_params +WHERE org_name = '{{ org_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND csp_name = '{{ csp_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + + +List public artifact deployment parameters in team + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.catalog.artifact_deployment_params +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + + +List public artifact deployment parameters in org + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.catalog.artifact_deployment_params +WHERE org_name = '{{ org_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + diff --git a/website/docs/services/catalog/artifact_files/index.md b/website/docs/services/catalog/artifact_files/index.md new file mode 100644 index 0000000..3af5f4c --- /dev/null +++ b/website/docs/services/catalog/artifact_files/index.md @@ -0,0 +1,263 @@ +--- +title: artifact_files +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_files + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the object
integer (int64)Size of the file in bytes (wire: sizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the object
integer (int64)Size of the file in bytes (wire: sizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
artifact_type, org_name, team_name, artifact_name, version_idpage_size, page_numberList files of the artifact version in team as guest
artifact_type, org_name, artifact_name, version_idpage_size, page_reference, page_numberList files of the artifact version in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List files of the artifact version in team as guest + +```sql +SELECT +created_date, +description, +path, +size_in_bytes, +updated_date +FROM nvidia.catalog.artifact_files +WHERE artifact_type = '{{ artifact_type }}' -- required +AND org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List files of the artifact version in org as guest + +```sql +SELECT +created_date, +description, +path, +size_in_bytes, +updated_date +FROM nvidia.catalog.artifact_files +WHERE artifact_type = '{{ artifact_type }}' -- required +AND org_name = '{{ org_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/artifact_specs/index.md b/website/docs/services/catalog/artifact_specs/index.md new file mode 100644 index 0000000..4a9bbae --- /dev/null +++ b/website/docs/services/catalog/artifact_specs/index.md @@ -0,0 +1,284 @@ +--- +title: artifact_specs +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_specs + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_specs resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringNVCF function id for the model playground (wire: nvcfFunctionId)
stringUnique name of the model (wire: artifactName)
stringArtifactTypeEnum of the artifact (wire: artifactType)
stringMetadata json string
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringorg/team of the model
stringNVCF inference path (invocation route) for the model playground (wire: nvcfInferencePath)
stringOpenAPI specification for this model (wire: openAPISpec)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringNVCF function id for the model playground (wire: nvcfFunctionId)
stringUnique name of the model (wire: artifactName)
stringArtifactTypeEnum of the artifact (wire: artifactType)
stringMetadata json string
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringorg/team of the model
stringNVCF inference path (invocation route) for the model playground (wire: nvcfInferencePath)
stringOpenAPI specification for this model (wire: openAPISpec)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, artifact_type, artifact_nameGet AI Playground for public artifactType
org_name, artifact_type, artifact_nameGet AI Playground for public artifactType
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Artifact type
string (UTF-8)Organization name
string (UTF-8)Team name
+ +## `SELECT` examples + + + + +Get AI Playground for public artifactType + +```sql +SELECT +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date +FROM nvidia.catalog.artifact_specs +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +; +``` + + + +Get AI Playground for public artifactType + +```sql +SELECT +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date +FROM nvidia.catalog.artifact_specs +WHERE org_name = '{{ org_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +; +``` + + diff --git a/website/docs/services/catalog/artifacts/index.md b/website/docs/services/catalog/artifacts/index.md new file mode 100644 index 0000000..8da0a79 --- /dev/null +++ b/website/docs/services/catalog/artifacts/index.md @@ -0,0 +1,794 @@ +--- +title: artifacts +hide_title: false +hide_table_of_contents: false +keywords: + - artifacts + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifacts resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
artifact_type, org_name, team_name, artifact_nameresolve_labels, remove_unresolved_labelsGet artifact details in team as guest
org_name, artifact_type, artifact_nameresolve_labels, remove_unresolved_labelsGet artifact details in org as guest
artifact_typepage_size, page_numberList public artifacts
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get artifact details in team as guest + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.catalog.artifacts +WHERE artifact_type = '{{ artifact_type }}' -- required +AND org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get artifact details in org as guest + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.catalog.artifacts +WHERE org_name = '{{ org_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List public artifacts + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.catalog.artifacts +WHERE artifact_type = '{{ artifact_type }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/collection_artifacts/index.md b/website/docs/services/catalog/collection_artifacts/index.md new file mode 100644 index 0000000..68c3e53 --- /dev/null +++ b/website/docs/services/catalog/collection_artifacts/index.md @@ -0,0 +1,583 @@ +--- +title: collection_artifacts +hide_title: false +hide_table_of_contents: false +keywords: + - collection_artifacts + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a collection_artifacts resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, collection_name, artifact_typepage_size, page_number, order_by, resolve_labels, remove_unresolved_labelsList collection artifacts the user can access in the specified org and team as guest
org_name, collection_name, artifact_typepage_size, page_number, order_by, resolve_labels, remove_unresolved_labelsList collection artifacts the user can access in the specified org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact type
string (UTF-8)Collection name
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Order by
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +List collection artifacts the user can access in the specified org and team as guest + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.catalog.collection_artifacts +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND collection_name = '{{ collection_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List collection artifacts the user can access in the specified org as guest + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.catalog.collection_artifacts +WHERE org_name = '{{ org_name }}' -- required +AND collection_name = '{{ collection_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + diff --git a/website/docs/services/catalog/collections/index.md b/website/docs/services/catalog/collections/index.md new file mode 100644 index 0000000..9b86b68 --- /dev/null +++ b/website/docs/services/catalog/collections/index.md @@ -0,0 +1,624 @@ +--- +title: collections +hide_title: false +hide_table_of_contents: false +keywords: + - collections + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a collections resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, collection_nameresolve_labels, remove_unresolved_labelsGet collection details in team as guest
org_name, collection_nameresolve_labels, remove_unresolved_labelsGet collection details in org as guest
page_size, page_numberList public collections
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Collection name
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get collection details in team as guest + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.catalog.collections +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND collection_name = '{{ collection_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get collection details in org as guest + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.catalog.collections +WHERE org_name = '{{ org_name }}' -- required +AND collection_name = '{{ collection_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List public collections + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.catalog.collections +WHERE page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/csp_deployment_params/index.md b/website/docs/services/catalog/csp_deployment_params/index.md new file mode 100644 index 0000000..97239df --- /dev/null +++ b/website/docs/services/catalog/csp_deployment_params/index.md @@ -0,0 +1,363 @@ +--- +title: csp_deployment_params +hide_title: false +hide_table_of_contents: false +keywords: + - csp_deployment_params + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a csp_deployment_params resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
csp_nameGet cloud service provider deployment parameters details
csp_nameCreate cloud service provider deployment parameters
csp_nameUpdate cloud service provider deployment parameters
csp_nameDelete cloud service provider deployment parameters
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Cloud service provider name
+ +## `SELECT` examples + + + + +Get cloud service provider deployment parameters details + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.catalog.csp_deployment_params +WHERE csp_name = '{{ csp_name }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Create cloud service provider deployment parameters + +```sql +INSERT INTO nvidia.catalog.csp_deployment_params ( +container, +cpu, +gpu, +memory, +model, +resource, +storage, +csp_name +) +SELECT +'{{ container }}', +'{{ cpu }}', +'{{ gpu }}', +'{{ memory }}', +'{{ model }}', +'{{ resource }}', +'{{ storage }}', +'{{ csp_name }}' +RETURNING +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +; +``` + + + +{`# Description fields are for documentation purposes +- name: csp_deployment_params + props: + - name: csp_name + value: "{{ csp_name }}" + description: Required parameter for the csp_deployment_params resource. + - name: container + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: cpu + description: | + Deployment CPU Parameters object + value: + count: {{ count }} + - name: gpu + description: | + Deployment GPU Parameters object + value: + count: {{ count }} + type: "{{ type }}" + - name: memory + description: | + Deployment Memory Parameters object + value: + capacityInGB: {{ capacityInGB }} + - name: model + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: resource + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: storage + description: | + Deployment Storage Parameters object + value: + capacityInGB: {{ capacityInGB }} +`} + + + + + +## `UPDATE` examples + + + + +Update cloud service provider deployment parameters + +```sql +UPDATE nvidia.catalog.csp_deployment_params +SET +container = '{{ container }}', +cpu = '{{ cpu }}', +gpu = '{{ gpu }}', +memory = '{{ memory }}', +model = '{{ model }}', +resource = '{{ resource }}', +storage = '{{ storage }}' +WHERE +csp_name = '{{ csp_name }}' --required +RETURNING +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage; +``` + + + + +## `DELETE` examples + + + + +Delete cloud service provider deployment parameters + +```sql +DELETE FROM nvidia.catalog.csp_deployment_params +WHERE csp_name = '{{ csp_name }}' --required +; +``` + + diff --git a/website/docs/services/catalog/csp_deployment_params_meta/index.md b/website/docs/services/catalog/csp_deployment_params_meta/index.md new file mode 100644 index 0000000..c16ec24 --- /dev/null +++ b/website/docs/services/catalog/csp_deployment_params_meta/index.md @@ -0,0 +1,314 @@ +--- +title: csp_deployment_params_meta +hide_title: false +hide_table_of_contents: false +keywords: + - csp_deployment_params_meta + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a csp_deployment_params_meta resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectCloud Service Provider Deployment CPU Parameters object
stringCloud Service Provider name
objectCloud Service Provider Deployment GPU Parameters object
objectCloud Service Provider Deployment Memory Parameters object
objectCloud Service Provider Deployment Storage Parameters object
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
csp_nameGet cloud service provider deployment parameters meta details
csp_name, gpu, storageCreate cloud service provider deployment parameters meta
csp_nameUpdate cloud service provider deployment parameters meta
csp_nameDelete cloud service provider deployment parameters meta
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Cloud service provider name
+ +## `SELECT` examples + + + + +Get cloud service provider deployment parameters meta details + +```sql +SELECT +cpu, +csp, +gpu, +memory, +storage +FROM nvidia.catalog.csp_deployment_params_meta +WHERE csp_name = '{{ csp_name }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Create cloud service provider deployment parameters meta + +```sql +INSERT INTO nvidia.catalog.csp_deployment_params_meta ( +cpu, +gpu, +memory, +storage, +csp_name +) +SELECT +'{{ cpu }}', +'{{ gpu }}' /* required */, +'{{ memory }}', +'{{ storage }}' /* required */, +'{{ csp_name }}' +RETURNING +cpu, +csp, +gpu, +memory, +storage +; +``` + + + +{`# Description fields are for documentation purposes +- name: csp_deployment_params_meta + props: + - name: csp_name + value: "{{ csp_name }}" + description: Required parameter for the csp_deployment_params_meta resource. + - name: cpu + description: | + Cloud Service Provider Deployment CPU Parameters object + value: + count: + defaultValue: {{ defaultValue }} + maxValue: {{ maxValue }} + minValue: {{ minValue }} + - name: gpu + description: | + Cloud Service Provider Deployment GPU Parameters object + value: + count: + defaultValue: {{ defaultValue }} + maxValue: {{ maxValue }} + minValue: {{ minValue }} + type: + defaultItemName: "{{ defaultItemName }}" + items: + - displayName: "{{ displayName }}" + logo: "{{ logo }}" + name: "{{ name }}" + - name: memory + description: | + Cloud Service Provider Deployment Memory Parameters object + value: + capacityInGB: + defaultValue: {{ defaultValue }} + maxValue: {{ maxValue }} + minValue: {{ minValue }} + - name: storage + description: | + Cloud Service Provider Deployment Storage Parameters object + value: + capacityInGB: + defaultValue: {{ defaultValue }} + maxValue: {{ maxValue }} + minValue: {{ minValue }} +`} + + + + + +## `UPDATE` examples + + + + +Update cloud service provider deployment parameters meta + +```sql +UPDATE nvidia.catalog.csp_deployment_params_meta +SET +cpu = '{{ cpu }}', +gpu = '{{ gpu }}', +memory = '{{ memory }}', +storage = '{{ storage }}' +WHERE +csp_name = '{{ csp_name }}' --required +RETURNING +cpu, +csp, +gpu, +memory, +storage; +``` + + + + +## `DELETE` examples + + + + +Delete cloud service provider deployment parameters meta + +```sql +DELETE FROM nvidia.catalog.csp_deployment_params_meta +WHERE csp_name = '{{ csp_name }}' --required +; +``` + + diff --git a/website/docs/services/catalog/csps/index.md b/website/docs/services/catalog/csps/index.md new file mode 100644 index 0000000..6d21550 --- /dev/null +++ b/website/docs/services/catalog/csps/index.md @@ -0,0 +1,457 @@ +--- +title: csps +hide_title: false +hide_table_of_contents: false +keywords: + - csps + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a csps resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the Cloud Service Provider
stringDisplay name of the Cloud Service Provider (wire: displayName)
array
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the Cloud Service Provider
booleanDetermines if this Cloud Service Provider can be used to deploy artifacts (wire: isDeployable)
booleanDetermines if this Cloud Service Provider is enabled (wire: isEnabled)
array
stringURL for the logo image
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the Cloud Service Provider
stringDisplay name of the Cloud Service Provider (wire: displayName)
array
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the Cloud Service Provider
booleanDetermines if this Cloud Service Provider can be used to deploy artifacts (wire: isDeployable)
booleanDetermines if this Cloud Service Provider is enabled (wire: isEnabled)
array
stringURL for the logo image
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
csp_nameGet cloud service provider details
page_size, page_number, include_disabledList cloud service providers
nameCreate cloud service provider
csp_nameUpdate cloud service provider
csp_nameDelete cloud service provider
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Cloud service provider name
booleanInclude disabled
integerPage number - zero based index
integerPage size
+ +## `SELECT` examples + + + + +Get cloud service provider details + +```sql +SELECT +name, +display_name, +attributes, +created_date, +description, +is_deployable, +is_enabled, +labels, +logo, +updated_date +FROM nvidia.catalog.csps +WHERE csp_name = '{{ csp_name }}' -- required +; +``` + + + +List cloud service providers + +```sql +SELECT +name, +display_name, +attributes, +created_date, +description, +is_deployable, +is_enabled, +labels, +logo, +updated_date +FROM nvidia.catalog.csps +WHERE page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND include_disabled = '{{ include_disabled }}' +; +``` + + + + +## `INSERT` examples + + + + +Create cloud service provider + +```sql +INSERT INTO nvidia.catalog.csps ( +attributes, +description, +display_name, +is_enabled, +labels, +logo, +name +) +SELECT +'{{ attributes }}', +'{{ description }}', +'{{ display_name }}', +{{ is_enabled }}, +'{{ labels }}', +'{{ logo }}', +'{{ name }}' /* required */ +RETURNING +name, +display_name, +attributes, +created_date, +description, +is_deployable, +is_enabled, +labels, +logo, +updated_date +; +``` + + + +{`# Description fields are for documentation purposes +- name: csps + props: + - name: attributes + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: description + value: "{{ description }}" + description: | + Description of the Cloud Service Provider + - name: display_name + value: "{{ display_name }}" + description: | + Display name of the Cloud Service Provider + - name: is_enabled + value: {{ is_enabled }} + description: | + Determines if this Cloud Service Provider is enabled + - name: labels + value: + - "{{ labels }}" + - name: logo + value: "{{ logo }}" + description: | + URL for the logo image + - name: name + value: "{{ name }}" + description: | + Unique name of the Cloud Service Provider +`} + + + + + +## `UPDATE` examples + + + + +Update cloud service provider + +```sql +UPDATE nvidia.catalog.csps +SET +attributes = '{{ attributes }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +is_enabled = {{ is_enabled }}, +labels = '{{ labels }}', +logo = '{{ logo }}' +WHERE +csp_name = '{{ csp_name }}' --required +RETURNING +name, +display_name, +attributes, +created_date, +description, +is_deployable, +is_enabled, +labels, +logo, +updated_date; +``` + + + + +## `DELETE` examples + + + + +Delete cloud service provider + +```sql +DELETE FROM nvidia.catalog.csps +WHERE csp_name = '{{ csp_name }}' --required +; +``` + + diff --git a/website/docs/services/catalog/gpus/index.md b/website/docs/services/catalog/gpus/index.md new file mode 100644 index 0000000..d432ae4 --- /dev/null +++ b/website/docs/services/catalog/gpus/index.md @@ -0,0 +1,875 @@ +--- +title: gpus +hide_title: false +hide_table_of_contents: false +keywords: + - gpus + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a gpus resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringPCI Device ID (wire: pciDeviceId)
stringPCI Subsystem Device ID (wire: pciSubsystemDeviceId)
stringPCI Vendor ID (wire: pciVendorId)
stringDisplay name for the GPU (wire: displayName)
stringLabel name for the GPU (wire: labelName)
string (date_time)Creation timestamp (wire: createdAt)
stringCUDA major version (wire: cudaMajorVersion)
stringCUDA minor version (wire: cudaMinorVersion)
stringGPU form factor (wire: formFactor)
array (wire: gpuCounts)
integer (int32)Memory size in GB (smallint range) (wire: memorySizeGb)
objectRequest status information (wire: requestStatus)
string (date_time)Last update timestamp (wire: updatedAt)
+
+ + +Response for GPU by PCI ID lookup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringPCI Device ID (wire: pciDeviceId)
stringPCI Subsystem Device ID (wire: pciSubsystemDeviceId)
stringPCI Vendor ID (wire: pciVendorId)
stringDisplay name for the GPU (wire: displayName)
stringLabel name for the GPU (wire: labelName)
string (date_time)Creation timestamp (wire: createdAt)
stringCUDA major version (wire: cudaMajorVersion)
stringCUDA minor version (wire: cudaMinorVersion)
stringGPU form factor (wire: formFactor)
array (wire: gpuCounts)
integer (int32)Memory size in GB (smallint range) (wire: memorySizeGb)
objectRequest status information (wire: requestStatus)
string (date_time)Last update timestamp (wire: updatedAt)
+
+ + +Response for GPU by PCI ID lookup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringPCI Device ID (wire: pciDeviceId)
stringPCI Subsystem Device ID (wire: pciSubsystemDeviceId)
stringPCI Vendor ID (wire: pciVendorId)
stringDisplay name for the GPU (wire: displayName)
stringLabel name for the GPU (wire: labelName)
string (date_time)Creation timestamp (wire: createdAt)
stringCUDA major version (wire: cudaMajorVersion)
stringCUDA minor version (wire: cudaMinorVersion)
stringGPU form factor (wire: formFactor)
array (wire: gpuCounts)
integer (int32)Memory size in GB (smallint range) (wire: memorySizeGb)
objectRequest status information (wire: requestStatus)
string (date_time)Last update timestamp (wire: updatedAt)
+
+ + +Response for GPU by PCI ID lookup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringPCI Device ID (wire: pciDeviceId)
stringPCI Subsystem Device ID (wire: pciSubsystemDeviceId)
stringPCI Vendor ID (wire: pciVendorId)
stringDisplay name for the GPU (wire: displayName)
stringLabel name for the GPU (wire: labelName)
string (date_time)Creation timestamp (wire: createdAt)
stringCUDA major version (wire: cudaMajorVersion)
stringCUDA minor version (wire: cudaMinorVersion)
stringGPU form factor (wire: formFactor)
array (wire: gpuCounts)
integer (int32)Memory size in GB (smallint range) (wire: memorySizeGb)
objectRequest status information (wire: requestStatus)
string (date_time)Last update timestamp (wire: updatedAt)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
pci_device_id, pci_vendor_id, pci_subsystem_device_idGet a single GPU record matching the full PCI composite key
pci_device_id, pci_vendor_idGet all GPUs by PCI records matching the given PCI Device ID and Vendor ID
pci_device_idGet all GPU records matching the given PCI Device ID
Get all GPU by PCI records
pci_device_id, pci_vendor_id, pci_subsystem_device_id, display_name, pci_device_idCreate a new GPU record using the full PCI composite key
pci_device_id, display_name, pci_device_idCreate a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')
pci_device_id, pci_vendor_id, pci_subsystem_device_idPartially update a GPU record matching the full PCI composite key. Only provided fields will be updated.
pci_device_idPartially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated.
pci_device_id, pci_vendor_id, pci_subsystem_device_idDelete a GPU record matching the full PCI composite key
pci_device_idDelete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown')
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)PCI Device ID
string (UTF-8)PCI Subsystem Device ID
string (UTF-8)PCI Vendor ID
+ +## `SELECT` examples + + + + +Get a single GPU record matching the full PCI composite key + +```sql +SELECT +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at +FROM nvidia.catalog.gpus +WHERE pci_device_id = '{{ pci_device_id }}' -- required +AND pci_vendor_id = '{{ pci_vendor_id }}' -- required +AND pci_subsystem_device_id = '{{ pci_subsystem_device_id }}' -- required +; +``` + + + +Get all GPUs by PCI records matching the given PCI Device ID and Vendor ID + +```sql +SELECT +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at +FROM nvidia.catalog.gpus +WHERE pci_device_id = '{{ pci_device_id }}' -- required +AND pci_vendor_id = '{{ pci_vendor_id }}' -- required +; +``` + + + +Get all GPU records matching the given PCI Device ID + +```sql +SELECT +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at +FROM nvidia.catalog.gpus +WHERE pci_device_id = '{{ pci_device_id }}' -- required +; +``` + + + +Get all GPU by PCI records + +```sql +SELECT +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at +FROM nvidia.catalog.gpus +; +``` + + + + +## `INSERT` examples + + + + +Create a new GPU record using the full PCI composite key + +```sql +INSERT INTO nvidia.catalog.gpus ( +cuda_major_version, +cuda_minor_version, +display_name, +form_factor, +gpu_counts, +label_name, +memory_size_gb, +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +pci_device_id, +pci_vendor_id, +pci_subsystem_device_id +) +SELECT +'{{ cuda_major_version }}', +'{{ cuda_minor_version }}', +'{{ display_name }}' /* required */, +'{{ form_factor }}', +'{{ gpu_counts }}', +'{{ label_name }}', +{{ memory_size_gb }}, +'{{ pci_device_id }}' /* required */, +'{{ pci_subsystem_device_id }}', +'{{ pci_vendor_id }}', +'{{ pci_device_id }}' /* required */, +'{{ pci_vendor_id }}', +'{{ pci_subsystem_device_id }}' +RETURNING +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at +; +``` + + + +Create a new GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown') + +```sql +INSERT INTO nvidia.catalog.gpus ( +cuda_major_version, +cuda_minor_version, +display_name, +form_factor, +gpu_counts, +label_name, +memory_size_gb, +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +pci_device_id +) +SELECT +'{{ cuda_major_version }}', +'{{ cuda_minor_version }}', +'{{ display_name }}' /* required */, +'{{ form_factor }}', +'{{ gpu_counts }}', +'{{ label_name }}', +{{ memory_size_gb }}, +'{{ pci_device_id }}' /* required */, +'{{ pci_subsystem_device_id }}', +'{{ pci_vendor_id }}', +'{{ pci_device_id }}' /* required */ +RETURNING +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at +; +``` + + + +{`# Description fields are for documentation purposes +- name: gpus + props: + - name: pci_device_id + value: "{{ pci_device_id }}" + description: Required parameter for the gpus resource. + - name: pci_vendor_id + value: "{{ pci_vendor_id }}" + description: Required parameter for the gpus resource. + - name: pci_subsystem_device_id + value: "{{ pci_subsystem_device_id }}" + description: Required parameter for the gpus resource. + - name: cuda_major_version + value: "{{ cuda_major_version }}" + description: | + CUDA major version + - name: cuda_minor_version + value: "{{ cuda_minor_version }}" + description: | + CUDA minor version + - name: display_name + value: "{{ display_name }}" + description: | + Display name for the GPU + - name: form_factor + value: "{{ form_factor }}" + description: | + GPU form factor + - name: gpu_counts + value: + - {{ gpu_counts }} + - name: label_name + value: "{{ label_name }}" + description: | + Label name for the GPU + - name: memory_size_gb + value: {{ memory_size_gb }} + description: | + Memory size in GB (smallint range) + - name: pci_device_id + value: "{{ pci_device_id }}" + description: | + PCI Device ID + - name: pci_subsystem_device_id + value: "{{ pci_subsystem_device_id }}" + description: | + PCI Subsystem Device ID + - name: pci_vendor_id + value: "{{ pci_vendor_id }}" + description: | + PCI Vendor ID +`} + + + + + +## `UPDATE` examples + + + + +Partially update a GPU record matching the full PCI composite key. Only provided fields will be updated. + +```sql +UPDATE nvidia.catalog.gpus +SET +cuda_major_version = '{{ cuda_major_version }}', +cuda_minor_version = '{{ cuda_minor_version }}', +display_name = '{{ display_name }}', +form_factor = '{{ form_factor }}', +gpu_counts = '{{ gpu_counts }}', +label_name = '{{ label_name }}', +memory_size_gb = {{ memory_size_gb }} +WHERE +pci_device_id = '{{ pci_device_id }}' --required +AND pci_vendor_id = '{{ pci_vendor_id }}' --required +AND pci_subsystem_device_id = '{{ pci_subsystem_device_id }}' --required +RETURNING +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at; +``` + + + +Partially update a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown'). Only provided fields will be updated. + +```sql +UPDATE nvidia.catalog.gpus +SET +cuda_major_version = '{{ cuda_major_version }}', +cuda_minor_version = '{{ cuda_minor_version }}', +display_name = '{{ display_name }}', +form_factor = '{{ form_factor }}', +gpu_counts = '{{ gpu_counts }}', +label_name = '{{ label_name }}', +memory_size_gb = {{ memory_size_gb }} +WHERE +pci_device_id = '{{ pci_device_id }}' --required +RETURNING +pci_device_id, +pci_subsystem_device_id, +pci_vendor_id, +display_name, +label_name, +created_at, +cuda_major_version, +cuda_minor_version, +form_factor, +gpu_counts, +memory_size_gb, +request_status, +updated_at; +``` + + + + +## `DELETE` examples + + + + +Delete a GPU record matching the full PCI composite key + +```sql +DELETE FROM nvidia.catalog.gpus +WHERE pci_device_id = '{{ pci_device_id }}' --required +AND pci_vendor_id = '{{ pci_vendor_id }}' --required +AND pci_subsystem_device_id = '{{ pci_subsystem_device_id }}' --required +; +``` + + + +Delete a GPU record using only PCI Device ID (pciVendorId and pciSubsystemDeviceId default to 'unknown') + +```sql +DELETE FROM nvidia.catalog.gpus +WHERE pci_device_id = '{{ pci_device_id }}' --required +; +``` + + diff --git a/website/docs/services/catalog/helm_chart_versions/index.md b/website/docs/services/catalog/helm_chart_versions/index.md new file mode 100644 index 0000000..9c329e5 --- /dev/null +++ b/website/docs/services/catalog/helm_chart_versions/index.md @@ -0,0 +1,659 @@ +--- +title: helm_chart_versions +hide_title: false +hide_table_of_contents: false +keywords: + - helm_chart_versions + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a helm_chart_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, artifact_name, version_idGet chart version in team as guest
org_name, artifact_name, version_idGet chart version in org as guest
org_name, team_name, artifact_namepage_size, page_number, sort_order, release_typeList chart versions in team as guest
org_name, artifact_namepage_size, page_number, sort_order, release_typeList chart versions in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get chart version in team as guest + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.helm_chart_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get chart version in org as guest + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.helm_chart_versions +WHERE org_name = '{{ org_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List chart versions in team as guest + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.helm_chart_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + +List chart versions in org as guest + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.helm_chart_versions +WHERE org_name = '{{ org_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + diff --git a/website/docs/services/catalog/index.md b/website/docs/services/catalog/index.md new file mode 100644 index 0000000..8f243ca --- /dev/null +++ b/website/docs/services/catalog/index.md @@ -0,0 +1,52 @@ +--- +title: catalog +hide_title: false +hide_table_of_contents: false +keywords: + - catalog + - nvidia + - stackql + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +catalog service documentation. + +:::info[Service Summary] + +total resources: __21__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/catalog/model_files/index.md b/website/docs/services/catalog/model_files/index.md new file mode 100644 index 0000000..39077a9 --- /dev/null +++ b/website/docs/services/catalog/model_files/index.md @@ -0,0 +1,257 @@ +--- +title: model_files +hide_title: false +hide_table_of_contents: false +keywords: + - model_files + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a model_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the model
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the model
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, model_name, version_idpage_size, page_reference, page_numberList files of the model version in team as guest
org_name, model_name, version_idpage_size, page_reference, page_numberList files of the model version in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List files of the model version in team as guest + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.catalog.model_files +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List files of the model version in org as guest + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.catalog.model_files +WHERE org_name = '{{ org_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/model_versions/index.md b/website/docs/services/catalog/model_versions/index.md new file mode 100644 index 0000000..95eed45 --- /dev/null +++ b/website/docs/services/catalog/model_versions/index.md @@ -0,0 +1,875 @@ +--- +title: model_versions +hide_title: false +hide_table_of_contents: false +keywords: + - model_versions + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a model_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, model_name, version_idGet model version in team as guest
org_name, model_name, version_idGet model version in org as guest
org_name, team_name, model_namerelease_type, page_size, page_number, sort_orderList model versions in team as guest
org_name, model_namerelease_type, page_size, page_number, sort_orderList model versions in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get model version in team as guest + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.model_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get model version in org as guest + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.model_versions +WHERE org_name = '{{ org_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List model versions in team as guest + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.model_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND release_type = '{{ release_type }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + + +List model versions in org as guest + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.catalog.model_versions +WHERE org_name = '{{ org_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND release_type = '{{ release_type }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + diff --git a/website/docs/services/catalog/models/index.md b/website/docs/services/catalog/models/index.md new file mode 100644 index 0000000..f89232f --- /dev/null +++ b/website/docs/services/catalog/models/index.md @@ -0,0 +1,936 @@ +--- +title: models +hide_title: false +hide_table_of_contents: false +keywords: + - models + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a models resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the model
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the model belongs to (wire: orgName)
stringName of model's owner (wire: ownerName)
stringName of the team that the model belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringApplication of the model
stringText describing bias in the model
stringorganization that built the repository (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the model
stringText describing explainability for this model
stringFramework used to train this model
booleanindicate if the Model has AI Playground configured (wire: hasPlayground)
booleanIndicates if the model has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if model is user's favorite (wire: isFavourite)
booleanindicate if AI Playground is enabled in the catalog (wire: isPlaygroundEnabled)
booleanDetermines if model is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringGPU model and memory used for the latest version (wire: latestVersionGpuModel)
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model (wire: modelFormat)
array (wire: policyLabels)
stringPrecision this model was trained with
stringText describing the privacy for this model
array (wire: productNames)
object (wire: publicDatasetUsed)
stringorganization that published the repository
stringText for describing the safety and security in the model (wire: safetyAndSecurity)
stringShort description of the model (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
array
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the model
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the model belongs to (wire: orgName)
stringName of model's owner (wire: ownerName)
stringName of the team that the model belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringApplication of the model
stringText describing bias in the model
stringorganization that built the repository (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the model
stringText describing explainability for this model
stringFramework used to train this model
booleanindicate if the Model has AI Playground configured (wire: hasPlayground)
booleanIndicates if the model has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if model is user's favorite (wire: isFavourite)
booleanindicate if AI Playground is enabled in the catalog (wire: isPlaygroundEnabled)
booleanDetermines if model is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringGPU model and memory used for the latest version (wire: latestVersionGpuModel)
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model (wire: modelFormat)
array (wire: policyLabels)
stringPrecision this model was trained with
stringText describing the privacy for this model
array (wire: productNames)
object (wire: publicDatasetUsed)
stringorganization that published the repository
stringText for describing the safety and security in the model (wire: safetyAndSecurity)
stringShort description of the model (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
array
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the model
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the model belongs to (wire: orgName)
stringName of model's owner (wire: ownerName)
stringName of the team that the model belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringApplication of the model
stringText describing bias in the model
stringorganization that built the repository (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the model
stringText describing explainability for this model
stringFramework used to train this model
booleanindicate if the Model has AI Playground configured (wire: hasPlayground)
booleanIndicates if the model has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if model is user's favorite (wire: isFavourite)
booleanindicate if AI Playground is enabled in the catalog (wire: isPlaygroundEnabled)
booleanDetermines if model is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringGPU model and memory used for the latest version (wire: latestVersionGpuModel)
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model (wire: modelFormat)
array (wire: policyLabels)
stringPrecision this model was trained with
stringText describing the privacy for this model
array (wire: productNames)
object (wire: publicDatasetUsed)
stringorganization that published the repository
stringText for describing the safety and security in the model (wire: safetyAndSecurity)
stringShort description of the model (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
array
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, model_nameresolve_labels, remove_unresolved_labelsThis operation gets info of a model in the org/team as guest.
org_name, model_nameresolve_labels, remove_unresolved_labelsThis operation gets info of a model in the org as guest.
page_size, page_reference, page_numberThis operation lists public models.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Organization name
string (UTF-8)Team name
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +This operation gets info of a model in the org/team as guest. + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +application, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +framework, +has_playground, +has_signed_version, +is_favourite, +is_playground_enabled, +is_public, +is_read_only, +labels, +latest_version_gpu_model, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +policy_labels, +precision, +privacy, +product_names, +public_dataset_used, +publisher, +safety_and_security, +short_description, +updated_date, +versions +FROM nvidia.catalog.models +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +This operation gets info of a model in the org as guest. + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +application, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +framework, +has_playground, +has_signed_version, +is_favourite, +is_playground_enabled, +is_public, +is_read_only, +labels, +latest_version_gpu_model, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +policy_labels, +precision, +privacy, +product_names, +public_dataset_used, +publisher, +safety_and_security, +short_description, +updated_date, +versions +FROM nvidia.catalog.models +WHERE org_name = '{{ org_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +This operation lists public models. + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +application, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +framework, +has_playground, +has_signed_version, +is_favourite, +is_playground_enabled, +is_public, +is_read_only, +labels, +latest_version_gpu_model, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +policy_labels, +precision, +privacy, +product_names, +public_dataset_used, +publisher, +safety_and_security, +short_description, +updated_date, +versions +FROM nvidia.catalog.models +WHERE page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/nim_metadata/index.md b/website/docs/services/catalog/nim_metadata/index.md new file mode 100644 index 0000000..57b94f7 --- /dev/null +++ b/website/docs/services/catalog/nim_metadata/index.md @@ -0,0 +1,157 @@ +--- +title: nim_metadata +hide_title: false +hide_table_of_contents: false +keywords: + - nim_metadata + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a nim_metadata resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team, nim_name, tagRegisters NIM profile metadata for the given team, NIM name, and tag. This is a placeholder that validates the supplied profiles and echoes the provided fields back to the caller.<br />SSA: requires the following scope `createNimMetadata`<br />
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)NIM name
string (UTF-8)NIM tag
string (UTF-8)Team name
+ +## `INSERT` examples + + + + +Registers NIM profile metadata for the given team, NIM name, and tag. This is a placeholder that validates the supplied profiles and echoes the provided fields back to the caller.<br />SSA: requires the following scope `createNimMetadata`<br /> + +```sql +INSERT INTO nvidia.catalog.nim_metadata ( +profiles, +team, +nim_name, +tag +) +SELECT +'{{ profiles }}', +'{{ team }}', +'{{ nim_name }}', +'{{ tag }}' +RETURNING +profiles +; +``` + + + +{`# Description fields are for documentation purposes +- name: nim_metadata + props: + - name: team + value: "{{ team }}" + description: Required parameter for the nim_metadata resource. + - name: nim_name + value: "{{ nim_name }}" + description: Required parameter for the nim_metadata resource. + - name: tag + value: "{{ tag }}" + description: Required parameter for the nim_metadata resource. + - name: profiles + value: + - buildable_profile: {{ buildable_profile }} + checksum: "{{ checksum }}" + feat_lora: {{ feat_lora }} + form_factor: "{{ form_factor }}" + gpu: "{{ gpu }}" + gpu_device: "{{ gpu_device }}" + inference_backend: "{{ inference_backend }}" + latency: "{{ latency }}" + min_vram_per_device_gb: {{ min_vram_per_device_gb }} + pipeline_parallel_size: {{ pipeline_parallel_size }} + precision: "{{ precision }}" + profile_id: "{{ profile_id }}" + tensor_parallel_size: {{ tensor_parallel_size }} + workspace_hash: "{{ workspace_hash }}" +`} + + + diff --git a/website/docs/services/catalog/recipe_files/index.md b/website/docs/services/catalog/recipe_files/index.md new file mode 100644 index 0000000..eb1d0db --- /dev/null +++ b/website/docs/services/catalog/recipe_files/index.md @@ -0,0 +1,257 @@ +--- +title: recipe_files +hide_title: false +hide_table_of_contents: false +keywords: + - recipe_files + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a recipe_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, recipe_name, version_idpage_size, page_reference, page_numberList files of the recipe version in team as guest
org_name, recipe_name, version_idpage_size, page_reference, page_numberList files of the recipe version in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Organization name
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List files of the recipe version in team as guest + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.catalog.recipe_files +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List files of the recipe version in org as guest + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.catalog.recipe_files +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/recipe_versions/index.md b/website/docs/services/catalog/recipe_versions/index.md new file mode 100644 index 0000000..5a7c106 --- /dev/null +++ b/website/docs/services/catalog/recipe_versions/index.md @@ -0,0 +1,875 @@ +--- +title: recipe_versions +hide_title: false +hide_table_of_contents: false +keywords: + - recipe_versions + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a recipe_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, recipe_name, version_idGet recipe version in team as guest
org_name, recipe_name, version_idGet recipe version in org as guest
org_name, team_name, recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in team as guest
org_name, recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Organization name
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get recipe version in team as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.recipe_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get recipe version in org as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.recipe_versions +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List recipe versions in team as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.recipe_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + +List recipe versions in org as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.recipe_versions +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + diff --git a/website/docs/services/catalog/recipes/index.md b/website/docs/services/catalog/recipes/index.md new file mode 100644 index 0000000..ca4788c --- /dev/null +++ b/website/docs/services/catalog/recipes/index.md @@ -0,0 +1,840 @@ +--- +title: recipes +hide_title: false +hide_table_of_contents: false +keywords: + - recipes + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a recipes resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, recipe_nameresolve_labels, remove_unresolved_labelsGet recipe details in team as guest
org_name, recipe_nameresolve_labels, remove_unresolved_labelsGet recipe details in org as guest
page_size, page_numberList public recipes
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Organization name
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get recipe details in team as guest + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.catalog.recipes +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get recipe details in org as guest + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.catalog.recipes +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List public recipes + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.catalog.recipes +WHERE page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/resource_files/index.md b/website/docs/services/catalog/resource_files/index.md new file mode 100644 index 0000000..ecae865 --- /dev/null +++ b/website/docs/services/catalog/resource_files/index.md @@ -0,0 +1,257 @@ +--- +title: resource_files +hide_title: false +hide_table_of_contents: false +keywords: + - resource_files + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a resource_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, recipe_name, version_idpage_size, page_reference, page_numberList files of the recipe version in team as guest
org_name, recipe_name, version_idpage_size, page_reference, page_numberList files of the recipe version in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Organization name
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List files of the recipe version in team as guest + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.catalog.resource_files +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List files of the recipe version in org as guest + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.catalog.resource_files +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/catalog/resource_versions/index.md b/website/docs/services/catalog/resource_versions/index.md new file mode 100644 index 0000000..1f45076 --- /dev/null +++ b/website/docs/services/catalog/resource_versions/index.md @@ -0,0 +1,875 @@ +--- +title: resource_versions +hide_title: false +hide_table_of_contents: false +keywords: + - resource_versions + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a resource_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, recipe_name, version_idGet recipe version in team as guest
org_name, recipe_name, version_idGet recipe version in org as guest
org_name, team_name, recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in team as guest
org_name, recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in org as guest
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Organization name
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get recipe version in team as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.resource_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get recipe version in org as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.resource_versions +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List recipe versions in team as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.resource_versions +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + +List recipe versions in org as guest + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.catalog.resource_versions +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + diff --git a/website/docs/services/catalog/resources/index.md b/website/docs/services/catalog/resources/index.md new file mode 100644 index 0000000..4ca4dde --- /dev/null +++ b/website/docs/services/catalog/resources/index.md @@ -0,0 +1,840 @@ +--- +title: resources +hide_title: false +hide_table_of_contents: false +keywords: + - resources + - catalog + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a resources resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_name, team_name, recipe_nameresolve_labels, remove_unresolved_labelsGet recipe details in team as guest
org_name, recipe_nameresolve_labels, remove_unresolved_labelsGet recipe details in org as guest
page_size, page_numberList public recipes
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Organization name
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get recipe details in team as guest + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.catalog.resources +WHERE org_name = '{{ org_name }}' -- required +AND team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get recipe details in org as guest + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.catalog.resources +WHERE org_name = '{{ org_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List public recipes + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.catalog.resources +WHERE page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/nvcf_deployments/cluster_groups/index.md b/website/docs/services/nvcf_deployments/cluster_groups/index.md new file mode 100644 index 0000000..13c5591 --- /dev/null +++ b/website/docs/services/nvcf_deployments/cluster_groups/index.md @@ -0,0 +1,152 @@ +--- +title: cluster_groups +hide_title: false +hide_table_of_contents: false +keywords: + - cluster_groups + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a cluster_groups resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)
string (UTF-8)
string (UTF-8) (wire: ncaId)
array (wire: authorizedNcaIds)
array
array
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
Lists Cluster Groups for the current account. The response includes cluster groups defined specifically in the current account and publicly available cluster groups such as GFN, OCI, etc. Requires a bearer token with 'list_cluster_groups' scope in HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + +
NameDatatypeDescription
+ +## `SELECT` examples + + + + +Lists Cluster Groups for the current account. The response includes cluster groups defined specifically in the current account and publicly available cluster groups such as GFN, OCI, etc. Requires a bearer token with 'list_cluster_groups' scope in HTTP Authorization header. + +```sql +SELECT +id, +name, +nca_id, +authorized_nca_ids, +clusters, +gpus +FROM nvidia.nvcf_deployments.cluster_groups +; +``` + + diff --git a/website/docs/services/nvcf_deployments/deployment_gpu_specs/index.md b/website/docs/services/nvcf_deployments/deployment_gpu_specs/index.md new file mode 100644 index 0000000..784feef --- /dev/null +++ b/website/docs/services/nvcf_deployments/deployment_gpu_specs/index.md @@ -0,0 +1,115 @@ +--- +title: deployment_gpu_specs +hide_title: false +hide_table_of_contents: false +keywords: + - deployment_gpu_specs + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a deployment_gpu_specs resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
deployment_id, gpu_spec_id Updates the GPU specification of the specified function version's deployment. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Deployment id
string (uuid)GPU Specification id
+ +## `UPDATE` examples + + + + + Updates the GPU specification of the specified function version's deployment. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. + +```sql +UPDATE nvidia.nvcf_deployments.deployment_gpu_specs +SET +autoscaling_configuration = '{{ autoscaling_configuration }}', +autoscaling_configuration_policy = '{{ autoscaling_configuration_policy }}', +max_instances = {{ max_instances }}, +min_instances = {{ min_instances }} +WHERE +deployment_id = '{{ deployment_id }}' --required +AND gpu_spec_id = '{{ gpu_spec_id }}' --required +RETURNING +gpu_specification; +``` + + diff --git a/website/docs/services/nvcf_deployments/deployments/index.md b/website/docs/services/nvcf_deployments/deployments/index.md new file mode 100644 index 0000000..2e8937a --- /dev/null +++ b/website/docs/services/nvcf_deployments/deployments/index.md @@ -0,0 +1,451 @@ +--- +title: deployments +hide_title: false +hide_table_of_contents: false +keywords: + - deployments + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a deployments resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Last deployment id (wire: deploymentId)
string (uuid)Function id (wire: functionId)
string (uuid)Function version id (wire: functionVersionId)
string (UTF-8)NVIDIA Cloud Account Id (wire: ncaId)
string (UTF-8)Function name (wire: functionName)
string (date_time)Function deployment creation timestamp (wire: createdAt)
arrayFunction deployment details (wire: deploymentSpecifications)
string (UTF-8)Function status (ACTIVE, DEPLOYING, ERROR, INACTIVE, DELETED, DEGRADED, DEGRADING) (wire: functionStatus)
arrayHealth info for a deployment specification is included only if there are any issues/errors. (wire: healthInfo)
string (date_time)Function deployment modification timestamp (wire: lastUpdatedAt)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Last deployment id (wire: deploymentId)
string (uuid)Function id (wire: functionId)
string (uuid)Function version id (wire: functionVersionId)
string (UTF-8)NVIDIA Cloud Account Id (wire: ncaId)
string (UTF-8)Function name (wire: functionName)
string (date_time)Function deployment creation timestamp (wire: createdAt)
arrayFunction deployment details (wire: deploymentSpecifications)
string (UTF-8)Function status (ACTIVE, DEPLOYING, ERROR, INACTIVE, DELETED, DEGRADED, DEGRADING) (wire: functionStatus)
arrayHealth info for a deployment specification is included only if there are any issues/errors. (wire: healthInfo)
string (date_time)Function deployment modification timestamp (wire: lastUpdatedAt)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, function_version_idAllows Account Admins to retrieve the deployment details of the specified function version. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header.
deployment_idAllows Account Admins to retrieve the deployment details of the specified deployment id. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header.
function_id, function_version_id, deployment_specificationsInitiates deployment for the specified function version. Upon invocation of this endpoint, the function's status transitions to 'DEPLOYING'. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header.
function_id, function_version_id, deployment_specifications Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header.
function_id, function_version_idgracefulDeletes the deployment associated with the specified function. Upon deletion, any active instances will be terminated, and the function's status will transition to 'INACTIVE'. To undeploy a function version gracefully, specify 'graceful=true' query parameter, allowing current tasks to complete before terminating the instances. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Deployment id
string (uuid)Function id
string (uuid)Function version id
booleanQuery param to deactivate function for graceful shutdown
+ +## `SELECT` examples + + + + +Allows Account Admins to retrieve the deployment details of the specified function version. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. + +```sql +SELECT +deployment_id, +function_id, +function_version_id, +nca_id, +function_name, +created_at, +deployment_specifications, +function_status, +health_info, +last_updated_at +FROM nvidia.nvcf_deployments.deployments +WHERE function_id = '{{ function_id }}' -- required +AND function_version_id = '{{ function_version_id }}' -- required +; +``` + + + +Allows Account Admins to retrieve the deployment details of the specified deployment id. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. + +```sql +SELECT +deployment_id, +function_id, +function_version_id, +nca_id, +function_name, +created_at, +deployment_specifications, +function_status, +health_info, +last_updated_at +FROM nvidia.nvcf_deployments.deployments +WHERE deployment_id = '{{ deployment_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Initiates deployment for the specified function version. Upon invocation of this endpoint, the function's status transitions to 'DEPLOYING'. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. + +```sql +INSERT INTO nvidia.nvcf_deployments.deployments ( +deployment_specifications, +function_id, +function_version_id +) +SELECT +'{{ deployment_specifications }}' /* required */, +'{{ function_id }}', +'{{ function_version_id }}' +RETURNING +deployment +; +``` + + + +{`# Description fields are for documentation purposes +- name: deployments + props: + - name: function_id + value: "{{ function_id }}" + description: Required parameter for the deployments resource. + - name: function_version_id + value: "{{ function_version_id }}" + description: Required parameter for the deployments resource. + - name: deployment_specifications + description: | + GPU specs with GPU, instance_type, clusters etc. details + value: + - attributes: "{{ attributes }}" + autoscalingConfiguration: + scaleDownDetails: + factor: {{ factor }} + metric: "{{ metric }}" + stickiness: + size: "{{ size }}" + threshold: "{{ threshold }}" + threshold: {{ threshold }} + scaleUpDetails: + factor: {{ factor }} + metric: "{{ metric }}" + stickiness: + size: "{{ size }}" + threshold: "{{ threshold }}" + threshold: {{ threshold }} + availabilityZones: "{{ availabilityZones }}" + backend: "{{ backend }}" + clusters: "{{ clusters }}" + configuration: "{{ configuration }}" + cpuArch: "{{ cpuArch }}" + driverVersion: "{{ driverVersion }}" + gpu: "{{ gpu }}" + gpuMemory: "{{ gpuMemory }}" + gpuSpecificationId: "{{ gpuSpecificationId }}" + helmValidationPolicy: + extraKubernetesTypes: + - group: "{{ group }}" + kind: "{{ kind }}" + version: "{{ version }}" + name: "{{ name }}" + instanceType: "{{ instanceType }}" + maxInstances: {{ maxInstances }} + maxRequestConcurrency: {{ maxRequestConcurrency }} + minInstances: {{ minInstances }} + os: "{{ os }}" + regions: "{{ regions }}" + storage: "{{ storage }}" + systemMemory: "{{ systemMemory }}" +`} + + + + + +## `UPDATE` examples + + + + + Deprecated and will be removed soon. Use a single GPU specification update method instead. Updates the deployment specs of the specified function version. It's important to note that GPU type and backend configurations cannot be modified through this endpoint. If the specified function is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. + +```sql +UPDATE nvidia.nvcf_deployments.deployments +SET +deployment_specifications = '{{ deployment_specifications }}' +WHERE +function_id = '{{ function_id }}' --required +AND function_version_id = '{{ function_version_id }}' --required +AND deployment_specifications = '{{ deployment_specifications }}' --required +RETURNING +deployment; +``` + + + + +## `DELETE` examples + + + + +Deletes the deployment associated with the specified function. Upon deletion, any active instances will be terminated, and the function's status will transition to 'INACTIVE'. To undeploy a function version gracefully, specify 'graceful=true' query parameter, allowing current tasks to complete before terminating the instances. If the specified function version is public, then Account Admin cannot perform this operation. Access to this endpoint mandates a bearer token with 'deploy_function' scope in the HTTP Authorization header. + +```sql +DELETE FROM nvidia.nvcf_deployments.deployments +WHERE function_id = '{{ function_id }}' --required +AND function_version_id = '{{ function_version_id }}' --required +AND graceful = '{{ graceful }}' +; +``` + + diff --git a/website/docs/services/nvcf_deployments/index.md b/website/docs/services/nvcf_deployments/index.md new file mode 100644 index 0000000..7e674c9 --- /dev/null +++ b/website/docs/services/nvcf_deployments/index.md @@ -0,0 +1,38 @@ +--- +title: nvcf_deployments +hide_title: false +hide_table_of_contents: false +keywords: + - nvcf_deployments + - nvidia + - stackql + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +nvcf_deployments service documentation. + +:::info[Service Summary] + +total resources: __7__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/nvcf_deployments/recognized_registries/index.md b/website/docs/services/nvcf_deployments/recognized_registries/index.md new file mode 100644 index 0000000..5e13709 --- /dev/null +++ b/website/docs/services/nvcf_deployments/recognized_registries/index.md @@ -0,0 +1,122 @@ +--- +title: recognized_registries +hide_title: false +hide_table_of_contents: false +keywords: + - recognized_registries + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a recognized_registries resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectRecognized registries (wire: recognizedRegistries)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
Lists all the registries that are recognized by NVCF. Only when a registry is recognized by NVCF that the users can add its credential to their account and then use it to create functions. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + +
NameDatatypeDescription
+ +## `SELECT` examples + + + + +Lists all the registries that are recognized by NVCF. Only when a registry is recognized by NVCF that the users can add its credential to their account and then use it to create functions. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. + +```sql +SELECT +recognized_registries +FROM nvidia.nvcf_deployments.recognized_registries +; +``` + + diff --git a/website/docs/services/nvcf_deployments/registry_credentials/index.md b/website/docs/services/nvcf_deployments/registry_credentials/index.md new file mode 100644 index 0000000..3ea29ab --- /dev/null +++ b/website/docs/services/nvcf_deployments/registry_credentials/index.md @@ -0,0 +1,446 @@ +--- +title: registry_credentials +hide_title: false +hide_table_of_contents: false +keywords: + - registry_credentials + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a registry_credentials resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)NVIDIA Cloud Account Id owning the Registry Credential (wire: ncaId)
string (uuid)Registry Credential Id (wire: registryCredentialId)
string (UTF-8)Registry Credential name (wire: registryCredentialName)
string (UTF-8)Recognized registry name (wire: registryName)
arrayRegistry type (wire: artifactTypes)
string (date_time)Timestamp for registry credential creation (wire: createdAt)
string (UTF-8)Registry credential description
string (UTF-8)Optional registry credential key type (wire: keyType)
string (date_time)Timestamp for last registry credential update (wire: lastUpdatedAt)
string (UTF-8)Registry credential provisioned by system or user (SYSTEM, USER) (wire: provisionedBy)
string (UTF-8)Registry hostname (wire: registryHostname)
arrayOptional set of tags
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)NVIDIA Cloud Account Id owning the Registry Credential (wire: ncaId)
string (uuid)Registry Credential Id (wire: registryCredentialId)
string (UTF-8)Registry Credential name (wire: registryCredentialName)
string (UTF-8)Recognized registry name (wire: registryName)
arrayRegistry type (wire: artifactTypes)
string (date_time)Timestamp for registry credential creation (wire: createdAt)
string (UTF-8)Registry credential description
string (UTF-8)Optional registry credential key type (wire: keyType)
string (date_time)Timestamp for last registry credential update (wire: lastUpdatedAt)
string (UTF-8)Registry credential provisioned by system or user (SYSTEM, USER) (wire: provisionedBy)
string (UTF-8)Registry hostname (wire: registryHostname)
arrayOptional set of tags
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
registry_credential_idRetrieves detailed information of the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope.
artifact_type, provisioned_byLists all the registry credentials associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope.
artifact_types, registry_hostname, secretAdds a new registry credential to the account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope.
registry_credential_idUpdates the secret and/or the artifact types associated with the specified registry credential. Artifact types specified in the request body are added to the set of artifact types that already exist for the specified registry credential. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope.
registry_credential_idDeletes the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Registry Credential id
arrayFilters registry credentials using the specified 'artifactType' query param. (wire: artifactType)
arrayFilters registry credentials using the specified 'provisionedBy' query param. (wire: provisionedBy)
+ +## `SELECT` examples + + + + +Retrieves detailed information of the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. + +```sql +SELECT +nca_id, +registry_credential_id, +registry_credential_name, +registry_name, +artifact_types, +created_at, +description, +key_type, +last_updated_at, +provisioned_by, +registry_hostname, +tags +FROM nvidia.nvcf_deployments.registry_credentials +WHERE registry_credential_id = '{{ registry_credential_id }}' -- required +; +``` + + + +Lists all the registry credentials associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. + +```sql +SELECT +nca_id, +registry_credential_id, +registry_credential_name, +registry_name, +artifact_types, +created_at, +description, +key_type, +last_updated_at, +provisioned_by, +registry_hostname, +tags +FROM nvidia.nvcf_deployments.registry_credentials +WHERE artifact_type = '{{ artifact_type }}' +AND provisioned_by = '{{ provisioned_by }}' +; +``` + + + + +## `INSERT` examples + + + + +Adds a new registry credential to the account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. + +```sql +INSERT INTO nvidia.nvcf_deployments.registry_credentials ( +artifact_types, +description, +registry_hostname, +secret, +tags +) +SELECT +'{{ artifact_types }}' /* required */, +'{{ description }}', +'{{ registry_hostname }}' /* required */, +'{{ secret }}' /* required */, +'{{ tags }}' +RETURNING +registry_credential +; +``` + + + +{`# Description fields are for documentation purposes +- name: registry_credentials + props: + - name: artifact_types + value: + - "{{ artifact_types }}" + description: | + Artifact types that can be retrieved using this credential + - name: description + value: "{{ description }}" + description: | + Optional registry credential description + - name: registry_hostname + value: "{{ registry_hostname }}" + description: | + Registry hostname + - name: secret + description: | + Registry credential - secret value must be base64 encoded string in username:password format + value: + name: "{{ name }}" + value: "{{ value }}" + - name: tags + value: + - "{{ tags }}" + description: | + Optional set of tags +`} + + + + + +## `UPDATE` examples + + + + +Updates the secret and/or the artifact types associated with the specified registry credential. Artifact types specified in the request body are added to the set of artifact types that already exist for the specified registry credential. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. + +```sql +UPDATE nvidia.nvcf_deployments.registry_credentials +SET +artifact_type_enums = '{{ artifact_type_enums }}', +secret = '{{ secret }}' +WHERE +registry_credential_id = '{{ registry_credential_id }}' --required +RETURNING +registry_credential; +``` + + + + +## `DELETE` examples + + + + +Deletes the specified registry credential associated with the authenticated NVIDIA Cloud Account. Requires a bearer token in the HTTP Authorization header with 'manage_registries' scope. + +```sql +DELETE FROM nvidia.nvcf_deployments.registry_credentials +WHERE registry_credential_id = '{{ registry_credential_id }}' --required +; +``` + + diff --git a/website/docs/services/nvcf_deployments/telemetries/index.md b/website/docs/services/nvcf_deployments/telemetries/index.md new file mode 100644 index 0000000..b920a15 --- /dev/null +++ b/website/docs/services/nvcf_deployments/telemetries/index.md @@ -0,0 +1,342 @@ +--- +title: telemetries +hide_title: false +hide_table_of_contents: false +keywords: + - telemetries + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a telemetries resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Telemetry name
string (uuid)Unique telemetry ID (wire: telemetryId)
string (date_time)Telemetry creation timestamp (wire: createdAt)
string (UTF-8)URL for the telemetry endpoint
string (UTF-8)Protocol used for communication (HTTP, GRPC)
string (UTF-8)Telemetry provider (PROMETHEUS, GRAFANA_CLOUD, SPLUNK, DATADOG, SERVICENOW, KRATOS, KRATOS_THANOS, TIMESTREAM, VICTORIAMETRICS, AZURE_MONITOR, OTEL_COLLECTOR)
arraySet of telemetry data types
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Telemetry name
string (uuid)Unique telemetry ID (wire: telemetryId)
string (date_time)Telemetry creation timestamp (wire: createdAt)
string (UTF-8)URL for the telemetry endpoint
string (UTF-8)Protocol used for communication (HTTP, GRPC)
string (UTF-8)Telemetry provider (PROMETHEUS, GRAFANA_CLOUD, SPLUNK, DATADOG, SERVICENOW, KRATOS, KRATOS_THANOS, TIMESTREAM, VICTORIAMETRICS, AZURE_MONITOR, OTEL_COLLECTOR)
arraySet of telemetry data types
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
telemetry_idRetrieves the details of a specific telemetry configuration by its ID. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header.
Retrieves telemetry configurations for a specific NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header.
endpoint, protocol, provider, secret, typesCreates telemetry endpoints for NVIDIA Cloud Accounts. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header.
telemetry_idDeletes a specific telemetry configuration for a NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. If there any functions that are dependent on the Telemetry that is being deleted, then response with 400 status code will be returned.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)
+ +## `SELECT` examples + + + + +Retrieves the details of a specific telemetry configuration by its ID. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. + +```sql +SELECT +name, +telemetry_id, +created_at, +endpoint, +protocol, +provider, +types +FROM nvidia.nvcf_deployments.telemetries +WHERE telemetry_id = '{{ telemetry_id }}' -- required +; +``` + + + +Retrieves telemetry configurations for a specific NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. + +```sql +SELECT +name, +telemetry_id, +created_at, +endpoint, +protocol, +provider, +types +FROM nvidia.nvcf_deployments.telemetries +; +``` + + + + +## `INSERT` examples + + + + +Creates telemetry endpoints for NVIDIA Cloud Accounts. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. + +```sql +INSERT INTO nvidia.nvcf_deployments.telemetries ( +endpoint, +protocol, +provider, +secret, +types +) +SELECT +'{{ endpoint }}' /* required */, +'{{ protocol }}' /* required */, +'{{ provider }}' /* required */, +'{{ secret }}' /* required */, +'{{ types }}' /* required */ +RETURNING +telemetry +; +``` + + + +{`# Description fields are for documentation purposes +- name: telemetries + props: + - name: endpoint + value: "{{ endpoint }}" + description: | + Telemetry endpoint URL + - name: protocol + value: "{{ protocol }}" + description: | + Protocol used for communication + valid_values: ['HTTP', 'GRPC'] + - name: provider + value: "{{ provider }}" + description: | + Telemetry provider + valid_values: ['PROMETHEUS', 'GRAFANA_CLOUD', 'SPLUNK', 'DATADOG', 'SERVICENOW', 'KRATOS', 'KRATOS_THANOS', 'TIMESTREAM', 'VICTORIAMETRICS', 'AZURE_MONITOR', 'OTEL_COLLECTOR'] + - name: secret + description: | + Single secret associated with the telemetry configuration + value: + name: "{{ name }}" + value: "{{ value }}" + - name: types + value: + - "{{ types }}" + description: | + Set of telemetry data types +`} + + + + + +## `DELETE` examples + + + + +Deletes a specific telemetry configuration for a NVIDIA Cloud Account. requires a bearer token with 'manage_telemetries' scope in the HTTP Authorization header. If there any functions that are dependent on the Telemetry that is being deleted, then response with 400 status code will be returned. + +```sql +DELETE FROM nvidia.nvcf_deployments.telemetries +WHERE telemetry_id = '{{ telemetry_id }}' --required +; +``` + + diff --git a/website/docs/services/nvcf_deployments/telemetry_secrets/index.md b/website/docs/services/nvcf_deployments/telemetry_secrets/index.md new file mode 100644 index 0000000..0946562 --- /dev/null +++ b/website/docs/services/nvcf_deployments/telemetry_secrets/index.md @@ -0,0 +1,105 @@ +--- +title: telemetry_secrets +hide_title: false +hide_table_of_contents: false +keywords: + - telemetry_secrets + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a telemetry_secrets resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
telemetry_id, secretUpdates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)NVIDIA Cloud Account Id
+ +## `UPDATE` examples + + + + +Updates secret for the specific telemetry Id within NVIDIA Cloud Account. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. + +```sql +UPDATE nvidia.nvcf_deployments.telemetry_secrets +SET +secret = '{{ secret }}' +WHERE +telemetry_id = '{{ telemetry_id }}' --required +AND secret = '{{ secret }}' --required; +``` + + diff --git a/website/docs/services/nvcf_functions/authorizations/index.md b/website/docs/services/nvcf_functions/authorizations/index.md new file mode 100644 index 0000000..257feb4 --- /dev/null +++ b/website/docs/services/nvcf_functions/authorizations/index.md @@ -0,0 +1,446 @@ +--- +title: authorizations +hide_title: false +hide_table_of_contents: false +keywords: + - authorizations + - nvcf_functions + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an authorizations resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id
string (UTF-8)NVIDIA Cloud Account Id (wire: ncaId)
string (uuid)Function version id (wire: versionId)
arrayAuthorized parties allowed to invoke the function (wire: authorizedParties)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id
string (UTF-8)NVIDIA Cloud Account Id (wire: ncaId)
string (uuid)Function version id (wire: versionId)
arrayAuthorized parties allowed to invoke the function (wire: authorizedParties)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, function_version_idGets NVIDIA Cloud Account IDs that are authorized to invoke specified function version. Response includes authorized accounts that were added specifically at the version level and the authorized accounts that were inherited from function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_idLists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_id, function_version_id, authorized_partyAdds the specified NVIDIA Cloud Account to the set of authorized accounts that can invoke the specified function version. If the specified function version does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing authorized accounts that are directly associated with the function version, it results in a response wit status code 409. If a function is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_id, authorized_partyAdds the specified NVIDIA Cloud Account to the set of authorized accounts that are can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing inheritable authorized accounts, it results in a response with status code 409. If a function is public, then Account Admin cannot perform this operation. Note that response only includes authz accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_id, function_version_id, authorized_partiesAuthorizes additional NVIDIA Cloud Accounts to invoke a specific function version. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Note that the response does NOT include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_id, authorized_partiesAuthorizes additional NVIDIA Cloud Accounts to invoke any version of the specified function. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_id, function_version_idRemoves the specified NVIDIA Cloud Account from the set of authorized accounts that are directly associated with specified function version. If the specified function version does not have any of its own(not inherited) authorized accounts, it results in a response with status 404. Also, if the specified authorized account is not in the set of existing authorized parties that are directly associated with the specified function version, it results in a response with status code 404. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_idRemoves the specified NVIDIA Cloud Account from the set of authorized accounts that can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized parties, it results in a response with status 404. Also, if the specified account is not in the existing set of inheritable authorized accounts, it results in a response with status 404. If the specified function is public, then Account Admin cannot perform this operation. Note that response only includes the remaining authorized accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_idDeletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
function_id, function_version_idDeletes all the authorized accounts that are directly associated with the specified function version. Authorized parties that are inherited by the function version are not deleted. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id
string (uuid)Function version
+ +## `SELECT` examples + + + + +Gets NVIDIA Cloud Account IDs that are authorized to invoke specified function version. Response includes authorized accounts that were added specifically at the version level and the authorized accounts that were inherited from function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +SELECT +id, +nca_id, +version_id, +authorized_parties +FROM nvidia.nvcf_functions.authorizations +WHERE function_id = '{{ function_id }}' -- required +AND function_version_id = '{{ function_version_id }}' -- required +; +``` + + + +Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +SELECT +id, +nca_id, +version_id, +authorized_parties +FROM nvidia.nvcf_functions.authorizations +WHERE function_id = '{{ function_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Adds the specified NVIDIA Cloud Account to the set of authorized accounts that can invoke the specified function version. If the specified function version does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing authorized accounts that are directly associated with the function version, it results in a response wit status code 409. If a function is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +INSERT INTO nvidia.nvcf_functions.authorizations ( +authorized_party, +function_id, +function_version_id +) +SELECT +'{{ authorized_party }}' /* required */, +'{{ function_id }}', +'{{ function_version_id }}' +RETURNING +function +; +``` + + + +Adds the specified NVIDIA Cloud Account to the set of authorized accounts that are can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized accounts, it results in a response with status 404. If the specified account is already in the set of existing inheritable authorized accounts, it results in a response with status code 409. If a function is public, then Account Admin cannot perform this operation. Note that response only includes authz accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +INSERT INTO nvidia.nvcf_functions.authorizations ( +authorized_party, +function_id +) +SELECT +'{{ authorized_party }}' /* required */, +'{{ function_id }}' +RETURNING +function +; +``` + + + +{`# Description fields are for documentation purposes +- name: authorizations + props: + - name: function_id + value: "{{ function_id }}" + description: Required parameter for the authorizations resource. + - name: function_version_id + value: "{{ function_version_id }}" + description: Required parameter for the authorizations resource. + - name: authorized_party + description: | + Data Transfer Object(DTO) representing an authorized party. + value: + clientId: "{{ clientId }}" + ncaId: "{{ ncaId }}" +`} + + + + + +## `REPLACE` examples + + + + +Authorizes additional NVIDIA Cloud Accounts to invoke a specific function version. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Note that the response does NOT include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +REPLACE nvidia.nvcf_functions.authorizations +SET +authorized_parties = '{{ authorized_parties }}' +WHERE +function_id = '{{ function_id }}' --required +AND function_version_id = '{{ function_version_id }}' --required +AND authorized_parties = '{{ authorized_parties }}' --required +RETURNING +function; +``` + + + +Authorizes additional NVIDIA Cloud Accounts to invoke any version of the specified function. By default, a function belongs to the NVIDIA Cloud Account that created it, and the credentials used for function invocation must reference the same NVIDIA Cloud Account. Upon invocation of this endpoint, any existing authorized accounts will be overwritten by the newly specified authorized accounts. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +REPLACE nvidia.nvcf_functions.authorizations +SET +authorized_parties = '{{ authorized_parties }}' +WHERE +function_id = '{{ function_id }}' --required +AND authorized_parties = '{{ authorized_parties }}' --required +RETURNING +function; +``` + + + + +## `DELETE` examples + + + + +Removes the specified NVIDIA Cloud Account from the set of authorized accounts that are directly associated with specified function version. If the specified function version does not have any of its own(not inherited) authorized accounts, it results in a response with status 404. Also, if the specified authorized account is not in the set of existing authorized parties that are directly associated with the specified function version, it results in a response with status code 404. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +DELETE FROM nvidia.nvcf_functions.authorizations +WHERE function_id = '{{ function_id }}' --required +AND function_version_id = '{{ function_version_id }}' --required +; +``` + + + +Removes the specified NVIDIA Cloud Account from the set of authorized accounts that can invoke all the versions of the specified function. If the specified function does not have any existing inheritable authorized parties, it results in a response with status 404. Also, if the specified account is not in the existing set of inheritable authorized accounts, it results in a response with status 404. If the specified function is public, then Account Admin cannot perform this operation. Note that response only includes the remaining authorized accounts at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +DELETE FROM nvidia.nvcf_functions.authorizations +WHERE function_id = '{{ function_id }}' --required +; +``` + + + + +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Deletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +EXEC nvidia.nvcf_functions.authorizations.delete_all +@function_id='{{ function_id }}' --required +; +``` + + + +Deletes all the authorized accounts that are directly associated with the specified function version. Authorized parties that are inherited by the function version are not deleted. If the specified function version is public, then Account Admin cannot perform this operation. Note that the response does not include inherited authorized accounts that were added at the function level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +EXEC nvidia.nvcf_functions.authorizations.delete_all_version +@function_id='{{ function_id }}' --required, +@function_version_id='{{ function_version_id }}' --required +; +``` + + diff --git a/website/docs/services/nvcf_functions/function_ids/index.md b/website/docs/services/nvcf_functions/function_ids/index.md new file mode 100644 index 0000000..5fc7b94 --- /dev/null +++ b/website/docs/services/nvcf_functions/function_ids/index.md @@ -0,0 +1,128 @@ +--- +title: function_ids +hide_title: false +hide_table_of_contents: false +keywords: + - function_ids + - nvcf_functions + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a function_ids resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringList of function ids
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
visibilityLists ids of all the functions in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
arrayQuery param 'visibility' indicates the kind of functions to be included in the response.
+ +## `SELECT` examples + + + + +Lists ids of all the functions in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. + +```sql +SELECT +function_id +FROM nvidia.nvcf_functions.function_ids +WHERE visibility = '{{ visibility }}' +; +``` + + diff --git a/website/docs/services/nvcf_functions/function_metadata/index.md b/website/docs/services/nvcf_functions/function_metadata/index.md new file mode 100644 index 0000000..18150e5 --- /dev/null +++ b/website/docs/services/nvcf_functions/function_metadata/index.md @@ -0,0 +1,115 @@ +--- +title: function_metadata +hide_title: false +hide_table_of_contents: false +keywords: + - function_metadata + - nvcf_functions + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a function_metadata resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, function_version_idDeprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update tags, rate limit, model-specific LLM config, and other mutable function fields. This legacy endpoint updates the same mutable function version fields for the authenticated NVIDIA Cloud Account and requires a bearer token with 'update_function' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id
string (uuid)Version id
+ +## `UPDATE` examples + + + + +Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{functionVersionId} to update tags, rate limit, model-specific LLM config, and other mutable function fields. This legacy endpoint updates the same mutable function version fields for the authenticated NVIDIA Cloud Account and requires a bearer token with 'update_function' scope in the HTTP Authorization header. + +```sql +UPDATE nvidia.nvcf_functions.function_metadata +SET +llm_invocation_config = '{{ llm_invocation_config }}', +model_updates = '{{ model_updates }}', +rate_limit = '{{ rate_limit }}', +tags = '{{ tags }}' +WHERE +function_id = '{{ function_id }}' --required +AND function_version_id = '{{ function_version_id }}' --required +RETURNING +function; +``` + + diff --git a/website/docs/services/nvcf_functions/function_ratelimits/index.md b/website/docs/services/nvcf_functions/function_ratelimits/index.md new file mode 100644 index 0000000..ec7e6cb --- /dev/null +++ b/website/docs/services/nvcf_functions/function_ratelimits/index.md @@ -0,0 +1,142 @@ +--- +title: function_ratelimits +hide_title: false +hide_table_of_contents: false +keywords: + - function_ratelimits + - nvcf_functions + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a function_ratelimits resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, version_idDeprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{versionId} to update ratelimit and other mutable function fields. This legacy endpoint only updates ratelimit for the specified function version and requires a bearer token with 'update_function' scope in the HTTP Authorization header.
function_id, version_idDelete ratelimit for the specified function version. This endpoint requires a bearer token with 'update_function' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id
string (uuid)Function version id
+ +## `UPDATE` examples + + + + +Deprecated: use PUT /v2/nvcf/functions/{functionId}/versions/{versionId} to update ratelimit and other mutable function fields. This legacy endpoint only updates ratelimit for the specified function version and requires a bearer token with 'update_function' scope in the HTTP Authorization header. + +```sql +UPDATE nvidia.nvcf_functions.function_ratelimits +SET +llm_invocation_config = '{{ llm_invocation_config }}', +model_updates = '{{ model_updates }}', +rate_limit = '{{ rate_limit }}', +tags = '{{ tags }}' +WHERE +function_id = '{{ function_id }}' --required +AND version_id = '{{ version_id }}' --required; +``` + + + + +## `DELETE` examples + + + + +Delete ratelimit for the specified function version. This endpoint requires a bearer token with 'update_function' scope in the HTTP Authorization header. + +```sql +DELETE FROM nvidia.nvcf_functions.function_ratelimits +WHERE function_id = '{{ function_id }}' --required +AND version_id = '{{ version_id }}' --required +; +``` + + diff --git a/website/docs/services/nvcf_functions/function_secrets/index.md b/website/docs/services/nvcf_functions/function_secrets/index.md new file mode 100644 index 0000000..7865a2d --- /dev/null +++ b/website/docs/services/nvcf_functions/function_secrets/index.md @@ -0,0 +1,111 @@ +--- +title: function_secrets +hide_title: false +hide_table_of_contents: false +keywords: + - function_secrets + - nvcf_functions + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a function_secrets resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, version_id, secretsUpdates secrets for the specified function version. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function Id
string (uuid)Function Version Id
+ +## `UPDATE` examples + + + + +Updates secrets for the specified function version. This endpoint requires a bearer token with 'update_secrets' scope in the HTTP Authorization header. + +```sql +UPDATE nvidia.nvcf_functions.function_secrets +SET +secrets = '{{ secrets }}' +WHERE +function_id = '{{ function_id }}' --required +AND version_id = '{{ version_id }}' --required +AND secrets = '{{ secrets }}' --required; +``` + + diff --git a/website/docs/services/nvcf_functions/function_versions/index.md b/website/docs/services/nvcf_functions/function_versions/index.md new file mode 100644 index 0000000..ce4347b --- /dev/null +++ b/website/docs/services/nvcf_functions/function_versions/index.md @@ -0,0 +1,759 @@ +--- +title: function_versions +hide_title: false +hide_table_of_contents: false +keywords: + - function_versions + - nvcf_functions + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a function_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Unique function id
string (UTF-8)Function name
string (UTF-8)NVIDIA Cloud Account Id (wire: ncaId)
string (uuid)Unique function version id (wire: versionId)
string (UTF-8)Helm Chart Service Name specified only when helmChart property is specified (wire: helmChartServiceName)
arrayList of active instances for this function. (wire: activeInstances)
string (UTF-8)Invocation request body format (PREDICT_V2, CUSTOM) (wire: apiBodyFormat)
string (UTF-8)Args used to launch the container (wire: containerArgs)
arrayEnvironment settings used to launch the container (wire: containerEnvironment)
string (uri)Optional custom container (wire: containerImage)
string (date_time)Function creation timestamp (wire: createdAt)
string (UTF-8)Function/version description
string (UTF-8)Used to indicate a STREAMING function. Defaults to DEFAULT. (DEFAULT, STREAMING, LLM) (wire: functionType)
objectFunction health configuration
string (uri)Health endpoint for the container or helmChart. Deprecated, use health.uri instead. (wire: healthUri)
string (uri)Optional Helm Chart (wire: helmChart)
integer (int32)Optional port number where the inference listener is running - defaults to 8000 for Triton (wire: inferencePort)
string (uri)Entrypoint for invoking the container to process requests (wire: inferenceUrl)
objectOptional function-level LLM invocation configuration. (wire: llmInvocationConfig)
arrayOptional list of models
booleanIndicates whether the function is owned by another account. If the account that is being used to lookup functions happens to be authorized to invoke/list this function which is owned by a different account, then this field is set to true and ncaId will contain the id of the account that owns the function. Otherwise, this field is not set as it defaults to false. (wire: ownedByDifferentAccount)
objectOptional rate limit policy (wire: rateLimit)
arrayOptional set of resources.
arrayOptional secret names
string (UTF-8)Function status (ACTIVE, DEPLOYING, ERROR, INACTIVE, DELETED, DEGRADED, DEGRADING)
arrayOptional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars.
objectOptional telemetry configuration for the function
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Unique function id
string (UTF-8)Function name
string (UTF-8)NVIDIA Cloud Account Id (wire: ncaId)
string (uuid)Unique function version id (wire: versionId)
string (UTF-8)Helm Chart Service Name specified only when helmChart property is specified (wire: helmChartServiceName)
arrayList of active instances for this function. (wire: activeInstances)
string (UTF-8)Invocation request body format (PREDICT_V2, CUSTOM) (wire: apiBodyFormat)
string (UTF-8)Args used to launch the container (wire: containerArgs)
arrayEnvironment settings used to launch the container (wire: containerEnvironment)
string (uri)Optional custom container (wire: containerImage)
string (date_time)Function creation timestamp (wire: createdAt)
string (UTF-8)Function/version description
string (UTF-8)Used to indicate a STREAMING function. Defaults to DEFAULT. (DEFAULT, STREAMING, LLM) (wire: functionType)
objectFunction health configuration
string (uri)Health endpoint for the container or helmChart. Deprecated, use health.uri instead. (wire: healthUri)
string (uri)Optional Helm Chart (wire: helmChart)
integer (int32)Optional port number where the inference listener is running - defaults to 8000 for Triton (wire: inferencePort)
string (uri)Entrypoint for invoking the container to process requests (wire: inferenceUrl)
objectOptional function-level LLM invocation configuration. (wire: llmInvocationConfig)
arrayOptional list of models
booleanIndicates whether the function is owned by another account. If the account that is being used to lookup functions happens to be authorized to invoke/list this function which is owned by a different account, then this field is set to true and ncaId will contain the id of the account that owns the function. Otherwise, this field is not set as it defaults to false. (wire: ownedByDifferentAccount)
objectOptional rate limit policy (wire: rateLimit)
arrayOptional set of resources.
arrayOptional secret names
string (UTF-8)Function status (ACTIVE, DEPLOYING, ERROR, INACTIVE, DELETED, DEGRADED, DEGRADING)
arrayOptional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars.
objectOptional telemetry configuration for the function
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, function_version_idinclude_secretsRetrieves detailed information of the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header.
function_idLists details of all the versions of the specified function in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header.
function_id, inference_url, nameCreates a version of the specified function within the authenticated NVIDIA Cloud Account. If the function is public, then Account Admin cannot create a version. Requires a bearer token with 'register_function' scope in the HTTP Authorization header.
function_id, function_version_idUpdates mutable fields of the specified function version within the authenticated NVIDIA Cloud Account. The current request payload supports tags updates, rate limit updates, and model-specific LLM config updates. Requires a bearer token with 'update_function' scope in the HTTP Authorization header.
function_id, function_version_idDeletes the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'delete_function' scope in the HTTP Authorization header. If the function version is public, then Account Admin cannot delete the function.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id
string (uuid)Version id
booleanQuery param 'includeSecrets' indicates whether to include secret names for the function in the response. (wire: includeSecrets)
+ +## `SELECT` examples + + + + +Retrieves detailed information of the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. + +```sql +SELECT +id, +name, +nca_id, +version_id, +helm_chart_service_name, +active_instances, +api_body_format, +container_args, +container_environment, +container_image, +created_at, +description, +function_type, +health, +health_uri, +helm_chart, +inference_port, +inference_url, +llm_invocation_config, +models, +owned_by_different_account, +rate_limit, +resources, +secrets, +status, +tags, +telemetries +FROM nvidia.nvcf_functions.function_versions +WHERE function_id = '{{ function_id }}' -- required +AND function_version_id = '{{ function_version_id }}' -- required +AND include_secrets = '{{ include_secrets }}' +; +``` + + + +Lists details of all the versions of the specified function in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scopes in the HTTP Authorization header. + +```sql +SELECT +id, +name, +nca_id, +version_id, +helm_chart_service_name, +active_instances, +api_body_format, +container_args, +container_environment, +container_image, +created_at, +description, +function_type, +health, +health_uri, +helm_chart, +inference_port, +inference_url, +llm_invocation_config, +models, +owned_by_different_account, +rate_limit, +resources, +secrets, +status, +tags, +telemetries +FROM nvidia.nvcf_functions.function_versions +WHERE function_id = '{{ function_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Creates a version of the specified function within the authenticated NVIDIA Cloud Account. If the function is public, then Account Admin cannot create a version. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. + +```sql +INSERT INTO nvidia.nvcf_functions.function_versions ( +api_body_format, +container_args, +container_environment, +container_image, +description, +function_type, +health, +health_uri, +helm_chart, +helm_chart_service_name, +inference_port, +inference_url, +llm_invocation_config, +models, +name, +rate_limit, +resources, +secrets, +tags, +telemetries, +function_id +) +SELECT +'{{ api_body_format }}', +'{{ container_args }}', +'{{ container_environment }}', +'{{ container_image }}', +'{{ description }}', +'{{ function_type }}', +'{{ health }}', +'{{ health_uri }}', +'{{ helm_chart }}', +'{{ helm_chart_service_name }}', +{{ inference_port }}, +'{{ inference_url }}' /* required */, +'{{ llm_invocation_config }}', +'{{ models }}', +'{{ name }}' /* required */, +'{{ rate_limit }}', +'{{ resources }}', +'{{ secrets }}', +'{{ tags }}', +'{{ telemetries }}', +'{{ function_id }}' +RETURNING +function +; +``` + + + +{`# Description fields are for documentation purposes +- name: function_versions + props: + - name: function_id + value: "{{ function_id }}" + description: Required parameter for the function_versions resource. + - name: api_body_format + value: "{{ api_body_format }}" + description: | + Invocation request body format + valid_values: ['PREDICT_V2', 'CUSTOM'] + - name: container_args + value: "{{ container_args }}" + description: | + Args to be passed when launching the container + - name: container_environment + description: | + Environment settings for launching the container + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: container_image + value: "{{ container_image }}" + description: | + Optional custom container image + - name: description + value: "{{ description }}" + description: | + Optional function/version description + - name: function_type + value: "{{ function_type }}" + description: | + Optional function type, used to indicate a STREAMING function. Defaults to DEFAULT. + valid_values: ['DEFAULT', 'STREAMING', 'LLM'] + - name: health + description: | + Function health + value: + expectedStatusCode: {{ expectedStatusCode }} + port: {{ port }} + protocol: "{{ protocol }}" + timeout: "{{ timeout }}" + uri: "{{ uri }}" + - name: health_uri + value: "{{ health_uri }}" + description: | + Health endpoint for the container or the helmChart + - name: helm_chart + value: "{{ helm_chart }}" + description: | + Optional Helm Chart + - name: helm_chart_service_name + value: "{{ helm_chart_service_name }}" + description: | + Helm Chart Service Name is required when helmChart property is specified + - name: inference_port + value: {{ inference_port }} + description: | + Optional port number where the inference listener is running. Defaults to 8000 + for Triton. + - name: inference_url + value: "{{ inference_url }}" + description: | + Entrypoint for invoking the container to process a request + - name: llm_invocation_config + description: | + Optional function-level LLM invocation configuration. Only valid for LLM-type functions. + value: + priority: + defaultPriority: {{ defaultPriority }} + perAccountPriority: "{{ perAccountPriority }}" + - name: models + description: | + Optional list of models + value: + - llmConfig: + routingMethod: "{{ routingMethod }}" + tokenRateLimit: "{{ tokenRateLimit }}" + tokenizer: "{{ tokenizer }}" + uris: + - "{{ uris }}" + name: "{{ name }}" + uri: "{{ uri }}" + version: "{{ version }}" + - name: name + value: "{{ name }}" + description: | + Function name must start with lowercase/uppercase/digit and can only contain lowercase, uppercase, digit, hyphen, and underscore characters + - name: rate_limit + description: | + Optional rate limit config + value: + exemptedNcaIds: + - "{{ exemptedNcaIds }}" + perNcaIdRate: "{{ perNcaIdRate }}" + perUserRate: "{{ perUserRate }}" + rateLimit: "{{ rateLimit }}" + syncCheck: {{ syncCheck }} + - name: resources + description: | + Optional set of resources + value: + - name: "{{ name }}" + uri: "{{ uri }}" + version: "{{ version }}" + - name: secrets + description: | + Optional secrets + value: + - name: "{{ name }}" + value: "{{ value }}" + - name: tags + value: + - "{{ tags }}" + description: | + Optional set of tags - could be empty. Provided by user + - name: telemetries + description: | + Optional telemetry configuration for logs, metrics, and traces. + value: + logsTelemetryId: "{{ logsTelemetryId }}" + metricsTelemetryId: "{{ metricsTelemetryId }}" + tracesTelemetryId: "{{ tracesTelemetryId }}" +`} + + + + + +## `UPDATE` examples + + + + +Updates mutable fields of the specified function version within the authenticated NVIDIA Cloud Account. The current request payload supports tags updates, rate limit updates, and model-specific LLM config updates. Requires a bearer token with 'update_function' scope in the HTTP Authorization header. + +```sql +UPDATE nvidia.nvcf_functions.function_versions +SET +llm_invocation_config = '{{ llm_invocation_config }}', +model_updates = '{{ model_updates }}', +rate_limit = '{{ rate_limit }}', +tags = '{{ tags }}' +WHERE +function_id = '{{ function_id }}' --required +AND function_version_id = '{{ function_version_id }}' --required +RETURNING +function; +``` + + + + +## `DELETE` examples + + + + +Deletes the specified function version in the authenticated NVIDIA Cloud Account. Requires a bearer token with 'delete_function' scope in the HTTP Authorization header. If the function version is public, then Account Admin cannot delete the function. + +```sql +DELETE FROM nvidia.nvcf_functions.function_versions +WHERE function_id = '{{ function_id }}' --required +AND function_version_id = '{{ function_version_id }}' --required +; +``` + + diff --git a/website/docs/services/nvcf_functions/functions/index.md b/website/docs/services/nvcf_functions/functions/index.md new file mode 100644 index 0000000..157395c --- /dev/null +++ b/website/docs/services/nvcf_functions/functions/index.md @@ -0,0 +1,481 @@ +--- +title: functions +hide_title: false +hide_table_of_contents: false +keywords: + - functions + - nvcf_functions + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a functions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Unique function id
string (UTF-8)Function name
string (UTF-8)NVIDIA Cloud Account Id (wire: ncaId)
string (uuid)Unique function version id (wire: versionId)
string (UTF-8)Helm Chart Service Name specified only when helmChart property is specified (wire: helmChartServiceName)
arrayList of active instances for this function. (wire: activeInstances)
string (UTF-8)Invocation request body format (PREDICT_V2, CUSTOM) (wire: apiBodyFormat)
string (UTF-8)Args used to launch the container (wire: containerArgs)
arrayEnvironment settings used to launch the container (wire: containerEnvironment)
string (uri)Optional custom container (wire: containerImage)
string (date_time)Function creation timestamp (wire: createdAt)
string (UTF-8)Function/version description
string (UTF-8)Used to indicate a STREAMING function. Defaults to DEFAULT. (DEFAULT, STREAMING, LLM) (wire: functionType)
objectFunction health configuration
string (uri)Health endpoint for the container or helmChart. Deprecated, use health.uri instead. (wire: healthUri)
string (uri)Optional Helm Chart (wire: helmChart)
integer (int32)Optional port number where the inference listener is running - defaults to 8000 for Triton (wire: inferencePort)
string (uri)Entrypoint for invoking the container to process requests (wire: inferenceUrl)
objectOptional function-level LLM invocation configuration. (wire: llmInvocationConfig)
arrayOptional list of models
booleanIndicates whether the function is owned by another account. If the account that is being used to lookup functions happens to be authorized to invoke/list this function which is owned by a different account, then this field is set to true and ncaId will contain the id of the account that owns the function. Otherwise, this field is not set as it defaults to false. (wire: ownedByDifferentAccount)
objectOptional rate limit policy (wire: rateLimit)
arrayOptional set of resources.
arrayOptional secret names
string (UTF-8)Function status (ACTIVE, DEPLOYING, ERROR, INACTIVE, DELETED, DEGRADED, DEGRADING)
arrayOptional set of tags. Maximum allowed number of tags per function is 64. Maximum length of each tag is 128 chars.
objectOptional telemetry configuration for the function
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
visibilityLists all the functions associated with the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scope in the HTTP Authorization header.
inference_url, nameCreates a new function within the authenticated NVIDIA Cloud Account. Requires a bearer token with 'register_function' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
arrayQuery param 'visibility' indicates the kind of functions to be included in the response.
+ +## `SELECT` examples + + + + +Lists all the functions associated with the authenticated NVIDIA Cloud Account. Requires a bearer token with 'list_functions' or 'list_functions_details' scope in the HTTP Authorization header. + +```sql +SELECT +id, +name, +nca_id, +version_id, +helm_chart_service_name, +active_instances, +api_body_format, +container_args, +container_environment, +container_image, +created_at, +description, +function_type, +health, +health_uri, +helm_chart, +inference_port, +inference_url, +llm_invocation_config, +models, +owned_by_different_account, +rate_limit, +resources, +secrets, +status, +tags, +telemetries +FROM nvidia.nvcf_functions.functions +WHERE visibility = '{{ visibility }}' +; +``` + + + + +## `INSERT` examples + + + + +Creates a new function within the authenticated NVIDIA Cloud Account. Requires a bearer token with 'register_function' scope in the HTTP Authorization header. + +```sql +INSERT INTO nvidia.nvcf_functions.functions ( +api_body_format, +container_args, +container_environment, +container_image, +description, +function_type, +health, +health_uri, +helm_chart, +helm_chart_service_name, +inference_port, +inference_url, +llm_invocation_config, +models, +name, +rate_limit, +resources, +secrets, +tags, +telemetries +) +SELECT +'{{ api_body_format }}', +'{{ container_args }}', +'{{ container_environment }}', +'{{ container_image }}', +'{{ description }}', +'{{ function_type }}', +'{{ health }}', +'{{ health_uri }}', +'{{ helm_chart }}', +'{{ helm_chart_service_name }}', +{{ inference_port }}, +'{{ inference_url }}' /* required */, +'{{ llm_invocation_config }}', +'{{ models }}', +'{{ name }}' /* required */, +'{{ rate_limit }}', +'{{ resources }}', +'{{ secrets }}', +'{{ tags }}', +'{{ telemetries }}' +RETURNING +function +; +``` + + + +{`# Description fields are for documentation purposes +- name: functions + props: + - name: api_body_format + value: "{{ api_body_format }}" + description: | + Invocation request body format + valid_values: ['PREDICT_V2', 'CUSTOM'] + - name: container_args + value: "{{ container_args }}" + description: | + Args to be passed when launching the container + - name: container_environment + description: | + Environment settings for launching the container + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: container_image + value: "{{ container_image }}" + description: | + Optional custom container image + - name: description + value: "{{ description }}" + description: | + Optional function/version description + - name: function_type + value: "{{ function_type }}" + description: | + Optional function type, used to indicate a STREAMING function. Defaults to DEFAULT. + valid_values: ['DEFAULT', 'STREAMING', 'LLM'] + - name: health + description: | + Function health + value: + expectedStatusCode: {{ expectedStatusCode }} + port: {{ port }} + protocol: "{{ protocol }}" + timeout: "{{ timeout }}" + uri: "{{ uri }}" + - name: health_uri + value: "{{ health_uri }}" + description: | + Health endpoint for the container or the helmChart + - name: helm_chart + value: "{{ helm_chart }}" + description: | + Optional Helm Chart + - name: helm_chart_service_name + value: "{{ helm_chart_service_name }}" + description: | + Helm Chart Service Name is required when helmChart property is specified + - name: inference_port + value: {{ inference_port }} + description: | + Optional port number where the inference listener is running. Defaults to 8000 + for Triton. + - name: inference_url + value: "{{ inference_url }}" + description: | + Entrypoint for invoking the container to process a request + - name: llm_invocation_config + description: | + Optional function-level LLM invocation configuration. Only valid for LLM-type functions. + value: + priority: + defaultPriority: {{ defaultPriority }} + perAccountPriority: "{{ perAccountPriority }}" + - name: models + description: | + Optional list of models + value: + - llmConfig: + routingMethod: "{{ routingMethod }}" + tokenRateLimit: "{{ tokenRateLimit }}" + tokenizer: "{{ tokenizer }}" + uris: + - "{{ uris }}" + name: "{{ name }}" + uri: "{{ uri }}" + version: "{{ version }}" + - name: name + value: "{{ name }}" + description: | + Function name must start with lowercase/uppercase/digit and can only contain lowercase, uppercase, digit, hyphen, and underscore characters + - name: rate_limit + description: | + Optional rate limit config + value: + exemptedNcaIds: + - "{{ exemptedNcaIds }}" + perNcaIdRate: "{{ perNcaIdRate }}" + perUserRate: "{{ perUserRate }}" + rateLimit: "{{ rateLimit }}" + syncCheck: {{ syncCheck }} + - name: resources + description: | + Optional set of resources + value: + - name: "{{ name }}" + uri: "{{ uri }}" + version: "{{ version }}" + - name: secrets + description: | + Optional secrets + value: + - name: "{{ name }}" + value: "{{ value }}" + - name: tags + value: + - "{{ tags }}" + description: | + Optional set of tags - could be empty. Provided by user + - name: telemetries + description: | + Optional telemetry configuration for logs, metrics, and traces. + value: + logsTelemetryId: "{{ logsTelemetryId }}" + metricsTelemetryId: "{{ metricsTelemetryId }}" + tracesTelemetryId: "{{ tracesTelemetryId }}" +`} + + + diff --git a/website/docs/services/nvcf_functions/index.md b/website/docs/services/nvcf_functions/index.md new file mode 100644 index 0000000..37acb64 --- /dev/null +++ b/website/docs/services/nvcf_functions/index.md @@ -0,0 +1,38 @@ +--- +title: nvcf_functions +hide_title: false +hide_table_of_contents: false +keywords: + - nvcf_functions + - nvidia + - stackql + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +nvcf_functions service documentation. + +:::info[Service Summary] + +total resources: __7__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/nvcf_invocation/assets/index.md b/website/docs/services/nvcf_invocation/assets/index.md new file mode 100644 index 0000000..9a33838 --- /dev/null +++ b/website/docs/services/nvcf_invocation/assets/index.md @@ -0,0 +1,286 @@ +--- +title: assets +hide_title: false +hide_table_of_contents: false +keywords: + - assets + - nvcf_invocation + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an assets resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Asset id (wire: assetId)
string (UTF-8)Content-type specified when creating the asset (wire: contentType)
string (date_time)Timestamp specified when creating the asset (wire: createdAt)
string (UTF-8)Description specified when creating the asset
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Asset id (wire: assetId)
string (UTF-8)Content-type specified when creating the asset (wire: contentType)
string (date_time)Timestamp specified when creating the asset (wire: createdAt)
string (UTF-8)Description specified when creating the asset
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
asset_idReturns details for the specified asset-id belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header.
List assets owned by the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header.
content_type, descriptionCreates a unique id representing an asset and a pre-signed URL to upload the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header.
asset_idDeletes asset belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Id of the asset to be deleted
+ +## `SELECT` examples + + + + +Returns details for the specified asset-id belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. + +```sql +SELECT +asset_id, +content_type, +created_at, +description +FROM nvidia.nvcf_invocation.assets +WHERE asset_id = '{{ asset_id }}' -- required +; +``` + + + +List assets owned by the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. + +```sql +SELECT +asset_id, +content_type, +created_at, +description +FROM nvidia.nvcf_invocation.assets +; +``` + + + + +## `INSERT` examples + + + + +Creates a unique id representing an asset and a pre-signed URL to upload the asset artifact to AWS S3 bucket for the NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. + +```sql +INSERT INTO nvidia.nvcf_invocation.assets ( +content_type, +description +) +SELECT +'{{ content_type }}' /* required */, +'{{ description }}' /* required */ +RETURNING +asset_id, +content_type, +description, +upload_url +; +``` + + + +{`# Description fields are for documentation purposes +- name: assets + props: + - name: content_type + value: "{{ content_type }}" + description: | + Content type of the asset such image/png, image/jpeg, etc. + - name: description + value: "{{ description }}" + description: | + Asset description +`} + + + + + +## `DELETE` examples + + + + +Deletes asset belonging to the current NVIDIA Cloud Account. Requires a bearer token with 'invoke_function' scope in the HTTP Authorization header. + +```sql +DELETE FROM nvidia.nvcf_invocation.assets +WHERE asset_id = '{{ asset_id }}' --required +; +``` + + diff --git a/website/docs/services/nvcf_invocation/index.md b/website/docs/services/nvcf_invocation/index.md new file mode 100644 index 0000000..9a0c7ed --- /dev/null +++ b/website/docs/services/nvcf_invocation/index.md @@ -0,0 +1,35 @@ +--- +title: nvcf_invocation +hide_title: false +hide_table_of_contents: false +keywords: + - nvcf_invocation + - nvidia + - stackql + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +nvcf_invocation service documentation. + +:::info[Service Summary] + +total resources: __4__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/nvcf_invocation/invocation_status/index.md b/website/docs/services/nvcf_invocation/invocation_status/index.md new file mode 100644 index 0000000..819ef51 --- /dev/null +++ b/website/docs/services/nvcf_invocation/invocation_status/index.md @@ -0,0 +1,128 @@ +--- +title: invocation_status +hide_title: false +hide_table_of_contents: false +keywords: + - invocation_status + - nvcf_invocation + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an invocation_status resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe invocation response body as returned by the function (JSON text); empty while the request is still pending (HTTP 202)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
request_idDeprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function and stream results without polling. Retrieves the status of an in-progress or pending request using its unique invocation request ID. If the result is available, it will be included in the response, marking the request as fulfilled. Conversely, if the result is not yet available, the request is deemed pending. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Invocation Request Id
+ +## `SELECT` examples + + + + +Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function and stream results without polling. Retrieves the status of an in-progress or pending request using its unique invocation request ID. If the result is available, it will be included in the response, marking the request as fulfilled. Conversely, if the result is not yet available, the request is deemed pending. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. + +```sql +SELECT +response +FROM nvidia.nvcf_invocation.invocation_status +WHERE request_id = '{{ request_id }}' -- required +; +``` + + diff --git a/website/docs/services/nvcf_invocation/invocations/index.md b/website/docs/services/nvcf_invocation/invocations/index.md new file mode 100644 index 0000000..316968f --- /dev/null +++ b/website/docs/services/nvcf_invocation/invocations/index.md @@ -0,0 +1,150 @@ +--- +title: invocations +hide_title: false +hide_table_of_contents: false +keywords: + - invocations + - nvcf_invocation + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an invocations resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, bodyNVCF-INPUT-ASSET-REFERENCES, NVCF-POLL-SECONDSDeprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept.
function_id, version_id, bodyNVCF-INPUT-ASSET-REFERENCES, NVCF-POLL-SECONDSDeprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)
string (uuid)Function version id
array
integer (int32)
+ +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. + +```sql +EXEC nvidia.nvcf_invocation.invocations.invoke +@function_id='{{ function_id }}' --required, +@NVCF-INPUT-ASSET-REFERENCES='{{ NVCF-INPUT-ASSET-REFERENCES }}', +@NVCF-POLL-SECONDS='{{ NVCF-POLL-SECONDS }}' +@@json= +'{ +"body": "{{ body }}" +}' +; +``` + + + +Deprecated and will be removed soon. Please use the new NVCF Invocation API endpoint to invoke a function. Invokes the specified function that was successfully deployed. If the version is not specified, any active function versions will handle the request. If the version is specified in the URI, then the request is exclusively processed by the designated version of the function. By default, this endpoint will block for 5 seconds. If the request is not fulfilled before the timeout, it's status is considered in-progress or pending and the response includes HTTP status code 202 with an invocation request ID, indicating that the client should commence polling for the result using the invocation request ID. Access to this endpoint mandates inclusion of a bearer token with 'invoke_function' scope in the HTTP Authorization header. Additionally, this endpoint has the capability to provide updates on the progress of the request, contingent upon the workload's provision of such information. In-progress responses are returned in order. If no in-progress response is received during polling you will receive the most recent in-progress response. Only the first 256 unread in-progress messages are kept. + +```sql +EXEC nvidia.nvcf_invocation.invocations.invoke_version +@function_id='{{ function_id }}' --required, +@version_id='{{ version_id }}' --required, +@NVCF-INPUT-ASSET-REFERENCES='{{ NVCF-INPUT-ASSET-REFERENCES }}', +@NVCF-POLL-SECONDS='{{ NVCF-POLL-SECONDS }}' +@@json= +'{ +"body": "{{ body }}" +}' +; +``` + + diff --git a/website/docs/services/nvcf_invocation/tokens/index.md b/website/docs/services/nvcf_invocation/tokens/index.md new file mode 100644 index 0000000..97d5b7a --- /dev/null +++ b/website/docs/services/nvcf_invocation/tokens/index.md @@ -0,0 +1,158 @@ +--- +title: tokens +hide_title: false +hide_table_of_contents: false +keywords: + - tokens + - nvcf_invocation + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a tokens resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
clientId, functionsIssues an assertion token from Notary Service for specified functionIds and/or functionVersionIds
function_id, clientIdIssues an assertion token from Notary Service for a specific functionId and/or functionVersionId
function_id, function_version_id, clientIdIssues an assertion token from Notary Service for a specific functionId and/or functionVersionId
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)
string (uuid)Function version id
+ +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Issues an assertion token from Notary Service for specified functionIds and/or functionVersionIds + +```sql +EXEC nvidia.nvcf_invocation.tokens.create_for_functions +@@json= +'{ +"clientId": "{{ clientId }}", +"functions": "{{ functions }}" +}' +; +``` + + + +Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId + +```sql +EXEC nvidia.nvcf_invocation.tokens.create_for_function +@function_id='{{ function_id }}' --required +@@json= +'{ +"clientId": "{{ clientId }}" +}' +; +``` + + + +Issues an assertion token from Notary Service for a specific functionId and/or functionVersionId + +```sql +EXEC nvidia.nvcf_invocation.tokens.create_for_version +@function_id='{{ function_id }}' --required, +@function_version_id='{{ function_version_id }}' --required +@@json= +'{ +"clientId": "{{ clientId }}" +}' +; +``` + + diff --git a/website/docs/services/nvcf_queues/index.md b/website/docs/services/nvcf_queues/index.md new file mode 100644 index 0000000..1981662 --- /dev/null +++ b/website/docs/services/nvcf_queues/index.md @@ -0,0 +1,33 @@ +--- +title: nvcf_queues +hide_title: false +hide_table_of_contents: false +keywords: + - nvcf_queues + - nvidia + - stackql + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +nvcf_queues service documentation. + +:::info[Service Summary] + +total resources: __2__ + +::: + +## Resources +
+ +
+queues +
+
\ No newline at end of file diff --git a/website/docs/services/nvcf_queues/queue_positions/index.md b/website/docs/services/nvcf_queues/queue_positions/index.md new file mode 100644 index 0000000..084f399 --- /dev/null +++ b/website/docs/services/nvcf_queues/queue_positions/index.md @@ -0,0 +1,140 @@ +--- +title: queue_positions +hide_title: false +hide_table_of_contents: false +keywords: + - queue_positions + - nvcf_queues + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a queue_positions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id (wire: functionId)
string (uuid)Function version id (wire: functionVersionId)
integer (int32)Position of request in queue (wire: positionInQueue)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
request_idUsing the specified function invocation request id, returns the estimated position of the corresponding message up to 1000 in the queue. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function invocation request id
+ +## `SELECT` examples + + + + +Using the specified function invocation request id, returns the estimated position of the corresponding message up to 1000 in the queue. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. + +```sql +SELECT +function_id, +function_version_id, +position_in_queue +FROM nvidia.nvcf_queues.queue_positions +WHERE request_id = '{{ request_id }}' -- required +; +``` + + diff --git a/website/docs/services/nvcf_queues/queues/index.md b/website/docs/services/nvcf_queues/queues/index.md new file mode 100644 index 0000000..8d0a942 --- /dev/null +++ b/website/docs/services/nvcf_queues/queues/index.md @@ -0,0 +1,210 @@ +--- +title: queues +hide_title: false +hide_table_of_contents: false +keywords: + - queues + - nvcf_queues + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a queues resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function version id (wire: functionVersionId)
string (UTF-8)Function name (wire: functionName)
string (UTF-8)Function status (ACTIVE, DEPLOYING, ERROR, INACTIVE, DELETED, DEGRADED, DEGRADING) (wire: functionStatus)
integer (int32)Approximate number of messages in the request queue (wire: queueDepth)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function version id (wire: functionVersionId)
string (UTF-8)Function name (wire: functionName)
string (UTF-8)Function status (ACTIVE, DEPLOYING, ERROR, INACTIVE, DELETED, DEGRADED, DEGRADING) (wire: functionStatus)
integer (int32)Approximate number of messages in the request queue (wire: queueDepth)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
function_id, version_idProvides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header.
function_idProvides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (uuid)Function id
string (uuid)Function version id
+ +## `SELECT` examples + + + + +Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. + +```sql +SELECT +function_version_id, +function_name, +function_status, +queue_depth +FROM nvidia.nvcf_queues.queues +WHERE function_id = '{{ function_id }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Provides details of all the queues associated with the specified function. If a function has multiple versions and they are all deployed, then the response includes details of all the queues. If the specified function is public, then Account Admin cannot perform this operation. Requires a bearer token or an api-key with 'queue_details' scope in the HTTP Authorization header. + +```sql +SELECT +function_version_id, +function_name, +function_status, +queue_depth +FROM nvidia.nvcf_queues.queues +WHERE function_id = '{{ function_id }}' -- required +; +``` + + diff --git a/website/docs/services/orgs/current_user/index.md b/website/docs/services/orgs/current_user/index.md new file mode 100644 index 0000000..b13269c --- /dev/null +++ b/website/docs/services/orgs/current_user/index.md @@ -0,0 +1,440 @@ +--- +title: current_user +hide_title: false +hide_table_of_contents: false +keywords: + - current_user + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a current_user resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)unique Id of this user.
stringuser name
stringunique auth client id of this user. (wire: clientId)
stringunique starfleet id of this user. (wire: starfleetId)
stringCreated date for this user (wire: createdDate)
stringEmail address of the user. This should be unique.
stringLast time the user logged in (wire: firstLoginDate)
booleanDetermines if the user has beta access (wire: hasBetaAccess)
booleanindicate if user profile has been completed. (wire: hasProfile)
booleanindicates if user has accepted AI Foundry Partnerships eula (wire: hasSignedAiFoundryPartnershipsEULA)
booleanindicates if user has accepted AODT End User License Agreement. (wire: hasSignedAODTEULA)
booleanindicates if user has accepted Base Command End User License Agreement. (wire: hasSignedBaseCommandEULA)
booleanindicates if user has accepted Base Command Manager End User License Agreement. (wire: hasSignedBaseCommandManagerEULA)
booleanindicates if user has accepted BioNeMo End User License Agreement. (wire: hasSignedBioNeMoEULA)
booleanindicates if user has accepted container publishing eula (wire: hasSignedContainerPublishingEULA)
booleanindicates if user has accepted CuOpt eula (wire: hasSignedCuOptEULA)
booleanindicates if user has accepted Earth-2 eula (wire: hasSignedEarth2EULA)
boolean[Deprecated] indicates if user has accepted EGX End User License Agreement. (wire: hasSignedEgxEULA)
booleanDetermines if the user has signed the NGC End User License Agreement. (wire: hasSignedEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedFleetCommandEULA)
booleanindicates if user has accepted LLM End User License Agreement. (wire: hasSignedLlmEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedNVAIEEULA)
booleanDetermines if the user has signed the NVIDIA End User License Agreement. (wire: hasSignedNvidiaEULA)
booleanindicates if user has accepted Nvidia Quantum Cloud End User License Agreement. (wire: hasSignedNVQCEULA)
booleanindicates if user has accepted Omniverse End User License Agreement. (wire: hasSignedOmniverseEULA)
booleanDetermines if the user has signed the Privacy Policy. (wire: hasSignedPrivacyPolicy)
booleanindicates if user has consented to share their registration info with other parties (wire: hasSignedThirdPartyRegistryShareEULA)
booleanDetermines if the user has opted in email subscription. (wire: hasSubscribedToEmail)
stringType of IDP, Identity Provider. Used for login. (NVIDIA, ENTERPRISE) (wire: idpType)
booleanDetermines if the user is active or not. (wire: isActive)
booleanIndicates if user was deleted from the system. (wire: isDeleted)
booleanDetermines if the user is a SAML account or not. (wire: isSAML)
stringTitle of user's job position. (wire: jobPositionTitle)
stringLast time the user logged in (wire: lastLoginDate)
arrayList of roles that the user have
arrayStorage quota for this user. (wire: storageQuota)
stringUpdated date for this user (wire: updatedDate)
objectMetadata information about the user. (wire: userMetadata)
booleanIs user's email or phone number is verified
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_nameWhat am I?
Edit current user profile
Generate API Key
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
+ +## `SELECT` examples + + + + +What am I? + +```sql +SELECT +id, +name, +client_id, +starfleet_id, +created_date, +email, +first_login_date, +has_beta_access, +has_profile, +has_signed_ai_foundry_partnerships_eula, +has_signed_aodteula, +has_signed_base_command_eula, +has_signed_base_command_manager_eula, +has_signed_bio_ne_mo_eula, +has_signed_container_publishing_eula, +has_signed_cu_opt_eula, +has_signed_earth_2_eula, +has_signed_egx_eula, +has_signed_eula, +has_signed_fleet_command_eula, +has_signed_llm_eula, +has_signed_nvaieeula, +has_signed_nvidia_eula, +has_signed_nvqceula, +has_signed_omniverse_eula, +has_signed_privacy_policy, +has_signed_third_party_registry_share_eula, +has_subscribed_to_email, +idp_type, +is_active, +is_deleted, +is_saml, +job_position_title, +last_login_date, +roles, +storage_quota, +updated_date, +user_metadata, +verified +FROM nvidia.orgs.current_user +WHERE org_name = '{{ org_name }}' +; +``` + + + + +## `UPDATE` examples + + + + +Edit current user profile + +```sql +UPDATE nvidia.orgs.current_user +SET +has_email_opt_in = {{ has_email_opt_in }}, +has_signed_aodteula = {{ has_signed_aodteula }}, +has_signed_ai_foundry_partnerships_eula = {{ has_signed_ai_foundry_partnerships_eula }}, +has_signed_base_command_eula = {{ has_signed_base_command_eula }}, +has_signed_base_command_manager_eula = {{ has_signed_base_command_manager_eula }}, +has_signed_bio_ne_mo_eula = {{ has_signed_bio_ne_mo_eula }}, +has_signed_container_publishing_eula = {{ has_signed_container_publishing_eula }}, +has_signed_cu_opt_eula = {{ has_signed_cu_opt_eula }}, +has_signed_eula = {{ has_signed_eula }}, +has_signed_earth_2_eula = {{ has_signed_earth_2_eula }}, +has_signed_egx_eula = {{ has_signed_egx_eula }}, +has_signed_fleet_command_eula = {{ has_signed_fleet_command_eula }}, +has_signed_llm_eula = {{ has_signed_llm_eula }}, +has_signed_nvaieeula = {{ has_signed_nvaieeula }}, +has_signed_nvqceula = {{ has_signed_nvqceula }}, +has_signed_nvidia_eula = {{ has_signed_nvidia_eula }}, +has_signed_omniverse_eula = {{ has_signed_omniverse_eula }}, +has_signed_privacy_policy = {{ has_signed_privacy_policy }}, +has_signed_third_party_registry_share_eula = {{ has_signed_third_party_registry_share_eula }}, +name = '{{ name }}', +user_metadata = '{{ user_metadata }}' +RETURNING +activation_token, +nca_role, +request_status, +user, +user_roles; +``` + + + + +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Generate API Key + +```sql +EXEC nvidia.orgs.current_user.create_api_key + +; +``` + + diff --git a/website/docs/services/orgs/index.md b/website/docs/services/orgs/index.md new file mode 100644 index 0000000..f0cab2d --- /dev/null +++ b/website/docs/services/orgs/index.md @@ -0,0 +1,42 @@ +--- +title: orgs +hide_title: false +hide_table_of_contents: false +keywords: + - orgs + - nvidia + - stackql + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +orgs service documentation. + +:::info[Service Summary] + +total resources: __11__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/orgs/orgs/index.md b/website/docs/services/orgs/orgs/index.md new file mode 100644 index 0000000..64fd5d0 --- /dev/null +++ b/website/docs/services/orgs/orgs/index.md @@ -0,0 +1,691 @@ +--- +title: orgs +hide_title: false +hide_table_of_contents: false +keywords: + - orgs + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an orgs resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Unique Id of this team.
stringOrganization name.
stringBilling account ID. (wire: billingAccountId)
stringIdentity Provider ID. (wire: idpId)
stringProduct end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer. (wire: pecSfdcId)
stringName of the organization that will be shown to users. (wire: displayName)
objectOrg Owner Alternate Contact (wire: alternateContact)
booleanIdentifies if the org can be reused. (wire: canAddOn)
stringISO country code of the organization.
stringOptional description of the organization.
stringIndustry of the organization.
objectInfinity manager setting definition (wire: infinityManagerSettings)
booleanDataset Service enable flag for an organization (wire: isDatasetServiceEnabled)
booleanIs NVIDIA internal org or not (wire: isInternal)
booleanIndicates when the org is a proto org (wire: isProto)
booleanQuick Start enable flag for an organization (wire: isQuickStartEnabled)
booleanIf a server side encryption is enabled for private registry (models, resources) (wire: isRegistrySSEEnabled)
booleanSecrets Manager Service enable flag for an organization (wire: isSecretsManagerServiceEnabled)
booleanSecure Credential Sharing Service enable flag for an organization (wire: isSecureCredentialSharingServiceEnabled)
booleanIf a separate influx db used for an organization in BCP for job telemetry (wire: isSeparateInfluxDbUsed)
stringNVIDIA Cloud Account Number. (wire: ncaAccountNumber)
objectOrg owner. (wire: orgOwner)
arrayOrg owners (wire: orgOwners)
array (wire: productEnablements)
array (wire: productSubscriptions)
objectRepo scan setting definition (wire: repoScanSettings)
string (UNKNOWN, CLOUD, ENTERPRISE, INDIVIDUAL)
objectUsers information. (wire: usersInfo)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Unique Id of this team.
stringOrganization name.
stringBilling account ID. (wire: billingAccountId)
stringIdentity Provider ID. (wire: idpId)
stringProduct end customer salesforce.com Id (external customer Id). pecSfdcId is for EMS (entitlement management service) to track external paid customer. (wire: pecSfdcId)
stringName of the organization that will be shown to users. (wire: displayName)
objectOrg Owner Alternate Contact (wire: alternateContact)
booleanIdentifies if the org can be reused. (wire: canAddOn)
stringISO country code of the organization.
stringOptional description of the organization.
stringIndustry of the organization.
objectInfinity manager setting definition (wire: infinityManagerSettings)
booleanDataset Service enable flag for an organization (wire: isDatasetServiceEnabled)
booleanIs NVIDIA internal org or not (wire: isInternal)
booleanIndicates when the org is a proto org (wire: isProto)
booleanQuick Start enable flag for an organization (wire: isQuickStartEnabled)
booleanIf a server side encryption is enabled for private registry (models, resources) (wire: isRegistrySSEEnabled)
booleanSecrets Manager Service enable flag for an organization (wire: isSecretsManagerServiceEnabled)
booleanSecure Credential Sharing Service enable flag for an organization (wire: isSecureCredentialSharingServiceEnabled)
booleanIf a separate influx db used for an organization in BCP for job telemetry (wire: isSeparateInfluxDbUsed)
stringNVIDIA Cloud Account Number. (wire: ncaAccountNumber)
objectOrg owner. (wire: orgOwner)
arrayOrg owners (wire: orgOwners)
array (wire: productEnablements)
array (wire: productSubscriptions)
objectRepo scan setting definition (wire: repoScanSettings)
string (UNKNOWN, CLOUD, ENTERPRISE, INDIVIDUAL)
objectUsers information. (wire: usersInfo)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
org_nameGet organization information
page_number, page_sizeList all organizations of the user
Create a new organization based on the org info provided in the request.
org_nameUpdate organization information
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
integer (int32)The page number of result
integer (int32)The page size of result
+ +## `SELECT` examples + + + + +Get organization information + +```sql +SELECT +id, +name, +billing_account_id, +idp_id, +pec_sfdc_id, +display_name, +alternate_contact, +can_add_on, +country, +description, +industry, +infinity_manager_settings, +is_dataset_service_enabled, +is_internal, +is_proto, +is_quick_start_enabled, +is_registry_sse_enabled, +is_secrets_manager_service_enabled, +is_secure_credential_sharing_service_enabled, +is_separate_influx_db_used, +nca_account_number, +org_owner, +org_owners, +product_enablements, +product_subscriptions, +repo_scan_settings, +type, +users_info +FROM nvidia.orgs.orgs +WHERE org_name = '{{ org_name }}' -- required +; +``` + + + +List all organizations of the user + +```sql +SELECT +id, +name, +billing_account_id, +idp_id, +pec_sfdc_id, +display_name, +alternate_contact, +can_add_on, +country, +description, +industry, +infinity_manager_settings, +is_dataset_service_enabled, +is_internal, +is_proto, +is_quick_start_enabled, +is_registry_sse_enabled, +is_secrets_manager_service_enabled, +is_secure_credential_sharing_service_enabled, +is_separate_influx_db_used, +nca_account_number, +org_owner, +org_owners, +product_enablements, +product_subscriptions, +repo_scan_settings, +type, +users_info +FROM nvidia.orgs.orgs +WHERE page_number = '{{ page_number }}' +AND page_size = '{{ page_size }}' +; +``` + + + + +## `INSERT` examples + + + + +Create a new organization based on the org info provided in the request. + +```sql +INSERT INTO nvidia.orgs.orgs ( +country, +description, +display_name, +initiator, +is_internal, +name, +nca_id, +nca_number, +org_owner, +pec_name, +pec_sfdc_id, +product_enablements, +product_subscriptions, +proto_org_id, +salesforce_account_industry, +send_email, +type +) +SELECT +'{{ country }}', +'{{ description }}', +'{{ display_name }}', +'{{ initiator }}', +{{ is_internal }}, +'{{ name }}', +'{{ nca_id }}', +'{{ nca_number }}', +'{{ org_owner }}', +'{{ pec_name }}', +'{{ pec_sfdc_id }}', +'{{ product_enablements }}', +'{{ product_subscriptions }}', +'{{ proto_org_id }}', +'{{ salesforce_account_industry }}', +{{ send_email }}, +'{{ type }}' +RETURNING +organizations, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: orgs + props: + - name: country + value: "{{ country }}" + description: | + user country + - name: description + value: "{{ description }}" + description: | + optional description of the organization + - name: display_name + value: "{{ display_name }}" + description: | + Name of the organization that will be shown to users. + - name: initiator + value: "{{ initiator }}" + description: | + Identify the initiator of the org request + - name: is_internal + value: {{ is_internal }} + description: | + Is NVIDIA internal org or not + - name: name + value: "{{ name }}" + description: | + Organization name + - name: nca_id + value: "{{ nca_id }}" + description: | + NVIDIA Cloud Account Identifier + - name: nca_number + value: "{{ nca_number }}" + description: | + NVIDIA Cloud Account Number + - name: org_owner + description: | + Org owner. + value: + email: "{{ email }}" + fullName: "{{ fullName }}" + idpId: "{{ idpId }}" + starfleetId: "{{ starfleetId }}" + - name: pec_name + value: "{{ pec_name }}" + description: | + product end customer name for enterprise(Fleet Command) product + - name: pec_sfdc_id + value: "{{ pec_sfdc_id }}" + description: | + product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product + - name: product_enablements + value: + - expirationDate: "{{ expirationDate }}" + poDetails: "{{ poDetails }}" + productName: "{{ productName }}" + type: "{{ type }}" + - name: product_subscriptions + description: | + This should be deprecated, use productEnablements instead + value: + - emsEntitlementType: "{{ emsEntitlementType }}" + expirationDate: "{{ expirationDate }}" + id: "{{ id }}" + productName: "{{ productName }}" + startDate: "{{ startDate }}" + type: "{{ type }}" + - name: proto_org_id + value: "{{ proto_org_id }}" + description: | + Proto org identifier + - name: salesforce_account_industry + value: "{{ salesforce_account_industry }}" + description: | + Company or organization industry + - name: send_email + value: {{ send_email }} + description: | + Send email to org owner or not. Default is true + - name: type + value: "{{ type }}" + valid_values: ['UNKNOWN', 'CLOUD', 'ENTERPRISE', 'INDIVIDUAL'] +`} + + + + + +## `UPDATE` examples + + + + +Update organization information + +```sql +UPDATE nvidia.orgs.orgs +SET +description = '{{ description }}', +display_name = '{{ display_name }}' +WHERE +org_name = '{{ org_name }}' --required +RETURNING +organizations, +request_status; +``` + + diff --git a/website/docs/services/orgs/proto_orgs/index.md b/website/docs/services/orgs/proto_orgs/index.md new file mode 100644 index 0000000..775eb03 --- /dev/null +++ b/website/docs/services/orgs/proto_orgs/index.md @@ -0,0 +1,288 @@ +--- +title: proto_orgs +hide_title: false +hide_table_of_contents: false +keywords: + - proto_orgs + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a proto_orgs resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringProto Org identifier. (wire: protoOrgId)
stringEmail address of the user.
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
invitation_tokenValidate org creation from proto org
Create a new organization based on the org info retrieved from the ProtoOrg.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringJWT that contains org owner email and proto org identifier
+ +## `SELECT` examples + + + + +Validate org creation from proto org + +```sql +SELECT +proto_org_id, +email +FROM nvidia.orgs.proto_orgs +WHERE invitation_token = '{{ invitation_token }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Create a new organization based on the org info retrieved from the ProtoOrg. + +```sql +INSERT INTO nvidia.orgs.proto_orgs ( +country, +description, +display_name, +initiator, +is_internal, +name, +nca_id, +nca_number, +org_owner, +pec_name, +pec_sfdc_id, +product_enablements, +product_subscriptions, +proto_org_id, +salesforce_account_industry, +send_email, +type +) +SELECT +'{{ country }}', +'{{ description }}', +'{{ display_name }}', +'{{ initiator }}', +{{ is_internal }}, +'{{ name }}', +'{{ nca_id }}', +'{{ nca_number }}', +'{{ org_owner }}', +'{{ pec_name }}', +'{{ pec_sfdc_id }}', +'{{ product_enablements }}', +'{{ product_subscriptions }}', +'{{ proto_org_id }}', +'{{ salesforce_account_industry }}', +{{ send_email }}, +'{{ type }}' +RETURNING +organizations, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: proto_orgs + props: + - name: country + value: "{{ country }}" + description: | + user country + - name: description + value: "{{ description }}" + description: | + optional description of the organization + - name: display_name + value: "{{ display_name }}" + description: | + Name of the organization that will be shown to users. + - name: initiator + value: "{{ initiator }}" + description: | + Identify the initiator of the org request + - name: is_internal + value: {{ is_internal }} + description: | + Is NVIDIA internal org or not + - name: name + value: "{{ name }}" + description: | + Organization name + - name: nca_id + value: "{{ nca_id }}" + description: | + NVIDIA Cloud Account Identifier + - name: nca_number + value: "{{ nca_number }}" + description: | + NVIDIA Cloud Account Number + - name: org_owner + description: | + Org owner. + value: + email: "{{ email }}" + fullName: "{{ fullName }}" + idpId: "{{ idpId }}" + starfleetId: "{{ starfleetId }}" + - name: pec_name + value: "{{ pec_name }}" + description: | + product end customer name for enterprise(Fleet Command) product + - name: pec_sfdc_id + value: "{{ pec_sfdc_id }}" + description: | + product end customer salesforce.com Id (external customer Id) for enterprise(Fleet Command) product + - name: product_enablements + value: + - expirationDate: "{{ expirationDate }}" + poDetails: "{{ poDetails }}" + productName: "{{ productName }}" + type: "{{ type }}" + - name: product_subscriptions + description: | + This should be deprecated, use productEnablements instead + value: + - emsEntitlementType: "{{ emsEntitlementType }}" + expirationDate: "{{ expirationDate }}" + id: "{{ id }}" + productName: "{{ productName }}" + startDate: "{{ startDate }}" + type: "{{ type }}" + - name: proto_org_id + value: "{{ proto_org_id }}" + description: | + Proto org identifier + - name: salesforce_account_industry + value: "{{ salesforce_account_industry }}" + description: | + Company or organization industry + - name: send_email + value: {{ send_email }} + description: | + Send email to org owner or not. Default is true + - name: type + value: "{{ type }}" + valid_values: ['UNKNOWN', 'CLOUD', 'ENTERPRISE', 'INDIVIDUAL'] +`} + + + diff --git a/website/docs/services/orgs/roles/index.md b/website/docs/services/orgs/roles/index.md new file mode 100644 index 0000000..07f9c32 --- /dev/null +++ b/website/docs/services/orgs/roles/index.md @@ -0,0 +1,152 @@ +--- +title: roles +hide_title: false +hide_table_of_contents: false +keywords: + - roles + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a roles resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringName of the role
stringDisplay Name of the role (wire: displayName)
stringShort Display Name of the role (wire: shortDisplayName)
arrayList of actions that this role allows (wire: allowedActions)
objectProduct information of the role
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
show_hiddenList of roles in NGC and their scopes
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
booleanflag indicate if hidden roles should be included
+ +## `SELECT` examples + + + + +List of roles in NGC and their scopes + +```sql +SELECT +name, +display_name, +short_display_name, +allowed_actions, +product +FROM nvidia.orgs.roles +WHERE show_hidden = '{{ show_hidden }}' +; +``` + + diff --git a/website/docs/services/orgs/team_invitations/index.md b/website/docs/services/orgs/team_invitations/index.md new file mode 100644 index 0000000..eeb9499 --- /dev/null +++ b/website/docs/services/orgs/team_invitations/index.md @@ -0,0 +1,339 @@ +--- +title: team_invitations +hide_title: false +hide_table_of_contents: false +keywords: + - team_invitations + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a team_invitations resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique invitation ID
stringuser name
stringDate on which the invitation was created. (ISO-8601 format) (wire: createdDate)
stringEmail address of the user.
booleanFlag indicating if the invitation has already been accepted by the user. (wire: isProcessed)
stringOrg to which a user was invited.
arrayList of roles that the user have.
stringTeam to which a user was invited.
stringType of invitation. The invitation is either to an organization or to a team within organization. (ORGANIZATION, TEAM)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_namepage_number, page_size, order_by, qList invitations in a team. (Team User Admin privileges required)
team_nameInvites and creates a User in team
team_name, idDelete a specific invitation in an team. (Org Admin or Team User Admin privileges required)
team_name, idResend email of a specific invitation in a team (Org or Team User Admin privileges required).
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string (wire: orderBy)
integer (int32)The page number of result
integer (int32)The page size of result
objectUser Search Parameters
+ +## `SELECT` examples + + + + +List invitations in a team. (Team User Admin privileges required) + +```sql +SELECT +id, +name, +created_date, +email, +is_processed, +org, +roles, +team, +type +FROM nvidia.orgs.team_invitations +WHERE team_name = '{{ team_name }}' -- required +AND page_number = '{{ page_number }}' +AND page_size = '{{ page_size }}' +AND order_by = '{{ order_by }}' +AND q = '{{ q }}' +; +``` + + + + +## `INSERT` examples + + + + +Invites and creates a User in team + +```sql +INSERT INTO nvidia.orgs.team_invitations ( +email, +invitation_expiration_in, +invite_as, +message, +team_name +) +SELECT +'{{ email }}', +{{ invitation_expiration_in }}, +'{{ invite_as }}', +'{{ message }}', +'{{ team_name }}' +RETURNING +activation_token, +nca_role, +request_status, +user, +user_roles +; +``` + + + +{`# Description fields are for documentation purposes +- name: team_invitations + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the team_invitations resource. + - name: email + value: "{{ email }}" + description: | + Is the user email + - name: invitation_expiration_in + value: {{ invitation_expiration_in }} + description: | + Is the numbers of days the invitation will expire + - name: invite_as + value: "{{ invite_as }}" + description: | + Nca allow users to be invited as Admin and as Member + valid_values: ['ADMIN', 'MEMBER'] + - name: message + value: "{{ message }}" + description: | + Is a message to the new user +`} + + + + + +## `DELETE` examples + + + + +Delete a specific invitation in an team. (Org Admin or Team User Admin privileges required) + +```sql +DELETE FROM nvidia.orgs.team_invitations +WHERE team_name = '{{ team_name }}' --required +AND id = '{{ id }}' --required +; +``` + + + + +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Resend email of a specific invitation in a team (Org or Team User Admin privileges required). + +```sql +EXEC nvidia.orgs.team_invitations.resend_email +@team_name='{{ team_name }}' --required, +@id='{{ id }}' --required +; +``` + + diff --git a/website/docs/services/orgs/team_member_roles/index.md b/website/docs/services/orgs/team_member_roles/index.md new file mode 100644 index 0000000..f8cbc93 --- /dev/null +++ b/website/docs/services/orgs/team_member_roles/index.md @@ -0,0 +1,178 @@ +--- +title: team_member_roles +hide_title: false +hide_table_of_contents: false +keywords: + - team_member_roles + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a team_member_roles resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, user_email_or_id, rolesInvite if user does not exist, otherwise add role in team
team_name, user_email_or_idrolesRemove role in team if user exists, otherwise remove invitation
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
array
string
string
array
+ +## `INSERT` examples + + + + +Invite if user does not exist, otherwise add role in team + +```sql +INSERT INTO nvidia.orgs.team_member_roles ( +team_name, +user_email_or_id, +roles +) +SELECT +'{{ team_name }}', +'{{ user_email_or_id }}', +'{{ roles }}' +RETURNING +activation_token, +nca_role, +request_status, +user, +user_roles +; +``` + + + +{`# Description fields are for documentation purposes +- name: team_member_roles + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the team_member_roles resource. + - name: user_email_or_id + value: "{{ user_email_or_id }}" + description: Required parameter for the team_member_roles resource. + - name: roles + value: "{{ roles }}" + description: Required parameter for the team_member_roles resource. +`} + + + + + +## `DELETE` examples + + + + +Remove role in team if user exists, otherwise remove invitation + +```sql +DELETE FROM nvidia.orgs.team_member_roles +WHERE team_name = '{{ team_name }}' --required +AND user_email_or_id = '{{ user_email_or_id }}' --required +AND roles = '{{ roles }}' +; +``` + + diff --git a/website/docs/services/orgs/team_members/index.md b/website/docs/services/orgs/team_members/index.md new file mode 100644 index 0000000..c27c5a6 --- /dev/null +++ b/website/docs/services/orgs/team_members/index.md @@ -0,0 +1,709 @@ +--- +title: team_members +hide_title: false +hide_table_of_contents: false +keywords: + - team_members + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a team_members resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringtoken needed to activate the user to enable login and other features (wire: activationToken)
stringNCA role (UNKNOWN, ADMINISTRATOR, MEMBER, OWNER, PENDING) (wire: ncaRole)
object (wire: requestStatus)
objectinformation about the user
arrayDEPRECATED - Please use roles inside user (wire: userRoles)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringtoken needed to activate the user to enable login and other features (wire: activationToken)
stringNCA role (UNKNOWN, ADMINISTRATOR, MEMBER, OWNER, PENDING) (wire: ncaRole)
object (wire: requestStatus)
objectinformation about the user
arrayDEPRECATED - Please use roles inside user (wire: userRoles)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)unique Id of this user.
stringuser name
stringunique auth client id of this user. (wire: clientId)
stringunique starfleet id of this user. (wire: starfleetId)
stringCreated date for this user (wire: createdDate)
stringEmail address of the user. This should be unique.
stringLast time the user logged in (wire: firstLoginDate)
booleanDetermines if the user has beta access (wire: hasBetaAccess)
booleanindicate if user profile has been completed. (wire: hasProfile)
booleanindicates if user has accepted AI Foundry Partnerships eula (wire: hasSignedAiFoundryPartnershipsEULA)
booleanindicates if user has accepted AODT End User License Agreement. (wire: hasSignedAODTEULA)
booleanindicates if user has accepted Base Command End User License Agreement. (wire: hasSignedBaseCommandEULA)
booleanindicates if user has accepted Base Command Manager End User License Agreement. (wire: hasSignedBaseCommandManagerEULA)
booleanindicates if user has accepted BioNeMo End User License Agreement. (wire: hasSignedBioNeMoEULA)
booleanindicates if user has accepted container publishing eula (wire: hasSignedContainerPublishingEULA)
booleanindicates if user has accepted CuOpt eula (wire: hasSignedCuOptEULA)
booleanindicates if user has accepted Earth-2 eula (wire: hasSignedEarth2EULA)
boolean[Deprecated] indicates if user has accepted EGX End User License Agreement. (wire: hasSignedEgxEULA)
booleanDetermines if the user has signed the NGC End User License Agreement. (wire: hasSignedEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedFleetCommandEULA)
booleanindicates if user has accepted LLM End User License Agreement. (wire: hasSignedLlmEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedNVAIEEULA)
booleanDetermines if the user has signed the NVIDIA End User License Agreement. (wire: hasSignedNvidiaEULA)
booleanindicates if user has accepted Nvidia Quantum Cloud End User License Agreement. (wire: hasSignedNVQCEULA)
booleanindicates if user has accepted Omniverse End User License Agreement. (wire: hasSignedOmniverseEULA)
booleanDetermines if the user has signed the Privacy Policy. (wire: hasSignedPrivacyPolicy)
booleanindicates if user has consented to share their registration info with other parties (wire: hasSignedThirdPartyRegistryShareEULA)
booleanDetermines if the user has opted in email subscription. (wire: hasSubscribedToEmail)
stringType of IDP, Identity Provider. Used for login. (NVIDIA, ENTERPRISE) (wire: idpType)
booleanDetermines if the user is active or not. (wire: isActive)
booleanIndicates if user was deleted from the system. (wire: isDeleted)
booleanDetermines if the user is a SAML account or not. (wire: isSAML)
stringTitle of user's job position. (wire: jobPositionTitle)
stringLast time the user logged in (wire: lastLoginDate)
arrayList of roles that the user have
arrayStorage quota for this user. (wire: storageQuota)
stringUpdated date for this user (wire: updatedDate)
objectMetadata information about the user. (wire: userMetadata)
booleanIs user's email or phone number is verified
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, starfleet_idGet User details in team by starfleet Id
team_name, user_email_or_idGet info and role/invitation in a team by email or id
team_namepage_number, page_size, qGet list of users in team. (User Admin in team privileges required)
team_name, idAdd a User to team
team_name, emailsend_email, idp_idCreates a User and add them to a team within the org.
team_name, idanonymizeRemove User from team.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
booleanIf anonymize is true, then org owner permission is required.
stringIf the IDP ID is provided then it is used instead of the one configured for the organization
integer (int32)The page number of result
integer (int32)The page size of result
objectUser Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented
boolean
+ +## `SELECT` examples + + + + +Get User details in team by starfleet Id + +```sql +SELECT +activation_token, +nca_role, +request_status, +user, +user_roles +FROM nvidia.orgs.team_members +WHERE team_name = '{{ team_name }}' -- required +AND starfleet_id = '{{ starfleet_id }}' -- required +; +``` + + + +Get info and role/invitation in a team by email or id + +```sql +SELECT +activation_token, +nca_role, +request_status, +user, +user_roles +FROM nvidia.orgs.team_members +WHERE team_name = '{{ team_name }}' -- required +AND user_email_or_id = '{{ user_email_or_id }}' -- required +; +``` + + + +Get list of users in team. (User Admin in team privileges required) + +```sql +SELECT +id, +name, +client_id, +starfleet_id, +created_date, +email, +first_login_date, +has_beta_access, +has_profile, +has_signed_ai_foundry_partnerships_eula, +has_signed_aodteula, +has_signed_base_command_eula, +has_signed_base_command_manager_eula, +has_signed_bio_ne_mo_eula, +has_signed_container_publishing_eula, +has_signed_cu_opt_eula, +has_signed_earth_2_eula, +has_signed_egx_eula, +has_signed_eula, +has_signed_fleet_command_eula, +has_signed_llm_eula, +has_signed_nvaieeula, +has_signed_nvidia_eula, +has_signed_nvqceula, +has_signed_omniverse_eula, +has_signed_privacy_policy, +has_signed_third_party_registry_share_eula, +has_subscribed_to_email, +idp_type, +is_active, +is_deleted, +is_saml, +job_position_title, +last_login_date, +roles, +storage_quota, +updated_date, +user_metadata, +verified +FROM nvidia.orgs.team_members +WHERE team_name = '{{ team_name }}' -- required +AND page_number = '{{ page_number }}' +AND page_size = '{{ page_size }}' +AND q = '{{ q }}' +; +``` + + + + +## `INSERT` examples + + + + +Add a User to team + +```sql +INSERT INTO nvidia.orgs.team_members ( +team_name, +id +) +SELECT +'{{ team_name }}', +'{{ id }}' +RETURNING +request_status +; +``` + + + +Creates a User and add them to a team within the org. + +```sql +INSERT INTO nvidia.orgs.team_members ( +email, +email_opt_in, +eula_accepted, +name, +role_type, +role_types, +salesforce_contact_job_role, +user_metadata, +team_name, +send_email, +idp_id +) +SELECT +'{{ email }}' /* required */, +{{ email_opt_in }}, +{{ eula_accepted }}, +'{{ name }}', +'{{ role_type }}', +'{{ role_types }}', +'{{ salesforce_contact_job_role }}', +'{{ user_metadata }}', +'{{ team_name }}', +'{{ send_email }}', +'{{ idp_id }}' +RETURNING +activation_token, +nca_role, +request_status, +user, +user_roles +; +``` + + + +{`# Description fields are for documentation purposes +- name: team_members + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the team_members resource. + - name: id + value: "{{ id }}" + description: Required parameter for the team_members resource. + - name: email + value: "{{ email }}" + description: | + Email address of the user. This should be unique. + - name: email_opt_in + value: {{ email_opt_in }} + description: | + indicates if user has opt in to nvidia emails + - name: eula_accepted + value: {{ eula_accepted }} + description: | + indicates if user has accepted EULA + - name: name + value: "{{ name }}" + description: | + user name + - name: role_type + value: "{{ role_type }}" + description: | + DEPRECATED - use roleTypes which allows multiple roles + - name: role_types + value: + - "{{ role_types }}" + description: | + feature roles to give to the user + - name: salesforce_contact_job_role + value: "{{ salesforce_contact_job_role }}" + description: | + user job role + - name: user_metadata + description: | + Metadata information about the user. + value: + company: "{{ company }}" + companyUrl: "{{ companyUrl }}" + country: "{{ country }}" + firstName: "{{ firstName }}" + industry: "{{ industry }}" + interest: + - "{{ interest }}" + lastName: "{{ lastName }}" + role: "{{ role }}" + - name: send_email + value: {{ send_email }} + - name: idp_id + value: "{{ idp_id }}" + description: If the IDP ID is provided then it is used instead of the one configured for the organization + description: If the IDP ID is provided then it is used instead of the one configured for the organization +`} + + + + + +## `DELETE` examples + + + + +Remove User from team. + +```sql +DELETE FROM nvidia.orgs.team_members +WHERE team_name = '{{ team_name }}' --required +AND id = '{{ id }}' --required +AND anonymize = '{{ anonymize }}' +; +``` + + diff --git a/website/docs/services/orgs/teams/index.md b/website/docs/services/orgs/teams/index.md new file mode 100644 index 0000000..aaa4cf7 --- /dev/null +++ b/website/docs/services/orgs/teams/index.md @@ -0,0 +1,355 @@ +--- +title: teams +hide_title: false +hide_table_of_contents: false +keywords: + - teams + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a teams resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)unique Id of this team.
stringteam name
stringdescription of the team
objectInfinity manager setting definition (wire: infinityManagerSettings)
booleanindicates if the team is deleted or not (wire: isDeleted)
objectRepo scan setting definition (wire: repoScanSettings)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)unique Id of this team.
stringteam name
stringdescription of the team
objectInfinity manager setting definition (wire: infinityManagerSettings)
booleanindicates if the team is deleted or not (wire: isDeleted)
objectRepo scan setting definition (wire: repoScanSettings)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_nameGet Team by name
page_number, page_sizeList all Teams
nameCreate team in org. (Org Admin Privileges Required)
team_nameEdit a Team
team_nameDelete a Team
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
integer (int32)The page number of result
integer (int32)The page size of result
+ +## `SELECT` examples + + + + +Get Team by name + +```sql +SELECT +id, +name, +description, +infinity_manager_settings, +is_deleted, +repo_scan_settings +FROM nvidia.orgs.teams +WHERE team_name = '{{ team_name }}' -- required +; +``` + + + +List all Teams + +```sql +SELECT +id, +name, +description, +infinity_manager_settings, +is_deleted, +repo_scan_settings +FROM nvidia.orgs.teams +WHERE page_number = '{{ page_number }}' +AND page_size = '{{ page_size }}' +; +``` + + + + +## `INSERT` examples + + + + +Create team in org. (Org Admin Privileges Required) + +```sql +INSERT INTO nvidia.orgs.teams ( +description, +name +) +SELECT +'{{ description }}', +'{{ name }}' /* required */ +RETURNING +request_status, +team +; +``` + + + +{`# Description fields are for documentation purposes +- name: teams + props: + - name: description + value: "{{ description }}" + description: | + description of the team + - name: name + value: "{{ name }}" + description: | + team name +`} + + + + + +## `UPDATE` examples + + + + +Edit a Team + +```sql +UPDATE nvidia.orgs.teams +SET +description = '{{ description }}', +infinity_manager_settings = '{{ infinity_manager_settings }}', +repo_scan_settings = '{{ repo_scan_settings }}' +WHERE +team_name = '{{ team_name }}' --required +RETURNING +request_status, +team; +``` + + + + +## `DELETE` examples + + + + +Delete a Team + +```sql +DELETE FROM nvidia.orgs.teams +WHERE team_name = '{{ team_name }}' --required +; +``` + + diff --git a/website/docs/services/orgs/user_invitations/index.md b/website/docs/services/orgs/user_invitations/index.md new file mode 100644 index 0000000..90a7e86 --- /dev/null +++ b/website/docs/services/orgs/user_invitations/index.md @@ -0,0 +1,326 @@ +--- +title: user_invitations +hide_title: false +hide_table_of_contents: false +keywords: + - user_invitations + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a user_invitations resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique invitation ID
stringuser name
stringDate on which the invitation was created. (ISO-8601 format) (wire: createdDate)
stringEmail address of the user.
booleanFlag indicating if the invitation has already been accepted by the user. (wire: isProcessed)
stringOrg to which a user was invited.
arrayList of roles that the user have.
stringTeam to which a user was invited.
stringType of invitation. The invitation is either to an organization or to a team within organization. (ORGANIZATION, TEAM)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
page_number, page_size, order_by, qList invitations in an org. (Org User Admin privileges required)
Invites and creates a User in org
idDelete a specific invitation in an org. (Org User Admin privileges required)
idResend email of a specific invitation in an org (Org User Admin privileges required).
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string (wire: orderBy)
integer (int32)The page number of result
integer (int32)The page size of result
objectUser Search Parameters
+ +## `SELECT` examples + + + + +List invitations in an org. (Org User Admin privileges required) + +```sql +SELECT +id, +name, +created_date, +email, +is_processed, +org, +roles, +team, +type +FROM nvidia.orgs.user_invitations +WHERE page_number = '{{ page_number }}' +AND page_size = '{{ page_size }}' +AND order_by = '{{ order_by }}' +AND q = '{{ q }}' +; +``` + + + + +## `INSERT` examples + + + + +Invites and creates a User in org + +```sql +INSERT INTO nvidia.orgs.user_invitations ( +email, +invitation_expiration_in, +invite_as, +message +) +SELECT +'{{ email }}', +{{ invitation_expiration_in }}, +'{{ invite_as }}', +'{{ message }}' +RETURNING +activation_token, +nca_role, +request_status, +user, +user_roles +; +``` + + + +{`# Description fields are for documentation purposes +- name: user_invitations + props: + - name: email + value: "{{ email }}" + description: | + Is the user email + - name: invitation_expiration_in + value: {{ invitation_expiration_in }} + description: | + Is the numbers of days the invitation will expire + - name: invite_as + value: "{{ invite_as }}" + description: | + Nca allow users to be invited as Admin and as Member + valid_values: ['ADMIN', 'MEMBER'] + - name: message + value: "{{ message }}" + description: | + Is a message to the new user +`} + + + + + +## `DELETE` examples + + + + +Delete a specific invitation in an org. (Org User Admin privileges required) + +```sql +DELETE FROM nvidia.orgs.user_invitations +WHERE id = '{{ id }}' --required +; +``` + + + + +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Resend email of a specific invitation in an org (Org User Admin privileges required). + +```sql +EXEC nvidia.orgs.user_invitations.resend_email +@id='{{ id }}' --required +; +``` + + diff --git a/website/docs/services/orgs/user_roles/index.md b/website/docs/services/orgs/user_roles/index.md new file mode 100644 index 0000000..abad77c --- /dev/null +++ b/website/docs/services/orgs/user_roles/index.md @@ -0,0 +1,167 @@ +--- +title: user_roles +hide_title: false +hide_table_of_contents: false +keywords: + - user_roles + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a user_roles resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
user_email_or_id, rolesInvite if user does not exist, otherwise add role in org
user_email_or_idrolesRemove role in org if user exists, otherwise remove invitation
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
array
string
array
+ +## `INSERT` examples + + + + +Invite if user does not exist, otherwise add role in org + +```sql +INSERT INTO nvidia.orgs.user_roles ( +user_email_or_id, +roles +) +SELECT +'{{ user_email_or_id }}', +'{{ roles }}' +RETURNING +activation_token, +nca_role, +request_status, +user, +user_roles +; +``` + + + +{`# Description fields are for documentation purposes +- name: user_roles + props: + - name: user_email_or_id + value: "{{ user_email_or_id }}" + description: Required parameter for the user_roles resource. + - name: roles + value: "{{ roles }}" + description: Required parameter for the user_roles resource. +`} + + + + + +## `DELETE` examples + + + + +Remove role in org if user exists, otherwise remove invitation + +```sql +DELETE FROM nvidia.orgs.user_roles +WHERE user_email_or_id = '{{ user_email_or_id }}' --required +AND roles = '{{ roles }}' +; +``` + + diff --git a/website/docs/services/orgs/users/index.md b/website/docs/services/orgs/users/index.md new file mode 100644 index 0000000..7498f61 --- /dev/null +++ b/website/docs/services/orgs/users/index.md @@ -0,0 +1,1081 @@ +--- +title: users +hide_title: false +hide_table_of_contents: false +keywords: + - users + - orgs + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a users resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)unique Id of this user.
stringuser name
stringunique auth client id of this user. (wire: clientId)
stringunique starfleet id of this user. (wire: starfleetId)
stringCreated date for this user (wire: createdDate)
stringEmail address of the user. This should be unique.
stringLast time the user logged in (wire: firstLoginDate)
booleanDetermines if the user has beta access (wire: hasBetaAccess)
booleanindicate if user profile has been completed. (wire: hasProfile)
booleanindicates if user has accepted AI Foundry Partnerships eula (wire: hasSignedAiFoundryPartnershipsEULA)
booleanindicates if user has accepted AODT End User License Agreement. (wire: hasSignedAODTEULA)
booleanindicates if user has accepted Base Command End User License Agreement. (wire: hasSignedBaseCommandEULA)
booleanindicates if user has accepted Base Command Manager End User License Agreement. (wire: hasSignedBaseCommandManagerEULA)
booleanindicates if user has accepted BioNeMo End User License Agreement. (wire: hasSignedBioNeMoEULA)
booleanindicates if user has accepted container publishing eula (wire: hasSignedContainerPublishingEULA)
booleanindicates if user has accepted CuOpt eula (wire: hasSignedCuOptEULA)
booleanindicates if user has accepted Earth-2 eula (wire: hasSignedEarth2EULA)
boolean[Deprecated] indicates if user has accepted EGX End User License Agreement. (wire: hasSignedEgxEULA)
booleanDetermines if the user has signed the NGC End User License Agreement. (wire: hasSignedEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedFleetCommandEULA)
booleanindicates if user has accepted LLM End User License Agreement. (wire: hasSignedLlmEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedNVAIEEULA)
booleanDetermines if the user has signed the NVIDIA End User License Agreement. (wire: hasSignedNvidiaEULA)
booleanindicates if user has accepted Nvidia Quantum Cloud End User License Agreement. (wire: hasSignedNVQCEULA)
booleanindicates if user has accepted Omniverse End User License Agreement. (wire: hasSignedOmniverseEULA)
booleanDetermines if the user has signed the Privacy Policy. (wire: hasSignedPrivacyPolicy)
booleanindicates if user has consented to share their registration info with other parties (wire: hasSignedThirdPartyRegistryShareEULA)
booleanDetermines if the user has opted in email subscription. (wire: hasSubscribedToEmail)
stringType of IDP, Identity Provider. Used for login. (NVIDIA, ENTERPRISE) (wire: idpType)
booleanDetermines if the user is active or not. (wire: isActive)
booleanIndicates if user was deleted from the system. (wire: isDeleted)
booleanDetermines if the user is a SAML account or not. (wire: isSAML)
stringTitle of user's job position. (wire: jobPositionTitle)
stringLast time the user logged in (wire: lastLoginDate)
arrayList of roles that the user have
arrayStorage quota for this user. (wire: storageQuota)
stringUpdated date for this user (wire: updatedDate)
objectMetadata information about the user. (wire: userMetadata)
booleanIs user's email or phone number is verified
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)unique Id of this user.
stringuser name
stringunique auth client id of this user. (wire: clientId)
stringunique starfleet id of this user. (wire: starfleetId)
stringCreated date for this user (wire: createdDate)
stringEmail address of the user. This should be unique.
stringLast time the user logged in (wire: firstLoginDate)
booleanDetermines if the user has beta access (wire: hasBetaAccess)
booleanindicate if user profile has been completed. (wire: hasProfile)
booleanindicates if user has accepted AI Foundry Partnerships eula (wire: hasSignedAiFoundryPartnershipsEULA)
booleanindicates if user has accepted AODT End User License Agreement. (wire: hasSignedAODTEULA)
booleanindicates if user has accepted Base Command End User License Agreement. (wire: hasSignedBaseCommandEULA)
booleanindicates if user has accepted Base Command Manager End User License Agreement. (wire: hasSignedBaseCommandManagerEULA)
booleanindicates if user has accepted BioNeMo End User License Agreement. (wire: hasSignedBioNeMoEULA)
booleanindicates if user has accepted container publishing eula (wire: hasSignedContainerPublishingEULA)
booleanindicates if user has accepted CuOpt eula (wire: hasSignedCuOptEULA)
booleanindicates if user has accepted Earth-2 eula (wire: hasSignedEarth2EULA)
boolean[Deprecated] indicates if user has accepted EGX End User License Agreement. (wire: hasSignedEgxEULA)
booleanDetermines if the user has signed the NGC End User License Agreement. (wire: hasSignedEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedFleetCommandEULA)
booleanindicates if user has accepted LLM End User License Agreement. (wire: hasSignedLlmEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedNVAIEEULA)
booleanDetermines if the user has signed the NVIDIA End User License Agreement. (wire: hasSignedNvidiaEULA)
booleanindicates if user has accepted Nvidia Quantum Cloud End User License Agreement. (wire: hasSignedNVQCEULA)
booleanindicates if user has accepted Omniverse End User License Agreement. (wire: hasSignedOmniverseEULA)
booleanDetermines if the user has signed the Privacy Policy. (wire: hasSignedPrivacyPolicy)
booleanindicates if user has consented to share their registration info with other parties (wire: hasSignedThirdPartyRegistryShareEULA)
booleanDetermines if the user has opted in email subscription. (wire: hasSubscribedToEmail)
stringType of IDP, Identity Provider. Used for login. (NVIDIA, ENTERPRISE) (wire: idpType)
booleanDetermines if the user is active or not. (wire: isActive)
booleanIndicates if user was deleted from the system. (wire: isDeleted)
booleanDetermines if the user is a SAML account or not. (wire: isSAML)
stringTitle of user's job position. (wire: jobPositionTitle)
stringLast time the user logged in (wire: lastLoginDate)
arrayList of roles that the user have
arrayStorage quota for this user. (wire: storageQuota)
stringUpdated date for this user (wire: updatedDate)
objectMetadata information about the user. (wire: userMetadata)
booleanIs user's email or phone number is verified
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)unique Id of this user.
stringuser name
stringunique auth client id of this user. (wire: clientId)
stringunique starfleet id of this user. (wire: starfleetId)
stringCreated date for this user (wire: createdDate)
stringEmail address of the user. This should be unique.
stringLast time the user logged in (wire: firstLoginDate)
booleanDetermines if the user has beta access (wire: hasBetaAccess)
booleanindicate if user profile has been completed. (wire: hasProfile)
booleanindicates if user has accepted AI Foundry Partnerships eula (wire: hasSignedAiFoundryPartnershipsEULA)
booleanindicates if user has accepted AODT End User License Agreement. (wire: hasSignedAODTEULA)
booleanindicates if user has accepted Base Command End User License Agreement. (wire: hasSignedBaseCommandEULA)
booleanindicates if user has accepted Base Command Manager End User License Agreement. (wire: hasSignedBaseCommandManagerEULA)
booleanindicates if user has accepted BioNeMo End User License Agreement. (wire: hasSignedBioNeMoEULA)
booleanindicates if user has accepted container publishing eula (wire: hasSignedContainerPublishingEULA)
booleanindicates if user has accepted CuOpt eula (wire: hasSignedCuOptEULA)
booleanindicates if user has accepted Earth-2 eula (wire: hasSignedEarth2EULA)
boolean[Deprecated] indicates if user has accepted EGX End User License Agreement. (wire: hasSignedEgxEULA)
booleanDetermines if the user has signed the NGC End User License Agreement. (wire: hasSignedEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedFleetCommandEULA)
booleanindicates if user has accepted LLM End User License Agreement. (wire: hasSignedLlmEULA)
booleanindicates if user has accepted Fleet Command End User License Agreement. (wire: hasSignedNVAIEEULA)
booleanDetermines if the user has signed the NVIDIA End User License Agreement. (wire: hasSignedNvidiaEULA)
booleanindicates if user has accepted Nvidia Quantum Cloud End User License Agreement. (wire: hasSignedNVQCEULA)
booleanindicates if user has accepted Omniverse End User License Agreement. (wire: hasSignedOmniverseEULA)
booleanDetermines if the user has signed the Privacy Policy. (wire: hasSignedPrivacyPolicy)
booleanindicates if user has consented to share their registration info with other parties (wire: hasSignedThirdPartyRegistryShareEULA)
booleanDetermines if the user has opted in email subscription. (wire: hasSubscribedToEmail)
stringType of IDP, Identity Provider. Used for login. (NVIDIA, ENTERPRISE) (wire: idpType)
booleanDetermines if the user is active or not. (wire: isActive)
booleanIndicates if user was deleted from the system. (wire: isDeleted)
booleanDetermines if the user is a SAML account or not. (wire: isSAML)
stringTitle of user's job position. (wire: jobPositionTitle)
stringLast time the user logged in (wire: lastLoginDate)
arrayList of roles that the user have
arrayStorage quota for this user. (wire: storageQuota)
stringUpdated date for this user (wire: updatedDate)
objectMetadata information about the user. (wire: userMetadata)
booleanIs user's email or phone number is verified
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
starfleet_idGet User details in org by starfleet Id
user_email_or_idGet info and role/invitation in an org by email or id
exclude_from_team, page_number, page_size, qGet list of users in organization. (User Admin in org privileges required)
emailsend_email, idp_idCreates a User
idanonymizeRemove User from org.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
booleanIf anonymize is true, then org owner permission is required.
stringName of team to exclude members from
stringIf the IDP ID is provided then it is used instead of the one configured for the organization
integer (int32)The page number of result
integer (int32)The page size of result
objectUser Search Parameters. Only 'filters' and 'orderBy' for 'name' and 'email' are implemented
boolean
+ +## `SELECT` examples + + + + +Get User details in org by starfleet Id + +```sql +SELECT +id, +name, +client_id, +starfleet_id, +created_date, +email, +first_login_date, +has_beta_access, +has_profile, +has_signed_ai_foundry_partnerships_eula, +has_signed_aodteula, +has_signed_base_command_eula, +has_signed_base_command_manager_eula, +has_signed_bio_ne_mo_eula, +has_signed_container_publishing_eula, +has_signed_cu_opt_eula, +has_signed_earth_2_eula, +has_signed_egx_eula, +has_signed_eula, +has_signed_fleet_command_eula, +has_signed_llm_eula, +has_signed_nvaieeula, +has_signed_nvidia_eula, +has_signed_nvqceula, +has_signed_omniverse_eula, +has_signed_privacy_policy, +has_signed_third_party_registry_share_eula, +has_subscribed_to_email, +idp_type, +is_active, +is_deleted, +is_saml, +job_position_title, +last_login_date, +roles, +storage_quota, +updated_date, +user_metadata, +verified +FROM nvidia.orgs.users +WHERE starfleet_id = '{{ starfleet_id }}' -- required +; +``` + + + +Get info and role/invitation in an org by email or id + +```sql +SELECT +id, +name, +client_id, +starfleet_id, +created_date, +email, +first_login_date, +has_beta_access, +has_profile, +has_signed_ai_foundry_partnerships_eula, +has_signed_aodteula, +has_signed_base_command_eula, +has_signed_base_command_manager_eula, +has_signed_bio_ne_mo_eula, +has_signed_container_publishing_eula, +has_signed_cu_opt_eula, +has_signed_earth_2_eula, +has_signed_egx_eula, +has_signed_eula, +has_signed_fleet_command_eula, +has_signed_llm_eula, +has_signed_nvaieeula, +has_signed_nvidia_eula, +has_signed_nvqceula, +has_signed_omniverse_eula, +has_signed_privacy_policy, +has_signed_third_party_registry_share_eula, +has_subscribed_to_email, +idp_type, +is_active, +is_deleted, +is_saml, +job_position_title, +last_login_date, +roles, +storage_quota, +updated_date, +user_metadata, +verified +FROM nvidia.orgs.users +WHERE user_email_or_id = '{{ user_email_or_id }}' -- required +; +``` + + + +Get list of users in organization. (User Admin in org privileges required) + +```sql +SELECT +id, +name, +client_id, +starfleet_id, +created_date, +email, +first_login_date, +has_beta_access, +has_profile, +has_signed_ai_foundry_partnerships_eula, +has_signed_aodteula, +has_signed_base_command_eula, +has_signed_base_command_manager_eula, +has_signed_bio_ne_mo_eula, +has_signed_container_publishing_eula, +has_signed_cu_opt_eula, +has_signed_earth_2_eula, +has_signed_egx_eula, +has_signed_eula, +has_signed_fleet_command_eula, +has_signed_llm_eula, +has_signed_nvaieeula, +has_signed_nvidia_eula, +has_signed_nvqceula, +has_signed_omniverse_eula, +has_signed_privacy_policy, +has_signed_third_party_registry_share_eula, +has_subscribed_to_email, +idp_type, +is_active, +is_deleted, +is_saml, +job_position_title, +last_login_date, +roles, +storage_quota, +updated_date, +user_metadata, +verified +FROM nvidia.orgs.users +WHERE exclude_from_team = '{{ exclude_from_team }}' +AND page_number = '{{ page_number }}' +AND page_size = '{{ page_size }}' +AND q = '{{ q }}' +; +``` + + + + +## `INSERT` examples + + + + +Creates a User + +```sql +INSERT INTO nvidia.orgs.users ( +email, +email_opt_in, +eula_accepted, +name, +role_type, +role_types, +salesforce_contact_job_role, +user_metadata, +send_email, +idp_id +) +SELECT +'{{ email }}' /* required */, +{{ email_opt_in }}, +{{ eula_accepted }}, +'{{ name }}', +'{{ role_type }}', +'{{ role_types }}', +'{{ salesforce_contact_job_role }}', +'{{ user_metadata }}', +'{{ send_email }}', +'{{ idp_id }}' +RETURNING +activation_token, +nca_role, +request_status, +user, +user_roles +; +``` + + + +{`# Description fields are for documentation purposes +- name: users + props: + - name: email + value: "{{ email }}" + description: | + Email address of the user. This should be unique. + - name: email_opt_in + value: {{ email_opt_in }} + description: | + indicates if user has opt in to nvidia emails + - name: eula_accepted + value: {{ eula_accepted }} + description: | + indicates if user has accepted EULA + - name: name + value: "{{ name }}" + description: | + user name + - name: role_type + value: "{{ role_type }}" + description: | + DEPRECATED - use roleTypes which allows multiple roles + - name: role_types + value: + - "{{ role_types }}" + description: | + feature roles to give to the user + - name: salesforce_contact_job_role + value: "{{ salesforce_contact_job_role }}" + description: | + user job role + - name: user_metadata + description: | + Metadata information about the user. + value: + company: "{{ company }}" + companyUrl: "{{ companyUrl }}" + country: "{{ country }}" + firstName: "{{ firstName }}" + industry: "{{ industry }}" + interest: + - "{{ interest }}" + lastName: "{{ lastName }}" + role: "{{ role }}" + - name: send_email + value: {{ send_email }} + - name: idp_id + value: "{{ idp_id }}" + description: If the IDP ID is provided then it is used instead of the one configured for the organization + description: If the IDP ID is provided then it is used instead of the one configured for the organization +`} + + + + + +## `DELETE` examples + + + + +Remove User from org. + +```sql +DELETE FROM nvidia.orgs.users +WHERE id = '{{ id }}' --required +AND anonymize = '{{ anonymize }}' +; +``` + + diff --git a/website/docs/services/private_registry/artifact_catalog_flags/index.md b/website/docs/services/private_registry/artifact_catalog_flags/index.md new file mode 100644 index 0000000..1828d21 --- /dev/null +++ b/website/docs/services/private_registry/artifact_catalog_flags/index.md @@ -0,0 +1,205 @@ +--- +title: artifact_catalog_flags +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_catalog_flags + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_catalog_flags resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
booleanIndicates if a guest user can download (wire: canGuestDownload)
booleanFlag indicating if artifact is listed and searchable (wire: isListedToPublic)
booleanDetermines if this artifact is publicly accessible (wire: isPublic)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
booleanIndicates if a guest user can download (wire: canGuestDownload)
booleanFlag indicating if artifact is listed and searchable (wire: isListedToPublic)
booleanDetermines if this artifact is publicly accessible (wire: isPublic)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_nameGet the Catalog Public flags for artifact in team
artifact_type, artifact_nameGet the Catalog Public flags for artifact in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
+ +## `SELECT` examples + + + + +Get the Catalog Public flags for artifact in team + +```sql +SELECT +can_guest_download, +is_listed_to_public, +is_public +FROM nvidia.private_registry.artifact_catalog_flags +WHERE team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +; +``` + + + +Get the Catalog Public flags for artifact in org + +```sql +SELECT +can_guest_download, +is_listed_to_public, +is_public +FROM nvidia.private_registry.artifact_catalog_flags +WHERE artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +; +``` + + diff --git a/website/docs/services/private_registry/artifact_collections/index.md b/website/docs/services/private_registry/artifact_collections/index.md new file mode 100644 index 0000000..f92efa6 --- /dev/null +++ b/website/docs/services/private_registry/artifact_collections/index.md @@ -0,0 +1,468 @@ +--- +title: artifact_collections +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_collections + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_collections resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_namepage_size, page_number, order_by, resolve_labels, remove_unresolved_labelsList artifact collections the user can access in the specified org and team
artifact_type, artifact_namepage_size, page_number, order_by, resolve_labels, remove_unresolved_labelsList artifact collections the user can access in the specified org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
string (UTF-8)Order by
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +List artifact collections the user can access in the specified org and team + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.private_registry.artifact_collections +WHERE team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List artifact collections the user can access in the specified org + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.private_registry.artifact_collections +WHERE artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + diff --git a/website/docs/services/private_registry/artifact_deployment_params/index.md b/website/docs/services/private_registry/artifact_deployment_params/index.md new file mode 100644 index 0000000..1f75269 --- /dev/null +++ b/website/docs/services/private_registry/artifact_deployment_params/index.md @@ -0,0 +1,795 @@ +--- +title: artifact_deployment_params +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_deployment_params + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_deployment_params resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectDeployment Artifact Parameters object
objectDeployment CPU Parameters object
stringCloud Service Provider name
objectDeployment GPU Parameters object
objectDeployment Memory Parameters object
objectDeployment Artifact Parameters object
objectDeployment Artifact Parameters object
objectDeployment Storage Parameters object
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_name, csp_nameinherit_csp_parametersGet artifact deployment parameters details in team
team_name, artifact_type, artifact_nameinherit_csp_parametersList artifact deployment parameters in team
artifact_type, artifact_name, csp_nameinherit_csp_parametersGet artifact deployment parameters details in org
artifact_type, artifact_nameinherit_csp_parametersList artifact deployment parameters in org
team_name, artifact_type, artifact_name, csp_nameno_auto_labels, merge_csp_parametersCreate artifact deployment parameters in team
artifact_type, artifact_name, csp_nameno_auto_labels, merge_csp_parametersCreate artifact deployment parameters in org
team_name, artifact_type, artifact_name, csp_namemerge_csp_parametersUpdate artifact deployment parameters in team
artifact_type, artifact_name, csp_namemerge_csp_parametersUpdate artifact deployment parameters in org
team_name, artifact_type, artifact_name, csp_nameDelete artifact deployment parameters in team
artifact_type, artifact_name, csp_nameDelete artifact deployment parameters in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Cloud service provider name
string (UTF-8)Team name
booleanInherit CSP parameters
booleanMerge CSP parameters in response
booleanNo auto labels
+ +## `SELECT` examples + + + + +Get artifact deployment parameters details in team + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.private_registry.artifact_deployment_params +WHERE team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND csp_name = '{{ csp_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + + +List artifact deployment parameters in team + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.private_registry.artifact_deployment_params +WHERE team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + + +Get artifact deployment parameters details in org + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.private_registry.artifact_deployment_params +WHERE artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND csp_name = '{{ csp_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + + +List artifact deployment parameters in org + +```sql +SELECT +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +FROM nvidia.private_registry.artifact_deployment_params +WHERE artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND inherit_csp_parameters = '{{ inherit_csp_parameters }}' +; +``` + + + + +## `INSERT` examples + + + + +Create artifact deployment parameters in team + +```sql +INSERT INTO nvidia.private_registry.artifact_deployment_params ( +container, +cpu, +gpu, +memory, +model, +resource, +storage, +team_name, +artifact_type, +artifact_name, +csp_name, +no_auto_labels, +merge_csp_parameters +) +SELECT +'{{ container }}', +'{{ cpu }}', +'{{ gpu }}', +'{{ memory }}', +'{{ model }}', +'{{ resource }}', +'{{ storage }}', +'{{ team_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}', +'{{ csp_name }}', +'{{ no_auto_labels }}', +'{{ merge_csp_parameters }}' +RETURNING +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +; +``` + + + +Create artifact deployment parameters in org + +```sql +INSERT INTO nvidia.private_registry.artifact_deployment_params ( +container, +cpu, +gpu, +memory, +model, +resource, +storage, +artifact_type, +artifact_name, +csp_name, +no_auto_labels, +merge_csp_parameters +) +SELECT +'{{ container }}', +'{{ cpu }}', +'{{ gpu }}', +'{{ memory }}', +'{{ model }}', +'{{ resource }}', +'{{ storage }}', +'{{ artifact_type }}', +'{{ artifact_name }}', +'{{ csp_name }}', +'{{ no_auto_labels }}', +'{{ merge_csp_parameters }}' +RETURNING +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage +; +``` + + + +{`# Description fields are for documentation purposes +- name: artifact_deployment_params + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the artifact_deployment_params resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the artifact_deployment_params resource. + - name: artifact_name + value: "{{ artifact_name }}" + description: Required parameter for the artifact_deployment_params resource. + - name: csp_name + value: "{{ csp_name }}" + description: Required parameter for the artifact_deployment_params resource. + - name: container + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: cpu + description: | + Deployment CPU Parameters object + value: + count: {{ count }} + - name: gpu + description: | + Deployment GPU Parameters object + value: + count: {{ count }} + type: "{{ type }}" + - name: memory + description: | + Deployment Memory Parameters object + value: + capacityInGB: {{ capacityInGB }} + - name: model + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: resource + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: storage + description: | + Deployment Storage Parameters object + value: + capacityInGB: {{ capacityInGB }} + - name: no_auto_labels + value: {{ no_auto_labels }} + description: No auto labels + description: No auto labels + - name: merge_csp_parameters + value: {{ merge_csp_parameters }} + description: Merge CSP parameters in response + description: Merge CSP parameters in response +`} + + + + + +## `UPDATE` examples + + + + +Update artifact deployment parameters in team + +```sql +UPDATE nvidia.private_registry.artifact_deployment_params +SET +container = '{{ container }}', +cpu = '{{ cpu }}', +gpu = '{{ gpu }}', +memory = '{{ memory }}', +model = '{{ model }}', +resource = '{{ resource }}', +storage = '{{ storage }}' +WHERE +team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND csp_name = '{{ csp_name }}' --required +AND merge-csp-parameters = {{ merge-csp-parameters}} +RETURNING +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage; +``` + + + +Update artifact deployment parameters in org + +```sql +UPDATE nvidia.private_registry.artifact_deployment_params +SET +container = '{{ container }}', +cpu = '{{ cpu }}', +gpu = '{{ gpu }}', +memory = '{{ memory }}', +model = '{{ model }}', +resource = '{{ resource }}', +storage = '{{ storage }}' +WHERE +artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND csp_name = '{{ csp_name }}' --required +AND merge-csp-parameters = {{ merge-csp-parameters}} +RETURNING +container, +cpu, +csp, +gpu, +memory, +model, +resource, +storage; +``` + + + + +## `DELETE` examples + + + + +Delete artifact deployment parameters in team + +```sql +DELETE FROM nvidia.private_registry.artifact_deployment_params +WHERE team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND csp_name = '{{ csp_name }}' --required +; +``` + + + +Delete artifact deployment parameters in org + +```sql +DELETE FROM nvidia.private_registry.artifact_deployment_params +WHERE artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND csp_name = '{{ csp_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/artifact_deployments/index.md b/website/docs/services/private_registry/artifact_deployments/index.md new file mode 100644 index 0000000..f842260 --- /dev/null +++ b/website/docs/services/private_registry/artifact_deployments/index.md @@ -0,0 +1,276 @@ +--- +title: artifact_deployments +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_deployments + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_deployments resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_name, version_id, csp_nameCreate artifact version deployment url in team
artifact_type, artifact_name, version_id, csp_nameCreate artifact version deployment url in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Cloud service provider name
string (UTF-8)Team name
string (UTF-8)Version ID
+ +## `INSERT` examples + + + + +Create artifact version deployment url in team + +```sql +INSERT INTO nvidia.private_registry.artifact_deployments ( +container, +cpu, +gpu, +memory, +model, +resource, +storage, +team_name, +artifact_type, +artifact_name, +version_id, +csp_name +) +SELECT +'{{ container }}', +'{{ cpu }}', +'{{ gpu }}', +'{{ memory }}', +'{{ model }}', +'{{ resource }}', +'{{ storage }}', +'{{ team_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}', +'{{ version_id }}', +'{{ csp_name }}' +RETURNING +csp, +deployment_parameters, +deployment_url, +request_status +; +``` + + + +Create artifact version deployment url in org + +```sql +INSERT INTO nvidia.private_registry.artifact_deployments ( +container, +cpu, +gpu, +memory, +model, +resource, +storage, +artifact_type, +artifact_name, +version_id, +csp_name +) +SELECT +'{{ container }}', +'{{ cpu }}', +'{{ gpu }}', +'{{ memory }}', +'{{ model }}', +'{{ resource }}', +'{{ storage }}', +'{{ artifact_type }}', +'{{ artifact_name }}', +'{{ version_id }}', +'{{ csp_name }}' +RETURNING +csp, +deployment_parameters, +deployment_url, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: artifact_deployments + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the artifact_deployments resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the artifact_deployments resource. + - name: artifact_name + value: "{{ artifact_name }}" + description: Required parameter for the artifact_deployments resource. + - name: version_id + value: "{{ version_id }}" + description: Required parameter for the artifact_deployments resource. + - name: csp_name + value: "{{ csp_name }}" + description: Required parameter for the artifact_deployments resource. + - name: container + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: cpu + description: | + Deployment CPU Parameters object + value: + count: {{ count }} + - name: gpu + description: | + Deployment GPU Parameters object + value: + count: {{ count }} + type: "{{ type }}" + - name: memory + description: | + Deployment Memory Parameters object + value: + capacityInGB: {{ capacityInGB }} + - name: model + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: resource + description: | + Deployment Artifact Parameters object + value: + artifactType: "{{ artifactType }}" + displayName: "{{ displayName }}" + filePath: "{{ filePath }}" + name: "{{ name }}" + orgName: "{{ orgName }}" + teamName: "{{ teamName }}" + versionId: "{{ versionId }}" + - name: storage + description: | + Deployment Storage Parameters object + value: + capacityInGB: {{ capacityInGB }} +`} + + + diff --git a/website/docs/services/private_registry/artifact_files/index.md b/website/docs/services/private_registry/artifact_files/index.md new file mode 100644 index 0000000..b7247b1 --- /dev/null +++ b/website/docs/services/private_registry/artifact_files/index.md @@ -0,0 +1,250 @@ +--- +title: artifact_files +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_files + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the object
integer (int64)Size of the file in bytes (wire: sizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the object
integer (int64)Size of the file in bytes (wire: sizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
artifact_type, team_name, artifact_name, version_idpage_size, page_numberList files of the artifact version in team
artifact_type, artifact_name, version_idpage_size, page_numberList files of the artifact version in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List files of the artifact version in team + +```sql +SELECT +created_date, +description, +path, +size_in_bytes, +updated_date +FROM nvidia.private_registry.artifact_files +WHERE artifact_type = '{{ artifact_type }}' -- required +AND team_name = '{{ team_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List files of the artifact version in org + +```sql +SELECT +created_date, +description, +path, +size_in_bytes, +updated_date +FROM nvidia.private_registry.artifact_files +WHERE artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/private_registry/artifact_product_shares/index.md b/website/docs/services/private_registry/artifact_product_shares/index.md new file mode 100644 index 0000000..a5f75dc --- /dev/null +++ b/website/docs/services/private_registry/artifact_product_shares/index.md @@ -0,0 +1,274 @@ +--- +title: artifact_product_shares +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_product_shares + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_product_shares resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_namePublish artifact to product
artifact_type, artifact_namePublish artifact to product
team_name, artifact_type, artifact_nameUndo publishing of product artifacts
artifact_type, artifact_nameUndo publishing of product artifacts
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
+ +## `INSERT` examples + + + + +Publish artifact to product + +```sql +INSERT INTO nvidia.private_registry.artifact_product_shares ( +access_type, +can_guest_pull, +can_public_list, +is_public, +license_terms, +product_names, +team_name, +artifact_type, +artifact_name +) +SELECT +'{{ access_type }}', +{{ can_guest_pull }}, +{{ can_public_list }}, +{{ is_public }}, +'{{ license_terms }}', +'{{ product_names }}', +'{{ team_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +Publish artifact to product + +```sql +INSERT INTO nvidia.private_registry.artifact_product_shares ( +access_type, +can_guest_pull, +can_public_list, +is_public, +license_terms, +product_names, +artifact_type, +artifact_name +) +SELECT +'{{ access_type }}', +{{ can_guest_pull }}, +{{ can_public_list }}, +{{ is_public }}, +'{{ license_terms }}', +'{{ product_names }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: artifact_product_shares + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the artifact_product_shares resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the artifact_product_shares resource. + - name: artifact_name + value: "{{ artifact_name }}" + description: Required parameter for the artifact_product_shares resource. + - name: access_type + value: "{{ access_type }}" + valid_values: ['LISTED', 'EXCLUSIVE', 'NOT_LISTED'] + - name: can_guest_pull + value: {{ can_guest_pull }} + - name: can_public_list + value: {{ can_public_list }} + - name: is_public + value: {{ is_public }} + - name: license_terms + value: + - configuredLicenseTerms: + download: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + hosting: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + governingTerms: "{{ governingTerms }}" + licenseId: "{{ licenseId }}" + licenseVersion: "{{ licenseVersion }}" + needsAcceptance: {{ needsAcceptance }} + - name: product_names + value: + - "{{ product_names }}" +`} + + + + + +## `DELETE` examples + + + + +Undo publishing of product artifacts + +```sql +DELETE FROM nvidia.private_registry.artifact_product_shares +WHERE team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Undo publishing of product artifacts + +```sql +DELETE FROM nvidia.private_registry.artifact_product_shares +WHERE artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/artifact_shares/index.md b/website/docs/services/private_registry/artifact_shares/index.md new file mode 100644 index 0000000..60dbe64 --- /dev/null +++ b/website/docs/services/private_registry/artifact_shares/index.md @@ -0,0 +1,238 @@ +--- +title: artifact_shares +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_shares + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_shares resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_name, guest_can_downloadpublic_can_listPublish artifact to public
artifact_type, artifact_name, guest_can_downloadpublic_can_listPublish artifact to public
team_name, artifact_type, artifact_nameUndo publishing of artifact to public
artifact_type, artifact_nameUndo publishing of artifact to public
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
booleanIndicates if guest users can download this artifact
string (UTF-8)Team name
booleanIndicates if artifact is listed publicly
+ +## `INSERT` examples + + + + +Publish artifact to public + +```sql +INSERT INTO nvidia.private_registry.artifact_shares ( +team_name, +artifact_type, +artifact_name, +guest_can_download, +public_can_list +) +SELECT +'{{ team_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}', +'{{ guest_can_download }}', +'{{ public_can_list }}' +RETURNING +request_status +; +``` + + + +Publish artifact to public + +```sql +INSERT INTO nvidia.private_registry.artifact_shares ( +artifact_type, +artifact_name, +guest_can_download, +public_can_list +) +SELECT +'{{ artifact_type }}', +'{{ artifact_name }}', +'{{ guest_can_download }}', +'{{ public_can_list }}' +RETURNING +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: artifact_shares + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the artifact_shares resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the artifact_shares resource. + - name: artifact_name + value: "{{ artifact_name }}" + description: Required parameter for the artifact_shares resource. + - name: guest_can_download + value: {{ guest_can_download }} + description: Required parameter for the artifact_shares resource. + - name: public_can_list + value: {{ public_can_list }} + description: Indicates if artifact is listed publicly + description: Indicates if artifact is listed publicly +`} + + + + + +## `DELETE` examples + + + + +Undo publishing of artifact to public + +```sql +DELETE FROM nvidia.private_registry.artifact_shares +WHERE team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Undo publishing of artifact to public + +```sql +DELETE FROM nvidia.private_registry.artifact_shares +WHERE artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/artifact_signatures/index.md b/website/docs/services/private_registry/artifact_signatures/index.md new file mode 100644 index 0000000..11edcf7 --- /dev/null +++ b/website/docs/services/private_registry/artifact_signatures/index.md @@ -0,0 +1,142 @@ +--- +title: artifact_signatures +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_signatures + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_signatures resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_name, version_idRequest to sign artifact version
artifact_type, artifact_name, version_idRequest to sign artifact version
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
string (UTF-8)Version ID
+ +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Request to sign artifact version + +```sql +EXEC nvidia.private_registry.artifact_signatures.set_by_team +@team_name='{{ team_name }}' --required, +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required, +@version_id='{{ version_id }}' --required +; +``` + + + +Request to sign artifact version + +```sql +EXEC nvidia.private_registry.artifact_signatures.set +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required, +@version_id='{{ version_id }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/artifact_specs/index.md b/website/docs/services/private_registry/artifact_specs/index.md new file mode 100644 index 0000000..ce51397 --- /dev/null +++ b/website/docs/services/private_registry/artifact_specs/index.md @@ -0,0 +1,534 @@ +--- +title: artifact_specs +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_specs + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_specs resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringNVCF function id for the model playground (wire: nvcfFunctionId)
stringUnique name of the model (wire: artifactName)
stringArtifactTypeEnum of the artifact (wire: artifactType)
stringMetadata json string
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringorg/team of the model
stringNVCF inference path (invocation route) for the model playground (wire: nvcfInferencePath)
stringOpenAPI specification for this model (wire: openAPISpec)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringNVCF function id for the model playground (wire: nvcfFunctionId)
stringUnique name of the model (wire: artifactName)
stringArtifactTypeEnum of the artifact (wire: artifactType)
stringMetadata json string
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringorg/team of the model
stringNVCF inference path (invocation route) for the model playground (wire: nvcfInferencePath)
stringOpenAPI specification for this model (wire: openAPISpec)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_nameGet AI Playground for artifactType
artifact_type, artifact_nameGet AI Playground for artifactType
team_name, artifact_type, artifact_name, nvcf_function_idCreate AI Playground for artifactType
artifact_type, artifact_name, nvcf_function_idCreate AI Playground for artifactType
team_name, artifact_type, artifact_nameUpdate AI Playground for artifactType
artifact_type, artifact_nameUpdate AI Playground for artifactType
team_name, artifact_type, artifact_nameDelete AI Playground for artifactType
artifact_type, artifact_nameDelete AI Playground for artifactType
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Artifact type
string (UTF-8)Team name
+ +## `SELECT` examples + + + + +Get AI Playground for artifactType + +```sql +SELECT +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date +FROM nvidia.private_registry.artifact_specs +WHERE team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +; +``` + + + +Get AI Playground for artifactType + +```sql +SELECT +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date +FROM nvidia.private_registry.artifact_specs +WHERE artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Create AI Playground for artifactType + +```sql +INSERT INTO nvidia.private_registry.artifact_specs ( +artifact_name, +attributes, +nvcf_function_id, +nvcf_inference_path, +open_api_spec, +team_name, +artifact_type +) +SELECT +'{{ artifact_name }}' /* required */, +'{{ attributes }}', +'{{ nvcf_function_id }}' /* required */, +'{{ nvcf_inference_path }}', +'{{ open_api_spec }}', +'{{ team_name }}', +'{{ artifact_type }}' +RETURNING +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date +; +``` + + + +Create AI Playground for artifactType + +```sql +INSERT INTO nvidia.private_registry.artifact_specs ( +artifact_name, +attributes, +nvcf_function_id, +nvcf_inference_path, +open_api_spec, +artifact_type +) +SELECT +'{{ artifact_name }}' /* required */, +'{{ attributes }}', +'{{ nvcf_function_id }}' /* required */, +'{{ nvcf_inference_path }}', +'{{ open_api_spec }}', +'{{ artifact_type }}' +RETURNING +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date +; +``` + + + +{`# Description fields are for documentation purposes +- name: artifact_specs + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the artifact_specs resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the artifact_specs resource. + - name: artifact_name + value: "{{ artifact_name }}" + description: | + Unique name of the model + - name: attributes + value: "{{ attributes }}" + description: | + Metadata json string + - name: nvcf_function_id + value: "{{ nvcf_function_id }}" + description: | + NVCF function id for the model playground + - name: nvcf_inference_path + value: "{{ nvcf_inference_path }}" + description: | + NVCF inference path (invocation route) for the model playground + - name: open_api_spec + value: "{{ open_api_spec }}" + description: | + OpenAPI specification for this model +`} + + + + + +## `UPDATE` examples + + + + +Update AI Playground for artifactType + +```sql +UPDATE nvidia.private_registry.artifact_specs +SET +attributes = '{{ attributes }}', +nvcf_function_id = '{{ nvcf_function_id }}', +nvcf_inference_path = '{{ nvcf_inference_path }}', +open_api_spec = '{{ open_api_spec }}' +WHERE +team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +RETURNING +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date; +``` + + + +Update AI Playground for artifactType + +```sql +UPDATE nvidia.private_registry.artifact_specs +SET +attributes = '{{ attributes }}', +nvcf_function_id = '{{ nvcf_function_id }}', +nvcf_inference_path = '{{ nvcf_inference_path }}', +open_api_spec = '{{ open_api_spec }}' +WHERE +artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +RETURNING +nvcf_function_id, +artifact_name, +artifact_type, +attributes, +created_date, +namespace, +nvcf_inference_path, +open_api_spec, +updated_date; +``` + + + + +## `DELETE` examples + + + + +Delete AI Playground for artifactType + +```sql +DELETE FROM nvidia.private_registry.artifact_specs +WHERE team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Delete AI Playground for artifactType + +```sql +DELETE FROM nvidia.private_registry.artifact_specs +WHERE artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/artifact_version_configs/index.md b/website/docs/services/private_registry/artifact_version_configs/index.md new file mode 100644 index 0000000..bdd620d --- /dev/null +++ b/website/docs/services/private_registry/artifact_version_configs/index.md @@ -0,0 +1,148 @@ +--- +title: artifact_version_configs +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_version_configs + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_version_configs resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_name, version_idUpdate artifact version with configs like policy badge
artifact_type, artifact_name, version_idUpdate artifact version with configs like policy badge
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
string (UTF-8)Version ID
+ +## `UPDATE` examples + + + + +Update artifact version with configs like policy badge + +```sql +UPDATE nvidia.private_registry.artifact_version_configs +SET +policy = '{{ policy }}' +WHERE +team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND version_id = '{{ version_id }}' --required +RETURNING +request_status; +``` + + + +Update artifact version with configs like policy badge + +```sql +UPDATE nvidia.private_registry.artifact_version_configs +SET +policy = '{{ policy }}' +WHERE +artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND version_id = '{{ version_id }}' --required +RETURNING +request_status; +``` + + diff --git a/website/docs/services/private_registry/artifact_versions/index.md b/website/docs/services/private_registry/artifact_versions/index.md new file mode 100644 index 0000000..3cff632 --- /dev/null +++ b/website/docs/services/private_registry/artifact_versions/index.md @@ -0,0 +1,140 @@ +--- +title: artifact_versions +hide_title: false +hide_table_of_contents: false +keywords: + - artifact_versions + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifact_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_name, version_idDelete a artifact version in team
artifact_type, artifact_name, version_idDelete a artifact version in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
string (UTF-8)Version ID
+ +## `DELETE` examples + + + + +Delete a artifact version in team + +```sql +DELETE FROM nvidia.private_registry.artifact_versions +WHERE team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND version_id = '{{ version_id }}' --required +; +``` + + + +Delete a artifact version in org + +```sql +DELETE FROM nvidia.private_registry.artifact_versions +WHERE artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND version_id = '{{ version_id }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/artifacts/index.md b/website/docs/services/private_registry/artifacts/index.md new file mode 100644 index 0000000..4e39075 --- /dev/null +++ b/website/docs/services/private_registry/artifacts/index.md @@ -0,0 +1,1703 @@ +--- +title: artifacts +hide_title: false +hide_table_of_contents: false +keywords: + - artifacts + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an artifacts resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_nameresolve_labels, remove_unresolved_labelsGet artifact details in team
team_name, artifact_typepage_size, page_number, resolve_labels, remove_unresolved_labelsList artifacts the user can access in the specified org and team
artifact_type, artifact_nameresolve_labels, remove_unresolved_labelsGet artifact details in org
artifact_typepage_size, page_number, resolve_labels, remove_unresolved_labelsList artifacts the user can access in the specified org
team_name, artifact_typeCreate artifact in team
artifact_typeCreate artifact in org
team_name, artifact_type, artifact_nameUpdate artifact details in team
artifact_type, artifact_nameUpdate artifact details in org
team_name, artifact_type, artifact_nameReplace artifact details in team
artifact_type, artifact_nameReplace artifact details in org
team_name, artifact_type, artifact_nameDelete artifact in team
artifact_type, artifact_nameDelete artifact in org
team_name, artifact_type, artifact_nameSync release type labels for all collections containing this artifact. Internal API for service-to-service communication.
team_name, artifact_type, artifact_name, versionUpdates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.
team_name, artifact_type, artifact_nameUpdate artifact terms of service
artifact_type, artifact_nameSync release type labels for all collections containing this artifact. Internal API for service-to-service communication.
artifact_type, artifact_name, versionUpdates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team.
artifact_type, artifact_nameUpdate artifact terms of service
team_name, artifact_type, artifact_name, version_idcontact_email, nspect_idInitiates malwares can for the artifact
team_name, artifact_type, artifact_namePurge Search DB for deleted artifacts
artifact_type, artifact_name, version_idcontact_email, nspect_idInitiates malwares can for the artifact
artifact_type, artifact_namePurge Search DB for deleted artifacts
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Contact email
string (UTF-8)Nspect identifier
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get artifact details in team + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.private_registry.artifacts +WHERE team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List artifacts the user can access in the specified org and team + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.private_registry.artifacts +WHERE team_name = '{{ team_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get artifact details in org + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.private_registry.artifacts +WHERE artifact_type = '{{ artifact_type }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List artifacts the user can access in the specified org + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.private_registry.artifacts +WHERE artifact_type = '{{ artifact_type }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + + +## `INSERT` examples + + + + +Create artifact in team + +```sql +INSERT INTO nvidia.private_registry.artifacts ( +attributes, +bias, +built_by, +description, +display_name, +explainability, +labels, +labels_v2, +license_terms, +logo, +name, +privacy, +publisher, +safety_and_security, +short_description, +team_name, +artifact_type +) +SELECT +'{{ attributes }}', +'{{ bias }}', +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ explainability }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ name }}', +'{{ privacy }}', +'{{ publisher }}', +'{{ safety_and_security }}', +'{{ short_description }}', +'{{ team_name }}', +'{{ artifact_type }}' +RETURNING +artifact, +request_status +; +``` + + + +Create artifact in org + +```sql +INSERT INTO nvidia.private_registry.artifacts ( +attributes, +bias, +built_by, +description, +display_name, +explainability, +labels, +labels_v2, +license_terms, +logo, +name, +privacy, +publisher, +safety_and_security, +short_description, +artifact_type +) +SELECT +'{{ attributes }}', +'{{ bias }}', +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ explainability }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ name }}', +'{{ privacy }}', +'{{ publisher }}', +'{{ safety_and_security }}', +'{{ short_description }}', +'{{ artifact_type }}' +RETURNING +artifact, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: artifacts + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the artifacts resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the artifacts resource. + - name: attributes + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: bias + value: "{{ bias }}" + description: | + Text describing bias in the model + - name: built_by + value: "{{ built_by }}" + description: | + organization that built the artifact + - name: description + value: "{{ description }}" + description: | + Description of the artifact + - name: display_name + value: "{{ display_name }}" + description: | + Display name + - name: explainability + value: "{{ explainability }}" + description: | + Text describing explainability for this model + - name: labels + value: + - "{{ labels }}" + - name: labels_v2 + value: + - "{{ labels_v2 }}" + - name: license_terms + value: + - configuredLicenseTerms: + download: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + hosting: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + governingTerms: "{{ governingTerms }}" + licenseId: "{{ licenseId }}" + licenseVersion: "{{ licenseVersion }}" + needsAcceptance: {{ needsAcceptance }} + - name: logo + value: "{{ logo }}" + description: | + URL for the logo image + - name: name + value: "{{ name }}" + description: | + Unique name of the artifact + - name: privacy + value: "{{ privacy }}" + description: | + Text describing the privacy for this model + - name: publisher + value: "{{ publisher }}" + description: | + organization that published the artifact + - name: safety_and_security + value: "{{ safety_and_security }}" + description: | + Text for describing the safety and security in the model + - name: short_description + value: "{{ short_description }}" + description: | + Short description of the artifact +`} + + + + + +## `UPDATE` examples + + + + +Update artifact details in team + +```sql +UPDATE nvidia.private_registry.artifacts +SET +attributes = '{{ attributes }}', +bias = '{{ bias }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +explainability = '{{ explainability }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +privacy = '{{ privacy }}', +publisher = '{{ publisher }}', +safety_and_security = '{{ safety_and_security }}', +short_description = '{{ short_description }}' +WHERE +team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +RETURNING +artifact, +request_status; +``` + + + +Update artifact details in org + +```sql +UPDATE nvidia.private_registry.artifacts +SET +attributes = '{{ attributes }}', +bias = '{{ bias }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +explainability = '{{ explainability }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +privacy = '{{ privacy }}', +publisher = '{{ publisher }}', +safety_and_security = '{{ safety_and_security }}', +short_description = '{{ short_description }}' +WHERE +artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +RETURNING +artifact, +request_status; +``` + + + + +## `REPLACE` examples + + + + +Replace artifact details in team + +```sql +REPLACE nvidia.private_registry.artifacts +SET +attributes = '{{ attributes }}', +bias = '{{ bias }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +explainability = '{{ explainability }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +privacy = '{{ privacy }}', +publisher = '{{ publisher }}', +safety_and_security = '{{ safety_and_security }}', +short_description = '{{ short_description }}' +WHERE +team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +RETURNING +artifact, +request_status; +``` + + + +Replace artifact details in org + +```sql +REPLACE nvidia.private_registry.artifacts +SET +attributes = '{{ attributes }}', +bias = '{{ bias }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +explainability = '{{ explainability }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +privacy = '{{ privacy }}', +publisher = '{{ publisher }}', +safety_and_security = '{{ safety_and_security }}', +short_description = '{{ short_description }}' +WHERE +artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +RETURNING +artifact, +request_status; +``` + + + + +## `DELETE` examples + + + + +Delete artifact in team + +```sql +DELETE FROM nvidia.private_registry.artifacts +WHERE team_name = '{{ team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Delete artifact in org + +```sql +DELETE FROM nvidia.private_registry.artifacts +WHERE artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + + +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication. + +```sql +EXEC nvidia.private_registry.artifacts.sync_release_type_labels_by_team +@team_name='{{ team_name }}' --required, +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +; +``` + + + +Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team. + +```sql +EXEC nvidia.private_registry.artifacts.set_release_type_by_team +@team_name='{{ team_name }}' --required, +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +@@json= +'{ +"releaseType": "{{ releaseType }}", +"version": "{{ version }}" +}' +; +``` + + + +Update artifact terms of service + +```sql +EXEC nvidia.private_registry.artifacts.set_terms_of_service_by_team +@team_name='{{ team_name }}' --required, +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +@@json= +'{ +"accessType": "{{ accessType }}", +"canGuestPull": {{ canGuestPull }}, +"canPublicList": {{ canPublicList }}, +"isPublic": {{ isPublic }}, +"licenseTerms": "{{ licenseTerms }}", +"productNames": "{{ productNames }}" +}' +; +``` + + + +Sync release type labels for all collections containing this artifact. Internal API for service-to-service communication. + +```sql +EXEC nvidia.private_registry.artifacts.sync_release_type_labels +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +; +``` + + + +Updates the release type (for example GA, EA, beta) of an artifact version within the specified organization and optional team. + +```sql +EXEC nvidia.private_registry.artifacts.set_release_type +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +@@json= +'{ +"releaseType": "{{ releaseType }}", +"version": "{{ version }}" +}' +; +``` + + + +Update artifact terms of service + +```sql +EXEC nvidia.private_registry.artifacts.set_terms_of_service +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +@@json= +'{ +"accessType": "{{ accessType }}", +"canGuestPull": {{ canGuestPull }}, +"canPublicList": {{ canPublicList }}, +"isPublic": {{ isPublic }}, +"licenseTerms": "{{ licenseTerms }}", +"productNames": "{{ productNames }}" +}' +; +``` + + + +Initiates malwares can for the artifact + +```sql +EXEC nvidia.private_registry.artifacts.malware_scan_by_team +@team_name='{{ team_name }}' --required, +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required, +@version_id='{{ version_id }}' --required, +@contact-email='{{ contact_email }}', +@nspect-id='{{ nspect_id }}' +; +``` + + + +Purge Search DB for deleted artifacts + +```sql +EXEC nvidia.private_registry.artifacts.purge_by_team +@team_name='{{ team_name }}' --required, +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +; +``` + + + +Initiates malwares can for the artifact + +```sql +EXEC nvidia.private_registry.artifacts.malware_scan +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required, +@version_id='{{ version_id }}' --required, +@contact-email='{{ contact_email }}', +@nspect-id='{{ nspect_id }}' +; +``` + + + +Purge Search DB for deleted artifacts + +```sql +EXEC nvidia.private_registry.artifacts.purge +@artifact_type='{{ artifact_type }}' --required, +@artifact_name='{{ artifact_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/collection_artifacts/index.md b/website/docs/services/private_registry/collection_artifacts/index.md new file mode 100644 index 0000000..2e7204a --- /dev/null +++ b/website/docs/services/private_registry/collection_artifacts/index.md @@ -0,0 +1,1002 @@ +--- +title: collection_artifacts +hide_title: false +hide_table_of_contents: false +keywords: + - collection_artifacts + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a collection_artifacts resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the helm chart
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
stringID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the helm chart belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the helm chart belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
array
stringText describing bias in the artifact
stringOrganization that built the helm chart (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the helm chart
stringText describing the explainability for this artifact
booleanIndicates if the artifact has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if helm chart is user's favorite (wire: isFavourite)
booleanDetermines if this helm chart is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
array (wire: policyLabels)
stringText describing the privacy for this artifact
array (wire: productNames)
stringOrganization that published this helm chart
stringText for describing the safety and security in the artifact (wire: safetyAndSecurity)
stringShort description of the helm chart (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, collection_name, artifact_typepage_size, page_number, order_by, resolve_labels, remove_unresolved_labelsList collection artifacts the user can access in the specified org and team
collection_name, artifact_typepage_size, page_number, order_by, resolve_labels, remove_unresolved_labelsList collection artifacts the user can access in the specified org
team_name, collection_name, artifact_org_name, artifact_team_name, artifact_type, artifact_nameAdd artifact to the specified collection in the specified org and team from another org and team
collection_name, artifact_org_name, artifact_team_name, artifact_type, artifact_nameAdd artifact to the specified collection in the specified org from another org and team
team_name, collection_name, artifact_org_name, artifact_type, artifact_nameAdd artifact to the specified collection in the specified org and team from another org
collection_name, artifact_org_name, artifact_type, artifact_nameAdd artifact to the specified collection in the specified org from another org
team_name, collection_name, artifact_type, artifact_nameAdd artifact to the specified collection in the specified org and team
collection_name, artifact_type, artifact_nameAdd artifact to the specified collection in the specified org
team_name, collection_namePatch collection in the specified org and team
collection_namePatch collection in the specified org
team_name, collection_name, artifact_org_name, artifact_team_name, artifact_type, artifact_nameRemove artifact from the specified collection in the specified org and team from another org and team
collection_name, artifact_org_name, artifact_team_name, artifact_type, artifact_nameRemove artifact from the specified collection in the specified org from another org
team_name, collection_name, artifact_org_name, artifact_type, artifact_nameRemove artifact from the specified collection in the specified org and team from another org
collection_name, artifact_org_name, artifact_type, artifact_nameRemove artifact from the specified collection in the specified org from another org
team_name, collection_name, artifact_type, artifact_nameRemove artifact from the specified collection in the specified org and team
collection_name, artifact_type, artifact_nameRemove artifact from the specified collection in the specified org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact organization name
string (UTF-8)Artifact team name
string (UTF-8)Artifact type
string (UTF-8)Collection name
string (UTF-8)Team name
string (UTF-8)Order by
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +List collection artifacts the user can access in the specified org and team + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.private_registry.collection_artifacts +WHERE team_name = '{{ team_name }}' -- required +AND collection_name = '{{ collection_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List collection artifacts the user can access in the specified org + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +artifact_type, +attributes, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_size_in_bytes, +license_terms, +logo, +policy_labels, +privacy, +product_names, +publisher, +safety_and_security, +short_description, +updated_date +FROM nvidia.private_registry.collection_artifacts +WHERE collection_name = '{{ collection_name }}' -- required +AND artifact_type = '{{ artifact_type }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + + +## `INSERT` examples + + + + +Add artifact to the specified collection in the specified org and team from another org and team + +```sql +INSERT INTO nvidia.private_registry.collection_artifacts ( +team_name, +collection_name, +artifact_org_name, +artifact_team_name, +artifact_type, +artifact_name +) +SELECT +'{{ team_name }}', +'{{ collection_name }}', +'{{ artifact_org_name }}', +'{{ artifact_team_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +Add artifact to the specified collection in the specified org from another org and team + +```sql +INSERT INTO nvidia.private_registry.collection_artifacts ( +collection_name, +artifact_org_name, +artifact_team_name, +artifact_type, +artifact_name +) +SELECT +'{{ collection_name }}', +'{{ artifact_org_name }}', +'{{ artifact_team_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +Add artifact to the specified collection in the specified org and team from another org + +```sql +INSERT INTO nvidia.private_registry.collection_artifacts ( +team_name, +collection_name, +artifact_org_name, +artifact_type, +artifact_name +) +SELECT +'{{ team_name }}', +'{{ collection_name }}', +'{{ artifact_org_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +Add artifact to the specified collection in the specified org from another org + +```sql +INSERT INTO nvidia.private_registry.collection_artifacts ( +collection_name, +artifact_org_name, +artifact_type, +artifact_name +) +SELECT +'{{ collection_name }}', +'{{ artifact_org_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +Add artifact to the specified collection in the specified org and team + +```sql +INSERT INTO nvidia.private_registry.collection_artifacts ( +team_name, +collection_name, +artifact_type, +artifact_name +) +SELECT +'{{ team_name }}', +'{{ collection_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +Add artifact to the specified collection in the specified org + +```sql +INSERT INTO nvidia.private_registry.collection_artifacts ( +collection_name, +artifact_type, +artifact_name +) +SELECT +'{{ collection_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: collection_artifacts + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the collection_artifacts resource. + - name: collection_name + value: "{{ collection_name }}" + description: Required parameter for the collection_artifacts resource. + - name: artifact_org_name + value: "{{ artifact_org_name }}" + description: Required parameter for the collection_artifacts resource. + - name: artifact_team_name + value: "{{ artifact_team_name }}" + description: Required parameter for the collection_artifacts resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the collection_artifacts resource. + - name: artifact_name + value: "{{ artifact_name }}" + description: Required parameter for the collection_artifacts resource. +`} + + + + + +## `UPDATE` examples + + + + +Patch collection in the specified org and team + +```sql +UPDATE nvidia.private_registry.collection_artifacts +SET +operations = '{{ operations }}' +WHERE +team_name = '{{ team_name }}' --required +AND collection_name = '{{ collection_name }}' --required +RETURNING +request_status; +``` + + + +Patch collection in the specified org + +```sql +UPDATE nvidia.private_registry.collection_artifacts +SET +operations = '{{ operations }}' +WHERE +collection_name = '{{ collection_name }}' --required +RETURNING +request_status; +``` + + + + +## `DELETE` examples + + + + +Remove artifact from the specified collection in the specified org and team from another org and team + +```sql +DELETE FROM nvidia.private_registry.collection_artifacts +WHERE team_name = '{{ team_name }}' --required +AND collection_name = '{{ collection_name }}' --required +AND artifact_org_name = '{{ artifact_org_name }}' --required +AND artifact_team_name = '{{ artifact_team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Remove artifact from the specified collection in the specified org from another org + +```sql +DELETE FROM nvidia.private_registry.collection_artifacts +WHERE collection_name = '{{ collection_name }}' --required +AND artifact_org_name = '{{ artifact_org_name }}' --required +AND artifact_team_name = '{{ artifact_team_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Remove artifact from the specified collection in the specified org and team from another org + +```sql +DELETE FROM nvidia.private_registry.collection_artifacts +WHERE team_name = '{{ team_name }}' --required +AND collection_name = '{{ collection_name }}' --required +AND artifact_org_name = '{{ artifact_org_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Remove artifact from the specified collection in the specified org from another org + +```sql +DELETE FROM nvidia.private_registry.collection_artifacts +WHERE collection_name = '{{ collection_name }}' --required +AND artifact_org_name = '{{ artifact_org_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Remove artifact from the specified collection in the specified org and team + +```sql +DELETE FROM nvidia.private_registry.collection_artifacts +WHERE team_name = '{{ team_name }}' --required +AND collection_name = '{{ collection_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + + +Remove artifact from the specified collection in the specified org + +```sql +DELETE FROM nvidia.private_registry.collection_artifacts +WHERE collection_name = '{{ collection_name }}' --required +AND artifact_type = '{{ artifact_type }}' --required +AND artifact_name = '{{ artifact_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/collection_product_shares/index.md b/website/docs/services/private_registry/collection_product_shares/index.md new file mode 100644 index 0000000..e80e4f4 --- /dev/null +++ b/website/docs/services/private_registry/collection_product_shares/index.md @@ -0,0 +1,184 @@ +--- +title: collection_product_shares +hide_title: false +hide_table_of_contents: false +keywords: + - collection_product_shares + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a collection_product_shares resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, collection_namePublish collection to product
collection_namePublish collection to product
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Collection name
string (UTF-8)Team name
+ +## `INSERT` examples + + + + +Publish collection to product + +```sql +INSERT INTO nvidia.private_registry.collection_product_shares ( +access_type, +can_guest_pull, +can_public_list, +is_public, +product_names, +team_name, +collection_name +) +SELECT +'{{ access_type }}', +{{ can_guest_pull }}, +{{ can_public_list }}, +{{ is_public }}, +'{{ product_names }}', +'{{ team_name }}', +'{{ collection_name }}' +RETURNING +request_status +; +``` + + + +Publish collection to product + +```sql +INSERT INTO nvidia.private_registry.collection_product_shares ( +access_type, +can_guest_pull, +can_public_list, +is_public, +product_names, +collection_name +) +SELECT +'{{ access_type }}', +{{ can_guest_pull }}, +{{ can_public_list }}, +{{ is_public }}, +'{{ product_names }}', +'{{ collection_name }}' +RETURNING +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: collection_product_shares + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the collection_product_shares resource. + - name: collection_name + value: "{{ collection_name }}" + description: Required parameter for the collection_product_shares resource. + - name: access_type + value: "{{ access_type }}" + valid_values: ['LISTED', 'EXCLUSIVE', 'NOT_LISTED'] + - name: can_guest_pull + value: {{ can_guest_pull }} + - name: can_public_list + value: {{ can_public_list }} + - name: is_public + value: {{ is_public }} + - name: product_names + value: + - "{{ product_names }}" +`} + + + diff --git a/website/docs/services/private_registry/collections/index.md b/website/docs/services/private_registry/collections/index.md new file mode 100644 index 0000000..508c931 --- /dev/null +++ b/website/docs/services/private_registry/collections/index.md @@ -0,0 +1,1079 @@ +--- +title: collections +hide_title: false +hide_table_of_contents: false +keywords: + - collections + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a collections resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the collection
stringDisplay name (wire: displayName)
stringName of the org that the collection belongs to (wire: orgName)
stringName of the user who owns this version (wire: ownerName)
stringName of the team that the collection belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
array
stringOrganization that built the collection (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
string (HEALTHCARE, SMART_CITIES, RETAIL, MANUFACTURING, SUPERCOMPUTING, ROBOTICS, AUTOMOTIVE, TELECOMMUNICATIONS, FINANCE, OIL_AND_GAS, NATURAL_LANGUAGE_PROCESSING, AUTOMATIC_SPEECH_RECOGNITION, INTELLIGENT_VIDEO_ANALYTICS, OBJECT_DETECTION, IMAGE_CLASSIFICATION, ANNOTATION, IMAGE_SYNTHESIS, MACHINE_LEARNING, DEEP_LEARNING, INFRASTRUCTURE, HIGH_PERFORMANCE_COMPUTING, WINDOWS_RTX_ACCELERATED_MODELS, BEGINNER, ADVANCED)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the collection
booleanDetermines if this collection is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringURL for the logo image
array (wire: policyLabels)
array (wire: productNames)
stringOrganization that published this collection
stringShort description of the collection (wire: shortDescription)
integer (int64)Total count of collection items
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, collection_nameresolve_labels, remove_unresolved_labelsGet collection details in team
collection_nameresolve_labels, remove_unresolved_labelsGet collection details in org
team_namepage_size, page_number, order_by, resolve_labels, remove_unresolved_labelsList collections the user can access in the specified org and team
page_size, page_number, order_byList collections the user can access in the specified org
team_name, category, name, short_descriptionCreate collection in org and team
category, name, short_descriptionCreate collection in org
team_name, collection_nameUpdate collection details in team
collection_nameUpdate collection details in org
team_name, collection_nameDelete collection in the specified org and team
collection_nameDelete collection in the specified org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Collection name
string (UTF-8)Team name
string (UTF-8)Order by
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get collection details in team + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.private_registry.collections +WHERE team_name = '{{ team_name }}' -- required +AND collection_name = '{{ collection_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get collection details in org + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.private_registry.collections +WHERE collection_name = '{{ collection_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List collections the user can access in the specified org and team + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.private_registry.collections +WHERE team_name = '{{ team_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List collections the user can access in the specified org + +```sql +SELECT +name, +display_name, +org_name, +owner_name, +team_name, +access_type, +attributes, +built_by, +can_guest_download, +category, +created_date, +description, +is_public, +is_read_only, +labels, +logo, +policy_labels, +product_names, +publisher, +short_description, +size, +updated_date +FROM nvidia.private_registry.collections +WHERE page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND order_by = '{{ order_by }}' +; +``` + + + + +## `INSERT` examples + + + + +Create collection in org and team + +```sql +INSERT INTO nvidia.private_registry.collections ( +attributes, +built_by, +category, +description, +display_name, +labels, +labels_v2, +logo, +name, +owner_name, +publisher, +short_description, +team_name +) +SELECT +'{{ attributes }}', +'{{ built_by }}', +'{{ category }}' /* required */, +'{{ description }}', +'{{ display_name }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ logo }}', +'{{ name }}' /* required */, +'{{ owner_name }}', +'{{ publisher }}', +'{{ short_description }}' /* required */, +'{{ team_name }}' +RETURNING +collection, +request_status +; +``` + + + +Create collection in org + +```sql +INSERT INTO nvidia.private_registry.collections ( +attributes, +built_by, +category, +description, +display_name, +labels, +labels_v2, +logo, +name, +owner_name, +publisher, +short_description +) +SELECT +'{{ attributes }}', +'{{ built_by }}', +'{{ category }}' /* required */, +'{{ description }}', +'{{ display_name }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ logo }}', +'{{ name }}' /* required */, +'{{ owner_name }}', +'{{ publisher }}', +'{{ short_description }}' /* required */ +RETURNING +collection, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: collections + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the collections resource. + - name: attributes + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: built_by + value: "{{ built_by }}" + description: | + organization that built the collection + - name: category + value: "{{ category }}" + valid_values: ['HEALTHCARE', 'SMART_CITIES', 'RETAIL', 'MANUFACTURING', 'SUPERCOMPUTING', 'ROBOTICS', 'AUTOMOTIVE', 'TELECOMMUNICATIONS', 'FINANCE', 'OIL_AND_GAS', 'NATURAL_LANGUAGE_PROCESSING', 'AUTOMATIC_SPEECH_RECOGNITION', 'INTELLIGENT_VIDEO_ANALYTICS', 'OBJECT_DETECTION', 'IMAGE_CLASSIFICATION', 'ANNOTATION', 'IMAGE_SYNTHESIS', 'MACHINE_LEARNING', 'DEEP_LEARNING', 'INFRASTRUCTURE', 'HIGH_PERFORMANCE_COMPUTING', 'WINDOWS_RTX_ACCELERATED_MODELS', 'BEGINNER', 'ADVANCED'] + - name: description + value: "{{ description }}" + description: | + Description of the collection + - name: display_name + value: "{{ display_name }}" + description: | + Display name + - name: labels + value: + - "{{ labels }}" + - name: labels_v2 + value: + - "{{ labels_v2 }}" + - name: logo + value: "{{ logo }}" + description: | + URL for the logo image + - name: name + value: "{{ name }}" + description: | + Unique name of the collection + - name: owner_name + value: "{{ owner_name }}" + description: | + Name of the user who owns this collection + - name: publisher + value: "{{ publisher }}" + description: | + organization that published the collection + - name: short_description + value: "{{ short_description }}" + description: | + Short description of the collection +`} + + + + + +## `UPDATE` examples + + + + +Update collection details in team + +```sql +UPDATE nvidia.private_registry.collections +SET +attributes = '{{ attributes }}', +built_by = '{{ built_by }}', +category = '{{ category }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +logo = '{{ logo }}', +owner_name = '{{ owner_name }}', +publisher = '{{ publisher }}', +short_description = '{{ short_description }}' +WHERE +team_name = '{{ team_name }}' --required +AND collection_name = '{{ collection_name }}' --required +RETURNING +collection, +request_status; +``` + + + +Update collection details in org + +```sql +UPDATE nvidia.private_registry.collections +SET +attributes = '{{ attributes }}', +built_by = '{{ built_by }}', +category = '{{ category }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +logo = '{{ logo }}', +owner_name = '{{ owner_name }}', +publisher = '{{ publisher }}', +short_description = '{{ short_description }}' +WHERE +collection_name = '{{ collection_name }}' --required +RETURNING +collection, +request_status; +``` + + + + +## `DELETE` examples + + + + +Delete collection in the specified org and team + +```sql +DELETE FROM nvidia.private_registry.collections +WHERE team_name = '{{ team_name }}' --required +AND collection_name = '{{ collection_name }}' --required +; +``` + + + +Delete collection in the specified org + +```sql +DELETE FROM nvidia.private_registry.collections +WHERE collection_name = '{{ collection_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/encryption_keys/index.md b/website/docs/services/private_registry/encryption_keys/index.md new file mode 100644 index 0000000..94acc18 --- /dev/null +++ b/website/docs/services/private_registry/encryption_keys/index.md @@ -0,0 +1,372 @@ +--- +title: encryption_keys +hide_title: false +hide_table_of_contents: false +keywords: + - encryption_keys + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an encryption_keys resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringName of the artifact
stringDisplay name of the artifact (wire: displayName)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
stringDescription of the artifact
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringName of the artifact
stringDisplay name of the artifact (wire: displayName)
stringArtifact type (MODEL, MODEL_SCRIPT, HELM_CHART, REPOSITORY, COLLECTION, ENDPOINT, BLUEPRINT, PLAYBOOK, AGENT, API, SKILL) (wire: artifactType)
stringDescription of the artifact
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (regex)The encryption key identifier in UUID format. (example: 196afcf4-d6c8-4116-aa25-34a718a14f43, pattern: <code>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$</code>) (wire: encryptionKeyId)
string (regex)The creation timestamp of the key item in ISO-8601 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ. (example: 2025-04-19T22:30:00.123Z, pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>)
stringDescription of the encryption key
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (regex)The encryption key identifier in UUID format. (example: 196afcf4-d6c8-4116-aa25-34a718a14f43, pattern: <code>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$</code>) (wire: encryptionKeyId)
string (regex)The creation timestamp of the key item in ISO-8601 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ. (example: 2025-04-19T22:30:00.123Z, pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>)
stringDescription of the encryption key
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, key_idartifact_typeList artifacts for encryption key in org/team
key_idartifact_typeList artifacts for encryption key in org
team_nameList encryption keys in org/team
List encryption keys in org
team_name, key_idRevoke encryption key and disassociate from all artifacts in org/team
key_idRevoke encryption key and disassociate from all artifacts in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Key ID
string (UTF-8)Team name
string (UTF-8)Artifact type
string (UTF-8)Artifact type (wire: artifactType)
+ +## `SELECT` examples + + + + +List artifacts for encryption key in org/team + +```sql +SELECT +name, +display_name, +artifact_type, +description +FROM nvidia.private_registry.encryption_keys +WHERE team_name = '{{ team_name }}' -- required +AND key_id = '{{ key_id }}' -- required +AND artifact_type = '{{ artifact_type }}' +; +``` + + + +List artifacts for encryption key in org + +```sql +SELECT +name, +display_name, +artifact_type, +description +FROM nvidia.private_registry.encryption_keys +WHERE key_id = '{{ key_id }}' -- required +AND artifact_type = '{{ artifact_type }}' +; +``` + + + +List encryption keys in org/team + +```sql +SELECT +encryption_key_id, +created, +description +FROM nvidia.private_registry.encryption_keys +WHERE team_name = '{{ team_name }}' -- required +; +``` + + + +List encryption keys in org + +```sql +SELECT +encryption_key_id, +created, +description +FROM nvidia.private_registry.encryption_keys +; +``` + + + + +## `DELETE` examples + + + + +Revoke encryption key and disassociate from all artifacts in org/team + +```sql +DELETE FROM nvidia.private_registry.encryption_keys +WHERE team_name = '{{ team_name }}' --required +AND key_id = '{{ key_id }}' --required +; +``` + + + +Revoke encryption key and disassociate from all artifacts in org + +```sql +DELETE FROM nvidia.private_registry.encryption_keys +WHERE key_id = '{{ key_id }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/helm_chart_versions/index.md b/website/docs/services/private_registry/helm_chart_versions/index.md new file mode 100644 index 0000000..d604920 --- /dev/null +++ b/website/docs/services/private_registry/helm_chart_versions/index.md @@ -0,0 +1,715 @@ +--- +title: helm_chart_versions +hide_title: false +hide_table_of_contents: false +keywords: + - helm_chart_versions + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a helm_chart_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique ID of the version
array
stringId of the user who created this version (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the version
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the version in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_name, version_idGet chart version in team
artifact_name, version_idGet chart version in org
team_name, artifact_namepage_size, page_number, sort_order, release_typeList chart versions in team
artifact_namepage_size, page_number, sort_order, release_typeList chart versions in org
team_name, artifact_name, version_idUpdate chart version information in team e.g. upload status
artifact_name, version_idUpdate chart version information in org e.g. upload status
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get chart version in team + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.helm_chart_versions +WHERE team_name = '{{ team_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get chart version in org + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.helm_chart_versions +WHERE artifact_name = '{{ artifact_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List chart versions in team + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.helm_chart_versions +WHERE team_name = '{{ team_name }}' -- required +AND artifact_name = '{{ artifact_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + +List chart versions in org + +```sql +SELECT +id, +attributes, +created_by_user, +created_date, +custom_metrics, +description, +is_signed, +malware_scan_date, +malware_scan_status, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.helm_chart_versions +WHERE artifact_name = '{{ artifact_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + + +## `UPDATE` examples + + + + +Update chart version information in team e.g. upload status + +```sql +UPDATE nvidia.private_registry.helm_chart_versions +SET +attributes = '{{ attributes }}', +description = '{{ description }}', +status = '{{ status }}' +WHERE +team_name = '{{ team_name }}' --required +AND artifact_name = '{{ artifact_name }}' --required +AND version_id = '{{ version_id }}' --required +RETURNING +artifact, +artifact_version, +request_status; +``` + + + +Update chart version information in org e.g. upload status + +```sql +UPDATE nvidia.private_registry.helm_chart_versions +SET +attributes = '{{ attributes }}', +description = '{{ description }}', +status = '{{ status }}' +WHERE +artifact_name = '{{ artifact_name }}' --required +AND version_id = '{{ version_id }}' --required +RETURNING +artifact, +artifact_version, +request_status; +``` + + diff --git a/website/docs/services/private_registry/index.md b/website/docs/services/private_registry/index.md new file mode 100644 index 0000000..042c835 --- /dev/null +++ b/website/docs/services/private_registry/index.md @@ -0,0 +1,62 @@ +--- +title: private_registry +hide_title: false +hide_table_of_contents: false +keywords: + - private_registry + - nvidia + - stackql + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +private_registry service documentation. + +:::info[Service Summary] + +total resources: __31__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/private_registry/license_acceptances/index.md b/website/docs/services/private_registry/license_acceptances/index.md new file mode 100644 index 0000000..a6d2120 --- /dev/null +++ b/website/docs/services/private_registry/license_acceptances/index.md @@ -0,0 +1,180 @@ +--- +title: license_acceptances +hide_title: false +hide_table_of_contents: false +keywords: + - license_acceptances + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a license_acceptances resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, artifact_type, artifact_name, license_id, license_versionRecord license acceptance for an org artifact.
artifact_type, artifact_name, license_id, license_versionRecord license acceptance for an org artifact.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Artifact type
string (UTF-8)Team name
+ +## `INSERT` examples + + + + +Record license acceptance for an org artifact. + +```sql +INSERT INTO nvidia.private_registry.license_acceptances ( +license_id, +license_version, +team_name, +artifact_type, +artifact_name +) +SELECT +'{{ license_id }}' /* required */, +'{{ license_version }}' /* required */, +'{{ team_name }}', +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +Record license acceptance for an org artifact. + +```sql +INSERT INTO nvidia.private_registry.license_acceptances ( +license_id, +license_version, +artifact_type, +artifact_name +) +SELECT +'{{ license_id }}' /* required */, +'{{ license_version }}' /* required */, +'{{ artifact_type }}', +'{{ artifact_name }}' +RETURNING +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: license_acceptances + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the license_acceptances resource. + - name: artifact_type + value: "{{ artifact_type }}" + description: Required parameter for the license_acceptances resource. + - name: artifact_name + value: "{{ artifact_name }}" + description: Required parameter for the license_acceptances resource. + - name: license_id + value: "{{ license_id }}" + description: | + License identifier to accept (must match a licenseId from the artifact's published licenseTerms). + - name: license_version + value: "{{ license_version }}" + description: | + License version to accept (must match licenseVersion for that license on the artifact). +`} + + + diff --git a/website/docs/services/private_registry/model_encryption_keys/index.md b/website/docs/services/private_registry/model_encryption_keys/index.md new file mode 100644 index 0000000..f947c82 --- /dev/null +++ b/website/docs/services/private_registry/model_encryption_keys/index.md @@ -0,0 +1,126 @@ +--- +title: model_encryption_keys +hide_title: false +hide_table_of_contents: false +keywords: + - model_encryption_keys + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a model_encryption_keys resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, model_nameDisassociate encryption key from model in team and mark it for offline deletion
model_nameDisassociate encryption key from model in org and mark it for offline deletion
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Team name
+ +## `DELETE` examples + + + + +Disassociate encryption key from model in team and mark it for offline deletion + +```sql +DELETE FROM nvidia.private_registry.model_encryption_keys +WHERE team_name = '{{ team_name }}' --required +AND model_name = '{{ model_name }}' --required +; +``` + + + +Disassociate encryption key from model in org and mark it for offline deletion + +```sql +DELETE FROM nvidia.private_registry.model_encryption_keys +WHERE model_name = '{{ model_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/model_files/index.md b/website/docs/services/private_registry/model_files/index.md new file mode 100644 index 0000000..587b56a --- /dev/null +++ b/website/docs/services/private_registry/model_files/index.md @@ -0,0 +1,250 @@ +--- +title: model_files +hide_title: false +hide_table_of_contents: false +keywords: + - model_files + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a model_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the model
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the model
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, model_name, version_idpage_size, page_reference, page_numberList files of the model version in team
model_name, version_idpage_size, page_reference, page_numberList files of the model version in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List files of the model version in team + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.private_registry.model_files +WHERE team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List files of the model version in org + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.private_registry.model_files +WHERE model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/private_registry/model_shares/index.md b/website/docs/services/private_registry/model_shares/index.md new file mode 100644 index 0000000..ee409ac --- /dev/null +++ b/website/docs/services/private_registry/model_shares/index.md @@ -0,0 +1,298 @@ +--- +title: model_shares +hide_title: false +hide_table_of_contents: false +keywords: + - model_shares + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a model_shares resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + +`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, model_name, target_teamThis operation shares a team model with the team.
model_name, target_teamThis operation shares an org model with the team.
team_name, model_nameThis operation shares a team model with the org.
model_nameThis operation shares an org model with the org.
team_name, model_name, target_teamThis operation revokes a shared team model with the team.
model_name, target_teamThis operation revokes a shared org model with the team.
team_name, model_nameThis operation revokes a shared team model with the org.
model_nameThis operation revokes a shared org model with the org.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Target team name
string (UTF-8)Team name
+ +## `INSERT` examples + + + + +This operation shares a team model with the team. + +```sql +INSERT INTO nvidia.private_registry.model_shares ( +team_name, +model_name, +target_team +) +SELECT +'{{ team_name }}', +'{{ model_name }}', +'{{ target_team }}' +RETURNING +request_status +; +``` + + + +This operation shares an org model with the team. + +```sql +INSERT INTO nvidia.private_registry.model_shares ( +model_name, +target_team +) +SELECT +'{{ model_name }}', +'{{ target_team }}' +RETURNING +request_status +; +``` + + + +This operation shares a team model with the org. + +```sql +INSERT INTO nvidia.private_registry.model_shares ( +team_name, +model_name +) +SELECT +'{{ team_name }}', +'{{ model_name }}' +RETURNING +request_status +; +``` + + + +This operation shares an org model with the org. + +```sql +INSERT INTO nvidia.private_registry.model_shares ( +model_name +) +SELECT +'{{ model_name }}' +RETURNING +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: model_shares + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the model_shares resource. + - name: model_name + value: "{{ model_name }}" + description: Required parameter for the model_shares resource. + - name: target_team + value: "{{ target_team }}" + description: Required parameter for the model_shares resource. +`} + + + + + +## `DELETE` examples + + + + +This operation revokes a shared team model with the team. + +```sql +DELETE FROM nvidia.private_registry.model_shares +WHERE team_name = '{{ team_name }}' --required +AND model_name = '{{ model_name }}' --required +AND target_team = '{{ target_team }}' --required +; +``` + + + +This operation revokes a shared org model with the team. + +```sql +DELETE FROM nvidia.private_registry.model_shares +WHERE model_name = '{{ model_name }}' --required +AND target_team = '{{ target_team }}' --required +; +``` + + + +This operation revokes a shared team model with the org. + +```sql +DELETE FROM nvidia.private_registry.model_shares +WHERE team_name = '{{ team_name }}' --required +AND model_name = '{{ model_name }}' --required +; +``` + + + +This operation revokes a shared org model with the org. + +```sql +DELETE FROM nvidia.private_registry.model_shares +WHERE model_name = '{{ model_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/model_versions/index.md b/website/docs/services/private_registry/model_versions/index.md new file mode 100644 index 0000000..515967b --- /dev/null +++ b/website/docs/services/private_registry/model_versions/index.md @@ -0,0 +1,1217 @@ +--- +title: model_versions +hide_title: false +hide_table_of_contents: false +keywords: + - model_versions + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a model_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, model_name, version_idGet model version in team
model_name, version_idGet model version in org
team_name, model_namerelease_type, page_size, page_number, sort_orderList model versions in team
model_namerelease_type, page_size, page_number, sort_orderList model versions in org
team_name, model_nameCreate model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https:​//semver.org
model_nameCreate a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https:​//semver.org
team_name, model_name, version_idcreate_zip, set_latestUpdate model version information in team e.g. upload status
model_name, version_idcreate_zip, set_latestUpdate model version information in org e.g. upload status
artifact_name, version_idStash artifact version information in org during upload paused state
team_name, artifact_name, version_idStash artifact version information in team in model version upload paused state
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Artifact name
string (UTF-8)Model name
string (UTF-8)Team name
string (UTF-8)Version ID
booleanCreate zip of version content
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
booleanSet version to latest
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get model version in team + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.model_versions +WHERE team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get model version in org + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.model_versions +WHERE model_name = '{{ model_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List model versions in team + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.model_versions +WHERE team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND release_type = '{{ release_type }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + + +List model versions in org + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.model_versions +WHERE model_name = '{{ model_name }}' -- required +AND release_type = '{{ release_type }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + + + +## `INSERT` examples + + + + +Create model version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + +```sql +INSERT INTO nvidia.private_registry.model_versions ( +accuracy_reached, +batch_size, +custom_metrics, +description, +gpu_model, +id, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +owner_name, +version_id, +team_name, +model_name +) +SELECT +{{ accuracy_reached }}, +{{ batch_size }}, +'{{ custom_metrics }}', +'{{ description }}', +'{{ gpu_model }}', +{{ id }}, +'{{ memory_footprint }}', +{{ number_of_epochs }}, +'{{ nvcf_container_configuration }}', +'{{ nvcf_deployment_specification }}', +'{{ other_contents }}', +'{{ owner_name }}', +'{{ version_id }}', +'{{ team_name }}', +'{{ model_name }}' +RETURNING +model, +model_version, +request_status +; +``` + + + +Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + +```sql +INSERT INTO nvidia.private_registry.model_versions ( +accuracy_reached, +batch_size, +custom_metrics, +description, +gpu_model, +id, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +owner_name, +version_id, +model_name +) +SELECT +{{ accuracy_reached }}, +{{ batch_size }}, +'{{ custom_metrics }}', +'{{ description }}', +'{{ gpu_model }}', +{{ id }}, +'{{ memory_footprint }}', +{{ number_of_epochs }}, +'{{ nvcf_container_configuration }}', +'{{ nvcf_deployment_specification }}', +'{{ other_contents }}', +'{{ owner_name }}', +'{{ version_id }}', +'{{ model_name }}' +RETURNING +model, +model_version, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: model_versions + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the model_versions resource. + - name: model_name + value: "{{ model_name }}" + description: Required parameter for the model_versions resource. + - name: accuracy_reached + value: {{ accuracy_reached }} + description: | + Accuracy this model reached + - name: batch_size + value: {{ batch_size }} + description: | + Batch size this model was trained with + - name: custom_metrics + value: + - attributes: "{{ attributes }}" + name: "{{ name }}" + - name: description + value: "{{ description }}" + description: | + Description of the model version + - name: gpu_model + value: "{{ gpu_model }}" + description: | + GPU model and memory + - name: id + value: {{ id }} + description: | + Deprecated: Please use version instead. Unique ID of the version + - name: memory_footprint + value: "{{ memory_footprint }}" + description: | + Model size/memory footprint for inference + - name: number_of_epochs + value: {{ number_of_epochs }} + description: | + Number of epochs this model trained + - name: nvcf_container_configuration + description: | + NVCF container configuration parameters + value: + apiBodyFormat: "{{ apiBodyFormat }}" + containerArgs: "{{ containerArgs }}" + containerEnvironment: + - key: "{{ key }}" + value: "{{ value }}" + containerImage: "{{ containerImage }}" + healthUri: "{{ healthUri }}" + inferencePort: "{{ inferencePort }}" + inferenceUrl: "{{ inferenceUrl }}" + models: + - name: "{{ name }}" + uri: "{{ uri }}" + version: "{{ version }}" + - name: nvcf_deployment_specification + description: | + NVCF deployment specification + value: + gpuCount: {{ gpuCount }} + gpuType: "{{ gpuType }}" + instanceType: "{{ instanceType }}" + maxConcurrency: {{ maxConcurrency }} + - name: other_contents + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: owner_name + value: "{{ owner_name }}" + description: | + Name of the user who owns this version + - name: version_id + value: "{{ version_id }}" + description: | + Unique version id. Please use this instead of 'id' +`} + + + + + +## `UPDATE` examples + + + + +Update model version information in team e.g. upload status + +```sql +UPDATE nvidia.private_registry.model_versions +SET +accuracy_reached = {{ accuracy_reached }}, +batch_size = {{ batch_size }}, +custom_metrics = '{{ custom_metrics }}', +description = '{{ description }}', +gpu_model = '{{ gpu_model }}', +memory_footprint = '{{ memory_footprint }}', +number_of_epochs = {{ number_of_epochs }}, +nvcf_container_configuration = '{{ nvcf_container_configuration }}', +nvcf_deployment_specification = '{{ nvcf_deployment_specification }}', +other_contents = '{{ other_contents }}', +owner_name = '{{ owner_name }}', +status = '{{ status }}' +WHERE +team_name = '{{ team_name }}' --required +AND model_name = '{{ model_name }}' --required +AND version_id = '{{ version_id }}' --required +AND create-zip = {{ create-zip}} +AND set-latest = {{ set-latest}} +RETURNING +model, +model_version, +request_status; +``` + + + +Update model version information in org e.g. upload status + +```sql +UPDATE nvidia.private_registry.model_versions +SET +accuracy_reached = {{ accuracy_reached }}, +batch_size = {{ batch_size }}, +custom_metrics = '{{ custom_metrics }}', +description = '{{ description }}', +gpu_model = '{{ gpu_model }}', +memory_footprint = '{{ memory_footprint }}', +number_of_epochs = {{ number_of_epochs }}, +nvcf_container_configuration = '{{ nvcf_container_configuration }}', +nvcf_deployment_specification = '{{ nvcf_deployment_specification }}', +other_contents = '{{ other_contents }}', +owner_name = '{{ owner_name }}', +status = '{{ status }}' +WHERE +model_name = '{{ model_name }}' --required +AND version_id = '{{ version_id }}' --required +AND create-zip = {{ create-zip}} +AND set-latest = {{ set-latest}} +RETURNING +model, +model_version, +request_status; +``` + + + + +## Lifecycle Methods + +EXEC variables use wire (API) names. + + + + +Stash artifact version information in org during upload paused state + +```sql +EXEC nvidia.private_registry.model_versions.stash +@artifact_name='{{ artifact_name }}' --required, +@version_id='{{ version_id }}' --required +; +``` + + + +Stash artifact version information in team in model version upload paused state + +```sql +EXEC nvidia.private_registry.model_versions.stash_by_team +@team_name='{{ team_name }}' --required, +@artifact_name='{{ artifact_name }}' --required, +@version_id='{{ version_id }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/models/index.md b/website/docs/services/private_registry/models/index.md new file mode 100644 index 0000000..031693d --- /dev/null +++ b/website/docs/services/private_registry/models/index.md @@ -0,0 +1,1583 @@ +--- +title: models +hide_title: false +hide_table_of_contents: false +keywords: + - models + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a models resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the model
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the model belongs to (wire: orgName)
stringName of model's owner (wire: ownerName)
stringName of the team that the model belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringApplication of the model
stringText describing bias in the model
stringorganization that built the repository (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the model
stringText describing explainability for this model
stringFramework used to train this model
booleanindicate if the Model has AI Playground configured (wire: hasPlayground)
booleanIndicates if the model has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if model is user's favorite (wire: isFavourite)
booleanindicate if AI Playground is enabled in the catalog (wire: isPlaygroundEnabled)
booleanDetermines if model is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringGPU model and memory used for the latest version (wire: latestVersionGpuModel)
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model (wire: modelFormat)
array (wire: policyLabels)
stringPrecision this model was trained with
stringText describing the privacy for this model
array (wire: productNames)
object (wire: publicDatasetUsed)
stringorganization that published the repository
stringText for describing the safety and security in the model (wire: safetyAndSecurity)
stringShort description of the model (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
array
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the model
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the model belongs to (wire: orgName)
stringName of model's owner (wire: ownerName)
stringName of the team that the model belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringApplication of the model
stringText describing bias in the model
stringorganization that built the repository (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the model
stringText describing explainability for this model
stringFramework used to train this model
booleanindicate if the Model has AI Playground configured (wire: hasPlayground)
booleanIndicates if the model has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if model is user's favorite (wire: isFavourite)
booleanindicate if AI Playground is enabled in the catalog (wire: isPlaygroundEnabled)
booleanDetermines if model is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringGPU model and memory used for the latest version (wire: latestVersionGpuModel)
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model (wire: modelFormat)
array (wire: policyLabels)
stringPrecision this model was trained with
stringText describing the privacy for this model
array (wire: productNames)
object (wire: publicDatasetUsed)
stringorganization that published the repository
stringText for describing the safety and security in the model (wire: safetyAndSecurity)
stringShort description of the model (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
array
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the model
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the model belongs to (wire: orgName)
stringName of model's owner (wire: ownerName)
stringName of the team that the model belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringApplication of the model
stringText describing bias in the model
stringorganization that built the repository (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the model
stringText describing explainability for this model
stringFramework used to train this model
booleanindicate if the Model has AI Playground configured (wire: hasPlayground)
booleanIndicates if the model has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if model is user's favorite (wire: isFavourite)
booleanindicate if AI Playground is enabled in the catalog (wire: isPlaygroundEnabled)
booleanDetermines if model is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringGPU model and memory used for the latest version (wire: latestVersionGpuModel)
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model (wire: modelFormat)
array (wire: policyLabels)
stringPrecision this model was trained with
stringText describing the privacy for this model
array (wire: productNames)
object (wire: publicDatasetUsed)
stringorganization that published the repository
stringText for describing the safety and security in the model (wire: safetyAndSecurity)
stringShort description of the model (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
array
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the model
stringID of the customer managed encryption key associated with this artifact (wire: encryptionKeyId)
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the model belongs to (wire: orgName)
stringName of model's owner (wire: ownerName)
stringName of the team that the model belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringApplication of the model
stringText describing bias in the model
stringorganization that built the repository (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the model
stringText describing explainability for this model
stringFramework used to train this model
booleanindicate if the Model has AI Playground configured (wire: hasPlayground)
booleanIndicates if the model has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if model is user's favorite (wire: isFavourite)
booleanindicate if AI Playground is enabled in the catalog (wire: isPlaygroundEnabled)
booleanDetermines if model is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringGPU model and memory used for the latest version (wire: latestVersionGpuModel)
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model (wire: modelFormat)
array (wire: policyLabels)
stringPrecision this model was trained with
stringText describing the privacy for this model
array (wire: productNames)
object (wire: publicDatasetUsed)
stringorganization that published the repository
stringText for describing the safety and security in the model (wire: safetyAndSecurity)
stringShort description of the model (wire: shortDescription)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
array
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, model_nameresolve_labels, remove_unresolved_labelsThis operation gets info of a model in the org/team.
model_nameresolve_labels, remove_unresolved_labelsThis operation gets info of a model in the org.
team_nameapp_name, page_size, page_reference, page_number, resolve_labels, remove_unresolved_labelsThis operation lists models the user can access in the org/team.
app_name, page_size, page_reference, page_number, resolve_labels, remove_unresolved_labelsThis operation lists models the user can access in the org.
team_name, framework, name, precisionThis operation creates a model in the org/team.
framework, name, precisionThis operation creates a model in the org.
team_name, model_nameThis operation updates details of a model in the org/team.
model_nameThis operation updates details of a model in the org.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Model name
string (UTF-8)Team name
string (UTF-8)Application name
string (UTF-8)Page number - zero based index
string (UTF-8)[Deprecated] Page reference, Use page-number instead
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +This operation gets info of a model in the org/team. + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +application, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +framework, +has_playground, +has_signed_version, +is_favourite, +is_playground_enabled, +is_public, +is_read_only, +labels, +latest_version_gpu_model, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +policy_labels, +precision, +privacy, +product_names, +public_dataset_used, +publisher, +safety_and_security, +short_description, +updated_date, +versions +FROM nvidia.private_registry.models +WHERE team_name = '{{ team_name }}' -- required +AND model_name = '{{ model_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +This operation gets info of a model in the org. + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +application, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +framework, +has_playground, +has_signed_version, +is_favourite, +is_playground_enabled, +is_public, +is_read_only, +labels, +latest_version_gpu_model, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +policy_labels, +precision, +privacy, +product_names, +public_dataset_used, +publisher, +safety_and_security, +short_description, +updated_date, +versions +FROM nvidia.private_registry.models +WHERE model_name = '{{ model_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +This operation lists models the user can access in the org/team. + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +application, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +framework, +has_playground, +has_signed_version, +is_favourite, +is_playground_enabled, +is_public, +is_read_only, +labels, +latest_version_gpu_model, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +policy_labels, +precision, +privacy, +product_names, +public_dataset_used, +publisher, +safety_and_security, +short_description, +updated_date, +versions +FROM nvidia.private_registry.models +WHERE team_name = '{{ team_name }}' -- required +AND app_name = '{{ app_name }}' +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +This operation lists models the user can access in the org. + +```sql +SELECT +name, +encryption_key_id, +latest_version_id, +display_name, +org_name, +owner_name, +team_name, +access_type, +application, +bias, +built_by, +can_guest_download, +created_date, +description, +explainability, +framework, +has_playground, +has_signed_version, +is_favourite, +is_playground_enabled, +is_public, +is_read_only, +labels, +latest_version_gpu_model, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +policy_labels, +precision, +privacy, +product_names, +public_dataset_used, +publisher, +safety_and_security, +short_description, +updated_date, +versions +FROM nvidia.private_registry.models +WHERE app_name = '{{ app_name }}' +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + + +## `INSERT` examples + + + + +This operation creates a model in the org/team. + +```sql +INSERT INTO nvidia.private_registry.models ( +application, +bias, +built_by, +description, +display_name, +encryption_key, +explainability, +framework, +has_playground, +is_playground_enabled, +labels, +labels_v2, +license_terms, +logo, +model_format, +name, +owner_name, +precision, +privacy, +public_dataset_used, +publisher, +safety_and_security, +short_description, +team_name +) +SELECT +'{{ application }}', +'{{ bias }}', +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ encryption_key }}', +'{{ explainability }}', +'{{ framework }}' /* required */, +{{ has_playground }}, +{{ is_playground_enabled }}, +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ model_format }}', +'{{ name }}' /* required */, +'{{ owner_name }}', +'{{ precision }}' /* required */, +'{{ privacy }}', +'{{ public_dataset_used }}', +'{{ publisher }}', +'{{ safety_and_security }}', +'{{ short_description }}', +'{{ team_name }}' +RETURNING +model, +request_status +; +``` + + + +This operation creates a model in the org. + +```sql +INSERT INTO nvidia.private_registry.models ( +application, +bias, +built_by, +description, +display_name, +encryption_key, +explainability, +framework, +has_playground, +is_playground_enabled, +labels, +labels_v2, +license_terms, +logo, +model_format, +name, +owner_name, +precision, +privacy, +public_dataset_used, +publisher, +safety_and_security, +short_description +) +SELECT +'{{ application }}', +'{{ bias }}', +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ encryption_key }}', +'{{ explainability }}', +'{{ framework }}' /* required */, +{{ has_playground }}, +{{ is_playground_enabled }}, +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ model_format }}', +'{{ name }}' /* required */, +'{{ owner_name }}', +'{{ precision }}' /* required */, +'{{ privacy }}', +'{{ public_dataset_used }}', +'{{ publisher }}', +'{{ safety_and_security }}', +'{{ short_description }}' +RETURNING +model, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: models + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the models resource. + - name: application + value: "{{ application }}" + description: | + Application of the model + - name: bias + value: "{{ bias }}" + description: | + Text describing bias in the model + - name: built_by + value: "{{ built_by }}" + description: | + organization that built the repository + - name: description + value: "{{ description }}" + description: | + Description of the model + - name: display_name + value: "{{ display_name }}" + description: | + Display name + - name: encryption_key + description: | + Customer Managed Key shard configuration for the model + value: + description: "{{ description }}" + encryptionKeyId: "{{ encryptionKeyId }}" + useExistingKey: {{ useExistingKey }} + - name: explainability + value: "{{ explainability }}" + description: | + Text describing explainability for this model + - name: framework + value: "{{ framework }}" + description: | + Framework used to train this model + - name: has_playground + value: {{ has_playground }} + description: | + indicate if the Model has AI Playground configured + - name: is_playground_enabled + value: {{ is_playground_enabled }} + description: | + indicate if AI Playground is enabled in the catalog + - name: labels + value: + - "{{ labels }}" + - name: labels_v2 + value: + - "{{ labels_v2 }}" + - name: license_terms + value: + - configuredLicenseTerms: + download: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + hosting: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + governingTerms: "{{ governingTerms }}" + licenseId: "{{ licenseId }}" + licenseVersion: "{{ licenseVersion }}" + needsAcceptance: {{ needsAcceptance }} + - name: logo + value: "{{ logo }}" + description: | + URL for the logo image + - name: model_format + value: "{{ model_format }}" + description: | + Format of the model + - name: name + value: "{{ name }}" + description: | + Unique name of the model + - name: owner_name + value: "{{ owner_name }}" + description: | + Name of the user who owns this model + - name: precision + value: "{{ precision }}" + description: | + Precision this model was trained with + - name: privacy + value: "{{ privacy }}" + description: | + Text describing the privacy for this model + - name: public_dataset_used + value: + license: "{{ license }}" + link: "{{ link }}" + name: "{{ name }}" + - name: publisher + value: "{{ publisher }}" + description: | + organization that published the repository + - name: safety_and_security + value: "{{ safety_and_security }}" + description: | + Text for describing the safety and security in the model + - name: short_description + value: "{{ short_description }}" + description: | + Short description of the model +`} + + + + + +## `UPDATE` examples + + + + +This operation updates details of a model in the org/team. + +```sql +UPDATE nvidia.private_registry.models +SET +application = '{{ application }}', +bias = '{{ bias }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +explainability = '{{ explainability }}', +framework = '{{ framework }}', +has_playground = {{ has_playground }}, +is_playground_enabled = {{ is_playground_enabled }}, +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +model_format = '{{ model_format }}', +owner_name = '{{ owner_name }}', +precision = '{{ precision }}', +privacy = '{{ privacy }}', +public_dataset_used = '{{ public_dataset_used }}', +publisher = '{{ publisher }}', +safety_and_security = '{{ safety_and_security }}', +short_description = '{{ short_description }}' +WHERE +team_name = '{{ team_name }}' --required +AND model_name = '{{ model_name }}' --required +RETURNING +model, +request_status; +``` + + + +This operation updates details of a model in the org. + +```sql +UPDATE nvidia.private_registry.models +SET +application = '{{ application }}', +bias = '{{ bias }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +explainability = '{{ explainability }}', +framework = '{{ framework }}', +has_playground = {{ has_playground }}, +is_playground_enabled = {{ is_playground_enabled }}, +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +model_format = '{{ model_format }}', +owner_name = '{{ owner_name }}', +precision = '{{ precision }}', +privacy = '{{ privacy }}', +public_dataset_used = '{{ public_dataset_used }}', +publisher = '{{ publisher }}', +safety_and_security = '{{ safety_and_security }}', +short_description = '{{ short_description }}' +WHERE +model_name = '{{ model_name }}' --required +RETURNING +model, +request_status; +``` + + diff --git a/website/docs/services/private_registry/recipe_files/index.md b/website/docs/services/private_registry/recipe_files/index.md new file mode 100644 index 0000000..2851c75 --- /dev/null +++ b/website/docs/services/private_registry/recipe_files/index.md @@ -0,0 +1,250 @@ +--- +title: recipe_files +hide_title: false +hide_table_of_contents: false +keywords: + - recipe_files + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a recipe_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, recipe_name, version_idpage_size, page_reference, page_numberList recipe files in team
recipe_name, version_idpage_size, page_reference, page_numberList recipe files in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List recipe files in team + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.private_registry.recipe_files +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List recipe files in org + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.private_registry.recipe_files +WHERE recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/private_registry/recipe_versions/index.md b/website/docs/services/private_registry/recipe_versions/index.md new file mode 100644 index 0000000..075b817 --- /dev/null +++ b/website/docs/services/private_registry/recipe_versions/index.md @@ -0,0 +1,1154 @@ +--- +title: recipe_versions +hide_title: false +hide_table_of_contents: false +keywords: + - recipe_versions + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a recipe_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, recipe_name, version_idGet recipe version in team
recipe_name, version_idGet recipe version in org
team_name, recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in team
recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in org
team_name, recipe_nameCreate recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https:​//semver.org
recipe_nameCreate recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https:​//semver.org
team_name, recipe_name, version_idcreate_zip, set_latestUpdate recipe version information in team e.g. upload status
recipe_name, version_idcreate_zip, set_latestUpdate recipe version information in org e.g. upload status
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
booleanCreate zip of version content
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
booleanSet version to latest
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get recipe version in team + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.recipe_versions +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get recipe version in org + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.recipe_versions +WHERE recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List recipe versions in team + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.recipe_versions +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + +List recipe versions in org + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.recipe_versions +WHERE recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + + +## `INSERT` examples + + + + +Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + +```sql +INSERT INTO nvidia.private_registry.recipe_versions ( +accuracy_reached, +batch_size, +custom_metrics, +description, +gpu_model, +id, +memory_footprint, +number_of_epochs, +other_contents, +performance, +quick_start_guide, +release_notes, +setup, +version_id, +team_name, +recipe_name +) +SELECT +{{ accuracy_reached }}, +{{ batch_size }}, +'{{ custom_metrics }}', +'{{ description }}', +'{{ gpu_model }}', +{{ id }}, +'{{ memory_footprint }}', +{{ number_of_epochs }}, +'{{ other_contents }}', +'{{ performance }}', +'{{ quick_start_guide }}', +'{{ release_notes }}', +'{{ setup }}', +'{{ version_id }}', +'{{ team_name }}', +'{{ recipe_name }}' +RETURNING +recipe, +recipe_version, +request_status +; +``` + + + +Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + +```sql +INSERT INTO nvidia.private_registry.recipe_versions ( +accuracy_reached, +batch_size, +custom_metrics, +description, +gpu_model, +id, +memory_footprint, +number_of_epochs, +other_contents, +performance, +quick_start_guide, +release_notes, +setup, +version_id, +recipe_name +) +SELECT +{{ accuracy_reached }}, +{{ batch_size }}, +'{{ custom_metrics }}', +'{{ description }}', +'{{ gpu_model }}', +{{ id }}, +'{{ memory_footprint }}', +{{ number_of_epochs }}, +'{{ other_contents }}', +'{{ performance }}', +'{{ quick_start_guide }}', +'{{ release_notes }}', +'{{ setup }}', +'{{ version_id }}', +'{{ recipe_name }}' +RETURNING +recipe, +recipe_version, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: recipe_versions + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the recipe_versions resource. + - name: recipe_name + value: "{{ recipe_name }}" + description: Required parameter for the recipe_versions resource. + - name: accuracy_reached + value: {{ accuracy_reached }} + description: | + Accuracy this recipe reached + - name: batch_size + value: {{ batch_size }} + description: | + Batch size this recipe was trained with + - name: custom_metrics + value: + - attributes: "{{ attributes }}" + name: "{{ name }}" + - name: description + value: "{{ description }}" + description: | + Description of the recipe version + - name: gpu_model + value: "{{ gpu_model }}" + description: | + GPU model and memory + - name: id + value: {{ id }} + description: | + Deprecated: Please use version instead. Unique ID of the version + - name: memory_footprint + value: "{{ memory_footprint }}" + description: | + Recipe size/memory footprint for inference + - name: number_of_epochs + value: {{ number_of_epochs }} + description: | + Number of epochs this recipe trained + - name: other_contents + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: performance + value: "{{ performance }}" + description: | + Text describing performance of the recipe results + - name: quick_start_guide + value: "{{ quick_start_guide }}" + description: | + Text with a guide to getting started + - name: release_notes + value: "{{ release_notes }}" + description: | + Text describing this release + - name: setup + value: "{{ setup }}" + description: | + Text describing recipe setup + - name: version_id + value: "{{ version_id }}" + description: | + Unique version id. Please use this instead of 'id' +`} + + + + + +## `UPDATE` examples + + + + +Update recipe version information in team e.g. upload status + +```sql +UPDATE nvidia.private_registry.recipe_versions +SET +accuracy_reached = {{ accuracy_reached }}, +batch_size = {{ batch_size }}, +custom_metrics = '{{ custom_metrics }}', +description = '{{ description }}', +gpu_model = '{{ gpu_model }}', +memory_footprint = '{{ memory_footprint }}', +number_of_epochs = {{ number_of_epochs }}, +other_contents = '{{ other_contents }}', +performance = '{{ performance }}', +quick_start_guide = '{{ quick_start_guide }}', +release_notes = '{{ release_notes }}', +setup = '{{ setup }}', +status = '{{ status }}' +WHERE +team_name = '{{ team_name }}' --required +AND recipe_name = '{{ recipe_name }}' --required +AND version_id = '{{ version_id }}' --required +AND create-zip = {{ create-zip}} +AND set-latest = {{ set-latest}} +RETURNING +recipe, +recipe_version, +request_status; +``` + + + +Update recipe version information in org e.g. upload status + +```sql +UPDATE nvidia.private_registry.recipe_versions +SET +accuracy_reached = {{ accuracy_reached }}, +batch_size = {{ batch_size }}, +custom_metrics = '{{ custom_metrics }}', +description = '{{ description }}', +gpu_model = '{{ gpu_model }}', +memory_footprint = '{{ memory_footprint }}', +number_of_epochs = {{ number_of_epochs }}, +other_contents = '{{ other_contents }}', +performance = '{{ performance }}', +quick_start_guide = '{{ quick_start_guide }}', +release_notes = '{{ release_notes }}', +setup = '{{ setup }}', +status = '{{ status }}' +WHERE +recipe_name = '{{ recipe_name }}' --required +AND version_id = '{{ version_id }}' --required +AND create-zip = {{ create-zip}} +AND set-latest = {{ set-latest}} +RETURNING +recipe, +recipe_version, +request_status; +``` + + diff --git a/website/docs/services/private_registry/recipes/index.md b/website/docs/services/private_registry/recipes/index.md new file mode 100644 index 0000000..07abd7e --- /dev/null +++ b/website/docs/services/private_registry/recipes/index.md @@ -0,0 +1,1414 @@ +--- +title: recipes +hide_title: false +hide_table_of_contents: false +keywords: + - recipes + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a recipes resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, recipe_nameresolve_labels, remove_unresolved_labelsGet recipe details in team
recipe_nameresolve_labels, remove_unresolved_labelsGet recipe in org
team_nameapp_name, page_size, page_number, resolve_labels, remove_unresolved_labelsList recipes the user can access in the specified org and team
app_name, page_size, page_number, resolve_labels, remove_unresolved_labelsList recipes the user can access in the specified org
team_name, application, model_format, name, precision, public_dataset_used, short_description, training_frameworkCreate recipe in team
application, model_format, name, precision, public_dataset_used, short_description, training_frameworkCreate recipe in org
team_name, recipe_nameUpdate recipe details in team
recipe_nameUpdate recipe details in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Application name
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get recipe details in team + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.recipes +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get recipe in org + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.recipes +WHERE recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List recipes the user can access in the specified org and team + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.recipes +WHERE team_name = '{{ team_name }}' -- required +AND app_name = '{{ app_name }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List recipes the user can access in the specified org + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.recipes +WHERE app_name = '{{ app_name }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + + +## `INSERT` examples + + + + +Create recipe in team + +```sql +INSERT INTO nvidia.private_registry.recipes ( +advanced, +application, +built_by, +description, +display_name, +labels, +labels_v2, +license_terms, +logo, +model_format, +name, +performance, +precision, +public_dataset_used, +publisher, +quick_start_guide, +setup, +short_description, +training_framework, +team_name +) +SELECT +'{{ advanced }}', +'{{ application }}' /* required */, +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ model_format }}' /* required */, +'{{ name }}' /* required */, +'{{ performance }}', +'{{ precision }}' /* required */, +'{{ public_dataset_used }}' /* required */, +'{{ publisher }}', +'{{ quick_start_guide }}', +'{{ setup }}', +'{{ short_description }}' /* required */, +'{{ training_framework }}' /* required */, +'{{ team_name }}' +RETURNING +recipe, +request_status +; +``` + + + +Create recipe in org + +```sql +INSERT INTO nvidia.private_registry.recipes ( +advanced, +application, +built_by, +description, +display_name, +labels, +labels_v2, +license_terms, +logo, +model_format, +name, +performance, +precision, +public_dataset_used, +publisher, +quick_start_guide, +setup, +short_description, +training_framework +) +SELECT +'{{ advanced }}', +'{{ application }}' /* required */, +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ model_format }}' /* required */, +'{{ name }}' /* required */, +'{{ performance }}', +'{{ precision }}' /* required */, +'{{ public_dataset_used }}' /* required */, +'{{ publisher }}', +'{{ quick_start_guide }}', +'{{ setup }}', +'{{ short_description }}' /* required */, +'{{ training_framework }}' /* required */ +RETURNING +recipe, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: recipes + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the recipes resource. + - name: advanced + value: "{{ advanced }}" + description: | + Text for describing advanced information + - name: application + value: "{{ application }}" + valid_values: ['CLASSIFICATION', 'OBJECT_DETECTION', 'SEGMENTATION', 'TRANSLATION', 'TEXT_TO_SPEECH', 'RECOMMENDER', 'SENTIMENT', 'NLP', 'KUBEFLOW_PIPELINE', 'OTHER', 'SPEAKER_VERIFICATION', 'PUNCTUATION_AND_CAPITALIZATION', 'DIALOG_STATE_TRACKING', 'SPEAKER_DIARIZATION', 'SPEAKER_RECOGNITION', 'SPEECH_SYNTHESIS', 'VOICE_ACTIVITY_DETECTION', 'SPEECH_RECOGNITION', 'LANGUAGE_MODELING', 'NAMED_ENTITY_RECOGNITION', 'TEXT_CLASSIFICATION', 'TEXT_PROCESSING', 'QUESTION_ANSWERING', 'CONTENT_GENERATION'] + - name: built_by + value: "{{ built_by }}" + description: | + organization that built the recipe + - name: description + value: "{{ description }}" + description: | + Description of the recipe + - name: display_name + value: "{{ display_name }}" + description: | + Display name + - name: labels + value: + - "{{ labels }}" + - name: labels_v2 + value: + - "{{ labels_v2 }}" + - name: license_terms + value: + - configuredLicenseTerms: + download: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + hosting: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + governingTerms: "{{ governingTerms }}" + licenseId: "{{ licenseId }}" + licenseVersion: "{{ licenseVersion }}" + needsAcceptance: {{ needsAcceptance }} + - name: logo + value: "{{ logo }}" + description: | + URL for the logo image + - name: model_format + value: "{{ model_format }}" + description: | + Format of the model this recipe produces + - name: name + value: "{{ name }}" + description: | + Unique name of the recipe + - name: performance + value: "{{ performance }}" + description: | + Text describing performance of the recipe results + - name: precision + value: "{{ precision }}" + valid_values: ['FP16', 'FP32', 'INT8', 'FPBOTH', 'OTHER', 'ALL'] + - name: public_dataset_used + value: + license: "{{ license }}" + link: "{{ link }}" + name: "{{ name }}" + - name: publisher + value: "{{ publisher }}" + description: | + organization that published the recipe + - name: quick_start_guide + value: "{{ quick_start_guide }}" + description: | + Text with a guide to getting started + - name: setup + value: "{{ setup }}" + description: | + Text describing recipe setup + - name: short_description + value: "{{ short_description }}" + description: | + Short description of the recipe + - name: training_framework + value: "{{ training_framework }}" + valid_values: ['TensorFlow', 'Caffe2', 'CNTK', 'Torch', 'PyTorch', 'MXNet', 'Keras', 'Other', 'TransferLearningToolkit', 'TensorFlow2'] +`} + + + + + +## `UPDATE` examples + + + + +Update recipe details in team + +```sql +UPDATE nvidia.private_registry.recipes +SET +advanced = '{{ advanced }}', +application = '{{ application }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +model_format = '{{ model_format }}', +performance = '{{ performance }}', +precision = '{{ precision }}', +public_dataset_used = '{{ public_dataset_used }}', +publisher = '{{ publisher }}', +quick_start_guide = '{{ quick_start_guide }}', +related_models = '{{ related_models }}', +setup = '{{ setup }}', +short_description = '{{ short_description }}', +training_framework = '{{ training_framework }}' +WHERE +team_name = '{{ team_name }}' --required +AND recipe_name = '{{ recipe_name }}' --required +RETURNING +recipe, +request_status; +``` + + + +Update recipe details in org + +```sql +UPDATE nvidia.private_registry.recipes +SET +advanced = '{{ advanced }}', +application = '{{ application }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +model_format = '{{ model_format }}', +performance = '{{ performance }}', +precision = '{{ precision }}', +public_dataset_used = '{{ public_dataset_used }}', +publisher = '{{ publisher }}', +quick_start_guide = '{{ quick_start_guide }}', +related_models = '{{ related_models }}', +setup = '{{ setup }}', +short_description = '{{ short_description }}', +training_framework = '{{ training_framework }}' +WHERE +recipe_name = '{{ recipe_name }}' --required +RETURNING +recipe, +request_status; +``` + + diff --git a/website/docs/services/private_registry/repository_associated_models/index.md b/website/docs/services/private_registry/repository_associated_models/index.md new file mode 100644 index 0000000..4e44d5f --- /dev/null +++ b/website/docs/services/private_registry/repository_associated_models/index.md @@ -0,0 +1,865 @@ +--- +title: repository_associated_models +hide_title: false +hide_table_of_contents: false +keywords: + - repository_associated_models + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a repository_associated_models resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
stringName of the user who owns this version (wire: ownerName)
number (float)Accuracy this model reached (wire: accuracyReached)
integer (int64)Batch size this model was trained with (wire: batchSize)
stringId of the user who created this model (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the model version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringModel size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this model trained (wire: numberOfEpochs)
objectNVCF container configuration parameters (wire: nvcfContainerConfiguration)
objectNVCF deployment specification (wire: nvcfDeploymentSpecification)
array (wire: otherContents)
array
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the model in bytes (wire: totalSizeInBytes)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, container_name, container_tagpage_size, page_number, sort_orderList associated model versions by container
container_name, container_tagpage_size, page_number, sort_orderList associated model versions by container
team_name, container_namepage_size, page_number, sort_orderList associated model versions by container
container_namepage_size, page_number, sort_orderList associated model versions by container
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Container name
string (UTF-8)Container tag
string (UTF-8)Team name
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +List associated model versions by container + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.repository_associated_models +WHERE team_name = '{{ team_name }}' -- required +AND container_name = '{{ container_name }}' -- required +AND container_tag = '{{ container_tag }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + + +List associated model versions by container + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.repository_associated_models +WHERE container_name = '{{ container_name }}' -- required +AND container_tag = '{{ container_tag }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + + +List associated model versions by container + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.repository_associated_models +WHERE team_name = '{{ team_name }}' -- required +AND container_name = '{{ container_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + + +List associated model versions by container + +```sql +SELECT +id, +version_id, +owner_name, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +nvcf_container_configuration, +nvcf_deployment_specification, +other_contents, +policy, +release_type, +status, +storage_version, +total_file_count, +total_size_in_bytes, +updated_date +FROM nvidia.private_registry.repository_associated_models +WHERE container_name = '{{ container_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +; +``` + + diff --git a/website/docs/services/private_registry/resource_files/index.md b/website/docs/services/private_registry/resource_files/index.md new file mode 100644 index 0000000..0d4fbe5 --- /dev/null +++ b/website/docs/services/private_registry/resource_files/index.md @@ -0,0 +1,250 @@ +--- +title: resource_files +hide_title: false +hide_table_of_contents: false +keywords: + - resource_files + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a resource_files resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the file
stringRelative file path from the root of the recipe
stringBase64 encoded sha256 hash of the artifact file
integer (int64)Size of the file in bytes (wire: sizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, recipe_name, version_idpage_size, page_reference, page_numberList recipe files in team
recipe_name, version_idpage_size, page_reference, page_numberList recipe files in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
string (UTF-8)Page number - zero based index
string (UTF-8)Page reference
string (UTF-8)Page size
+ +## `SELECT` examples + + + + +List recipe files in team + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.private_registry.resource_files +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + + +List recipe files in org + +```sql +SELECT +created_date, +description, +path, +sha256_base64, +size_in_bytes +FROM nvidia.private_registry.resource_files +WHERE recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +AND page_size = '{{ page_size }}' +AND page_reference = '{{ page_reference }}' +AND page_number = '{{ page_number }}' +; +``` + + diff --git a/website/docs/services/private_registry/resource_versions/index.md b/website/docs/services/private_registry/resource_versions/index.md new file mode 100644 index 0000000..24c495a --- /dev/null +++ b/website/docs/services/private_registry/resource_versions/index.md @@ -0,0 +1,1154 @@ +--- +title: resource_versions +hide_title: false +hide_table_of_contents: false +keywords: + - resource_versions + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a resource_versions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Deprecated: Please use versionId instead. Unique ID of the version
stringUnique version id. Please use this instead of 'id' (wire: versionId)
number (float)Accuracy this recipe reached (wire: accuracyReached)
integer (int64)Batch size this recipe was trained with (wire: batchSize)
stringId of the user who created this recipe (wire: createdByUser)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
array (wire: customMetrics)
stringDescription of the recipe version
stringGPU model and memory (wire: gpuModel)
booleanIndicates if the version is signed (wire: isSigned)
stringScan date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: malwareScanDate)
stringMalware scan status (NOT_SCANNED, IN_PROGRESS, CLEAN, SUSPICIOUS, FAILED, MALICIOUS) (wire: malwareScanStatus)
stringrecipe size/memory footprint for inference (wire: memoryFootprint)
integer (int64)Number of epochs this recipe trained (wire: numberOfEpochs)
array (wire: otherContents)
stringText describing performance of the recipe results
array
stringText with a guide to getting started (wire: quickStartGuide)
stringText describing this release (wire: releaseNotes)
stringRelease type enum for the artifact version in the product lifecycle. (BETA, GA, EA, FEATURE, PRODUCTION, LTSB) (wire: releaseType)
stringText describing recipe setup
stringVersion status (UPLOAD_PENDING, UPLOAD_COMPLETE)
stringThe storage version i.e. the format the file and their contents are persisted in in object store. Possible values include V1 - for legacy artifact versions with files, V2 - for new artifact versions with blob registry, `` - for artifact versions without any files. (wire: storageVersion)
integer (int64)Total file count (wire: totalFileCount)
integer (int64)Total size of the recipe in bytes (wire: totalSizeInBytes)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, recipe_name, version_idGet recipe version in team
recipe_name, version_idGet recipe version in org
team_name, recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in team
recipe_namepage_size, page_number, sort_order, release_typeList recipe versions in org
team_name, recipe_nameCreate recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https:​//semver.org
recipe_nameCreate recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https:​//semver.org
team_name, recipe_name, version_idcreate_zip, set_latestUpdate recipe version information in team e.g. upload status
recipe_name, version_idcreate_zip, set_latestUpdate recipe version information in org e.g. upload status
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Version ID
booleanCreate zip of version content
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
string (UTF-8)Release Type
booleanSet version to latest
string (UTF-8)Sort order
+ +## `SELECT` examples + + + + +Get recipe version in team + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.resource_versions +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +Get recipe version in org + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.resource_versions +WHERE recipe_name = '{{ recipe_name }}' -- required +AND version_id = '{{ version_id }}' -- required +; +``` + + + +List recipe versions in team + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.resource_versions +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + +List recipe versions in org + +```sql +SELECT +id, +version_id, +accuracy_reached, +batch_size, +created_by_user, +created_date, +custom_metrics, +description, +gpu_model, +is_signed, +malware_scan_date, +malware_scan_status, +memory_footprint, +number_of_epochs, +other_contents, +performance, +policy, +quick_start_guide, +release_notes, +release_type, +setup, +status, +storage_version, +total_file_count, +total_size_in_bytes +FROM nvidia.private_registry.resource_versions +WHERE recipe_name = '{{ recipe_name }}' -- required +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND sort_order = '{{ sort_order }}' +AND release_type = '{{ release_type }}' +; +``` + + + + +## `INSERT` examples + + + + +Create recipe version in team. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + +```sql +INSERT INTO nvidia.private_registry.resource_versions ( +accuracy_reached, +batch_size, +custom_metrics, +description, +gpu_model, +id, +memory_footprint, +number_of_epochs, +other_contents, +performance, +quick_start_guide, +release_notes, +setup, +version_id, +team_name, +recipe_name +) +SELECT +{{ accuracy_reached }}, +{{ batch_size }}, +'{{ custom_metrics }}', +'{{ description }}', +'{{ gpu_model }}', +{{ id }}, +'{{ memory_footprint }}', +{{ number_of_epochs }}, +'{{ other_contents }}', +'{{ performance }}', +'{{ quick_start_guide }}', +'{{ release_notes }}', +'{{ setup }}', +'{{ version_id }}', +'{{ team_name }}', +'{{ recipe_name }}' +RETURNING +recipe, +recipe_version, +request_status +; +``` + + + +Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org + +```sql +INSERT INTO nvidia.private_registry.resource_versions ( +accuracy_reached, +batch_size, +custom_metrics, +description, +gpu_model, +id, +memory_footprint, +number_of_epochs, +other_contents, +performance, +quick_start_guide, +release_notes, +setup, +version_id, +recipe_name +) +SELECT +{{ accuracy_reached }}, +{{ batch_size }}, +'{{ custom_metrics }}', +'{{ description }}', +'{{ gpu_model }}', +{{ id }}, +'{{ memory_footprint }}', +{{ number_of_epochs }}, +'{{ other_contents }}', +'{{ performance }}', +'{{ quick_start_guide }}', +'{{ release_notes }}', +'{{ setup }}', +'{{ version_id }}', +'{{ recipe_name }}' +RETURNING +recipe, +recipe_version, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: resource_versions + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the resource_versions resource. + - name: recipe_name + value: "{{ recipe_name }}" + description: Required parameter for the resource_versions resource. + - name: accuracy_reached + value: {{ accuracy_reached }} + description: | + Accuracy this recipe reached + - name: batch_size + value: {{ batch_size }} + description: | + Batch size this recipe was trained with + - name: custom_metrics + value: + - attributes: "{{ attributes }}" + name: "{{ name }}" + - name: description + value: "{{ description }}" + description: | + Description of the recipe version + - name: gpu_model + value: "{{ gpu_model }}" + description: | + GPU model and memory + - name: id + value: {{ id }} + description: | + Deprecated: Please use version instead. Unique ID of the version + - name: memory_footprint + value: "{{ memory_footprint }}" + description: | + Recipe size/memory footprint for inference + - name: number_of_epochs + value: {{ number_of_epochs }} + description: | + Number of epochs this recipe trained + - name: other_contents + value: + - key: "{{ key }}" + value: "{{ value }}" + - name: performance + value: "{{ performance }}" + description: | + Text describing performance of the recipe results + - name: quick_start_guide + value: "{{ quick_start_guide }}" + description: | + Text with a guide to getting started + - name: release_notes + value: "{{ release_notes }}" + description: | + Text describing this release + - name: setup + value: "{{ setup }}" + description: | + Text describing recipe setup + - name: version_id + value: "{{ version_id }}" + description: | + Unique version id. Please use this instead of 'id' +`} + + + + + +## `UPDATE` examples + + + + +Update recipe version information in team e.g. upload status + +```sql +UPDATE nvidia.private_registry.resource_versions +SET +accuracy_reached = {{ accuracy_reached }}, +batch_size = {{ batch_size }}, +custom_metrics = '{{ custom_metrics }}', +description = '{{ description }}', +gpu_model = '{{ gpu_model }}', +memory_footprint = '{{ memory_footprint }}', +number_of_epochs = {{ number_of_epochs }}, +other_contents = '{{ other_contents }}', +performance = '{{ performance }}', +quick_start_guide = '{{ quick_start_guide }}', +release_notes = '{{ release_notes }}', +setup = '{{ setup }}', +status = '{{ status }}' +WHERE +team_name = '{{ team_name }}' --required +AND recipe_name = '{{ recipe_name }}' --required +AND version_id = '{{ version_id }}' --required +AND create-zip = {{ create-zip}} +AND set-latest = {{ set-latest}} +RETURNING +recipe, +recipe_version, +request_status; +``` + + + +Update recipe version information in org e.g. upload status + +```sql +UPDATE nvidia.private_registry.resource_versions +SET +accuracy_reached = {{ accuracy_reached }}, +batch_size = {{ batch_size }}, +custom_metrics = '{{ custom_metrics }}', +description = '{{ description }}', +gpu_model = '{{ gpu_model }}', +memory_footprint = '{{ memory_footprint }}', +number_of_epochs = {{ number_of_epochs }}, +other_contents = '{{ other_contents }}', +performance = '{{ performance }}', +quick_start_guide = '{{ quick_start_guide }}', +release_notes = '{{ release_notes }}', +setup = '{{ setup }}', +status = '{{ status }}' +WHERE +recipe_name = '{{ recipe_name }}' --required +AND version_id = '{{ version_id }}' --required +AND create-zip = {{ create-zip}} +AND set-latest = {{ set-latest}} +RETURNING +recipe, +recipe_version, +request_status; +``` + + diff --git a/website/docs/services/private_registry/resources/index.md b/website/docs/services/private_registry/resources/index.md new file mode 100644 index 0000000..71aa94b --- /dev/null +++ b/website/docs/services/private_registry/resources/index.md @@ -0,0 +1,1414 @@ +--- +title: resources +hide_title: false +hide_table_of_contents: false +keywords: + - resources + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a resources resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringUnique name of the recipe
integer (int64)Deprecated: Please use latestVersionIdStr instead. ID of the latest version (wire: latestVersionId)
stringDisplay name (wire: displayName)
stringName of the org that the recipe belongs to (wire: orgName)
stringName of the team that the recipe belongs to (wire: teamName)
string (LISTED, EXCLUSIVE, NOT_LISTED) (wire: accessType)
stringText for describing advanced information
string (CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER, SPEAKER_VERIFICATION, PUNCTUATION_AND_CAPITALIZATION, DIALOG_STATE_TRACKING, SPEAKER_DIARIZATION, SPEAKER_RECOGNITION, SPEECH_SYNTHESIS, VOICE_ACTIVITY_DETECTION, SPEECH_RECOGNITION, LANGUAGE_MODELING, NAMED_ENTITY_RECOGNITION, TEXT_CLASSIFICATION, TEXT_PROCESSING, QUESTION_ANSWERING, CONTENT_GENERATION)
stringOrganization that built the recipe (wire: builtBy)
booleanIndicates if a guest user can download (wire: canGuestDownload)
stringCreation date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: createdDate)
stringDescription of the recipe
booleanIndicates if the recipe has any signed versions (wire: hasSignedVersion)
booleanFlag indicating if recipe is user's favorite (wire: isFavourite)
booleanDetermines if this recipe is publicly accessible (wire: isPublic)
booleanindicate if current user has read only permissions (deprecated) (wire: isReadOnly)
array
stringID of the latest version (wire: latestVersionIdStr)
integer (int64)Size of the latest version in bytes (wire: latestVersionSizeInBytes)
array (wire: licenseTerms)
stringURL for the logo image
stringFormat of the model this recipe produces (wire: modelFormat)
stringText describing performance of the recipe results
array (wire: policyLabels)
string (FP16, FP32, INT8, FPBOTH, OTHER, ALL)
array (wire: productNames)
object (wire: publicDatasetUsed)
stringOrganization that published this recipe
stringText with a guide to getting started (wire: quickStartGuide)
array (wire: relatedModels)
stringText describing recipe setup
stringShort description of the recipe (wire: shortDescription)
string (TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other, TransferLearningToolkit, TensorFlow2) (wire: trainingFramework)
stringUpdated date in ISO-8601 format (pattern: <code>\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+Z</code>) (wire: updatedDate)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team_name, recipe_nameresolve_labels, remove_unresolved_labelsGet recipe details in team
recipe_nameresolve_labels, remove_unresolved_labelsGet recipe in org
team_nameapp_name, page_size, page_number, resolve_labels, remove_unresolved_labelsList recipes the user can access in the specified org and team
app_name, page_size, page_number, resolve_labels, remove_unresolved_labelsList recipes the user can access in the specified org
team_name, application, model_format, name, precision, public_dataset_used, short_description, training_frameworkCreate recipe in team
application, model_format, name, precision, public_dataset_used, short_description, training_frameworkCreate recipe in org
team_name, recipe_nameUpdate recipe details in team
recipe_nameUpdate recipe details in org
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Recipe name
string (UTF-8)Team name
string (UTF-8)Application name
string (UTF-8)Page number - zero based index
string (UTF-8)Page size
booleanRemove unresolved labels
booleanResolve labels
+ +## `SELECT` examples + + + + +Get recipe details in team + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.resources +WHERE team_name = '{{ team_name }}' -- required +AND recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +Get recipe in org + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.resources +WHERE recipe_name = '{{ recipe_name }}' -- required +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List recipes the user can access in the specified org and team + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.resources +WHERE team_name = '{{ team_name }}' -- required +AND app_name = '{{ app_name }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + +List recipes the user can access in the specified org + +```sql +SELECT +name, +latest_version_id, +display_name, +org_name, +team_name, +access_type, +advanced, +application, +built_by, +can_guest_download, +created_date, +description, +has_signed_version, +is_favourite, +is_public, +is_read_only, +labels, +latest_version_id_str, +latest_version_size_in_bytes, +license_terms, +logo, +model_format, +performance, +policy_labels, +precision, +product_names, +public_dataset_used, +publisher, +quick_start_guide, +related_models, +setup, +short_description, +training_framework, +updated_date +FROM nvidia.private_registry.resources +WHERE app_name = '{{ app_name }}' +AND page_size = '{{ page_size }}' +AND page_number = '{{ page_number }}' +AND resolve_labels = '{{ resolve_labels }}' +AND remove_unresolved_labels = '{{ remove_unresolved_labels }}' +; +``` + + + + +## `INSERT` examples + + + + +Create recipe in team + +```sql +INSERT INTO nvidia.private_registry.resources ( +advanced, +application, +built_by, +description, +display_name, +labels, +labels_v2, +license_terms, +logo, +model_format, +name, +performance, +precision, +public_dataset_used, +publisher, +quick_start_guide, +setup, +short_description, +training_framework, +team_name +) +SELECT +'{{ advanced }}', +'{{ application }}' /* required */, +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ model_format }}' /* required */, +'{{ name }}' /* required */, +'{{ performance }}', +'{{ precision }}' /* required */, +'{{ public_dataset_used }}' /* required */, +'{{ publisher }}', +'{{ quick_start_guide }}', +'{{ setup }}', +'{{ short_description }}' /* required */, +'{{ training_framework }}' /* required */, +'{{ team_name }}' +RETURNING +recipe, +request_status +; +``` + + + +Create recipe in org + +```sql +INSERT INTO nvidia.private_registry.resources ( +advanced, +application, +built_by, +description, +display_name, +labels, +labels_v2, +license_terms, +logo, +model_format, +name, +performance, +precision, +public_dataset_used, +publisher, +quick_start_guide, +setup, +short_description, +training_framework +) +SELECT +'{{ advanced }}', +'{{ application }}' /* required */, +'{{ built_by }}', +'{{ description }}', +'{{ display_name }}', +'{{ labels }}', +'{{ labels_v2 }}', +'{{ license_terms }}', +'{{ logo }}', +'{{ model_format }}' /* required */, +'{{ name }}' /* required */, +'{{ performance }}', +'{{ precision }}' /* required */, +'{{ public_dataset_used }}' /* required */, +'{{ publisher }}', +'{{ quick_start_guide }}', +'{{ setup }}', +'{{ short_description }}' /* required */, +'{{ training_framework }}' /* required */ +RETURNING +recipe, +request_status +; +``` + + + +{`# Description fields are for documentation purposes +- name: resources + props: + - name: team_name + value: "{{ team_name }}" + description: Required parameter for the resources resource. + - name: advanced + value: "{{ advanced }}" + description: | + Text for describing advanced information + - name: application + value: "{{ application }}" + valid_values: ['CLASSIFICATION', 'OBJECT_DETECTION', 'SEGMENTATION', 'TRANSLATION', 'TEXT_TO_SPEECH', 'RECOMMENDER', 'SENTIMENT', 'NLP', 'KUBEFLOW_PIPELINE', 'OTHER', 'SPEAKER_VERIFICATION', 'PUNCTUATION_AND_CAPITALIZATION', 'DIALOG_STATE_TRACKING', 'SPEAKER_DIARIZATION', 'SPEAKER_RECOGNITION', 'SPEECH_SYNTHESIS', 'VOICE_ACTIVITY_DETECTION', 'SPEECH_RECOGNITION', 'LANGUAGE_MODELING', 'NAMED_ENTITY_RECOGNITION', 'TEXT_CLASSIFICATION', 'TEXT_PROCESSING', 'QUESTION_ANSWERING', 'CONTENT_GENERATION'] + - name: built_by + value: "{{ built_by }}" + description: | + organization that built the recipe + - name: description + value: "{{ description }}" + description: | + Description of the recipe + - name: display_name + value: "{{ display_name }}" + description: | + Display name + - name: labels + value: + - "{{ labels }}" + - name: labels_v2 + value: + - "{{ labels_v2 }}" + - name: license_terms + value: + - configuredLicenseTerms: + download: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + hosting: + artifactType: "{{ artifactType }}" + generatedHtml: "{{ generatedHtml }}" + tags: + - category: "{{ category }}" + key: "{{ key }}" + label: "{{ label }}" + tag: "{{ tag }}" + url: "{{ url }}" + governingTerms: "{{ governingTerms }}" + licenseId: "{{ licenseId }}" + licenseVersion: "{{ licenseVersion }}" + needsAcceptance: {{ needsAcceptance }} + - name: logo + value: "{{ logo }}" + description: | + URL for the logo image + - name: model_format + value: "{{ model_format }}" + description: | + Format of the model this recipe produces + - name: name + value: "{{ name }}" + description: | + Unique name of the recipe + - name: performance + value: "{{ performance }}" + description: | + Text describing performance of the recipe results + - name: precision + value: "{{ precision }}" + valid_values: ['FP16', 'FP32', 'INT8', 'FPBOTH', 'OTHER', 'ALL'] + - name: public_dataset_used + value: + license: "{{ license }}" + link: "{{ link }}" + name: "{{ name }}" + - name: publisher + value: "{{ publisher }}" + description: | + organization that published the recipe + - name: quick_start_guide + value: "{{ quick_start_guide }}" + description: | + Text with a guide to getting started + - name: setup + value: "{{ setup }}" + description: | + Text describing recipe setup + - name: short_description + value: "{{ short_description }}" + description: | + Short description of the recipe + - name: training_framework + value: "{{ training_framework }}" + valid_values: ['TensorFlow', 'Caffe2', 'CNTK', 'Torch', 'PyTorch', 'MXNet', 'Keras', 'Other', 'TransferLearningToolkit', 'TensorFlow2'] +`} + + + + + +## `UPDATE` examples + + + + +Update recipe details in team + +```sql +UPDATE nvidia.private_registry.resources +SET +advanced = '{{ advanced }}', +application = '{{ application }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +model_format = '{{ model_format }}', +performance = '{{ performance }}', +precision = '{{ precision }}', +public_dataset_used = '{{ public_dataset_used }}', +publisher = '{{ publisher }}', +quick_start_guide = '{{ quick_start_guide }}', +related_models = '{{ related_models }}', +setup = '{{ setup }}', +short_description = '{{ short_description }}', +training_framework = '{{ training_framework }}' +WHERE +team_name = '{{ team_name }}' --required +AND recipe_name = '{{ recipe_name }}' --required +RETURNING +recipe, +request_status; +``` + + + +Update recipe details in org + +```sql +UPDATE nvidia.private_registry.resources +SET +advanced = '{{ advanced }}', +application = '{{ application }}', +built_by = '{{ built_by }}', +description = '{{ description }}', +display_name = '{{ display_name }}', +labels = '{{ labels }}', +labels_v2 = '{{ labels_v2 }}', +license_terms = '{{ license_terms }}', +logo = '{{ logo }}', +model_format = '{{ model_format }}', +performance = '{{ performance }}', +precision = '{{ precision }}', +public_dataset_used = '{{ public_dataset_used }}', +publisher = '{{ publisher }}', +quick_start_guide = '{{ quick_start_guide }}', +related_models = '{{ related_models }}', +setup = '{{ setup }}', +short_description = '{{ short_description }}', +training_framework = '{{ training_framework }}' +WHERE +recipe_name = '{{ recipe_name }}' --required +RETURNING +recipe, +request_status; +``` + + diff --git a/website/docs/services/private_registry/workflows/index.md b/website/docs/services/private_registry/workflows/index.md new file mode 100644 index 0000000..5803ba9 --- /dev/null +++ b/website/docs/services/private_registry/workflows/index.md @@ -0,0 +1,258 @@ +--- +title: workflows +hide_title: false +hide_table_of_contents: false +keywords: + - workflows + - private_registry + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a workflows resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectProgress of cloning artifact version files (wire: cloneStatus)
stringWall-clock execution duration as an ISO-8601 duration (e.g. PT1H30M5S, PT0.001S); Omitted while IN_PROGRESS.
string (date_time)UTC instant when the workflow reached a closed state; omitted while IN_PROGRESS. (wire: endTime)
stringHuman-readable message about the workflow status
objectRequest status information (wire: requestStatus)
string (date_time)UTC instant when the workflow execution started. (wire: startTime)
stringCurrent status of the workflow (IN_PROGRESS, COMPLETED, FAILED, CANCELED, TERMINATED, CONTINUED_AS_NEW, TIMED_OUT, UNKNOWN)
stringWorkflow type. (CLONE, CUSTOMER_MANAGED_KEY) (wire: workflowType)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectProgress of cloning artifact version files (wire: cloneStatus)
stringWall-clock execution duration as an ISO-8601 duration (e.g. PT1H30M5S, PT0.001S); Omitted while IN_PROGRESS.
string (date_time)UTC instant when the workflow reached a closed state; omitted while IN_PROGRESS. (wire: endTime)
stringHuman-readable message about the workflow status
objectRequest status information (wire: requestStatus)
string (date_time)UTC instant when the workflow execution started. (wire: startTime)
stringCurrent status of the workflow (IN_PROGRESS, COMPLETED, FAILED, CANCELED, TERMINATED, CONTINUED_AS_NEW, TIMED_OUT, UNKNOWN)
stringWorkflow type. (CLONE, CUSTOMER_MANAGED_KEY) (wire: workflowType)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
team, workflow_idReturns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team.
workflow_idReturns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (UTF-8)Team name
string (UTF-8)Workflow identifier
+ +## `SELECT` examples + + + + +Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization and team. + +```sql +SELECT +clone_status, +duration, +end_time, +message, +request_status, +start_time, +status, +workflow_type +FROM nvidia.private_registry.workflows +WHERE team = '{{ team }}' -- required +AND workflow_id = '{{ workflow_id }}' -- required +; +``` + + + +Returns the current status (pending, running, completed, or failed) of an artifact-registry Temporal workflow execution within the specified organization. + +```sql +SELECT +clone_status, +duration, +end_time, +message, +request_status, +start_time, +status, +workflow_type +FROM nvidia.private_registry.workflows +WHERE workflow_id = '{{ workflow_id }}' -- required +; +``` + + diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js new file mode 100644 index 0000000..21e5a37 --- /dev/null +++ b/website/docusaurus.config.js @@ -0,0 +1,44 @@ +import {themes as prismThemes} from 'prism-react-renderer'; +import { createConfig } from './.shared-config/index.js'; +import { providerName, providerTitle } from './provider.js'; + +const config = createConfig({ + providerName, + providerTitle, + prismThemes, + overrides: { + // Docusaurus Faster (rspack + swc, via @docusaurus/faster) - not + // strictly required at this site's page count, but kept for build + // speed and consistency with the other provider microsites. + future: { + v4: true, + faster: true, + }, + }, +}); + +// Date-stamp every doc page ("Last updated on ...") - the shared config +// ships showLastUpdateTime: false, so flip it here. Docs are generated and +// committed, so git history supplies the timestamps. +config.presets[0][1].docs.showLastUpdateTime = true; + +// Use the locally vendored registry-branded logos (STACKQL>> | REGISTRY, +// matching the awscc microsite) instead of the shared config's hotlinked +// main-site wordmark - self-contained assets, no cross-origin fetch. +// global.css swaps in the -mobile variants below 996px. +const registryLogo = { + alt: 'StackQL', + href: '/', + src: 'img/stackql-registry-logo.svg', + srcDark: 'img/stackql-registry-logo-white.svg', +}; +config.themeConfig.navbar.logo = { ...registryLogo }; +config.themeConfig.footer.logo = { ...registryLogo }; + +// URL form. Keep the Docusaurus default (pages emitted as /index.html) +// regardless of the shared config's trailingSlash setting, so GitHub Pages +// serves both /services/x/y and /services/x/y/. A trailingSlash: false site +// emits .html instead, which returns 404 for the trailing-slash URL. +delete config.trailingSlash; + +export default config; diff --git a/website/package.json b/website/package.json new file mode 100644 index 0000000..3c098a2 --- /dev/null +++ b/website/package.json @@ -0,0 +1,73 @@ +{ + "name": "website", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "vendor-config": "rimraf .shared-config && git clone --depth 1 --branch main https://github.com/stackql/docusaurus-config.git .shared-config", + "prestart": "yarn vendor-config", + "prebuild": "yarn vendor-config", + "sanitize-docs": "node scripts/sanitize-docs.mjs", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "^3.10.2", + "@docusaurus/faster": "^3.10.2", + "@docusaurus/plugin-ideal-image": "^3.10.2", + "@docusaurus/preset-classic": "^3.10.2", + "@docusaurus/theme-mermaid": "^3.10.2", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@iconify/react": "^6.0.0", + "@mdx-js/react": "^3.0.0", + "@mui/icons-material": "^7.3.1", + "@mui/material": "^7.3.1", + "clipboard": "^2.0.11", + "clsx": "^2.0.0", + "prism-react-renderer": "^2.3.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "^3.10.2", + "@docusaurus/types": "^3.10.2", + "rimraf": "^6.0.1" + }, + "overrides": { + "rimraf": "^6.0.1", + "glob": "^13.0.0", + "memfs": "^4.17.0", + "uuid": "^11.0.0", + "@ungap/structured-clone": "^1.3.1" + }, + "resolutions": { + "rimraf": "^6.0.1", + "glob": "^13.0.0", + "memfs": "^4.17.0", + "uuid": "^11.0.0", + "@ungap/structured-clone": "^1.3.1" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] + }, + "engines": { + "node": ">=20.0" + }, + "license": "MIT" +} diff --git a/website/provider.js b/website/provider.js new file mode 100644 index 0000000..20eb34e --- /dev/null +++ b/website/provider.js @@ -0,0 +1,2 @@ +export const providerName = 'nvidia'; +export const providerTitle = 'NVIDIA NGC'; diff --git a/website/scripts/sanitize-docs.mjs b/website/scripts/sanitize-docs.mjs new file mode 100644 index 0000000..e368417 --- /dev/null +++ b/website/scripts/sanitize-docs.mjs @@ -0,0 +1,224 @@ +#!/usr/bin/env node +// Post-docgen sanitizer for the generated provider docs. +// +// AWS descriptions carry literal angle-bracket placeholders (, +// ), stray unpaired HTML (,

) and XML samples +// (). MDX v3 parses any raw as JSX and +// fails the build on the first mismatch; braces ({...}) parse as JSX +// expressions with the same failure mode. +// +// The doc generator's own structure is line-shaped: one `...` +// cell per line, and description text ONLY ever appears as td inner +// content. So the deterministic fix: inside every description cell, +// escape ALL angle brackets and braces (protecting the stage-1 +// backtick-wrapped `` tokens as spans); leave +// every other line - tables, Tabs/TabItem/CodeBlock, CopyableCode, +// index link lists - byte-for-byte untouched. +// +// Run after `npm run generate-docs`, before building the website. + +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const docsDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'docs'); + +const TD_LINE = /^(\s*)(.*)(<\/td>\s*)$/; +const LINK_TOKEN = '(?:]*\\/>|[^<>]*<\\/code>)<\\/a>'; +const LINK_TOKEN_CELL = new RegExp(`^${LINK_TOKEN}(?:,\\s*${LINK_TOKEN})*$`); +const BACKTICKED = /`<([A-Za-z][A-Za-z0-9_.:-]*)>`/g; +// Control-char sentinels: cannot occur in generated markdown. +const OPEN = ''; +const CLOSE = ''; + +let filesChanged = 0; +let cellsEscaped = 0; + +function escapeDescription(inner) { + let out = inner.replace(BACKTICKED, (m, name) => OPEN + name + CLOSE); + out = out + .replace(//g, '>') + .replace(/\{/g, '{') + .replace(/\}/g, '}') + // Regex fragments in descriptions ("s3://([^/]+)(/.*)?") read as + // markdown links ("[...](...)") and crash the link resolver. + .replace(/\[/g, '[') + .replace(/\]/g, ']') + // GFM autolinks bare "scheme://..." literals on the DECODED text + // tree (entity escapes cannot evade it) and Docusaurus crashes on + // regex-shaped ones ("https://.+"). A zero-width space inside "://" + // is invisible in rendering but breaks the autolink prefix match. + .replace(/:\/\//g, ':​//'); + out = out.split(OPEN).join('<').split(CLOSE).join('>'); + return out; +} + +// Inside a CodeBlock template literal, a lone backslash before u/x is a JS +// string escape (backslash-u007F evaluates to a DEL byte at build time), and ${ +// starts interpolation. Double the backslash / escape the $ so the source +// text renders verbatim. +// The (?{`...`} spans hold verbatim SQL in a JSX + // template literal. The MDX/HTML escapes applied elsewhere must NOT + // touch these lines, but JS still evaluates the template literal, so + // sequences like backslash-u007F in AWS description text become raw control + // characters in the built HTML. Neutralize JS escape starts (\u, \x) + // and interpolation (${) so the text survives verbatim. + if (inCodeBlock) { + if (/<\/CodeBlock>/.test(line)) inCodeBlock = false; + const esc = escapeTemplateLiteral(line); + if (esc !== line) { lines[i] = esc; changed = true; } + continue; + } + if (//.test(line)) inCodeBlock = true; + const esc = escapeTemplateLiteral(line); + if (esc !== line) { lines[i] = esc; changed = true; } + continue; + } + if (/^/.test(trimmed)) { + inTabItemProse = false; + continue; + } + + // Description table cells (one ... per line). + const m = TD_LINE.exec(line); + if (m) { + const inner = m[2]; + if (/^]*\/>$/.test(inner)) continue; + // Structural link cells in the Methods/Parameters tables: one or + // more comma-separated anchor-wrapped tokens + // ( or + // x). Generated structure, + // not description text - must stay verbatim. + if (LINK_TOKEN_CELL.test(inner)) continue; + const codeCell = /^([^<>]*)<\/code>$/.exec(inner); + if (codeCell) { + // Type/pattern cells: regex patterns form accidental markdown + // links ("[...](...)" inside character classes) and MDX brace + // expressions ({4,7} quantifiers). Neutralise both; entities + // decode inside the element so rendering is unchanged. + const escaped = codeCell[1] + .replace(/\[/g, '[') + .replace(/\]/g, ']') + .replace(/\{/g, '{') + .replace(/\}/g, '}') + .replace(/:\/\//g, ':​//'); + if (escaped !== codeCell[1]) { + lines[i] = m[1] + '' + escaped + '' + m[3]; + cellsEscaped++; + changed = true; + } + continue; + } + const escaped = escapeDescription(inner); + if (escaped !== inner) { + lines[i] = m[1] + escaped + m[3]; + cellsEscaped++; + changed = true; + } + continue; + } + + // Method-description prose inside blocks (the paragraphs + // between the TabItem opener and the ```sql fence). Prose never + // starts with '<'; anything with raw angle brackets or braces there + // is hostile description content. + if (inTabItemProse && trimmed && !trimmed.startsWith('<') && /[<>{}]/.test(line)) { + const escaped = escapeDescription(line); + if (escaped !== line) { + lines[i] = escaped; + cellsEscaped++; + changed = true; + } + } + } + return { text: lines.join('\n'), changed }; +} + +// nvidia-specific: the NGC core query parameters are kebab-case on the wire +// (page-size, resolve-labels, exclude-from-team) and the engine accepts +// their snake_case spelling (request.nativeCasing: kebab), which is the +// user surface the rest of the docs present. Rewrite the kebab parameter +// tokens in the parameter tables, the method tables' parameter links, the +// anchors and the SQL examples to snake_case. Description prose is left +// alone. +const KEBAB = '[a-z][a-z0-9]*(?:-[a-z0-9]+)+'; +let kebabRewrites = 0; +function snakeKebabParams(text) { + let out = text; + const sub = (re, fn) => { out = out.replace(re, (...m) => { kebabRewrites++; return fn(...m); }); }; + sub(new RegExp(``, 'g'), (m, t) => ``); + sub(new RegExp(`#parameter-(${KEBAB})">(${KEBAB})`, 'g'), (m, a, t) => `#parameter-${a.replace(/-/g, '_')}">${t.replace(/-/g, '_')}`); + sub(new RegExp(``, 'g'), (m, t) => ``); + sub(new RegExp(`\\{\\{ (${KEBAB}) \\}\\}`, 'g'), (m, t) => `{{ ${t.replace(/-/g, '_')} }}`); + sub(new RegExp(`(^|[\\s(,])(${KEBAB}) = '`, 'gm'), (m, pre, t) => `${pre}${t.replace(/-/g, '_')} = '`); + sub(new RegExp(`(^|[\\s(,])(${KEBAB})(,|\\)|\\s*$)`, 'gm'), (m, pre, t, post) => /^(INSERT|SELECT|UPDATE|DELETE|FROM|WHERE|SET|AND)$/.test(t) ? m : `${pre}${t.replace(/-/g, '_')}${post}`); + return out; +} + +// docgen counts each service index as a resource; recount from the tree +function recountResources(indexPath) { + const servicesDir = path.join(docsDir, 'services'); + if (!fs.existsSync(servicesDir) || !fs.existsSync(indexPath)) return; + let resources = 0; + for (const svc of fs.readdirSync(servicesDir, { withFileTypes: true })) { + if (!svc.isDirectory()) continue; + resources += fs.readdirSync(path.join(servicesDir, svc.name), { withFileTypes: true }).filter((d) => d.isDirectory()).length; + } + const before = fs.readFileSync(indexPath, 'utf8'); + const after = before.replace(/total resources: __\d+__/, `total resources: __${resources}__`); + if (after !== before) fs.writeFileSync(indexPath, after); +} + +function walk(dir) { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const p = path.join(dir, entry.name); + if (entry.isDirectory()) { + walk(p); + } else if (entry.name.endsWith('.md') || entry.name.endsWith('.mdx')) { + const before = fs.readFileSync(p, 'utf8'); + let { text: after, changed } = sanitize(before); + // parameter casing only applies to the resource pages (the landing + // page is authored copy) + if (p.includes(`${path.sep}services${path.sep}`)) { + const cased = snakeKebabParams(after); + if (cased !== after) { after = cased; changed = true; } + } + if (changed) { + fs.writeFileSync(p, after); + filesChanged++; + } + } + } +} + +walk(docsDir); +recountResources(path.join(docsDir, 'index.md')); +console.log(`sanitize-docs: escaped ${cellsEscaped} description cell(s) across ${filesChanged} file(s); ${kebabRewrites} kebab parameter token(s) rendered as snake_case`); diff --git a/website/sidebars.js b/website/sidebars.js new file mode 100644 index 0000000..f719984 --- /dev/null +++ b/website/sidebars.js @@ -0,0 +1,15 @@ +import { providerTitle } from './provider.js'; + +const sidebars = { + mainSidebar: [ + { type: 'link', label: 'All Providers', href: '/providers' }, + { + type: 'category', + label: `${providerTitle} Provider`, + link: { type: 'doc', id: 'provider-intro' }, + items: [{ type: 'autogenerated', dirName: 'services' }], + }, + ], +}; + +export default sidebars; diff --git a/website/src/components/CopyableCode/CopyableCode.js b/website/src/components/CopyableCode/CopyableCode.js new file mode 100644 index 0000000..d17969f --- /dev/null +++ b/website/src/components/CopyableCode/CopyableCode.js @@ -0,0 +1,29 @@ +import React, { useState } from 'react'; +import Clipboard from 'clipboard'; + +const CopyableCode = ({ code }) => { + const [isCopied, setIsCopied] = useState(false); + + const handleCopy = () => { + const clipboard = new Clipboard('.copyable-code', { + text: () => code, + }); + + clipboard.on('success', function() { + setIsCopied(true); + window.setTimeout(() => setIsCopied(false), 2000); + clipboard.destroy(); + }); + }; + + return ( + + + {code} + + {isCopied ? Copied! : null} + + ); +}; + +export default CopyableCode; diff --git a/website/src/components/HomepageFeatures/index.js b/website/src/components/HomepageFeatures/index.js new file mode 100644 index 0000000..acc7621 --- /dev/null +++ b/website/src/components/HomepageFeatures/index.js @@ -0,0 +1,64 @@ +import clsx from 'clsx'; +import Heading from '@theme/Heading'; +import styles from './styles.module.css'; + +const FeatureList = [ + { + title: 'Easy to Use', + Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, + description: ( + <> + Docusaurus was designed from the ground up to be easily installed and + used to get your website up and running quickly. + + ), + }, + { + title: 'Focus on What Matters', + Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, + description: ( + <> + Docusaurus lets you focus on your docs, and we'll do the chores. Go + ahead and move your docs into the docs directory. + + ), + }, + { + title: 'Powered by React', + Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, + description: ( + <> + Extend or customize your website layout by reusing React. Docusaurus can + be extended while reusing the same header and footer. + + ), + }, +]; + +function Feature({Svg, title, description}) { + return ( +

+
+ +
+
+ {title} +

{description}

+
+
+ ); +} + +export default function HomepageFeatures() { + return ( +
+
+
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/website/src/components/HomepageFeatures/styles.module.css b/website/src/components/HomepageFeatures/styles.module.css new file mode 100644 index 0000000..b248eb2 --- /dev/null +++ b/website/src/components/HomepageFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/website/src/components/SchemaTable/SchemaTable.js b/website/src/components/SchemaTable/SchemaTable.js new file mode 100644 index 0000000..2553353 --- /dev/null +++ b/website/src/components/SchemaTable/SchemaTable.js @@ -0,0 +1,49 @@ +import React, { useState } from 'react'; +import styles from './SchemaTable.module.css'; + +function SchemaRow({ name, type, description, children, depth = 0 }) { + const [expanded, setExpanded] = useState(false); + const hasChildren = children && children.length > 0; + + return ( + <> + + + {hasChildren && ( + setExpanded(!expanded)} + > + {expanded ? 'ā–¼' : 'ā–¶'} + + )} + {name} + + {type} + + + {expanded && children?.map((child, idx) => ( + + ))} + + ); +} + +export default function SchemaTable({ fields }) { + return ( + + + + + + + + + + {fields.map((field, idx) => ( + + ))} + +
NameDatatypeDescription
+ ); +} \ No newline at end of file diff --git a/website/src/components/SchemaTable/SchemaTable.module.css b/website/src/components/SchemaTable/SchemaTable.module.css new file mode 100644 index 0000000..ed4ef36 --- /dev/null +++ b/website/src/components/SchemaTable/SchemaTable.module.css @@ -0,0 +1,27 @@ +.schemaTable { + width: 100%; + border-collapse: collapse; +} + +.schemaTable th, +.schemaTable td { + border: 1px solid var(--ifm-table-border-color); + padding: 8px 12px; + text-align: left; +} + +.schemaTable th { + background: var(--ifm-table-head-background); +} + +.row:hover { + background: var(--ifm-table-stripe-background); +} + +.expander { + cursor: pointer; + margin-right: 8px; + user-select: none; + color: var(--ifm-color-primary); + font-size: 10px; +} \ No newline at end of file diff --git a/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js new file mode 100644 index 0000000..b252fd7 --- /dev/null +++ b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js @@ -0,0 +1,400 @@ +import React, { useState } from 'react'; +import Button from '@mui/material/Button'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import DownloadIcon from '@mui/icons-material/Download'; +import ContentCopyIcon from '@mui/icons-material/ContentCopy'; +import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; +import {useLocation} from '@docusaurus/router'; +import styles from './StackqlDeployDropdown.module.css'; + +/** + * Collects all DOM elements between a heading and the next

. + */ +function getElementsBetweenHeadings(heading) { + const elements = []; + let el = heading.nextElementSibling; + while (el && el.tagName !== 'H2') { + elements.push(el); + el = el.nextElementSibling; + } + return elements; +} + +/** + * Extracts text from a element, preserving newlines. + * prism-react-renderer wraps each line in a child element (div or span), + * and textContent concatenates them without newlines, so we join manually. + */ +function getCodeText(codeEl) { + if (codeEl.children.length > 0) { + return Array.from(codeEl.children) + .map(line => line.textContent.replace(/\n$/, '')) + .join('\n'); + } + return codeEl.textContent; +} + +/** + * Extracts the text content of a code block from within a set of elements. + * If preferredTab is provided, looks for a tab with that label first. + */ +function extractCodeFromElements(elements, preferredTab) { + if (preferredTab) { + for (const el of elements) { + const tabs = el.querySelectorAll('[role="tab"]'); + const panels = el.querySelectorAll('[role="tabpanel"]'); + for (let i = 0; i < tabs.length; i++) { + const tabLabel = tabs[i].textContent.trim().toLowerCase(); + if (tabLabel === preferredTab.toLowerCase() && panels[i]) { + const codeEl = panels[i].querySelector('pre code'); + if (codeEl) return getCodeText(codeEl); + } + } + } + } + // Fallback: first code block in the section + for (const el of elements) { + const codeEl = el.querySelector('pre code'); + if (codeEl) return getCodeText(codeEl); + } + return null; +} + +/** + * Scans the rendered page DOM for SQL example sections and extracts + * code blocks to build a context-aware stackql-deploy template. + * + * Section heading IDs generated by Docusaurus: + * ## `SELECT` examples -> #select-examples + * ## `INSERT` examples -> #insert-examples + * ## `UPDATE` examples -> #update-examples + * ## `REPLACE` examples -> #replace-examples + * ## `DELETE` examples -> #delete-examples + * ## Lifecycle Methods -> #lifecycle-methods + */ +function extractTemplateFromPage() { + const sections = {}; + + // --- SELECT (prefer "get" tab for a single-resource check) --- + const selectH2 = document.getElementById('select-examples'); + if (selectH2) { + const els = getElementsBetweenHeadings(selectH2); + sections.select = extractCodeFromElements(els, 'get (all properties)') + || extractCodeFromElements(els, 'get') + || extractCodeFromElements(els); + } + + // --- INSERT (prefer "create" tab -- skip "Manifest" yaml tab) --- + const insertH2 = document.getElementById('insert-examples') || document.getElementById('insert-example'); + if (insertH2) { + const els = getElementsBetweenHeadings(insertH2); + sections.insert = extractCodeFromElements(els, 'All Properties') + || extractCodeFromElements(els, 'create') + || extractCodeFromElements(els); + } + + // --- UPDATE --- + const updateH2 = document.getElementById('update-examples') || document.getElementById('update-example'); + if (updateH2) { + const els = getElementsBetweenHeadings(updateH2); + sections.update = extractCodeFromElements(els); + } + + // --- REPLACE --- + const replaceH2 = document.getElementById('replace-examples'); + if (replaceH2) { + const els = getElementsBetweenHeadings(replaceH2); + sections.replace = extractCodeFromElements(els); + } + + // --- DELETE (standalone section) --- + const deleteH2 = document.getElementById('delete-examples') || document.getElementById('delete-example'); + if (deleteH2) { + const els = getElementsBetweenHeadings(deleteH2); + sections.delete = extractCodeFromElements(els); + } + + // --- Lifecycle Methods: look for a "delete" tab if no standalone DELETE --- + if (!sections.delete) { + const lifecycleH2 = document.getElementById('lifecycle-methods'); + if (lifecycleH2) { + const els = getElementsBetweenHeadings(lifecycleH2); + sections.delete = extractCodeFromElements(els, 'delete'); + } + } + + return sections; +} + +/** + * Parses a SELECT SQL string into its components: + * fields - column names from the SELECT list + * table - fully-qualified table reference after FROM + * where - the raw WHERE clause (conditions only, no leading WHERE) + */ +function parseSelectSQL(sql) { + const selectFromMatch = sql.match(/SELECT\s+([\s\S]+?)\s+FROM\s+/i); + const fromMatch = sql.match(/FROM\s+(\S+)/i); + const whereMatch = sql.match(/WHERE\s+([\s\S]+?)(?:\s*;\s*$|$)/i); + + const fields = selectFromMatch + ? selectFromMatch[1] + .split(',') + .map(f => f.trim()) + .filter(f => f && f !== '*') + : []; + + const table = fromMatch ? fromMatch[1] : ''; + const where = whereMatch ? whereMatch[1].trim().replace(/;\s*$/, '').trim() : ''; + + return { fields, table, where }; +} + +// Parses column names from an INSERT INTO ... (...) statement +// and returns the base field names (stripping data__ prefix). +function parseInsertColumns(sql) { + const match = sql.match(/INSERT\s+INTO\s+\S+\s*\(([\s\S]+?)\)/i); + if (!match) return []; + return match[1] + .split(',') + // .map(c => c.trim().replace(/^data__/, '')) + .map(c => c.trim()) + .filter(Boolean); +} + +// Builds an "exists" hint query - a simplified count query using only the +// original WHERE params (required parameters from the page). +function buildExistsQuery(parsed) { + let sql = `SELECT count(*) as count\nFROM ${parsed.table}`; + if (parsed.where) { + const conditions = parsed.where.split(/\s+AND\s+/i).map(c => c.trim()); + sql += `\nWHERE ${conditions.join(' AND\n')}`; + } + sql += '\n;'; + return sql; +} + +// Builds a "statecheck" hint query - a count query where SELECT fields become +// equality checks in the WHERE clause, followed by the original WHERE params. +function buildStatecheckQuery(parsed) { + // Extract condition field names from WHERE clause to avoid duplicates + const whereConditionFields = new Set(); + if (parsed.where) { + parsed.where.split(/\s+AND\s+/i).forEach(c => { + const match = c.trim().match(/^\s*(\w+)\s*=/); + if (match) whereConditionFields.add(match[1].toLowerCase()); + }); + } + + // Filter out fields already in the WHERE clause (e.g., region) + const filteredFields = parsed.fields.filter(f => !whereConditionFields.has(f.toLowerCase())); + const fieldConditions = filteredFields.map(f => `${f} = {{ ${f} }}`); + + // Collect all WHERE conditions + const allConditions = [...fieldConditions]; + if (parsed.where) { + parsed.where.split(/\s+AND\s+/i).forEach(c => allConditions.push(c.trim())); + } + + let sql = `SELECT count(*) as count\nFROM ${parsed.table}`; + if (allConditions.length > 0) { + sql += `\nWHERE \n${allConditions.join(' AND\n')}`; + } + sql += '\n;'; + return sql; +} + +/** + * Builds the stackql-deploy IQL template from extracted sections. + * Only includes anchors for operations that actually exist on the page. + */ +function buildTemplate(sections) { + const parts = []; + let parsed = null; + + if (sections.select) { + parsed = parseSelectSQL(sections.select); + parts.push(`/*+ exists */\n${buildExistsQuery(parsed)}`); + } + + if (sections.insert) { + parts.push(sections.insert); + } + + if (sections.update) { + parts.push(sections.update); + } else if (sections.replace) { + parts.push(sections.replace); + } + + if (parsed) { + // If INSERT exists, narrow to mutable fields only (skip created_at, etc.) + let mutableParsed = parsed; + if (sections.insert) { + const insertColSet = new Set(parseInsertColumns(sections.insert)); + const mutableFields = parsed.fields.filter(f => insertColSet.has(f)); + if (mutableFields.length > 0) { + mutableParsed = { ...parsed, fields: mutableFields }; + } + } + + parts.push(`/*+ statecheck, retries=5, retry_delay=10 */\n${buildStatecheckQuery(mutableParsed)}`); + + // Use all GET fields minus region for exports + const exportFields = parsed.fields.filter(f => f.toLowerCase() !== 'region'); + let exportsSql = `SELECT\n${exportFields.join(',\n')}\nFROM ${parsed.table}`; + if (parsed.where) { + const conditions = parsed.where.split(/\s+AND\s+/i).map(c => c.trim()); + exportsSql += `\nWHERE ${conditions.join(' AND\n')}`; + } + exportsSql += ';'; + parts.push(`/*+ exports */\n${exportsSql}`); + } + + if (sections.delete) { + parts.push(sections.delete); + } + + return parts.join('\n\n'); +} + +function getResourceName(pathname) { + const match = pathname.match(/\/services\/[^/]+\/([^/]+)/); + return match ? match[1] : null; +} + +export default function StackqlDeployDropdown() { + const [anchorEl, setAnchorEl] = useState(null); + const [copied, setCopied] = useState(false); + const open = Boolean(anchorEl); + const location = useLocation(); + + const resourceName = getResourceName(location.pathname); + + // Only render on resource pages (URL: /services/{service}/{resource}) + if (!resourceName) return null; + + const filename = `${resourceName}.iql`; + + function getTemplate() { + const sections = extractTemplateFromPage(); + return buildTemplate(sections); + } + + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleDownload = () => { + const template = getTemplate(); + if (!template) { + handleClose(); + return; + } + const blob = new Blob([template], { type: 'text/plain' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + handleClose(); + }; + + const handleCopy = async () => { + const template = getTemplate(); + if (!template) { + handleClose(); + return; + } + try { + await navigator.clipboard.writeText(template); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch { + const textarea = document.createElement('textarea'); + textarea.value = template; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand('copy'); + document.body.removeChild(textarea); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } + handleClose(); + }; + + return ( +
+ + + + + + + + Download + + + + + + + + {copied ? 'Copied!' : 'Copy'} + + + +
+ ); +} diff --git a/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css new file mode 100644 index 0000000..cdb453c --- /dev/null +++ b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css @@ -0,0 +1,12 @@ +/* Only show on md+ viewports (Docusaurus default breakpoint: 996px) */ +.dropdownWrapper { + display: none; + flex-shrink: 0; +} + +@media screen and (min-width: 997px) { + .dropdownWrapper { + display: flex; + align-items: center; + } +} diff --git a/website/src/css/global.css b/website/src/css/global.css new file mode 100644 index 0000000..3e50218 --- /dev/null +++ b/website/src/css/global.css @@ -0,0 +1,287 @@ +@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&display=swap'); + +/* +* Brand Colour +*/ +:root { + --gamma-blue: #0f4c81; + --gamma-medium-blue: #6c83aa; + /* Blues */ + --gamma-dark-blue: #004165; + --gamma-light-blue: #b5bfd4; + --code-blue: #00f; + /* Grey scale */ + --default-text: #2e3940; + --secondary-text: #718096; + --black: #000; + --white: #fff; + --grey-1: #f5f6f7; + --grey-2: #ebedef; + /* Dark Mode Blacks */ + --dark-1: #606264; + --dark-2: #404244; + --black-2: #090909; + --light-black: #111; + /* Colours */ + --default-green: #00af91; + --secondary-green: #43af43; + --default-red: #e94560; + --default-red-2: #fc91a2; + --default-blue: #2e3940; + --default-light-blue: #bfc2ff; + --default-blue-2: #1a1a2e; + --secondary-blue: #16213e; + --gamma-dark: #030760; +} + +:root { + /* infima styling */ + --ifm-font-family-base: 'Montserrat', sans-serif; + --ifm-font-size-base: 16px; + --ifm-code-font-size: 95%; + --ifm-background-color: var(--white); + --ifm-color-primary: var(--gamma-dark-blue); + --ifm-code-color: var(--code-blue); + --ifm-color-content: #2d3748; + --ifm-dropdown-link-color: var(--ifm-menu-color); + --ifm-navbar-link-color: var(--ifm-menu-color); + --ifm-menu-color-background-active: var(--ifm-color-emphasis-200); +} + +[data-theme='dark'] { + --ifm-font-base-color: #dee0f2; + --ifm-color-content: var(--ifm-font-base-color); + --ifm-navbar-link-hover-color: var(--gamma-light-blue); + --ifm-link-color: var(--gamma-light-blue); + --ifm-menu-color-active: var(--gamma-light-blue); + --ifm-color-primary: var(--white); + --ifm-background-color: var(--black); + --ifm-footer-background-color: var(--black-2); + --ifm-navbar-background-color: var(--black); + --ifm-menu-color-background-active: #21243d; + --ifm-code-color: var(--white); +} + +/* +* copyable code +*/ +.copyable-code-container code { + cursor: pointer; + position: relative; +} + +/* +* github +*/ + .header-github-link:before { + content: ''; + width: 140px; + height: 28px; + display: flex; + background-image: url("https://img.shields.io/github/stars/stackql/stackql?logo=github&style=social"); + background-repeat: no-repeat; + background-position: center; + background-size: contain; +} + +.header-github-link:hover { + opacity: 0.6; +} + +/* +* footer +*/ +:root .footer--dark { + background-color: transparent; + --ifm-footer-color: var(--secondary-text); + --ifm-footer-link-color: var(--secondary-text); + --ifm-footer-title-color: var(--black-2); +} +:root .footer .footerLogoLink_src-theme-Footer- { + opacity: 1; +} +:root .footer .divider { + background-color: rgba(0, 0, 0, 0.12); +} +:root .footer .container { + background-color: var(--grey-1); +} +:root a code { + color: var(--ifm-code-color); +} + +html[data-theme='dark'] .footer--dark { + --ifm-footer-background-color: transparent; + --ifm-footer-color: #bdbdbd; + --ifm-footer-link-color: #bdbdbd; + --ifm-footer-title-color: var(--white); +} +html[data-theme='dark'] .footer .divider { + background-color: var(--secondary-blue); +} +html[data-theme='dark'] .footer .container { + background-color: var(--black-2); +} + +.footer__items { + font-weight: 400; + line-height: 1.43; + font-size: 0.875rem; +} +.footer__items .footer__link-item:hover { + text-decoration: none; +} +.footer__title { + font-weight: 700; + margin-bottom: 0; + line-height: 1.43; + font-size: 0.875rem; +} +.footer { + padding-bottom: 0; +} +.footer .container { + margin: 0 auto; + padding: 56px 80px; + max-width: 850px; + border-radius: 17px; +} +.divider { + width: 100%; + margin: 40px 0px; + border: none; + height: 1px; + flex-shrink: 0; +} +.footer__subtitle { + font-weight: 500; + line-height: 1.57; + font-size: 0.875rem; +} +.footer__logo { + margin-top: 0; +} + +.footerSocialIcon { + font-size: 24px; + margin: 0 12px; +} + + .footerSocialIconButton { + padding: 0; + color: 'rgba(255,255,255,.6)'; + } + + .footerSocialIconButton:hover { + background: 'transparent'; + color: 'rgba(255,255,255,.6)'; + } + + .footer__items { + list-style-type: none; + margin: 0; + padding: 0; + } + +/* +* custom styles +*/ +code { + font-weight: bold; +} +table { + display: block; + max-width: -moz-fit-content; + max-width: fit-content; + margin: 0 auto; + overflow-x: auto; + white-space: nowrap; +} + +/* +* nav bar +*/ + +.navbar__item { + font-weight: 700; +} +.navbar__link { + font-weight: 700; +} + +/* +* doc field headings +*/ + +:root .docFieldHeading { + color: #0000FF; +} + +html[data-theme='dark'] .docFieldHeading { + color: #FFFFFF; +} + +/* +* vhs image +*/ + +.vhsImage { + max-width: 60%; /* Reduce width to 80% of container */ + display: block; /* Ensure it's a block element for margin auto to work */ + margin: 40px auto; /* Add 40px space above/below and center horizontally */ + transform: scale(0.9); /* Make it 90% of original size */ + transform-origin: center; /* Scale from center */ +} + +/* Add more space before and after the image container */ +img[class="vhsImage"] { + margin-top: 40px; + margin-bottom: 40px; +} + +/* If the image is inside a container, you might need this */ +.vhsImage-container, +div:has(> .vhsImage) { + margin: 40px 0; +} + +/* provider doc column */ +.providerDocColumn { + width: calc(50% - var(--ifm-spacing-horizontal)); + float: left; + padding-left: var(--ifm-list-margin); +} + +@media screen and (max-width: 600px) { + .providerDocColumn { + width: 100%; + } + } + +/* +* breadcrumbs with actions (stackql-deploy dropdown) +*/ +.breadcrumbs-with-actions { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: nowrap; +} + +.breadcrumbs-with-actions nav { + flex: 1; + min-width: 0; +} + +/* +* registry logo: swap to the narrower -mobile mark below the Docusaurus +* mobile breakpoint (996px), per theme +*/ +@media (max-width: 996px) { + .navbar__logo img[src$='stackql-registry-logo.svg'] { + content: url('/img/stackql-registry-logo-mobile.svg'); + } + .navbar__logo img[src$='stackql-registry-logo-white.svg'] { + content: url('/img/stackql-registry-logo-white-mobile.svg'); + } +} \ No newline at end of file diff --git a/website/src/theme/DocBreadcrumbs/index.js b/website/src/theme/DocBreadcrumbs/index.js new file mode 100644 index 0000000..2c5c7cf --- /dev/null +++ b/website/src/theme/DocBreadcrumbs/index.js @@ -0,0 +1,12 @@ +import React from 'react'; +import DocBreadcrumbs from '@theme-original/DocBreadcrumbs'; +import StackqlDeployDropdown from '@site/src/components/StackqlDeployDropdown/StackqlDeployDropdown'; + +export default function DocBreadcrumbsWrapper(props) { + return ( +
+ + +
+ ); +} diff --git a/website/src/theme/Footer/Copyright/index.tsx b/website/src/theme/Footer/Copyright/index.tsx new file mode 100644 index 0000000..ab1657d --- /dev/null +++ b/website/src/theme/Footer/Copyright/index.tsx @@ -0,0 +1,20 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import type {Props} from '@theme/Footer/Copyright'; + +export default function FooterCopyright({copyright}: Props): JSX.Element { + return ( +
+ ); +} diff --git a/website/src/theme/Footer/Layout/index.tsx b/website/src/theme/Footer/Layout/index.tsx new file mode 100644 index 0000000..bb22f31 --- /dev/null +++ b/website/src/theme/Footer/Layout/index.tsx @@ -0,0 +1,34 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import clsx from 'clsx'; +import type {Props} from '@theme/Footer/Layout'; + +export default function FooterLayout({ + style, + links, + logo, + copyright, +}: Props): JSX.Element { + return ( +
+
+ {links} + {(logo || copyright) && ( +
+ {logo &&
{logo}
} + {copyright} +
+ )} +
+
+ ); +} diff --git a/website/src/theme/Footer/LinkItem/index.tsx b/website/src/theme/Footer/LinkItem/index.tsx new file mode 100644 index 0000000..44e1517 --- /dev/null +++ b/website/src/theme/Footer/LinkItem/index.tsx @@ -0,0 +1,36 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; + +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import IconExternalLink from '@theme/Icon/ExternalLink'; +import type {Props} from '@theme/Footer/LinkItem'; + +export default function FooterLinkItem({item}: Props): JSX.Element { + const {to, href, label, prependBaseUrlToHref, ...props} = item; + const toUrl = useBaseUrl(to); + const normalizedHref = useBaseUrl(href, {forcePrependBaseUrl: true}); + + return ( + + {label} + {href && !isInternalUrl(href) && } + + ); +} diff --git a/website/src/theme/Footer/Links/MultiColumn/index.tsx b/website/src/theme/Footer/Links/MultiColumn/index.tsx new file mode 100644 index 0000000..2239e8c --- /dev/null +++ b/website/src/theme/Footer/Links/MultiColumn/index.tsx @@ -0,0 +1,51 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import LinkItem from '@theme/Footer/LinkItem'; +import type {Props} from '@theme/Footer/Links/MultiColumn'; + +type ColumnType = Props['columns'][number]; +type ColumnItemType = ColumnType['items'][number]; + +function ColumnLinkItem({item}: {item: ColumnItemType}) { + return item.html ? ( +
  • + ) : ( +
  • + +
  • + ); +} + +function Column({column}: {column: ColumnType}) { + return ( +
    +
    {column.title}
    +
      + {column.items.map((item, i) => ( + + ))} +
    +
    + ); +} + +export default function FooterLinksMultiColumn({columns}: Props): JSX.Element { + return ( +
    + {columns.map((column, i) => ( + + ))} +
    + ); +} diff --git a/website/src/theme/Footer/Links/Simple/index.tsx b/website/src/theme/Footer/Links/Simple/index.tsx new file mode 100644 index 0000000..e14b77f --- /dev/null +++ b/website/src/theme/Footer/Links/Simple/index.tsx @@ -0,0 +1,42 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import LinkItem from '@theme/Footer/LinkItem'; +import type {Props} from '@theme/Footer/Links/Simple'; + +function Separator() { + return Ā·; +} + +function SimpleLinkItem({item}: {item: Props['links'][number]}) { + return item.html ? ( + + ) : ( + + ); +} + +export default function FooterLinksSimple({links}: Props): JSX.Element { + return ( +
    +
    + {links.map((item, i) => ( + + + {links.length !== i + 1 && } + + ))} +
    +
    + ); +} diff --git a/website/src/theme/Footer/Links/index.tsx b/website/src/theme/Footer/Links/index.tsx new file mode 100644 index 0000000..a4b0f33 --- /dev/null +++ b/website/src/theme/Footer/Links/index.tsx @@ -0,0 +1,21 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; + +import {isMultiColumnFooterLinks} from '@docusaurus/theme-common'; +import FooterLinksMultiColumn from '@theme/Footer/Links/MultiColumn'; +import FooterLinksSimple from '@theme/Footer/Links/Simple'; +import type {Props} from '@theme/Footer/Links'; + +export default function FooterLinks({links}: Props): JSX.Element { + return isMultiColumnFooterLinks(links) ? ( + + ) : ( + + ); +} diff --git a/website/src/theme/Footer/Logo/index.tsx b/website/src/theme/Footer/Logo/index.tsx new file mode 100644 index 0000000..ebd8e9f --- /dev/null +++ b/website/src/theme/Footer/Logo/index.tsx @@ -0,0 +1,46 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import {useBaseUrlUtils} from '@docusaurus/useBaseUrl'; +import ThemedImage from '@theme/ThemedImage'; +import type {Props} from '@theme/Footer/Logo'; + +import styles from './styles.module.css'; + +function LogoImage({logo}: Props) { + const {withBaseUrl} = useBaseUrlUtils(); + const sources = { + light: withBaseUrl(logo.src), + dark: withBaseUrl(logo.srcDark ?? logo.src), + }; + return ( + + ); +} + +export default function FooterLogo({logo}: Props): JSX.Element { + return logo.href ? ( + + + + ) : ( + + ); +} diff --git a/website/src/theme/Footer/Logo/styles.module.css b/website/src/theme/Footer/Logo/styles.module.css new file mode 100644 index 0000000..16b1a2e --- /dev/null +++ b/website/src/theme/Footer/Logo/styles.module.css @@ -0,0 +1,16 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.footerLogoLink { + opacity: 0.5; + transition: opacity var(--ifm-transition-fast) + var(--ifm-transition-timing-default); +} + +.footerLogoLink:hover { + opacity: 1; +} diff --git a/website/src/theme/Footer/index.tsx b/website/src/theme/Footer/index.tsx new file mode 100644 index 0000000..eb3d03a --- /dev/null +++ b/website/src/theme/Footer/index.tsx @@ -0,0 +1,262 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import clsx from 'clsx'; + +import Link from '@docusaurus/Link'; +import {FooterLinkItem, useThemeConfig} from '@docusaurus/theme-common'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import styles from './styles.module.css'; +import ThemedImage, {Props as ThemedImageProps} from '@theme/ThemedImage'; +import IconExternalLink from '@theme/Icon/ExternalLink'; +import { IconButton } from '@mui/material'; +import { useColorMode } from '@docusaurus/theme-common'; + +import { Icon } from '@iconify/react'; + +// add for responsive logo image +import { useWindowSize } from '@docusaurus/theme-common'; + +// Custom styles to fix the spacing issue +const socialIconsContainerStyle: React.CSSProperties = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flexWrap: 'wrap', // Allow wrapping on small screens + margin: '16px 0', +}; + +const iconButtonStyle = { + padding: '12px', // Ensure buttons have enough clickable area +}; + +function FooterLink({ + to, + href, + label, + prependBaseUrlToHref, + ...props +}: FooterLinkItem) { + const toUrl = useBaseUrl(to); + const normalizedHref = useBaseUrl(href, {forcePrependBaseUrl: true}); + + return ( + + {href && !isInternalUrl(href) ? ( + + {label} + + + ) : ( + label + )} + + ); +} + +const FooterLogo = ({ + sources, + alt, + width, + height, + logo, +}: Pick & { logo: any }) => { + // Get window width for responsiveness + const windowSize = useWindowSize(); + + // Set threshold for mobile view (e.g., 768px) + const isMobile = windowSize === 'mobile' ? true : false; + + const getMobileLogoPath = (path: string) => path?.replace('.svg', '-mobile.svg'); + + // Choose appropriate image sources based on screen size + // const responsiveSources = { + // light: useBaseUrl(isMobile ? getMobileLogoPath(logo.src) : logo.src), + // dark: useBaseUrl(isMobile ? getMobileLogoPath(logo.srcDark || logo.src) : (logo.srcDark || logo.src)), + // }; + const responsiveSources = { + light: useBaseUrl(isMobile ? getMobileLogoPath(logo?.src) : logo?.src), + dark: useBaseUrl(isMobile ? getMobileLogoPath(logo?.srcDark || logo?.src) : (logo?.srcDark || logo?.src)), + }; + + return ( + + ); +} + +function Footer(): JSX.Element | null { + const socialLinks = { + linkedin: "https://www.linkedin.com/company/stackql", + twitter: "https://twitter.com/stackql", + github: "https://github.com/stackql", + discord: "https://discord.com/invite/xVXZ9d5NxN", + slack: "https://join.slack.com/t/stackqlcommunity/shared_invite/zt-1cbdq9s5v-CkY65IMAesCgFqjN6FU6hg", + }; + + const {colorMode} = useColorMode(); + + const {footer} = useThemeConfig(); + + const {copyright, links = [], logo = { src: '' }} = footer || {}; + const sources = { + light: useBaseUrl(logo.src), + dark: useBaseUrl(logo.srcDark || logo.src), + }; + + if (!footer) { + return null; + } + + return ( +
    +
    + {links && links.length > 0 && ( +
    +
    + {logo && (logo.src || logo.srcDark) && ( +
    + {logo.href ? ( + + + + ) : ( + + )} +
    + )} +

    + A new approach to querying and
    + provisioning cloud services. +

    +
    + {links.map((linkItem, i) => ( +
    + {linkItem.title != null ? ( +

    {linkItem.title}

    + ) : null} + {linkItem.items != null && + Array.isArray(linkItem.items) && + linkItem.items.length > 0 ? ( +
      + {linkItem.items.map((item, key) => + item.html ? ( +
    • + ) : ( +
    • + +
    • + ), + )} +
    + ) : null} +
    + ))} +
    + )} +
    + {(logo || copyright) && ( + <> +
    + {copyright ? ( +
    + ) : null} +
    + {/* Social Icons Container with Fixed Spacing */} +
    + + + + + + + + + + + + + + + +
    + + )} +
    +
    + ); +} + +export default Footer; \ No newline at end of file diff --git a/website/src/theme/Footer/styles.module.css b/website/src/theme/Footer/styles.module.css new file mode 100644 index 0000000..92e3c3b --- /dev/null +++ b/website/src/theme/Footer/styles.module.css @@ -0,0 +1,16 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.footerLogoLink { + opacity: 1; + transition: opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default); +} + +.footerLogoLink:hover { + opacity: 0.5; +} + diff --git a/website/src/theme/Logo/index.d.ts b/website/src/theme/Logo/index.d.ts new file mode 100644 index 0000000..786099f --- /dev/null +++ b/website/src/theme/Logo/index.d.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +import { type ReactNode } from 'react'; +import type { Props } from '@theme/Logo'; +export default function Logo(props: Props): ReactNode; diff --git a/website/src/theme/Logo/index.js b/website/src/theme/Logo/index.js new file mode 100644 index 0000000..d0b73e2 --- /dev/null +++ b/website/src/theme/Logo/index.js @@ -0,0 +1,76 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +import React from 'react'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import {useThemeConfig, useWindowSize} from '@docusaurus/theme-common'; +import ThemedImage from '@theme/ThemedImage'; +function LogoThemedImage({logo, alt, imageClassName}) { +// Add window size detection + const windowSize = useWindowSize(); + + // Determine if on mobile + const isMobile = windowSize === 'mobile'; + + // Function to generate mobile logo path + const getMobileLogoPath = (path) => path?.replace('.svg', '-mobile.svg'); + + // Get appropriate logo sources based on device + const sources = { + light: useBaseUrl(isMobile ? getMobileLogoPath(logo.src) : logo.src), + dark: useBaseUrl(isMobile ? getMobileLogoPath(logo.srcDark || logo.src) : (logo.srcDark || logo.src)), + }; + const themedImage = ( + + ); + // Is this extra div really necessary? + // introduced in https://github.com/facebook/docusaurus/pull/5666 + return imageClassName ? ( +
    {themedImage}
    + ) : ( + themedImage + ); +} +export default function Logo(props) { + const { + siteConfig: {title}, + } = useDocusaurusContext(); + const { + navbar: {title: navbarTitle, logo}, + } = useThemeConfig(); + const {imageClassName, titleClassName, ...propsRest} = props; + const logoLink = useBaseUrl(logo?.href || '/'); + // If visible title is shown, fallback alt text should be + // an empty string to mark the logo as decorative. + const fallbackAlt = navbarTitle ? '' : title; + // Use logo alt text if provided (including empty string), + // and provide a sensible fallback otherwise. + const alt = logo?.alt ?? fallbackAlt; + return ( + + {logo && ( + + )} + {navbarTitle != null && {navbarTitle}} + + ); +} diff --git a/provider-dev/config/.gitkeep b/website/static/.nojekyll similarity index 100% rename from provider-dev/config/.gitkeep rename to website/static/.nojekyll diff --git a/website/static/CNAME b/website/static/CNAME new file mode 100644 index 0000000..3caf1e3 --- /dev/null +++ b/website/static/CNAME @@ -0,0 +1 @@ +nvidia-provider.stackql.io diff --git a/website/static/apple-touch-icon.png b/website/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..54d5bf4c39a0ea69edae2faf1de88b441fc77799 GIT binary patch literal 7748 zcma)h1yEc;v+e>RxCHkQba8^aB{(6tySr|1mjo6Ii@R?E1b26rU}HPmVXO+eEQ^fd`SXo&>)KMWYKnzut+h;L;0e0K_IGb#kbO0K8r^=`fi50ndx2r zNccwGfob6ALa+t_i&8D4Qe%T&t&?)&;qmoiDqDskBd>UllD0R`NI%{$R?X5(#UCmk zOlDG);2Ie&OXoa|VvX!oi=;7&ElNfV&|(F5W@+Spual8JRJ*8WD~;G8>)UrU#jK!q zN(sbH_9NnkCK7GED(J!xL<~mq0=-9C3gPMgOS_cJP7%<}fDd{e>XMJt{LJWiE9jB3 z>tP$k+34=oOI)ZEssN}8bRX(LYu#A|v+CiEe0Afyj_yW42D*La5zJK(PRAz2e~Ps( zn{U@y71Cet6YALgh#~>{yKx`=FGmJV_W3aAf&7%sY&#&Y!fF~Hv>(!iB!MaxtgtT} ziJR0yb*sFNN^3uf!!kG+0WuDeqJ8W1T}M4gEn#oyh|MSdY&p+e`ge7eP_C{J-R<`q zAz9|rn{HDSac=MWcpp}C9#@ng6sMen1Y%S~rrCJWtR%Ua8&CIe^2epBAtSpi*`Bh& zouz89S<|4cDHPc&Mk!l0jv*%OM`1r=h#pk#5a22h6GpGd*jEWlEw-owqu+AcK6699 zZR#eDV!!&POu}?g)cx4IEBO844JsTFX4q$viPnB8^iRd_1G1kJ7u3qU2%OKF&x)x- zJOk6hocWe)v!s`i^wy+|So@!94P}TV%4CmI=?S5T${&OElPFqGFkKVQUGu_kxc_p3 zX-seuyZ&v2x3Cr}&mk-EotFR!vu3vW8|z8AB8*#2ItB3xv-I(j?vs!s-ljq@_vTNb zmA%5!wHQI#&7bT_;|b`aIp(^)cJ`QtN*ZnpKUxZ}h}ZK#6Q>n(`>}W>$d94IR>w3K z7t%#Z<=*1A{48}0tr4yCgc3QLO~wHWTgBhW)7d=F@K4u5mQP7J+)N=7=0mE8x5t09= zVKdTRz&dq+?RMUXWlFn=eg^7sH&xiR4H?a#+@rX0Z+R%qdA@7S&y5$ z8U_X7E@*X!n%@T2ELUMvE?;r)%?9f!=DsDMM`Y$#4oyS|7AEiOTv&4w#vp)+`;-I*D|>z5ALEhx2ZuM~xdx{v1fJpa;P(eP-S z-Hl6<#ygr&;k73{`RWwHxmas08>qVif7AVHaKcSw>kU^8bjxP`7&( zQ^1Io{7VLlZbh9fksbX{)Repa;v2eXky^a}?(RQC{(mF>FPe<>TE#O@Fhop|XiJkK z2PUp$JE{}&84qW{UV^e5#4w$hE;#EspS^cAnaJz9B`b$|#?F)Ul*y84Z0QaSy*IHvx6(egG<0xRUzyU@r;4ASdE0I|(vF2QNd2d*u-ea_^YM6_y1mmDMSkBv z7*d#9eiW#3hxiJ07%j=y1BOsgreV0jE!>uV2gjZTe zcF(k9KU`)^v{wgGo0_=n91-FK%+AEk9=*<_Ak1`b`04~^vk0_*6^xi;k`PX4KLit7Woe+!tDrl5OAGXE?Mk?DdbNZ<2**AZp*{jW)3k z@y_WEm-t}M3O`k8+lVMLMf1$+r=T+O*TPZAM>~>Us*1+^0{4F zP zJ>|M~{nMctMa#cZ2uh0BC?e}afMjaO) z;1dq!Z}eaMD2YVOc2EijR7M61&8m3LgC0WS%UGj%Iuj`2_#)YeaX#GR%8g%(n5qI0 zk6j-WW=a>{Lr4)A%96FMrc6A#5$v(Sbdv4F9f&JQ04EfAYh%Fk-PN!!DNDz_=8Dsm zx@spz`RFoE74+xO^`pmamyZ_~mrK=V4BHWvh{<vc%RDZb6kj?jN07hn|rz?aYZ3wSAe}F{FBr|2dcS}EhvTX`lIK|61 znTSS(!Zyd2cY5oER2Ok;fj|04^ z8S(xvA1aKRr{kp5va?hjJT$b>1j-6O=Vc6Dmu(*|)n;1XWdQmBgPl53Knc1+lMBJX zyHWeEK0t8!kcLj2F}jx>tHmp#|7IeW-a2bP$r^0>fY$%!XJiluZIK}r$J zrK?ShXjPS8LpL>Y+0hDQrpe1I%!cr29I1EgLJL2qq^cZc5?s&gsOiH#E&cuy3?ZnJ z#5YnFxhAFMQ~Tf>VAS>@;r)R@OHesp)(;tXRX-Jjvdv|Pmn-=9$fr@3VI|AqJ(~sL zNce&KKWRxYmdq|brkr><=d+bJzXJlVNQSCbEFd0G#5cZLY8Leq8X*nXf|^c0upz&i z%h0>vvyvjwO91V%*+n}#L$f=k*aB9ysDvO4nB@#CsjyX2TYY#;h2NlTqFi77^FZ_1 z*iilFM+sWV{ zp3_M+Q`i10Z>*wn7jg?dnh)dnQR1a4NXDUU-WYzVSFaUs<-n#aq-HphY3f?vuTco6Wj#Rye5z~Zb2p7F&!ye4&V zMFdT)eM04eM5zUPT8xfuH=0OPIF{7Z83L;4#Ei~}(es}7!?m}HzwjJF zczHJDX0Mv979??THq44{F$mJ9ER!{8rHq~Xz@O|e4b`wrG5fe5e~AxJ zgnvv^LJ}tjg{s1F+hfVtvODQF?SMRNKjf78g^n$pX2S6=m>c&Z za9io>A~Zi2X*$a??zOJaAg|3Qt3K>itkwpPuytSqn`Vw}B`5T#lhOnu z{$?quIqf8;vGt^u?WrCbu*NvlYxxVL*4z|mZ`q2FQF*`KjCEBe?yUzjxe`Qa1%Nje zz%sYZzs^j{CICKI!5QVfX;F*6Ec~i3OSg4oE7jM3D>b`|Wi7V}z8+8AcQE8CD^p88 zqUB%YNTC?t(5>P&C<|jBWD>`YZ;Ks|BFGz$+Ka?}p>&6l?`;)EI4^p4?jhQzD(FjY zztwLB6&`T0JUS1^Ev+z9w#EQ(LsDd9D|ucBE(ATo+Fd>*Z>=g}9R(Csgi6~mEND3E zzmru2^YW0VjSm;T5TVjmmkO2slEoY6eS4@uX*{brUix|@_8X>+T%#@r^A8tGvpMUz z*nVMNf+Yc{<{MPNCO6#9Y5LG1ym1%r`~wR8xiIDbpd<=lk^tr(46 z{DRQAh2l@GI+oCu23vIbSa^B`NeX}@hb#3^0KpQIaxE?enc?_!5}M<6hGk0uz9l)K zuStC~N&$nC>nO>b+?b~j4$xL7Bg?Y#7$v>(G?{y{d<2uYM5XsKfOa~S-k0We`ry&{ z2co(%Rw66m1%1uY*(}|pybPtjBP4kHL$eK<49AbD<}BWK#sM@=rL|NnL{@O~Xm#9R zQ|?bMr#=`QW6NEYsv+ya%q^Wa4y7M~Md`mJsykU?`4c1PhaZ-%@|q1Qqw0qVIHLfs z(zx7$Xy4L9VE+b2v+HKB4I$NgufV25ax)z3|N~4yVG<L{MYmMRwr%0Q23(%Nx_cmn?Q@#cc9y}1ZVN@F-whB~8> zagr5HC+DENaXkF&@qU*PU{>R~an?`5qCeAMi4Kp`_X>P694R0Q5j4A2-fmzWCNC1S z&Nr`F0fthTyC2K+BF}l}{V6l^0HyY8k5&{*P6>(Na49Lvs~ICrOzL=9?Wqsa2P>~u z5sTp~7UmxmS9=L4kb;~$@z~s_BBkb0h4)wvEA>Zu#QB}7I2p%Y963o@6zn0R>Y02V z@myl{wVwAANG6u;IAvL6xSpP%Z{@^Cht^Vwb@=jE9aR=I)<(>2?UEoEC^9Q8)wO@7 zZk_dBe`v2Rf{w!4zoudKW3pUg%OsZ8)5f4Y^`^_uZ#}T!9KAIDp!Y1_Uc@UaGR|7r z2dMupS({26sgK3lhorG<52v5yq37wSFUo|%mcOpyz!cEUvzz){EH7HO+gts`@0+yL zl5;xEY@>`js@99WX7yg`6X7XY{AJP+_GC(R_S!0Rgk;DcaAGe;A}QNF3lp=% z-(1v=O6?+DD|^oRHa5a^X-vQOm8bPPg$=))`ifUs?RIN~#hJk6Vw^7f>ar=3C52g_ zVzXg|U(BE(`!ac9E0N#$OM`7X-lV`qPX?3AH8$Z?ee=x_zi~cmb(v6Bo>*(Du2+Ta z3N-BNnhIs_(UoWE73U{azEk~Ea@Ky|5o}E?YNZa2iHUW95C%Q?;NT5#^V}g*;56O) z?pUF`4E9VC{a3Wxo1P!_WjqsZS@%^dh2(TIo;Bz?UEPYf{HOWy_6FoP^(w&pM*ddY zx_^J;Xr)x}#+xpUbmtUNyic&})2kV#;&Ru{_rl9gFf zZaYr~-S1;IRSUk+cX$V0(|m%gc2UsHSa|h%BU#1cPV#U^NU=q{03@LkEIbk#4d#PBRb3#yEKTe|?ie=tYt8@TQw^viH7KKd&#b{1@{70$5#eI0!R&yLRv_w*ry>ESE@ ztLbm2u|3-h<{Xmjsf_`dHU}l&z?|0g+PtafHIBs;zzFXd<$u==(twiZq zPewq)RC1RZKk9mE*O_a(kGqJR-Xa^hv;m>DPUf>5~JTpX7^e>g+nh};kL(rF?(r>2q-0DWq|T@W!@)PFZHvz&gVo8!W@ zlhx*P;3Ga%xzZZku-Jd)lNmuO(jI$u=j`Znb#^tEOgzBO^X?8| zE7-8NyzS>jlKgyiAuXHD?=bT(Syh!32co&I$2MZk4mx!5zZDq1P2I@CkF=jqZ6cx^!f+bYeoHC;=4Snk3LSnjef)2YJnr$i3{mZ^iA+du6F^y@o5s^fSQ7@vG-m>Rf67q0j7PD=dyYF z%f@AeGAAuoR;aA-^rdNVwq%fp=6I`SlBNU@2|oqIot=w4Q_cRZdUgeA{!1K#Wf;7! zJ3ya3!z@EGHdT_{fP;KG&(kr^m$;&YOlf6cwe;<%=y7^NO{%V-EWrfh9j969LF2(@ zGYM$q<~w9`@q68C%Z&7MkH*rNCQ>`jE9pJTjP==8V1Mk^J%IhGa+S7ar-_Kb7cq!c zQ6c|fI&>hsv`m~@!(BDdiVs<({9Sax@f3*V*eOh~xkSZV+8Ef?US+(O5h zG^Fg8v9f#_jP>xCh=9hN`IqZT+-ZMDB7a7V>h;5>M_A%b+Xk`#9cFKx2YbhN5SCHP z+X}RK%wGZkE8Co~oDV0Dxt-S=N4t?@x&ug}D^1(vc4J$Ng%LguK_i|x&+CC2$EL8B zInHd(@9k?JxpCS8NdHin%|SvS{T3#PhIAR!V@y~*JRCSu zwM;49Ox*&#_QQNh4Yai++U5q+bQkRf&9CN-(2*Yht?*vPskpg9EYxGMHhbE!D!@Sg zr*@YviSrqdo=_uJdHfy6e8I_=-Zf~!Nivoom^(a0`;>|MU*yI9ZB z{*SrA8w?Ka+$I}s;*8cL20qNhm!E{#WDI|pRg}JkeFcBExX;}#($Rj^=aO;qCRO22 ze;I4>BHeYWah-`aG1yISOT!!%@z(5;wpN2Zv2{S4m7D+K$0mewMCVsRDg%v-lvi!! zxD~%foLn0w-#8*1!H0EcuS4MT@7)NUjecsJRk_HlEs~L1XcdO1F{o6L)$#mj7;Rjc zAdVm`6;z{xTk=@yxNeM#sDVcu~mO=+Z~1394Z+8xHj~0(@Lq1{(*u4)?A3Cm*x6J zjEe=9Al^N6>P+*OZC&e@`Pq7P`Jw(ct*ES*IK#y!&ipBJYkzxI0pkICrQ`q!yn5;KdHN*Ued(G{A?4>{h`uf2GE@e>2_Qp*4LeAnAR;DOz7hI)Fh zPx-72Gs)MXA-tYJ+e?zc{SCUpI}M-O<(_>pe})YH^``EtDJ+r@Aiv(b8i>Z1kGg=F zJdPMEgs`=gk~}v;VhWVOC1HFmOZqvd@LWq)0*qP3PxTu%7#*pZI zhF$B=lD@7PGuH&PH#=c=7wrM(RDibEI`_gST%)}E0=VcQ_RRTK7y=I;tK!}NNtQ7K zAIOb{W3?Ml(I5)Q-lYMzAev^3-BnoiLM5Sm)X45p6qs^bmyXjN@ny&(0x8&SN}+v9 ziXY=PA#C=F`RO2J zvBCr=-qBQ>{#fKB6%|s%ALs5vKS=!z$m{6m!?uhHKrdRiBkB}o{d6JqLV%qR7XHec zqZ&yMXA7nD?XjyNl3_MyEGC2auCN5?%&Fo}>z;2xfhExZj=9QyPS4lxuIQZ)9kRGx z+>+4hVP_Pc5O(b8qZbk`L!ZTI^tjJ=&u%wU)_s{@IWgkS|V_irGA4@cXG#m-uGfa^_0h^!vO${b=XV(DQG6d)dM9$pUa*Bq~3Yw_@k za0`p@@UwAqi*R%MTeT|xKLXCKR`xc&|FZz5F!Bu`K>jp>rmGFa+uXw%ByHttVNI*( zY;J3po)rbnmL`r=h%t3L)*=5WYSu6#614Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>`T@Ck7(s%#9%Yz)b6 zEUj(~%4`hFZgfv+@}!4j(%Kk>69%8&fnd8=5}8HhV3VAOj~!%Id6uvf0LMZL({z7J5Jn4?O3fA z(dm@fq!`j>n9#2h+U}Uxq#V@r|NsBS>FYRvfhblIG z%v{JRkdTy?FmZ|#)1@^$MnRiSH1GyH_;`i+$(;xaVBy|i+;LJ{bM=YUr&g`Z&d54> zs)&JgOKHj1FHd<(c(3+6abyaLk~*fgYgyVev1wt~xD*&8U0tQ4t*hDH)zigYCp4^{ zy}Nz+^zHrY=kGW3=w4OnkPuMdkr7eRvWzJ}AxQgFOju}`nH5_KXMjSOR~X|H2G$N{ zOUb0I0WqhJ9?Cy&nOiTJ zTUc4xd$I_#u!2j2$>9`c<;@`qr*B+2apcSqnIr6{8$1?x=`p+#7cBYYWI7dS1%s!n KpUXO@geCwPM^2Og literal 0 HcmV?d00001 diff --git a/website/static/favicon-32x32.png b/website/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..f1efee03ab3cbef83577a5b041c102fb9d599fe9 GIT binary patch literal 1533 zcmZ`%dpwj`82(Uchjz8tNl{ZFmeHsPT{ap&cO%BNW*f$kA~Tv{#wFkR$X!?>*DfpD zg?2C%)-|lz&@Rm)^HUl>>qo6?|Gm1Jn#EF=Z|v|ogA&UV76l*2-;#} zO>{;PC*7On&`c~&`W=N0{^kzm5LBL~AokuUZPKir9Uv%N8-n0i2wFiYcnX5p1PGd@ zLXg>Y2*NT7YEB)6AlYOmd$Q#i4~|8^l^B2kX+%eZOW}YM2>|>rgVvFkKeu4u86+*( z5gm7sxY(fHE37zP*| z5W)qven8h1(R4wy$cQ!>*+)hQo`_o@u=4|Ij)=rn@&K(t&C z0}qr3ny&F?{#oiyF<5(8$1};qFB5AI3_X!;_Q1?PvwKi<`$>mAyKv{JSbJ7s@5r0$ zzqVNh=Ni#62F7RB*VpG4K9)6fyGQ-Jha88sgNebpuV)vg=NF5sI!R$Sb~#_M4#_X9 ze75*;xmwWY6L(MBJ<*ACqon5f%)7;Ri%aECgiP<%YWO+sWxUKhluVhu*=%eSZJ!$JZ8Fc+SJGi-PXmn~`*DEO?xvai( zU~y^L)GrfHNo8hKw04gyEw2iMqj*Zn{vT6WS(VRv##UCv5{V@FPQwmTOjKS~*MLYY zUK6iLghNxHsK(eg!t!z%CNayyv&}P>>Q$w}hZD;22tjbBVhU z3idc7=h@(Z7joz{qUVMjJBv660Cf_w`xN342uvsl-W|z#B(op=ulg)!M;8>KusccBM) zmW_j@{KTejs8nzI3-e7i;f%)TO@9a)Tg!r}35qEx-i0v)=4)^-PLF}vqL7x5l61A4{~;w+ zA&q2hA5uwlqt4_Ne2Xp0%Ptxfsify#(@6m!5eP-s$Cgxb$?x zt!nOgiSfR9dj69@N(HCu@!XK3^(c?#&slo-D&lBiVBOMNh2dywKlzDlRyxa+GsQdN z(J?3JqP3A)RB#pxnoi)(s;>WCk0#mm7lzpaCR3!J?me2Qbdsn_Y^tuT%8V(S6|gn6yDX7}v<=ZnWH_twmRL zH8OGPJpnl|@j-qNti4Yt64&$5C)Z+Gda!)GS#&d62pt9J0O0@uPcX(C8j%SH%?O5O zhQ@k?17-xmkrr^_KZ2lO-vB@E{|jt$O?y#+dpOyHM-?TM=rmJ#&?_JtOGn~E3o7ytz75d- literal 0 HcmV?d00001 diff --git a/website/static/favicon.ico b/website/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0145fbfbd5b887d60a9edca52036888a7d3cbd0d GIT binary patch literal 15086 zcmeHOX>?Ro5^l#CJ@aSAIdc>o(20nsFerM|;|!ysqXS})Eri8ELVyHF!X5}DguahO z!j6P}7eqlpQG~DvVMq2o5SAn?VF?KkLK3po)K{-xr#s#0yoLtCIrKS|`}*bGcfVV= zs&3t?YK!F&%cGWh^(@@_S-yS2VtLDAvH1DfzCU5HoaTE^aEt$U{k_F9f**K^pW!Z+ zAST?GPffjX_g7i1k1>6yl$xrPwvFka59kQLBb6!52Xuh3#WTh?n11It2mbz~vZ^uM zUQyAJr22)D>J{Vz>OiVTJ5muopgx^R#SAE6oT-d6l<6_df!javy;&+YrbKlQAT6*C zY0aJ`t!Z`N(5KZ%^940~hP1ZzNc9dT#(aY**oHqs4T;TFA^tkvCQtKtf2*9-q$+7G zo+pL1P%4S%P@CoQkm}c!wC2w-=1Pp+;3?+t*_)&WM;Ec&MDsj~RcI5^Dl^{=>_*GH zR{g_y4YXgBbqHx4-)H0poslFk=zgZ1o{6P&KJp8bc2L6r@@!wO~gZw<` z{CAZ92Tp#f>-(4?{|}u0GJg0szz_Qw{DDXNqx`Fqx&!;FcyCeuReWck*|#ahZzZks zf8FB8xZ^t1qo3pZ(WH=n@-x8U-99m_`Lp!H*l?N`)trX6_&ZrKk2~Ef&EjXQle_+# zZe(4e%=4#d)8g?oHLL**ZCcGVKY{u9Z)+$&=Q;@Y93eq~l+$_vgR)xi@$|t7*v>ohh!(i_#zK?3MjBi=W>+ z_VZWh#O`%eRB+3V0T(&fGHCy=i|MQA02&eST)F%l+N?SyE*e9**;k$V7v9RFl!IGn z`Gj6HrhQ$JOVc`L62HNdQSEBe_oKSnjCw*5li4(&iATfg9zpTk@D z(VWO8v}@%&%Fevt)W4{(fX*lHqg69vXhQHCVkaupF)#6BeIX|!18dSEtvwyt@-yY- zTyw%vkav?#?MZ>$6C25^jM=|}SiwWNJ(zoDF~mkkKgLe9=4?V?|%44`pAuQ3js zze>+T25;j->kC$3E@te;2Xo50kS24S-t$A&F+O)W^q1?~#qaPQ%wrgz>1Ou%n11_d zmgqGz)PNzF&K=uBlS2RH*5>Ma%F`k<2`oG3PwXeilH=z_=0#e{a_h1VKEQAA1n-7D zof7sQZTx1e$c2I7R&I{iDa_S)zHAGf#aza=e}#S=--A*QZKL9%LgN*@Mk8g-o%;C_ zKV<5YDs0nh&^N3bXOni@$2Nl>xMY6JgJ}^T(4N%`oowCu1z+41{Dw}CYWFfN9o>yi z?pe>a>82e!F0y(3p|39MFLJ2s6848V{hQG4Rr6hJQ*ludt(qR=Q~btykNf;p@hj4f z>~P{2aOYgR!h6FKn$LR!@Hwu%G4BxpHE6-$*0Lwx%+5kL`={_$zR1x}6MKs-bMZHB zLw*c>o7nj+T0PrJ=_e05$tiUAdd7L$xuWdetlJ&~cU+rVv}8mu9ovyW`8Tuem~nB7 z_vYlCYw5d@U1(I>mxS-==Qw}4_6EQ7uSS!*y(9Z*#@Q28Qe12wx1^+4e51`vCeqaK z_ucwNShF$z`-kY~>HV9iAV1gM9~ao04{iK`zP7fr`$leY8}`pEe#Q~O)%^q56f^#oBmT>2$7#dDIN=F!xwlKDd$n8an1fmVGhd;vdlDAX;^7_HKdV)~ zP8qx@(*i%v4Qp8EP5WnM-r+J2llakZDEkP&AZzT-7F0M^HSw>-?s||j7mS|X>ji$V z-dpaNZfsz=&-zY&e1qKt9&hKuHcjSFIR4PkZT#VZ zz^^pYLOJ*1E8X%|7H;c#2mT9w*H$OFTEqE4W1DCbX|&q?=JK0M%u4-;6M)S!NhU(J;qYV6=bB{|5-z6OjB zxudXF$iZhYHDs#Fb4ZZ7hoJZL+5yZF_Ovn)hSlq zTmw<0`g9@{@`>(KATQu63Te#yB=0j`lRqK9uEN`pis}izXEWAu-2MgFjSqjX#`lM_ zKBTZ*ah-=1&-#v(g1+4@m2lrorUb?m$n-}8_cdJn*9W zhkw1`fECX&|BN;f-Q zF4eeqV*>}q|BQ1&kcG(Z_hEeI^?e<`63o9H$LIzROm@Hiw!FLf!D5)0e#^m*g0q1XkpyE}uCr&mw+(a_nvB3+c4oS`q zxy1C72Pk1?tW&%YIkNb!^(Fq9aVA+}*~r(OIl7Zp#7AOg$e-Er zDR>{=i#Rc2{Tsd>E%8>p=0UGRK^!w-#$ZZ6ae#9eMVt@dSo-P1v}TTyc&RZrkrBK6 zIj_I{8Jnztf8e8$k2)dwC_PtxDK$xA^jHV<(=k`!b*f9q(WD;SD)D73PTJuedOja> zH!=URIDlbD<0oa#$F{GM^+tYTT7+vJ%=*bwEQ3!;9R2ix&GPJ3j;$MUUT?<7+`xlL zA#c;V`NQc_%28b&IG35i^RvGb^Jk2}J*E4*oHHFqSI(W}^(qz_PTIbbMsvM^$fJq* z%ez>%riM2l4N;5bYj;! z&O3#OO|kQ|g7J}inAxWh?c{ot>??X*19GOvcC4nwBZ4W;9&fKIwJLL?n$g}hi=_4g zs6 zpVu3?dE^0iulh=CYkBoJ;QQ=;{scYP{=+o$c^ePoBVGZ!4;x%z4v61_y#lg{wKe3= zzRrBl?X}18(TDdm_$cM|cf8Nmq8rVn9@AouL^>BP%e;fa!BXhOZY)8QpcWZSw?uq}8-x>@$ z%yp&-5|=@oQZN9=T_lW+SXV?_#4aW=)n`3SQi$WUdRg}c;g5Pl0jxh9gQ}Qb)PL&| z9>`~(nDsn%4ci&`T|SQ{szH4V)qo!4HL(suk4#ZaR3^uh=JD9IFm@tG4Xk=3=AK4l zFeb)EoC0A9KPG#ef`4mP_M-+x2C4AC<18yTn6jOz@eS4G<6NdZTWehBaa@688c|L8 zjGwMG_w!!H@w=XgcKh_-lH8t-s8Ihb=`V5(KhgC)`aReCqLU%$k6P@fCFhO$3fwpR zPF&;6V4Rm+bh%68EG-y*BF+}Cvmdic>MW*l4VA_|7JS9Eb2O>l!FdO@JWgjATYu;! zY9(j(ZX~sRs43gIVh+vXT0i*d@b^#cOO$gHYTn>83x0?G_zu4Tgt{EmAftvEK2Pk& zf0bHO`0zKcXG%R1p3@xrGY?QV03T=f%K386fPV;|40A)xAZmF~3yd?Q@YR?<>pn1{ zHU{Sj)b*i$2>bWcd z#4qdST4Ms7GFSe;@XWF8(kM&o^by}LM?M^%b$8vl;T`v9{kbT=AN1BXv(Bloz+-Hi idZ}*BG9ZWU=|ep>kDR{)sjz@F_7mD$@4z~t@Bab!?d6{U literal 0 HcmV?d00001 diff --git a/website/static/img/docusaurus-social-card.jpg b/website/static/img/docusaurus-social-card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffcb448210e1a456cb3588ae8b396a597501f187 GIT binary patch literal 55746 zcmbq(by$^M)9+14OPA6h5)#tgAkrW$rF5rshja^@6p-$cZlt9Iq*J;!NH?5&>+^i? zd%l0pA7}Qy_I1b1tTi)h&HByS>tW_$1;CblCG!e^g989K@B=)|13|!}zl4PJ2n7Wh z1qB@q6%`E~2jemL!Fh^}hYfz85|I!R5RwovP?C~TGO*Io(y{V!aPUb>O6%!)!~Op% zc=!h3pup!KRwBSr0q{6*2sm&L-2e})oA3y5u+IKNa7f6Ak5CX$;b9M9ul{`jn)3(= z0TCG<li6i8=o)3kSrx^3DjJi7W8(8t_%PJ~8lVjC z2VTPD&_&_>060+qq1c&?u#iAbP9wbT2jg5_aX>LlOOXw|dQJ8p&2XYYDc|J+YUT?3|Fxm{f?d*1vFWPGwXt8P3T#_TQB*NSP3+0+ndOe%v- zTZotCfofsS06&ki{<`Cj8{s5jFZc&1dl<{IBW%#V_!JjOm6+#&aRi;8ODL(?0fENIOtiNXjMhdO24CeDB#rNcC*<=TwpueFfx=2=r z-lt`qW^;vEFji%7kO25#YkwjKyZ93WFbbY!Q6-@Jz!9kqj>xgp2VhEYyMJwMYyHZV zG;7!MV>54LS*F?==$6(Z9S zfrEy``J-iu6G?#+q=$58MlrE}+C~G-hEMn#CuNuuVV;8#FHuD_feqmtfw~Ran|V#C zy+f^&q>|d(X{ubCVWs3Ai;Fz>-kAk`yX{^Qj_xV#NEV8oxtfCsq3%uYN0U4+Kcu%j z?Rzr+fnu%QVSgx7Z8;iqDfklVK3tl(C|B5~_ywyQf&|IJgyoV|q( z<1`6^2G=2%pTX$m#~!Q-7f>sA;n6 zsy{fJ>o;yxpRCMtZFb#E)dl;n&K%g;H?#HaC_HvnHuqN*d+9vB7ZNpfqqTsk*(((>8<~)=+HX!*Ss3~|# zShAf@XL@`g)$G$rAA9cU; zk+0v$7Rl=PDs_rN&*@^DQ<3}LIqeDu_8cvBZoZQK#xaB*@qDhG^d_fYSBG@Y_wC5B zy{FTF=4jI`H0PRGXlulcwJ$*KBs^);$y@AfTWB!przp%+gn+%ZU2qD$Eml|2m?K;y zsAx49(J!Aq5lqX4u5Rlh{1hD6V?uI0-0}%=eSBZT$;aWCJrM*G=&(~P~7QxUJFlHF+63{SfFhWU%gt&D(4Z~X54CH?JsJEHzO9{;5# z5f-P_*$Y>=CXYL(i4Vw1)$Y&DwihU}jeLyuS2hQ>zS%^7!rET)y)?ZI;W^c(neZ5; zcYHr@l=i48ImXZ(y)o<7>Av^Nw!8t!KDn{67gef*G5f-&iZ;`G@ej`@uBTkn0_QVc zw|RGr%!y|LdrjWk$H6iyi9+o%)D%pY)DHt@e}~ z-ryeSdskl$jkA%Gje(z=CvGUb4lqb$@>K02q8; zBpGv48m)G3Jz8nD`*7z;ch+s~JId9q{~KmJV4qG#VyhtwGh1U7ZW~XgF&CHVcfjI@4|IAMzt7B{D4ttmRhW76WO-cP6HX>7cPSIon_Pic=YB^cwH;qqm2b=+@OjfH55;lLt@>%R&7MejNBW98rLJXZZQtF zmm<7wrV(U^X%O}rZp($;Nb;(nTO##-Fk_K%y2c4)Yt?EsKDLVz&SyIxmRvPYUf)~A zkMkfE4X%Dz8*f>*I$-5J)wLSdUUaV&xP%U!WXidR7*F!E3|fu1supvKyq>T*84`M& z=Dt)zp4h*&a^3bbAWSy|{$~mRt znU?J9X@W)z1+)2SKH;RDEk{C{F~PxzePOC4k2I22=OxAKZEhYTo#jZLnzJRvL-#I` z%_%U{YhbA5LxSuc7mb|<#t0l8BZHy-cvj?r(|M5YOMU0wJ}PLj6z+91PP@u~sUN(0 zoPkUiqj+}m^;#5WI-p1sl3!d`><`0$1U4*Tus{#@{oJ~C_^ll&fIY{RWHLB)Iw~-5 z_trhoc*;Xx|5u&|7Q=~%>SU9dJXt>XnSP z$}G4aR=bB#EC~i5U_z8$Olb|B1Ec2J6a`$P64P%*8UxnscnAmYxki;vGRSH!M<=El z7AwT}?l;S3Ju)fk9NDaW<~K*9J6DCaimLP@Zry38*StONeVaYg4GMSV1sb;$0#63E znXJh6$=|17p)3iget{zQI-ZcSA4kztpbVusXh9 z97)P(^GVx?9}T_w+?VG}Hu2dxs!PdI;c!Skm{8crbnUpgGsmO6Y~0f~`3af#=;}JO zs+>jl(}Ww@TF9nIIp*io9|Ar+SXKeoJ2p0xqq^dDIUaz_3UMRe!*?g>RKH02EKY^8E=Ov%mKqCKc_O8|58B$F z2nPy$8uP`nq5-GE>)_IseB*$*+;W_EcowmS_|Q%w=6aW(&AB z%OtxG-1&Xrq>E%{bjzK4kBw z>Fssz$u`@4(H4(yPd(wlj>oT~6v>IV?P zZDj-meBV3Xh&lOz7Q@p@Wg;VMtEtz0tWmBTlY%+n#pR{sF{)xA5u*BuDd zu~BvH^44yI-2poCTSulFIMHH|6$HIN2!U|l513rs>o5b7&T060H4stH!Rj6uhJ>*c z|EXULN z@Ms{ehhc57nJbz5tP(eS6gqwNx4;1P!wL~Xzd!0hhz^)}wUrh90P!E%NrcHnd5moayrW^mwAO&F9eVphr}#sl@u5#&@cZG3Pef_5ki2d4No`s`w>3E)~NzQq~(%!wQ~iX zS=!>QgW*;6d%-30eCYi-s{}L5+4xRvjRMVc-|_!cJZOOW|D`V>G$9BAul9zT%D`1W z9M}_f^IBfCT+$nV07$(ZMgM6Q>awY7HarX62K->7rWiZ>Plf%@Tc$X)SUE~YSzKHO zOo@t904vq~)2~8z9N~Y(5ghjQaweijSq9}$13ISo#S19Gyn+S8<}IqydMB*M2Fv(F;m*Z^NjCKA@hf(byh~F_Wz8Y|LB9G zj>CREj|u0+^+~|!q^Z4wYAm~DH8vU0K5hJLx;^WW) zn1WdmfwUxh0&F)Ge zJJ$CZ;Gif2pJe@g3jR{7X$9eG;iwp*gh^4;#?q$usU`sYWi;VGk9zUsuxLCqS?i4> zU*!nKB+RzHh&TF;OaYU1boXkFHseTZ9^7*ClUf6WeOAm2`Zgc?XVxs@; z3fyjS*rbEGB3x27NK$sQDLqTsoYX+=I47hKrjQhxw>;|F(o#M)1Zs3=vHf+{4*=lU zQU(~L2n)P!C zOzn-%j;-zdo*A78MJ(b}aNl*Pd%bH4<%$K3cP@a%?zXvnXr7tnRf8PyxM=h2%x6XV zGm+MfF#t#t=FVq6y^o&};nl4gZ1=OgS0W6oT4??aAn_EswVeD=G?0*F3Ky5X?YMg! z*>m;`U68Bw-j3*NS)Xv59AyM$#IrAaBLy!3%T~RztCkOyD`0Oh)~c45m`f(fWkn+8 zFDQ?ehB?iesKfXr>kR(d+^nK;|$bJ0BgK9l#= zSZkY0hNH`T%pTpu&S<)sN$BmKep32<*GjviX5<~dm2S)BRn}Za<=11?iR0CbzUy=Y zs!S!r=YBKN!Hvrz2HB~apVp)gQ@jZ_C@MZHwF>*RQt`RvqEl`)rFXy;*9O;aJ^+IS zAuxBFkwxDhrD+zs6}YE;!WWE7N;x=xxy(hv8tOrT%;~evWtP_;i-tw#{=|s|_1gD} z+$ZPC>;C15y?f=k!B)}XV?@W+W5Jl7E#au2n|eXFYo52!7iV_nr>%rHTLnmp5t__ zeQ~n3Y!)Mwq>pgU`A+DOtI(5{uM`!T&#y7{XqPhrZyx}q50{b`55VTpH9@&go43WC zqZc?IJ_ikEfm4 zqiap;*teY3XjF&M`E)w#v0j2fK8>&^=3ARl7X5?sL7($cGUyT(&GjZ}T7K}UWUq6o zgZIm=(`C|a=eg_1ZeQ8aAv^V`3$rbeo%f|J-#teM&do=aJ4+|bCGzXl53;$~hV*A0ZA5ycpm&br> z1s-woGI3ag*H2HL@1`7`+#zk!nQo^`L}FmXBF9_OVvslb3Qd{^lg7NlT6j-eh)ldq zIsckeM z_udDHz~0vrwpZ3KkTG;-vI!dRfSCp$d>Y)?cj8N5Tr%KDYlI~&_w+W~Esn4I>jEK8 zFVT=y$0H**Z{;PZsC?US7QBb(=tZKtCHDjvqV8L^j>>H?^4A4kTvR^*B7Ecb4?qFk z;I3A-%I#4)i|WCd)!jLZw1itTxsZ$F`MsNa(gzoB&z!Z262^le=~~4I&U`Eb`C+z^ z-VqlxQ;MGC=e90n>dE>aoHV5TkqviF0s?l+z${VoH%t8KFvbH=8^6e$^AlVGU~39o z`MtfitBvEM13&NqqE=`^fHwS_HEw#UDbHmBR+1A|sO+c44k$ zHR9{S!q-(m1a+=}nRGQkrWg-S#Cg;_7%!4Ry2VnE5r>E(^0Gl4^r-P`1z2qO@^9(pRjEp!;DAe7B)FZP$pa4?IWYcn*v>YZ(G2ETw zy|C4)s}8H`Ddud6ogaW9O%*z&O_X=V^6P+mS%uG2EcbTZmk$RT3*(0o4D%(Ts3kn3 zR^3eYF*}KjX-S8m()tqnj4;!Sp!Ho z(7&2M@h1HM;%Et+(u{~Toh0sg@7K`vuJ8O(-mWug9HRvjKP2RmGqWQF%DK(bM_*a0 z>f3#KhBt~#=bL&FWEC}JiXdh?Q9fn5e)7$+{?1Bdf8>;*vDW!BMGjU0?$JBadm(AQ zHAmi$WF|HJ@r5-F$f^VPE+X>suAfbT1DUvi%}6k2#y?ZFyltx!?p zAr?D|oG4gh_c+U9sb>u3LP&?IzmiCo$x4%SP!Q8Q(jEtG(-GPNIhRV_K5L z7Q77k6Jdl2*V9zOs=X@?=vUZ(27Ngc&%L;RjmxGl273=|7++0XC*K z9Zp<^Y~Pm)w3D*jwEo<^OkS4Y<#>lqUb=O)W%Fa5t!Yi<%z$TRIO#_Z7Q3QZ2H5BD@(x_63h;Y($5taTf_%0;ZvK_v)P3}%^YaRF4ri60UEoVB z9tvN{)Jtntfs9Z(yp!blwx06#5$P9W8ouO?r4Ila4@;@S!F4qL>h!`rvxwm8$-&c` zq^<(9nR=GK@B4e0qjX45ZoSs3?|jeZ@13@KMK0R)%1IlSsLp0DH)BFK20FoEM2kwW zSasI{O!BwCJ+a#u@A3ot$06uqU?n&`1G^@J*u|t@Fqwmwe+Wf0fpg%{_PCq6A2+)j z2hE=ehK9p~efCY}}Fj~mMr1Qr~qOdueZ6a_2SDwHZ*lG#r|D%`UFa~RYpuWgUN;*|PxsXBBeqTj`RJnU2 z9PE7zrU|}#_j#k%TQeT63k<&b?|z^RNGOSfltB4MjA|mxqLrdoZ?;jS1BSRxcR{3 z&%l5U(~v7ESy(7pNhyb$1x}p^+*ny$*~6KoZMdfentT6QH1Dr`Dd@U^^%MTqyRNen zJ1b!yKUiiizxRn-n~&g}YvqM*{G%USoM1&>P*AuSldPnqET|FpU!M=af1wNq_3z-J zu56ng_&fk$SpR2Tg&VxTY(oJPP3gAh>wSjZ5#J1#nHbkU`Cof;dA1dQz?$+;E7aQf zK?$L1IL6d(9>vPMi+iISD+SJz*W!e)X$i&Pwc(XN-;gZPke+O!zgm29u4?v!xUP9C zcK48Y@K`NN;M7x{1@te z=@S`oF&M(3^!G8wji3Z4u|IZUp?p~QVc?q&l}!U>SAWC+@B3Q=M8Gx8SMIb+e*r+q z{Yg@g$}_Sz-mgRV1*RA!0Rj$rc-W8!5u7m!h@?;r;RvN(6Nx9m1}wb6UV=69pH!1u4ND1C3^0#GV9Vk5v%jLF1iBkM+~_oe#(k6e04;|1 zqVxcTK}B~<8@cW$rb+NWw4LZ7KVGkN-UHS;bD^cK+2-3`Rj^V98<9f`kPTuKt;S`5 z?|)V)15P$Dy~TG^p+BRJpbTIN2fb57!5|jT#s_X^pnNi>exLT+xuR}kI zLTF>DrKH5As1d;xUMq}JD`rE#xm<3PV^bKt~*|K(@>_s$+l6?PG9c;I$Y$I9Wx zA;xF_MZf_#OaTl`qJ^-80rMXYZnX;yHMnC5N`v2j=zq5Pz&RPG92*Z}aj95Z+R(pq z5>Xr9FJ8qsGy#`dMOy$X4%|!w<&^&whNI5zri}lV6#?4!$Ljbv_f0<2-3Nu?974eOh|NodBrc6s{g264H^#+vv zkI(-F!??JN@B<(iW`KcV-0ngu+-@)j;0A>UFo`kAQKI6|7gl5B1rI>b2tj!?@U%?! zpFY4#g}oL@l|*Hrm#l)1qwa_0RO)Vc;oKlpABihvuq26}r$$LgB-%uwqRxuRrpyG- z63Ji#aENg52nfiiNRQwVk-^yt-aSGBkWsL4aPbK7DcQKVMb!z2h+ndEs=YI%qUPWc zQ>IZ-)zB2Te@6Q%>$!xa)SLHy;OQb1@YE3;2Jiq}T8Nyd)7_1XLd)Qqf~l-gf<mu~bv_xL2)jRuX@t1;#}dEe+$KYBs8Ozc8vKSmQMe zW+znS+=sB{$!eWdtEK&;U{CqQ65Mz$g8{KO3091K?+PmZnxe)Uj z+Qa!s1zBptH)^y=Y^r;+YwUV(!nv}S<^CwP->`OJJ9$f5gUG$;btdeT%D1lTQVA%c1zi!li^! zRC4P;e}Vde23*`#o$}dkJ+39wA!C@gdHJNz_ROozn%~qZ35{gxr zfiN+FJmv8BeiZfN4}PZY+~4(EHI@`4GB%VeN^dL-nxv{!>bS=G=d1&YuW4g(RYo?9 z1bQp@-L75k9jgsahz$6&S+Al>N$6|(Uspyh?G^CV(>yb-uEMv?{QHK7y|JZHbV$py z%-C#HQ^wHzF5_m4mG%K(t4T}wM0ZA{r9PYV^B7{;x3r!Xhwb>CR?<2{=4)iW>-lFp zYAZW-ff6Srzcmf>ey26kFp~2&CwAle919+v=b#GbfQ_k(^GDH^U5h6Ij_hJl+$cY7 z`$l|J9)NY0%G=H3-AiTp4`ibZCebLFOx0X*^9LW5S-jM98V1l7TC$z>H_cy3Z}AyT z7cVLl@}RT$dt1%R4$rYgTUqZJB_<@D5gGBnLzk|&Ap3rHOWJjl)n=4BT|4ZgqT{Y# zt8otJt6vZPNdUZ->2VQc|t#}@1f$zuiGu7Z`2Eq_iUO7kLfvf z3+3l;rJH=!P82eCED=AEqW3F^^w0nBW|fbIo$+A)nzK!N%82P?SXGa`4vSNK00<2u zG?U_{jq8ikbd8p@c-wd;R3TJ+v(c9o9< z15te~^)#o6%yp?zaR-=9=hVgU2)|jpPHt`JGmCnIB+qepbmFikm>#nfBmU{7vA8^z zhTK~#rjjnUOtV*azuR=2pq%=qDo}!HCW$#qTWyAliZ8Xa(cAZ0uV^tvuLjr-#E|<6 zgACc9`oD!F+lpA=rLNEf$nCx{x6Vg$hB|ia>mt1(@zkT4(zdKQrNiynVbyP`+<(GC zZSyg_F+eKZ$i9krPDP!?9!-GQV7-#k7*{YGhxdf%D@)yd=P%=c?r60bP2qytty%-G zh7;7A?%TTQIkk;cPgbW*m6aq{m1>`^R}`Bmi$Y$X?QaEJ3_Auk*q^L1i~N3dGM6CL zP<_JeZDBHK(^_7!@i}$(_U*t}@%hy|H{~Q{;gP|bU)fn%xGdctI%`>elX|Q^@vKaK z!d+`Jp@j=)v%^wXH{7|-__X;}-BP#uIY3=_0IGNc zu~4o%m8|B~5EtZ$^}=3sv!lGEYU+H?Y3%_wM6P8#*6#HJvT!3ul#<{n9ja- zRGu5okTwJ1Zmk}BqcGi4_;~IURanbdr+P5iXG<{exUhhs+*pLQ^{jA#EZ#>o0{+2Mh|5& za#ugek0I`(zQL#5eLDARVY*Xa(DwdUqkel}vhN3?;f0iO-H(xqufvN&!zQI78i>uE z8>&m)ewHaoGgtXPku_dEb6PORWr~;1cC<+G5K=KBl%`A&gp6C>lB)v5Ri$FsN;P4>0AbJz7kC<~Dg6Mg7fXVHmZhEHpA*eA&u za?3ON*{!W8PYLPoTR+cR&PxuH$lp`AWkTjWWz)Zkn3TIiCEofih+Lm=9GE(9)!Yfc zt(H1<`s=^*222e=?7hC0lh4e7B}PtVI_{cAdxGNtdfZX}Ca>Ti9YS^NB6cCtzFtR} zgaj!>#THZKLuuFqeb58ou+VPMIV94Az9}?pq(nm5%Nr@`CDh7dQqUo_(1Ka~Jk;oawETtB8>b`mRyBtgh zO#hV*Tx!lPBM`YD{&wUnqnt2DkRmgRC{h$?KYyR zNy|HI%;HhKQrs~er!LN>c2+qWT)k%E+~E5H9eFKV;EhkieNbfqMTavz)YO`;;q)r^ zRKcAY}gLEwaGA zNB*t;%C<*Y+tgCdcJX-=MUjGgyz~ESiO9#&b61{-h<+|2 zO;mjRZ}0|pCLmN$E}rD#(9h}~)QpVO*=OQA z#Y%e{>N&D?0uC{dY5L(<8J1$SoXTWsj~6x5e9=~^#nEWa^lWqnid)H7wg`B&H>nuf zicIgRBoFD2ii?SfJ43AUH&TVFO^DDYcT;;?zvOP%hwr9IDk(8n^Rrc$KG_W$S^CCU zJn=ZugG;lxxPrOnJdw}Typ5n~t5&$I{si5!MLacZa-r_WCh{j~l7-Op=$9TV5idhN zglm&=R)0UNEvq|kz+%&#x}Q{2@c3ZLBldp!yX7N~c^eZPht|o%1isQe*+RisbVF_% zc)4$!;>pF);4JrP4@@UX#!&8hI;B{0l7;+j>*r10Q|es&1NFKQ)-tV2$Om$A@O-## zCLqC6viD-87K8StG^Ws5ct0&olMkYox>$?+Dv3O{NlG}G;g5QSmf4?q;BsuQo`^U|{x}>ACKXRkdd^tU`U+|LS znWy0^S2)LcB@0!EdDt(Vij$36^78r3tM}C?KI}e^X9-D}*M!iFT%zNr0Gf&Ck7!`A>(uLE(OdeRwb4qX3EiMVz=vWC3?2PE%-wA%a1ap0C zl~rRJyzSkY8Ag$Lm-Lq^*t1^}+zs%@8si;z!Aaw5c$|~Vez}RpL6m1>KPeiGJ-kE2 zbc5&X&fJgVtRw*RtiMc#4#s3H)KgHzHqg{R3E#R(bk3b8<&|L5d#($dxdtH$sL)Ko zW+BbDfPQKTs#e36Joca~N!pf`_Le7~Lv03)(7sml@e{h^6)?B<b% z4<^3n;sOFVdZ|+>M(^LPJA^2T?>N`FCB!o7f5xo^osCpJG~aJR*pRaJ`|hF>b2{X( z4aKEJ#QV2I?XR1|0J3}|ZH&ySn!Nm=`P+m<#hI$;xz?{pkF56P+%fUR#QbB?5vU@D z`>PliKDIXEyl0$1ZZC5zk$jU4dGg+)S}VQJ{2eA&|CmIoN#1+}`@$?!Mu3F2+9T02 ze0p5ot83?2=!y%bJ6DW(u9o4&WO$pZ4(odr6?FoB7XL4e)f!oeU;7hCto!x9u^3y2 z_p)OlA3aa{6K=F7$1_8Kool5Rz84;b!W+-X$m#2JgTdGR`~%<5^BB{h$tmHspv zRGNoo-aTFhEpL1CiLM*gJ|XE30ntfqZ6RW8RmFz7r7ZSdo2F`+dbIqX^P95F?^XML zEd;Je?~!LW2b^bUTSOUq6$IdZfuOEh#~DDY>}8&v?k$U}JNqeWBw+k5RaOv)s}jE= zQ}Q=>D-=P$ONyT$s*Ds6LSFrpWZV z9vm@*jijy=tPX3=aU<`d%SuI}+t_(ucyRkiyAE)B^U$L7DbCd`ZfC1GSJ8C#vU2#vSFtvhw(~TDanF;rn!a zWgH2WF*ekmAnI0Qm{vS{Le0(+uM5o()7|2IRkMwT_#?fPo-fNKuG}%_?WB5XSGAlb zor5}ub|f^JD<-m8x~AHfvW<5`F`lhl67hM38YaG)q~vy{D&^Yntrm?>4z^ZOsgY#Q z1rH+LbV>KeLE_&Mx4guoLMo);;h{zA@6Vg{<*=;A?ow0;2nhIdN=lYmb%EU~F+?HH zLaoso&FKfglw9l+vgl0wD}L>5CraD=W3%oYoYELRdWj9p+A0?Z!6LgiDg#Eu>Ssf0 z&g1y!IZG_R=3hb@lHbRp(1j)&W)S7%^q<5B2`lgE5Sih9hn&%pLfAg~&g4O!dAzEw zr6}!RX6}Ey-TL;=D!pNqHJX2g5o#)RC9PgCs$st=+TNbHeB0ziMr46BDXhn3@+9lb zakzM5tAy8y(qP%tE{ZSGapnb4Z^LN!*_y7=s>e||+mVpl^pnes7OO}vC4KH*VY&(u zBMQ9fD2JG^z22EVkkJ~(SO;UACk7d9{ug7_|C8~{@mt)aT#ZU+DQOUbF#6axF}^Fd zmhtBwd{#Y3lNT?|FIsK&gZ~-#n-Y__6Paff`W5$GI_?&4)>Y6wNn%X>=Sz?np7Qyo zZH9g7Vq#S+Wke2_L1>5intVG>$_RV=;j_%`e4O#OwWIFnFw^vf``;Nw$R9Y&G7L@Q zEpjyn?t&uTR?$ToG6e_w*elUbNC~oP3@8{6T6R7*{BS$ppthlyGy84Q%jeFbF-1n> zO)SGM6LD+T;r0urWn8w~gEyVb*0_W98_BXWEHC7aW9+`WLmR`7N+r~9=L(~xq$Jgb zc0`M~DlkIF1Q$x214|&HJK67p$TCg(T6J$4SH->xR%+&~^((0Nxq2lp^|OY^7-4i; zBL#gyG5+ECIpe3%Ik#hK5FP>?%G+Pa7_Z}b`G(asWH1;##`0)}=0g~DiAQ%12Cj5i z28T%p_C$R@L_1|{@r`H-3@utWDI40LfR4i!SA32m0qYI@45{@x~z)w#KlJvgXw}%|m zRo=DGsu9QXI-g+Tl7VIjr}mX;4fZ(YL6iQz z`lznb+}yW8^|YL;n26~KwXN#Dv2^Jf8J;RGE5MC0?77MSdMq!OZES zr@rC*vXhutbr*g#pI;TJ7-h(_N3>Ax$cW*Hvendxf#T2KHpKfFv0s*GVYIHa#ER76 zH)fn1{!z7-v31;4FFC;np`(vIh~mi%Kk6K0qRrbY_10$&xciNpno*F#wFH=MCWkdaFgK=U$FHh6#XJ6e393;9h_D1Zj72KeX!pg_>9E<8*a-g z^}Kf2k*_7=T(WO~W~`LQ`#b^ur_5KjDOs!UUZE)a4ErIxiW)A?ryWE_hQ{K-z66() zy-hd_Wf6g>qeoGlrK;PChpG^jPZRHd1~2MDVv*}eCafA~rLyFEm7f|EuG-#T2SgA< zQulXvo;0LIo^229Q9ItQ+RBrWH?~QpcDh9k(_=n;aXhtJh!9kR$kCNj9kJ=~BEU51 ziIB~(jdq=S3*TzWE4mQ!!I|ecuJydbjIPp*Xw5Ghu@wSqzc$S6Ix+3baF**T>Mt41 zK!k+2I%~h$4?s4Ot~MGVS3+Ob?$pC%AG>el2v|PfPf#)JsHx(Ctgl_0O>zUrPSn=nDj;t;8OUo=NMf=eZW`H&)xh@0RbL zug`wD9%>dDMf!g1Mmbzz7-EO^Yys;ref6{S7=chPEbgzvK3Ygwd;HLVo?}5(#ACVb zWsLd8mLOML?j@oEu`Ybe-Ndygs{ANWu zTYi}_YQ<948Jzmju!q^KwWli0(I_g&4zh3T`JS8oyS-JxRIlxlOkv13y^u$ebFvDyZKo49C5A{;Tr}MGMfceW3vqv{k;$^5ymBa8D>MecFsutjT zA|2ncpoEfZ3}EUt@Ng34X@75@l=LMd z^xZ7gESH4|2|k980z_jCp=#YZA)wxX8X~1diHoFqFvh?^Q;)oZcQ^W-l}yf5-ITM^aKZ zdfcjKlYl-&+8kEemP6lOR$P)7OO`b%yP(T25cq|hroP0p;{1@NydW2?&Uu!(^E(fD z#^%)iOUjTB^}P|c>sOo(_ivgq!yorSoV_H}q{tDvSL(K+bRbh52yrU?;o;#a1$BI; zG0RiGi1qO#MDdZ{{&bK@3)dmD(0ps&@XAgmQ$@l-h4Gx@t|NQC$u0q^d(ku>t~*n- zd~721PFdAKA^EX@ux5Tar!^~Q?kN4Q#)8B>%mcd&9luSEH|o>s^4tryTublkdEEI{ zKR#&=Y~)FcH*t4`M?g&TY~~}M>#}&vt3FYW)XMt2n{6+LCM@Vc2}fP)OONUg_(3`R zRab{`pOc0H4Vwb&4_9$Hs=7gmE~%pp$%I+QRt~Z=N*)eeji{_PhDB=gEL1PPqQmXj ziAC29F0k*5&JI!cBe@oy3-j>BSk^9W)qi|x9siuq!?B_AiaL9Ia3GgP?P`@aa0sC%Vx~ z4_H;|sIZ_baSi_@V?ArUq-+ig)fyk1eXqmTJP^R3h2&8I=PKcQB=1Si$Yi>2^`ec` zWhT-zHa%mNK+fB?4Hfg(dl$9ssVh57orM0LPj=M|2|5Z33$ZS1MD#ToTy?*a5E<)o zZ^vgVRHt{{s?S|cu9e|pBs<_KW^^?c+z zVk*-fa)Av4H$i8mAsYz;V>N#~@y4qSwKG%ox#ZW_-xaK$Fo)u_7H+~xDQI%!Bh|re zEIa^~TT?%8*jT^u!yxl1>%qYTu)I_Iwf#Cm!)=kQd!PDS6W_)FgT0q+ohn_P|7b-8%kc;m zg1^9mPpG^{HSkKoxNcleZ|3O*V?9Y(hvnWYam7N)*3PotcW%Kd$xrtzn4cx+@DGp{ zFPwjuW6B=Zy)W%}`8}SIrnZJ4SEixC`5nMMSLxD`jCML$)Oa|F+)t9}6J=&fRyZ_^ z*(>evV$1-$K&$Aa2X9j!@6ZDeqAYa1l-8b9FTg}aF(uUeG0nO9eI}>KD(22{Y3iez z8sj(PllCVvngk!res$*`DI4Nz8|c28;b3g=9C+P-zJQd-I3R2Rjn*zpn2l7K`Dk-4 zq4GHFR>DRKlZC)XE(X!Rv+KEpkgX@Ph)0`3j~T?RfLQbFSRt^V`+L0ShrurdA)6#R zbvLEIWqYfi#>&qP=f_x+*)14zkd8ci08%!rf(xnWtQ7*>#*Q3lqkb5ZF8F>;{gl*e(oha^!C7JqB6_d~123dt*fdvJq(?6p*0LOR6U zl~o@(cjQPyT3~|OL^gOFW$f2uVn7?jn#?#D74*G0zSOzzEpH3+v@4X!>%a#ZdTNAo z02SDS+U^x)AN~i#!qbx+7~#+diA%C-494h3`5HW7V|SpXT!d-y6K;E6??0eZ_5aM0iGa7jgD1?z-2)tt(?%)HrV0P2IbUwxg)d%!3 z4(Qq8t4L!w^x)eVTb&7NdkTc^eWb9hI4uNo=4Vx(!X0`ZmUUTkqhL%zXoLtLh)Z5V zt{c8kL1$SYHBbFM)7D;w($|K!o|>Tg+asAc(_eT~?!65~_r`GLc;t~??0R+=C$8+% zSU9dXJbLgR#?h~h;~9v{d|1ty%Q<2)Xi_iT>Z%Bt?C^@A1-{?xP6+qny4pNWax8sr zh$_z;Rh0)xfA?_O?hY?gv-D6ddJNR4@Y&jc|MeC)wpLV5P2%7;{EV$#ZcqAzo!qmx z?ntfHdsSvdZRqSGv5P*ec0FDX*}Bmbt}B=gb58YCcP~YrMboq0D&KRi(a*1$I=D`) z(2;{aX$+9#~ce9s7Dc;AlEy)1ge>u4P`ls#tV!AH}{Mrf3Ev0g>k_on;O1VUFJ zja5^PD~MNp_xa--s%kd#tw&d-JDVyx?UVu)d+29O8LvL)y+8u|%P4{5!jguGKBVVX zp!?(Q-W+--0V4ud;Ga3@%BC&Ar4xVyW%TLQs?ySqbxoXLB9 zegDO|`1jpj(`&Du>guZMs^_U@SzO2wiCx{s6}xlc&#oh~?+TXf7P=r0OSNAfr7?9= z+=L&!eF>@TAe>!T(a=TM0@E)Zl#UnR35M&^|&$%M!ToyO7X*>OO8DdjGdIhHXPX z?svWHw5|YD^yy!Ed6saf6-1ZQANVTlA1J0y8BhWitD!fgc0O*ZogU?W{Bt5=|3G*4 z0jq4((3_~e7hRJuRM`){U|z**Fm`udnq^RoEE9-!$k5NS%TzM(uPX~_hfO9JTpe|K z%R@gT`}pR!(lNGD0G4yAhj zMEi$N{5aLE!7mDWy`(!%x!PN3{hv3%S)|U`OK02zn;mkigLW|8Cqk||nYC#RM3piP z1hL@Q<|b|GXjZHE1wYf7mwb8HTsHNp&aOo8IRTPw{J4rdTvT7LGO=6`h|uC8t^tE^ z2nXn^x%`~8UdLhe>F%x^KudaWuj^CIgH|`GNqTS1huhCeAzR|zcVN*+D^GZvg@t6{ zt%Jlv;t+k^cO{`*Oyu4vy&A6z3MJqkIX9c1AKljGEZooh3;N(+_BT<651L-I+e8z) zJj{Ug6s~`2z968B!3)qy`JqVw0XcMz?Z)C-ni;Puf&MR5s_EUj`9^N zc;)D0ekKK2F19`-g_u62@O@lqzi$?uQmFd1QaNobI;MW=A>yG|U2xA+(&{n4;JspG zJ-vAO_MWK+!A_SoceK(e*pjJyX<)UFz?T`Y9-H}d$jADsFSt4t`-_TXMgbZ8=s-uI zN}uEaz=#(l8|*5;4k$FC@p&!SWuo}TbavOrfL;Xic}AxxdwTfr^OtTM9$#(&gBgL1 zCgRm~-OP9kaZ(%GS-8HpsZuFAHf+g8Ui_asA_>2N z{}WoY+y{;)wte$I9;{JE2LYtY*L*^DeR{mjQxi_YwYJXSbXjlVYbWV!4!n?iElyk& zy^M>mx?ICf@W0anrFqwS(ZZjxm2p{Ct18%;%=`5whuQRB?n4Dp#-@jXfH)`T4>T}@ z(>zL!clT~7L2ehKJ&TDg2W)5kvy+LcyuryarP5q}=lE*g1$Wvc=HHClGs`X=cHYVQ zV}5aV#pFaKx{*62j~+E^{o=!<`%)BcQ1;0AmTT>}S>h0q=-1Jorgo9}7wS1Vyu?Kz`8EX1p_-4{J;lNJ2x?N3deQ?__Q4X`u)~;kVttI`SSwqY})U zf!AS6{dh$TKArl?Vs+3KubJMLAtooil(z? zH&-|YJnm*^mH@3dxDfSU*-TRgaxN1LCP6qu6!CF@J3Oh0=h9*XU1M@+6Ladmu>#JL zivIKXm3}!-e;8OYA`>woR4Cl#xB3fxB-`Hfqdc^pNib+J^$P$`DP<2hsrEp}I zQ_(``<1Ijf%natpKc5HM-Rbhu=J%eJL$8^zKwH{4agt`@cU1m zpuThV^OMMoOu|w6wC==YEgygQfoIad0O`QgblvY9_mqR|jApUcdy(Lkr*{YU$F~Ua zvVw5Wf>5GNfOcC6tG6U_>qy0qoKn(JYXY~@{Ms4=6*zcF8aRn@6ME~GsrJ;*92N6^ zY&>yh34%;EV*Zw;eUAUiZ&wupmR#g{_0^$e6Jn*c<*U&c;U$E65sQ5)%m&SUYzMv% zL@{=a8s{6R;#~Aq!_0ZP+Tc)HXZ5ttQ41tW7Sc)-6RcWb|JVmk8IeRFVEm!eAw1hE z38h>Y8j7T!0u5>#PY-3{)X9)G95$Wv?EN>(`ptIATg601g<1x!fptG-rH!E8_D@^y z1dNbQ@fN$x9!1XHW+PoaRWA7IS^)5E@W13I|A?-6U)7!w%dBI^uO*pI%56K)#`Thv z-ykObUb-b&0wAUMakr6}NE zsL^B24*0tdMdL@1LP5fH`2~=$lzpVC69|=}~RgpfhWupn~ZWk?Y`?*YnkT_6$PAm99BukW^KI)qfJ>l z7gXMiPUofoC9Bro+CW7mC0xY!TbAfh0b1`nTbEap3tQFSf^P~N%gc}L-aK4q7FyV7 z-@5mo0)~jBS5zmee1R-;UOJh> z6|SRB=#IA`W&$$?_C^Vd&&Iv7(>d?yU;US>%S-BE#sGTl9D^{`XhF(sl)+s)nO|&? ze4$V+tST@VS}vAD#eC`K%Zkygf8sG>Pkk)Z^}zOVizMU#CQ8@4t$~e;W)dyD-enef^M{H?8TfvnQ52E(dj(=QWa6&O0Hv@R6& zpj@3*{UYB9a;QNv9v$&h2&FMY3{H@X_2m2D0qm|zED*}8veH-axyoutqwF+`s)m|j zar8t1hZeL@p<%kzlZ}vgS;u%!PwYlakwmV{6rHdH6q~lQx|_r;Y%Ugs)4647*q_6- zwwzIk*Nalst^J^^%Bw8uzG*yzsz3`;;iL@i*opd5c?gEWnV1H?)A63{rHAr_EeJa! zvLVTlcpd~f@!0}a1uC}NP)0oLH_psD)Bjj%z?;CVe~Ob-vUkv+@w|UkHrAF6MB^bW zXERG#+UDPn6}LdfiHN*L4Y63-QVWLf!d<@>3DgG5QHbSQ0JwNPO~03wt&=#W40a`s znR6ty-#LlsAr&j8WQN5p%Z(NJ26hwHL~*DZ#|M_0tKqlLJC0TPJ6p-04~_mvsh2yJ zcF|vIuCXa-`NLj43JP}KqP;}qDCMonly(h@e*0Mh66D5NoA6m#T_!NLI=5w|`!(Ki0SOZ$ zAkviwBa7y?yDKq$8j(Iryu&3z*5dMo_^O$^eVtYvG5y>wBjjSkU=jo>qer@qPsa{4_M z(Xibqwva-z)kVxKEJq4Xr}L8~Cea8ByVGjJxFPv1my_RMIXt})#m?ixGH;vQLnGs& z(%FW1e$SO?YtGfHiyh}F)3FgT*q%X`S4URO%=#xn@3tOVYJ8{~sR?|^irvM{_V*at zT}D$9Hho10>?JS#r@W#HExX0O;Wi%j-mV4;`RymI_fb#wWcsYLnJnWd4+R zQTCq409!kbtSIN$TtcWjf>tL_i%h(cneO6VujA%+V$YUuQNPitngyJsBYmT?m*Ew)fQL(Vb{TWhqd;;-aCMu8Jqy zw2Yd4`Iz-T{h?>b=3Q-OxR>m>!p8lX-+x@r`JYI8mIyx0sOg>cvh<4&)gh4hba2An zmR(mU>;-6VwQc7Xa@K?Gzs5RDL)+B7sH@|A+w)j!YwDZLn}&KJI*N59c#fg7>AE=i zINsqY>+;Z6qnqY*iv1VLEcom0AhDH{^4ovv?*(W=TKE((gi)J1#w**@D^sPqAJ0Z^ z$j~1H?&D{nlhjt!m+STEj0Qt@%!(D8{b_$=V*B5$ zHD`O^3SIt%ifHf~oz})(b3JpS2zs40H@I9~Uii*uhH}v@Y~*(dvxFpw zA+1~<>mw=oBLbi^HIV`mbpE*1zc|AKIGkV{vP6dakoiot8>A z4!wuo%14@qFmIw*7bgnXj!kmRyL%p#H&@EfeAD#S@6H6OJ&LhiV{HA!) zQ8Y`L$Bq9Tg)GEP$gy?S^oPqB1^qt zJMHL~Uk18aQ&>09jAbl$r2d*J!NI)XdVmo{RWDpYz_TPN^D#*p!zvS2^PUf-Z`G5nB9L zSnclzT+*fn7R5oMKo14@r@pE`I ze3}FQ5~U+Xv;woLD?&R1@SMdKn`3N0%}d>SwkoGzP}bmzboU+(ZNONteR?hP#JA9zYRE}5ryhmi9r+hJ}$VsJ66eF~hT_rk;{+D>g#GN`L(iD)H$%URv4H-v_z zS8NRLobH1LD(Vn>O8?W?juDIdbm`_;YC+B)1Uot(VJV@yVyEpYT*ztMXMPbjVW8}s zm5yBhVX3%jNNmB6FX15?X~x&$8R~&CKro?`7e;CJVecI@#=9J?J&k1Q^zj%F84qTP zbPUJI4atIQxEPyO2mpT|-1O;d9>CnVUAH11ws;v8$ccDV}ac2<q3&_&!wTy->U&lk5cVKJxb9R0Iig(AXDxJKGq4N#1xnY{BZl`vUHL;ndgi>@XYSTCgUxaNIFXF0C@0)X7TNicC_GjvQ ztr@xX9n#fJzpT7HS-e#ry?SurQZh;zH%PMWs>_Q+ei|7D16dA89Ot^8%zgP*V-v;V z=UU|U2G|-D8cN~^u(ut)Rh_yuZ}zoAT;cspnTQ{#fT*Eg*#53NQJgvbq0%VMGSDbB zpb12ox#9fUH9M8l()~6kFyoVTD4>7o((h*{n^hL83_%gyHLpBs2$HvORIcz zeCP>s?ytt!8_cs@Kg(fmNgZDKmHV0dwaV7N6|UkBG!>1)20n)#j(JYa%t$>0zji+} za(I*i?l~5PWHk;{KLKT^rnEG~8l^h^YHg=X0+8S;iFhD;M&s5W?zLD*NAI+~f6yf} zKsOhU;09vj)lK8lKuBOASqSsTD7D-#En9kwA@-+-bRERwB3TUftK_4_Gm?`W+rJ!c z8V*JIk;*wSu&`-(aKZz7DE<=O?H%1}`%`rBr zj`aar@#AMRq6?B}^4GFhz(Rlf(G}q@E_-E(N2^4H4!m)stH`W-#k?bK%{74=H4{x? zB6Sf18yibRl+kUyIyX#xSlTo!%M^xGb_^_!6y?X^k$#TFQI(WqH{T2PZMF2=p?MaK z2f!Y}ERcH7vn^|tZDLR;0H-Q^tbyZ?G?7UlIkYr6KLrPnMT&w8A=at-$*^CUQv$la zp*9NVcNaT)Z4*HU@}|f)v~;r1TiNK{CzI(r&Ce|YW^v0?QWB=GA|{?GZx%-c9-R17 zFIQ(Ho+B8)3+Qc6%zd&1h6YkP-6YVeQyuPFU$C)p3rLVssmFk34c79jC=rG=fH_L} z^Y#K1?Mb0x)=!J||1f;^50rWdxXAD`3LnH{VPjo8ZIU;CtkU)`gRuK(SmaFPNsB?h0arwM+5SUmvL&Q%t z85E>Z5&~)b2YQ3}A8^Anl4O#Q@7JY9uv|(8MfPz@rOe0;uCAy?;gwAQjVi0yGES_p z?h;`bIU-*q3wf!=5{2HAS(DdEVOAT5ktuKFsN8)J)Y{zvD( zr(Est_{Q#>jx-F`7Sx_j`{92xv^}bPxiykDTFQ7~dhc4A)ww_DiR`WAxzl>{`o9N( z23n=16>qh~Uek0wAtr-93J#q}{)OT_uu%z*yL|am1DU7rKoo%Cg8&XS^;dh8k40{m zE=(7&Eip3z6LBvq!&2ENm480+ewx!>8(vQr6mXVD_?ehccU1DFeJ7Q2ad{f(;^Fkv z_~G?yb;CeO%B=tU3D!-NNs+Yg+aH!2&dZYQMC~r|yH+W)S$rG*8rtKGb#O3CEpl^1 zSh5~E6-$!GS;vmz1S#jKVxJn_e|1i^#X3hK|2)_+Kg3m46!vITR(~Ad3(8S4wzuY( zA;t(*RNzdUbA{*q60*myOKCfZ zSSAEwT-~zu*X>h2S~ZU{TrIutUC)Y4){tO$t$tCTRF~NRP*E=~Y~GJ|U90UU14#;S zGlsxY?~zzZ-Q~ECZxsCiarmZ3iQd5$o&UJZ{ze1gP*l`P|}5>3^b#oXr3*IAUlL2je^D^~`l@z_vZ0u{S%M$&)aS*Ij! z-hNtY`2m7T{0c%9|7%sFe=RsVD`#s|FqQD7t3d;di(Lj|YHU}Qc*d$<$J=VPXT>6B z3OU;=WJVhDIq*|VAFqnsn}13D!LHm&D&u8PG(5yyF{(^`e(D=p=Oq90U*n3qEJ&2G zpti}lu$a4dBmQsh1T1Hdtcc{D~%)d5FjW%D3q_w1^wDc{5;~1iM3c$bb ziJQs-Loo06jkNuWrh>(DsmpA1L12D+XMxS{ERq)f@ZtAINzybplW5i2;}=KW_=G3* z#>w(6BIiecp~@#>B+daN?Ao??)o#UGYVLxg&$*(b>wsS7=$Wd=@Z7&p@^8}U3e}2I z&g_oikS81WguVK^CTR-3(7l#(1>}LSVCd>55Y_z~W@bYElp0Mq%K~P51c>4+RYI}# zpHXYgig7oHso2kqR5CT>4Vog>TkDZ1;`D_O$+AiB30ftzWGbmUT>wr5G@@Rc3$vp% zwdPLsKfcn3JmVIMPKP(X+q4WaR%_kR*l_QkFEq(l06CN)lu03-g|Ut+8I`MPPiltK zUwhM@^z=`bUARfFT!x4ff^N_3hREaZ#Iedfq2eVISz$jaT$2!k3k*Sw^Pq(Ou-M_EdYrJSmwf?&JJNH!_h z-&nn%za86-q5g$ZFcdR-`E&#G7iw-Pp71@j%fI)|O_)H9>d{R@v1Bk4E3&^lL&z65 z`3F^p>MQ_bmEhhsR+N8LEp|bjUJVh#-Cctu^UNw-{z9>z=PvyT{0n6dp>%6tLBT-7 zKyHLUMngn^hlhsrkbr@O!iK}b!KDO>Nd?+E=P?XvLpD4QvuD;_jeuoU_ zdTp8HsN%CkkDWX31pK(5KTPPoK)qkZ`gd|CNDHIW1XVYb9qXU(_}v9vU!H=*47UB$ z*$cZhOzSf#glqL0HAK2;FZCmX%5-pt!mg?>kr_5M^hu1!>8{L`ol;qZV_Sc_sY|nNi*)U(D*Xv7rj{`V!YA62maFW)Vpu|rqFC}$p5&0|Kpp+-+8Wlgw7 zAQZzc&Ci8mdQQset|dG**wvXDu|ml7hKXO9efs42=9dusiH~G#^M#Gy=eC?4R@ov1 zJ4fKK+_7vJ^)Y9!;xZ1Q*AJQ^e%i3HQ>76`>C+u*zSGf7?4W9w6AiS z{*B=>e%(MRyo{x>>`#_6pxkvxuG8H92y^(dkWbd2AiqI5D9!~#X1t&74A4Q;@x!ag zp(~3(KLdM(*s1MVeb+jg%F1G^u=x|=$zPwK)g zuZVuc^RjBB{duk~!{6{nx4v0l@&8dulgc(YTL!P)2I^c*(#Sy)T}E_xO={>vLE9fo zDS4r6X);W{Vubd45iK6*n)ezQ{>a`P{wico?6@lm<1yl1o3|Ird6>Eiwa>$xDl8fA zjFw0y=?Jh2N4W_EjGemBg!I%smb8Z&vox@8d5*|s339AStKf9EMUadr{cmY}9+3(N zB&YiZ2dLxFALeEIWAE3eLmUBq0k!jVfbnGdUU*0dtk+NxCF>hZYhmMrhX35)&ki5< zRKD=;(}eFDD6zICwOjjo4(3+Z*o*>q=Yy{~=hZp+cPw}Xfbu`v?hL+OCj}}k3%CN^ za&G0;z4*D?xv86kMhJE3+F1A(Y@h56I#S7q>L}JoPw^k#(hfA^eKQp)8ctVr;tQX5n(wuC4>kK@S(aHHUirpOekHpjGJxdjR!jmLzfy*fo- z{YS#~|0H|~_wJGwD7lOeKu`C~?!x~wqfY|UO?@^=h36)OWMaxhtSi22FgnLc9Q@^A zd@C#cd(B!UK~Dqc&Nzx^p`@+1GFUDZtKdv-1(Cld;55%WQWuXVQu81wyEm8a`^$|r z?Ipi{w-@&=Mfk^jBH$!fn64N-@Z8Lik7PGy(9K+WT7BmMe-ehgUTh67LNl(+e8(86 z28`2V&HTG8o{C|uf(1dE(9#qNHaR2FS*?|Wr1p4xkn)3``BsuUh5?#^Ro5J!p)xv~ z64E&ugeoFvk8wDxv0+UE(YQFf|DkZ13t0&&sP%UT?*fV;+c`sJtj(WV4rR7S*OR!} ze4;W@_5(1%`E^C|MShYGaWHW$zgFPjV?ys|zw^u)|mp zzZW@8AK3(#)WH~G<;aq4UyCnJPZjD`|KPIx3zcGfApP~X&2xa+8MM(ojn(Popz(Qh z7LG&zWPViDV}{J>c)!JXK3RV9G|@|#S6)(M^44FdY@Zo?KI^^N>16@>h=gV5YxNKC zt%4U8djc{e>f-tJ=JpK#?4uW9#L)@1iZN!!>c`KH41fNk0y}{qA^&mO_5+Xn-sN;{16^U3|i^_$7(e>3CjR*S7Qh z-mmCR%`tAs|zS#Rkr16}7&uyK*XNwU$%GAwx$C8-|d_cgGnyx0WU(pT3CT!&mTp zWBoGJqLPYmBJ>c^8d`?a<_E??^-Ti@hT)~TYLICauV8jGC#<8)4ii}I{b#p$82XoN z%5mXx5|{dBy}@jMw$WV230l~>3h42FD;|c-XS_dbGEtfX$+wxY21XHsb5V68*q&geyI&{ zy*^xJUJ9U{Q$06$n$w_}=ecFqIxIwAw2+E_F(m=sH< zPMV=Un^53GazGVHYZQPz>+7va$>6C6!_XiuUQee(~nJ_cz!L9acq+1SWfk&Z+1iAR*D_6J*f1! zQPQ7tK(uHUane||)U8SSB$Dfl2s{4q4Hd=-x1B;G@JI4@f-V%60@uF_Q2$0>Qimm zs5YcBp${DH<$NXM=zy(r?kI7@oD~dpszm+>%BXCTSm$U3u4j)`1j1Ua9P_ms^?zzAxdspPHo>g%$ZYb`dF-ZNrrx^6Mt4KiV>?b0pL)nYE~_ zP$NYeGJGE%|B*; z360 z=oF>sY+arM$80X*tGzsw7EB*>n+4SniQp>A$lxp75~+-xSL~p^JiDx2V-V3xY@;$O z%NdIb#SY#8v#?`ld6Tg{OmAq?i@GwZP~S=LWiP-DO2 zfPQfik0+e)UhF2jS_}+b2F1xi5y*zbJ#vULGVD8G8!5#cpJ{*>FEGjEQ~`dQ zcOU0y^v1QfPn5adbKorrTEV`n1jZ+_CsbJ?7Kr{!{MaVr<5I+;lH8( zlWWm?@-3xS25%g{URt*s)5O45P+KHTQmBiS5l41G*l2XM69dicDjS8R&7MI?rhX$| z9OeEVX^1FAvg=?cGlm5GH&pt&yd*=Av8$S^(AY%ltYRug)@W2>D^WA(SW;|dj#Bb* zPY9}ZL!MjVzPnal92|C{3IUIgvC$FM07?EV&8XVOsA2{>=keTXV!WOswB5r0g)(sH`pxVp$E*LSx0bY$^ho1gZ(Ce+BX zgV-v@;O*LCgouh%LTJjh>6fNe1i)!k?_(K>@#hAJi=BY zGE;k|p=-ghx5_WRZ|zIf2wi`nNO=!AA^h@IFVd>=cc9tAO;Z$>jb7>?tb6ny`W{KE z@4c#}i7OkeEN~Kt%gx{BlP5$=yT6^}6F42x4XRhqN%6t?;^?rmV5dyeoKLqcsOHK2 zbb#$ru$;PP7F>-8@AY=H`&w$0QopRgaXn7;V8}$bm*lMCBkc85YEVhMoV!yFW|9fq zOOmzYH%4z?uXN91iF#K}mflTpD~cK^sdvEd|BV->>NLNJv8A%AlG31C6zsX}U(Y-$ zZwF~!_}FM_&U^rCK^~wXBnkagUjoVFg9|^`O?Sx!Zea>pf;c8<%({Q|nH^JacOn1z zeADz)ALFn#kY)z$^0QBF!@D0pPDEp@pW1(>)BE4M#(XVf)^jdx86Y`CCpVU>tB zuWv)APNSav7T`?DGY-4Nv|7{Snoz5!!&0eVGg@vN53J3Ee_3g#hG{28yjf!D{fT1E zpg%UfmE;4?O=&gw@ZDbf3Hai_OYc~H3~3&%p!09Y^Dod7$$qC>#(szjxJE8nhoW^b zyHTy4i$#2Ft$oO_M0HjPEsBbN7v4b>>76ZMU^64jzyQgDIvRU(8vw zWPJAM{3hPn^}8Sq7x3jCh>#A0#0LkcK;;6~LD|#%`NK@4|3rICT1gYuQz2?o{Y!3t{~rZg8TZEN4}C z0NFhS4PVz}Y>K%r9px4qj2)fe-bF0^YHjv9n(WTJK5}pczXS&VM!l-6Fb>;jtTbAc zK>wvDj2JFDuA*@Qh}BhoWY_h{4$zT9GX>R%Nz*M!2arbiK*p^`yCvbGMUsmhg)T~` zogo2NWbfPXr~}*^P`(nPi=GphNo*`lsV|mWNcALV zT9G=LCo(Lc$(c{p)vLpUgeC#3E!-5SI2<4q|L5aG>&KDQ6FuD;dD&Is2 zkhb{2IeyUMrXlL3Ba;z9Ch9BN|Oh{&lpP3T)V)to~umT2O}(UETHGV#M=KbH!v$e0++(+CsN zSl4jZIVZ1@nNopF65IvlxKhF>5$T-|oFbj-96=Jh9ctiE1@X35d7DPBaSD)+;H0*g6&q6ycF7_o7Ecw|X6Ib0dkC_CeD&2k z4?8=&aA-}O)<}TCveL}yP3kxGgUUoI;yiH&aiWuC5M_T*)_gbr}=-st| zZJZ9OO_)~7+%}NDF!kg;Xf>^I7$qw`T-gJy4AHH+g(f9~Yxw(2pl-SRg!wfr8=mMO zCV?;L;%ft?iQ)j@x|yb=-9tNF>u8~|kQNpK7`dl5y417E$Ynes8{9URCTU895-IJ5 zXfeN$gmepw!q10Mxeweej^snobY3zU8wjP`Z4wJ<@b@jSL5`$!bslp5J**O@Yq>%d z_0hQbLdi?M!t9H9mHsEW9WxV>jiGKMeQ!=g11Yf_90%3xV6v_G>rUWzaJ=|>#w6Gt z!7>DF1j_a~&rQ84Qn+njH9Y0@^rEgU;RTPsTLbVLq$5sDYi4iv7pfSYk zd_X9gsDx|AO^DW24B~@?;DVWf=pZLF6g$J!A2^X~-$QzCY`9=kG+Yy0qnw*_=_~EN zmvYy&A-eT751Sl#79(PY&mVc)jF^}V$sWk(4;x?qGTBP>v}D_%V|3P5Q`KS5v8b{c=sf7;8 zFqg%9AX3{CQ8=vcoli2JJISLN>1js61v%7CNzMThI}#;JFoE~YZVWlH2&RkFfePwL zBC^c9cfypX9rvfb?57aJ6EZ_D5mra$NvyCy!xp?Lb-5yfL}CO8w=pD8^(npBqbtWe z0xUCvv>QNXDu@&m73$6t98wT%g8dU~(ucaHlfk$P7=<%SWg&vjyO`+Hl9|^Z7$A zOeO(-ugx8&LSF<0ZU{UYi$(r=E)z>S{3BcrF%?<<@A04krSP9aY&X{NJ*GFAU~Q`F zNp2ioI&(wWsc32Nd<&ggwXsqM(GTlAYEbad$|0uUnUksjzg3*x5Yc&Xb8vjKnM?>! zeF#^==usY-oz_FiVY|77gsk8r|G95&P2beFjv@L;uh@|)xJzj4aebFyE>LydpS;AD7Kmxcxl$Oc>#b9|?L=2Rh2C6xE zG!vK>JSXB`qb3?siIObloPr!}Ofs{EC#G+aQ~>t#!QGX!-OA zf#wb~D}+LF_GHM{J#CA8gfsC=llm~MJPCZ*5_RI6@5?mIa_Wiw4B5Dv}6#;FrRVu8jR zQ|+?GOQ9jvK@6*Cv+GW&!C8o4Q56s=%jKop=|6|B&CB5mKC>W1A3vz>k1ILtRO+cr;txw^|Xo7o4;1vI6I zA&x~YuD~?WRJ`lK*kG?PX+sv)HOUaUsmtw& z{ctGOOL3U4rz&j>uVP`l3tM8SEILA*^pL?ZaA@R_k_V?32mH)j0@U@J+?Gx!(Wd^w zI{)2K(vy=Us;57#LIjbWB|e)O+E#;H%DNrEe{_@$K&(}{)-vmwp^>XD?2CyX6{Lhy za!(R2Q$+KF-6fUr?s({!w4@$2Dggwpg`!?@Us5R)ic z08>>Z7#koZArTNXuS$mrlK>S+4a8m-{t3dHnKQk{ovDKfN3}$BhGK7s_R6T|S7ZMR z#d>?Gs$3g5+|N0|MJDBs7#%NfIJ8Lr?{*!TV+aK(mQIFwGKUd}%}YnaYZcDHmUls; zS#KH5QZE}E@72DIWZ zPDrZtVaRC?ff+sIP+_6#|j?V(2=p@p+rvTQt+G`62yXR5@5@B(b$-7-lj3+#&Deo1XCzPC>y*N3}&uX0<*I5PeO-4)iJc@c~< zx)tZNom4Dw^Nm(2y^EI>Gu^J&4&|cOwGd=fnl$LGy!#_PD3YeTk~BID%?Yi2hm{%b z2i4A&VXyz|$~)|>Ep7~d{0=UXUY-KDajD~JQ-3~tbfC}oRS+rn^3#ZiGBl2>aXSy3 z=kE{c+u4kIqR2Y}4Sj#O;urUZsUhW=y&vVEt*0_`OwyDc*JT?t%Au`m4bn+-N)kSv zK91 {ReJKDzsq0S-SERkON=-c09|2#}%+_b0t3Ya`yJPygodggISBkbAcyLjE*Yb3t~UOjgkC_x9x z0%ciuS;!aTIaZoh3#Ky z{Mn*dN(JR&aE6UjX}(iKdiHtp)?Dn+DT-#nTL!|b0~qQwX}hrXNf8(CFUUz3Ck@ZO zJr(~a$g9DPz8~o<709L)cO9H&>>POetiuW*8k;I$=Ny)+Qs(gZi0C>6uk}eX-yo2u z_Q?nPbZb&5ZAQ%xm3P5`a##*2TCphkfJs_WqJZj*G(~2M8EXJEwmy^-`Ohh+P)o8d z32-I3#1_iA1go*xr0xoVszj#v7K+l0sS|8GX(C^BPqg!rz>xH+2_DDrF2nbthIsV< zH#H9BPA2g(B$J;T3)c(AivPyJfRi z+O=6D@RCc02uj|UQPXi!$ED@sxGcSV0|n% zESt|!TTYS4n&=IT7>A!CxHRwu+mfH3gAvO8qtFqES*XOFv7wd=(p#vB_9p|lJGH#< zpqSTvztq@Vj38pJ1E@?*IZalBhiY7qD8lr9he#B2TuHSjNRe7gSNXyK0PN+vgGpJs zkbLPNQfDEW2OTT{tZkrJ@nZ(^`bK0RxEf-n_Qzz3q-$Mdh=Fz>d(I~bjhXwkwAbE#ajxzb1>IY4l z^bvM+z;j4T3J$DIIy7VdwwZsMK|r*zVIa~_TNNHxo0tP0S2=I_2a(-eij8|P=HCyvL?}NiRhz4V3H4+rb))2ccB9ciWLS?WQN^W zPT(mTz8B~sAx80&B>sLON)#-(m#)9@TmbJyu#(!n`HrE>x_o5LGmLwS=iWUCJ z$va2Lku;fU^K=pV9ZU+GEgLg3-USwpMBrAY=I;WH;6Yi0ua;BiM1;*Za$JT2 zc${@R6iaXXO$zt4A$&3Y+u%vBVd)u=eplj0mn}wMdkiGxc9f9m>u^Lp+UW{zO)C4HEw?2#b*6zx8Zr=L62x~jL8Fw9ewU#DT6 z2*_z8*r)u>2`PabRe88wRb&m|lG7)<>6lSQFjIkaL9Q23Uzt>(=JC^`hy_&9mX3S3g ze17Fpzc(+phd*xqX+PyJRJCh^kJjAyxsC#TvjI!a!vE8&T6n(QgS`~w2z%4=KOB=O zOc^0f#tPmk7=p}tBKZ9L2|iK0{8##~GllmA*&iR^$fziT2@EISxQ zGLAN1)CgHfd88>D^ZAr(@ERBCxbY(--zfXMfN5Buyr+Gu)4y(Soad?6Z8R#)^yd-d1Gau#{Ee~Msa8J!f(4)&Iuag*7dFBY{{PO+n0{8c6LZW zXc0MwtoFq-a*0id_%Bpyoo9GGkr%%MVY0J2^%QkbqN@4u?s?hn+AH`F13?4^#A;Mb>1;*iQ3? zWVEXstG~!WJRHWQDK;f|Fk)?ICjzhBxTBHAdvK6uhENYbMuF6@1MTCxZvsw3zrQ$J zOz5FIQ%d)e#61y$oe{ac&>Lpoui@i13&d%*oI~2`;BF^@9lE)TaSd!h)6Zmvnvkzv0aQ!JPe2 zQYfgY&U8F5gc)97Dyo>h3{uNTN;HUU=Ks(RQ>BZpSyX6Z0_y8r-Rw;uq9K7`?XU-A zN&TrP0B4W#eMpL3Z2WUCwyS)=%^hu6L{T=aXqbHpi8DML_%mjFVMj_&iaJhG)D@fl zqo#;3tB55bT78Boy=Cx(j zo3jc`p8rPKTR_F}E&ZZ{Cb+u>cOTr{-Q8_)Cj@tQm*DR1?(QDkEl7Ys2)UF0Ip25B zefPa@t+!Us(0g{%T~)hk_m-+(&9K%l1z=o53Xca5dU8UBr(u%i*&Tki4>N}JEuo5N zC)XxjPCN}pufXoP=W3PQ&0n}ZgqpJ4D34aE8(!8Psn%03 z=)^oHDl?{M#*$Lz#s)xnQ-!BRVF|X9F5H(Wt6i$v1kg=7eB>LzqO~iUP2*|&}=PoYMg6(K!GRgs+J#QqOoi;Sa7Q;5Co|fI_S}ucxvP=_qicnw#6kW@3 zkp{zDnL_T3_or*9ODt z)x^)|EDIxq5q1-Ul-hD}%ES%rB~f;2FMx;d_CZAv8I*Y@WU_m9Dcb7ng$K)r#ymf* zI8#4L@%SVu%SJZZ$>31FO?neEFnH-NaEu^j-s}fO4J+jH`q<>B1PPl4Kq8r%B>A1f zai{)={(nNQCWh?fO zr|<&7Sx$3Wb%jBIFqi^ko)!m~=5g}@VHJg6q+EkZR;06zVq92iQDQG;7oLS`b)TU+ zjjnfkmIptt)LjYP98~MrQP7jbywS>2e#pU%vVb`Vhqa7F$uWQ{KUD7{wr-WD&nQ$F zt}XSKsR(mZ5eL|Po0c=OSA>fkZ-VU7sDhnDi@(`5{-Im%U?#DxZ)*u;oMs&{9+66s zgHqF{XSq!cPg*Tsk_)GHxiYVXdpoJWu}rM-;SXRc=uT+C!&kRxqT#Kj^F)>I%8)7d zm8@U)gs%V*7_@Awv5**8Z!o;HHo3wF(93^F|Aa#vKs$jZMHI{eyG9W#JK0#=%Fr>| zAH=8=rpo0h{az8703Fi#bn>9fYGeaU<4fo z+M?-Xb7oo)%YES`ZN)L{Tu;J3dSb%=pKiO;V}AGG-o@yjK0CO>F;WCEj6IK1yzXEI zml$D+C()I-XLI!PknLXM?%a}~uhEC1ho7=qowQGOuH~KxD4Bl%GmJhZ*#4PduTy0% zXqsBIxQn=+Nh4kQ?JKP+V6kE6n8^;F@FtWaVUcwm*%w+!qq|{if{&K$LwJJbS+PoF z!_Eh+nDa);R&W;PQ#a3U0zO)RKLA1Rxf)IcvD4d-THHSXEAh1&Y@u4Z`90p_qHTTu za@%Jyq)S-CLs`~|1+S#2n_gr)W~xNkRC**K$ncrLSiIMD3^lPKR$or?p@w4-i#kuA z0-qn(hNsk<_f<;43*MXVwP;)$^MdY9UmSHc<2!!4thEy@KB5?2m;elX|rt;kR12=94?mIjUMAP zOg4QW=h2+RjQ$pJSf*D6<$ltKTb76jX+5MJxX*U#JdX|V+!plLGTfKBJec|xGeaJm zXqsrJ{<5c>dORc-3U3+EyV8^jLq{9(AV@Z-^UVViH33u0HA%YOPO`$84ROdpT=z!W zt05xj%Bikeh{LjBGBR!m%91CY=FE?6RS*M~8Y5;}G*PhZBRR9dXsYwi%r@AF9g0(C zgNf0!9HjYKcDaSf{NeqaRGk7J^fs(-{#Qw|50N>=otYS0HDr&g2%J9Fnx?m9mjEr; zKyr+bcob-gDo4?X&JokwI(!rAA?O(Pc!sP|`G)+1L$mQBof3flz4^@q@+_xB6y$7J zl2$qbC-$hc>r(+3V|10+fG_ikGS47r9}YsZUWSSUQt7z~y!Mu!h~2FH-d-gUaGBOK zI`%oO&W&ZK-eOq%b^>pGf^^2@9JVX`o7~_PkTvusM)J{F)wEraBlmXbRfhT0{AK`I z-!2**CYNAtON9@tv@B{AJSWHS9ePnilhnQfAxrWQkl-gum=t=kK*z66Q7(M*M%8jH z%R*ElJFvGBOsN*vCDg>qDE(}>7u*qQrZUPTnIcC%7|<0PK)2SJp`_dLJN);y#t^|u zn|Gu~8uqt+g47@QA(kT)n$%oQpCZa3&w(9@Fh9f*Zum4O{w% z;;7-1J8)V@84Inu%($l(UhDej9k?!_lhP@$G`@Td_Va%I(+Iy}QBJffXT2wy99+UF zsz?JMP&=Ve?2bakv0D}0G>HXHdGrX?IziVP%^jjceWy?q!8+A7=L!%&A56SrHM9&0 zl3UT|L%D=uV~dwAUk_7j#sU_wp$}tGO1G21#|`R)$H@@ z;lO?X1(A?oKhb=ZO*%DCc{BqE0StHo(^#{hl7om5=q?{KL$N@8tL)Lb(_9Wc-<)Fob6JDKd z?^EL=JS+VT<4mX`c*h%urcs`z^N(bBxMC>9Qp%)pG^WZCQJn$Gobde&gTx;wY@C60 zxy4dHTjI6Fx7nn31_`#fBqQ&t@WRqj$Ui|0%9gf`%O~Zt?>`lsxr{5u$dQ%0 zx1OA$`6v(cXKa9X*VjYZeBL#!qXUqmku zPL#k85!YCT3@nFG8(o+}j3Oe!)vkg9a|(_>ASf>HHA%qGeq+e6xm#-gA{i%Qin8f*G*!VAOR`Bly{6&{#s?qMH^)GH&P^Du_aFb$f5S1zN$R@JJ8ro9m6k=!1e8=?Jg>Qqy_%Hf7s3;6)Dh z=Qb#9p9=7+0>>h7E)VU7Sb?km!>dB}uU7>pQ3B!O<`nI{$lqyY*jQW0AAsS2)@uAu z{2|2&Shva(_j+DcoRI@4Dr`6lTzAt_yA^85k4QBYhe#9%RJjScBa=0bQg2AYPnMjF zvMlgDl-Z)(RQW3hLEE?c#(#DlS+FU+&J`lahDpLk3sg91pb|7j-Ne61SD>;zka&Zq zm$v3K1|I9z4d3)!hX}vd7RmoS;xmw(_m-M8krZ_bxBLtNa{WH}MSHZ(!9=bhpgaDw zZRjpU*69sONb0@3uE<}oH}>uImFwa1Y#txVKJWa&^hpKmI#~tsi_D zOKpL;&rA^S`xVZa5T*$`j8-27IWSwC{>mv=8$aDz^+iCMcK;;wxFvRmIiA4QXCQpDaY}!G^hp-#`q#Y5y;gC0FC_f=u zlPn$-v%BA6wgS#Y2-y67_lr%x6CKCs3G`8*U6SinzZE+l^Vtj0T1FAvfXZwFUi}txH8QiGXsoL-_^E$5FG~n??LUN{{}|KN#6T zO+__B%BLbZ@}j&~MUN1Kd?>!1zk27d@zYC?u*~>~&@ybPCm!!PiT`8Zs`t-OqF|S} zPx5w^g-2P~tYXblliPiCvm0df(DyYi$pl)sS(chRv;q1Ck-k;B8M3#zti;f~jt z@@PD8xb+{v1wA+dixUkTfdvHt4F?Ge1%LtvVEq$;1r37+4#8rB#UlO0!paU*#u3KE zCgTthB^NWMbV~SF22Dr^h>zfr>s1&vkqHy$%x>jf^LmaM60%egD_e7#VoVG;W8>|* zqiw^whg&)!eDpfl*{yzO#Z0HV>0qQo{T%cinKJdU=Z#F8I+Qw0J5PI)mLj%q-wAw) z0rOG)MsPQX?`Nyk{=WI?VuM#E8=^rnT&%=mBQEsEMP0ifI3^3}qP9U@@uFx!>`4v2 zbk4=i$pslPBuimnVr$&$o)nQ(REzbYSwd^vrn>gU7A|~v&bqEmiNSgXgx8badJxp4 zJ>!qXT6;t>Z`)1G6ds$JBI%7#5%h_k9tyNdR(PNVR=+ITy}emX!p62U795 zM66??@Z~c%n6cXQdu=>pRaFlw+_FZM-5wHPhGs{T18d{IPr2m74(d>;UsPcoj_U?cPs;H^i8*FRcAKrB1=Uz#>Xj* zoE(BG&mvzdtx(;Yy+W|`{QpXC=&$sKNp7X-?lJh0qbA2?>)UhHX&9#6EfSYfPtt^; z79q<6b|3yjh+Kb#*l1RD-Y9gfH0c4)CsGKk`S33Z8vK=DSNql{13ID72~d%lyfbhS zdkO#0N-8e>NTr$#ycJkfq(*dJA`p74JNHCv!B@AeN9T?4O1xThWrz=azZe7%9z1^+EGo-qn^-d{$SNrTJGuuUZYME7aa@9;)JZ(<-1kAAi(jg2Gdgddm^&z(CX{{~L;7TC5IT19E;a6pj8J&|USY-=JzA-sECEIeCcdN_h;b+eZ~E4ptm^Vx|NsjPoFyW&HlS?N8+@HZpooFP1F zSl-}w2~w0Qt}krV;p>i@{l(G|5{tchgxZgmFezdht2+50eJ^14J#W}9?J_$%k=_8)k+nyVRQew~Q&F=icqwTq=X%B7kK5{?s1Y7k=~TKKIkJD%+-t#g4G^&5uqr@*q9@>Y<|sHe zz8^pA*S2)fXy|mL9M%5{9PWG4S0~TnBk;;J@Y6jsR9#wlK3aJDeSP^3R47-#Yo_j{%W?rwh`H-ZYVeaZJK(nwekV{igcgP!FswRKQ!1v zu*QPYPVEK~Rjc!94OTW6Sl0Vtix$DFY^oo1K(ZpLcv#6pE!OS%Y*S2{D1984^1Wc5 z{JUCjxUk~Gr)zjjB#aWM8mJu!&~6Pze*U-LS8kYum%Dq0{qxgfgDt%J{eA~V2bsdM z)Y>D^1Sz=}gN0DN>B}7XIJ}_*ubNrX9AM8gwmNTC6n2>cQ|Wn`?IQ2lVjI#ccuf8? z@3myDr+mK0f@zS_ioyvDXBHB{>uO;0QvZZL)pvjwX)0+%G5Tnn;HJ^R*Mzm#5oFo; ziAv@Z@cnbH#a1|cRgA7HloCqt0km2^x@c!2-=(OvScj$eaSlC4Dq2@PfNkHO$(C3 z5fZwdh~mfj1MZ(8Zyl8{#+Aq|%#1WJ zTDtR~8f$tHT@>DV@6})fkeg&ie&P`d^_zdwDY@L>Lq_UtZO?-)MF|(;N7t*7i)U86Jb` zTv~#r&8?=^C8($LL1WoQ2m*fgj3FvNi3p#k9jA_Jl0D=28CvY8Zl%IJ^mhm1G_o9L+b`ZO zsREn&1mSuihjP4mm(HL5}(0?X$mJ5kX8u{`_JrecCzqt`C(I_KsMi=Lm_T)p#l z@74-{Gm!m%{z$&XF%#AWtSd3|IZLpy$54Vuh=9VK%ojE{g<-Xq*jF;?pw<& zZZdE4%WVzq?X6=9udCyRjxf%|)3cCFGHS=N#~<&#U)Ppi6S-Y@HHq-`OOhy4yK0`1 zm6{3sbHk_YGHmmgTHJ;{aUOwkx6AkTGXZ&^95*9VLyrD!b3+1vMye+Q{og2Fd!DeD(O@ z#GMAiLz^bdVqMU^w-moue{+t$XpPoCtO!aqxe_LeP&jXIO@R0lCffc{Vl>=Io)*( z(P^-Lj8J8L>m46P?LK*cXwaeS&_Vq@udb{1e>{p}yWT14`y?n`a21oyDPa0&-NOFs zQ*`F%y$(C(=HLVU$?k3n0$m0S^&1Xe)RP+d0{~A;h0wtBP)Hb9L>MUOe`cis2mmA$ z8Y&nSLf=m7gYJljwf5 zhXXsg2_7$JR1ZPn|G!@AowaipoK|iZUM<0g zjesU`D(WF(hOwD9jsl;?Od?JfGQ@aO84;L}Wxhaa)jR{oS9llrQ429V6qEz_E?U|Q z(N6nC3ogk4UgAih7E8$#3yrMChJ3&n$C75*alzK7YL^*MgN1Y~;mnPpqR9;R1bIs+Y5cWOst;kSP>7p`vlaQ~{h=U6SwboDT z9Ha0wE&jR!4{#?i6)O5$1Xb6RJBYIy@@fP>RyXgm`3a%K`bId2iH<%18(^NJ_~V`n z^Io`ce!l)+Pl;|atA6?yYb5xq%t8`hw0t3Zt}%_^2BU-DQw*PpB@vo1ZMn``1lFb@ zh?ZG+(4B3b^5s(w6e05q0;~s2Y1iwuW05vsVw7zCr0pF8l3q;G{fge`3p)(ZnhlVa z4c8W`y>XeQRmyh@m!BoY@j~|2c9yOc;%ne15(*x;;aB#sf`-)^j2rL?8WC{wmXXcb zh~F<^uvuV{kKJ^B2Gjufeq=6~nS{L;y)ma2|Ag@-A6D7qe#T#$eQFynPwbZ3K-V2h zpl&e63L}}%uLUqFeKwSHmu=|BiquxXv(U6&L4b+SRtp-ob{MCru^M7(Hf=W(^WaDV zrxbK<8MEbI5_P2Rg&es3P7iH3xWwD4GvLPPflEczZufHAmdxbgi z+B2{qv_Fy`DZLbRREKYdgniZ-C4A1ch zU1-#JBel800)sTv7%#R!jz&xKBVv#=(eC`~vF_?x&zD&k!$qw8pu!i~=wmwOl=5EH zB5&E)|9uMnl`Exus2lBZi8CxIPo%Gc*rcKis?FD%ci>Ca+E)GTHhXb=RJX`#fG9+)YDz z!=}8$C0#~XWK1rIO{0t|0*xw6ikeT#J{XwEzlsjH$lBC*HI(^K39@ne`^a=)oiZ@edc`tiBOeM3p#bohJrt9Gr#uNH&dF~6A5IC*KH%{hEw)7uy~+GHtg zVrRNfd`wElk?XH#ZoP*9z?`RbzBQPKrkjE{D!iEoU_JEnm80WKqE3 zhsMPw{D{6N5XM9+#S#98YwK~Bfa9=(;=5)K_7QShYYui}|3ZVJHGV{2`ClPsdC1{Y z$(Mrp1+PD$iu(|xh)3JLpVPQlZ^9pPiGf}Q(ZW**POxh^e+W^I?t~w;Z_U4@6MQB~ zB0Xx4j7Chzju8gPf1n`D2cf6ycfhz{Ed=K4R?`pf^9If&_1h0 zQ~e~eGB}rTElFg?*0Rf_q@StzYQ|P&K-{j~8+~$|tYeF;y=?7G3-k34AnM?&(Vf29 z~%e(~sow#P{}S4R?r z$V3=)|KtanXDljM@WgN|I#z@H6Dl@F$VJv^Z{JHbU%$SiT7b|GKe^Z*lnLjyf)^$* ze-t7U&KTHug(5QqKP$4i*pmOX%N1#;GaKZ_&tJTK6EA4=9n+B z#Pbey+X&?jD?_*!?=N%L(XeL`-IeedE&Mm-0Ja?Y&>)au^p5nR<*0&Ns3L(zhr`^+ zPY0(o^)d>c8UEPM1jz}2iN((aL)ZNQhzn2DnR5jW!7wJweJOZ4deN$ldvd% z84!7Z`7n+7|9Xl8?K%r_MWTv>b2Q{A5yT+WdGH6IN%D({`O)MLpz+^@kLzYQ;wG=? z1qwIk{0R}RH~sz*egE1~fPjVsK*4-~hWOXm4H^vU1_OXaMFXN^V6w1dVUx0P2rGYL zr4xUd(LF%mnW_6V06rl^(I|BHM8M9ON(0OZZ zw%h#dp6cK{J$)(NWi#{M7N0I1oyHz>J1HlM46(omdCTc9-wpTd(i09$ zNOs2*5`iyG#7!wdO*p`&6tyk*!*|b&8#$N;G;E^9BCb2a)^P|Zq9IinDYui5{T^?0WGBxO>`Em}0X3DYC7tC1IYFYle z(6nq@19>^_ggU6YM|Gb>zwRaS3@FXXK(Y@PSE+|jx9x_Kada}vYfEs@Q zDm61%eplGyUpx17&*bsS74i}E_4a4nLW5?hjv6^>iW3*d&&`vh=9kz;j5wZ`l|$jt z>50#F)>>)NwF?tT9{PZaX*aOGCOT!la5^2*mDG`0gq|}BIxLfd*nGoOUL<9c zbv0?g?NhBR1|Au`Yq7)75m1Y3%$fF6N4zUh>1171Vs!WCJ(yZSZzeV?&9WLD|!cQk@3N5yA!LvX8%>3kPsoHU_A z*DSS}>50FBTSe|~tHjQ!u>*~?yEltZq!W+DX$3Ou^tV1q#K_e1@D+|GGacPj#(KhQ zqkit+Ok?>OAQvf+ZjlTwL+`h^w7@gj{t=O*EY& z4mv-!kny!+!z!frdtXyCYaSil4G9SP9?@^{dJ^{>2dHP? zR(SQ=@g74hbAM1;?$LES%Q(P0oA5OQ6*qQz5=cVOKGsigj5$zBpK_4Z*eOVevdg@R zxq3bJ&wy$nhCaX0vqe{H9)DG+->)X4#PUaaUakh$Xx{Gjz;72{VtI2Y)-?62Vd$0Fos^iH{g>KMorU%iiJbaKM!D5Fb3F~A+S9$RsN9hd z+n*pKT=YxW-VtzO*S!pI+Ub>@F1p0(uv)U?1_{9Th5a>zmNokSGK5|N$@*W^Uh@&e z&gR->GpZwx&rsCcn~xamnlCf^Zn_^4yJ)F60!kT#8o)gy6G>V#GJT+owVChlFw5%UlQn@z7Qtnh1|<>2ukCZCE68d@rDn z4MlPfHms%k5G6h@B>Va43NQVhA^k&#+a6h#Dnc?tD)#WB0`)o4%;8$yB%UgL)G3oA zJK3BOvdUxBcGGz)Auuo0XvkOTapf4Z0%-)a#&w=(qz4JM>0ZJGjI1QwQZQazE2v)m zSpp7YmDVg#@L;PvGZou;wbR|_DI>9Jo#Ox{y*mr{EB}J{c#$2e6oE&%k61Jt>rIrT z^n6^vLM9(`yvgVvz+q8vUo#p@`4{10v8bq=1@~<3OpKsxi>5GELJFf^1RN)pJCo|0 z7&`vK7JD6LFd{muIoe@pmgjtGws^>h4Y`^&Flgh+LPN5!ax-DDS|03206aCJGAOg$ z9O9_h_?8W;O+e)3noPc3=bF>0v`COWZChQNj(^HJ<0G+kNlb1|wm2xqZb|#Yz_g9w z)jk}_szB>@mrNt5RbN80k`AV0rJIVsDw=wWgjKQl66oFRIU(t~4+iG=ZC)(MM>jxi z`D(5Jt-|7!X0sRhj~oWPK<*cHYUWcAUyQ{?;v_(+RYMv`x*Jm-Mz96z3R9t^wiXFj z`;9S0o3b~k!!IXMR3sQC+~b*l`>%G`+88r}c>Z&;8>6g#St5Pg-{tN>J6cE3@(eX; zPz;JfO$X9}htog57XSX#(GpRjE_-t8lp7T>>5ijaGbNa9GNf~+@y6MJ*{RCM&rf2S zJ<6M0t+6jw-w;9cFhIIA16_n~?BE)fWmA^8s8AkIrXP3wE1D%H;XZH9>T9Hd@$pdr zC|O{}JI2h+OnVlmxl#HVn?6yuGOnhaYEbfsWei$ngji3LZQ5ZJ^V6sChB?4PDwz}v zqZ;Ug;i{pAkG%PnEdT9zgG|k$9A<=#rp79|cFvP+(JZ%ltILOoa>^h*SuuJFPyV7c zDke=uT{1Ekg|Gs97~2sB)&6HGrYk%K-Zq> znhLf>ODW_T9ddel3HYqWNqXJq3F9?>sEj#tJYvLU0jYw%|zYRUir8~$++-)D8M*WlNiz);jY>+s%E|N z>DZ}y$O8{gTD_+J0AM5}PRC!c#ikM&u5yj%Uq)Rs^@Y84K>@k<#j2fnW~mkas^yv2 zuQ^Y@6@C251p3tSb}Qx_mrvU+*tZ^eu3uxo6%y`R?1?pR!{6PU(OP%+K72R5lKqsmCR{)xUu)dZkXHvg7h;oC#Hpv$sH_hc@lqOZGMc6 z?wacSY9+fia1S`Q0tv=UZHoR1yALsi9_|pW)Rx0;eW3JT5M!p2e4J^$4kV zc08;a^=Oh@rRBl5o_V$~^EyKuB^6p#s*@_VZkc`6BI!snjt86945Re*D--Eus@uLs z+@ZM(l~nRBD<`y(1R3;~yI`AnL0b%ZWb#b|8<|vSlUN=U^4BXmU!c<7z%X z?%CZ`CD}`2mnq^7^|^1Uz=pT#Fq&Sa4jb}bZ&F7Rbl!v_-}f;C_|ej~36RDONSEdc z)63ZEoBaC)p81T+%X34@vxesSP}@c_HMZt@>COGx{<;DuQDxr8Udo?XYH2RNd0yJA zq;(n_zGRh>Uj<1#ERDA`h85#Qrzre5Vyx60a|LRcQ+;%}x3k4Zv8bnSDcwLQ*F(p< zgCX+kxA8%1iT60uXVYud{k9_&Z2SPst&bMd$BS7S2_Di3@rb`lGENP;1x zOB@@;CGU?#d z{T7=viWw{Fn6ySuxW=KgseC)T+xiDUT3EcIG}EZ*)9zXyR%yLgt0h0Y@+p}k#mI7p zPiU-9$ttC9=9*pYUCA>592?8d;Gg#aJdte&WgiFCJ69DI*U3&cz)TW(uYqGvHEbMe z>TySwR`441M!U!twnFKsvECcBu$-NR>?Dq(UrU)M!Or`mT*tFJ|R={uh5Nn6vFj$Rxsm7+sM zeI^BOS8V5cS##dG+*+&7Br%UX-D}R^9V@Hr^T=Lbp{ZX*^eYwfROD+L!S7Nsa_?GJ z?+1Bt$%lIn-ZM=gu-DBJ2d9kaTeW|)4=`EK`e{OKIUa=OD^drVN=#&*4a%#wS&s0W zjYd}20@w?%gOfbfIZNx-lOE;{vylc7Yt0~tfpxzP=LpF zHt5=j0D4$*1YDKi$WOTSkOI{QPAd}TM5hQB}A)j1;A$TyZAS$cbg2xGnV7ftz^5iw zKjH-Hk3J(`$MvL90A71adzZ@)h%ZgxsQcOJYCg1K$plYtF#PT1UYb8CT4eOBh5LDV zp8owhu=s}na2~jp?UG-PmlzmW-X}lw@~fg?bE~{~KiV~}F3NChw(fs!M5>c84@o=Z zuueS$CFe>3i&_SB>}!cJH!akuF+M4!D0y=>nIwn^eA|L0=KDk`WXHfARpZy=Z@7As zdWZOhqP4UZKTzHJ%M|i%JbT-59gd6Ji_j&}FT zFT1|Bb$sTvp=N4&M+49$3WO}b8oc9IYqKJ1$+CvEN%%KkNmop(x;4G3?{p3t*beYM zR&(N3^r!Kq5W9(siz_u5(*F8O1XqCpP@jV1x&Sdhtc?*w5wBS3fz#Za`YXm4yu1%{C;K7E_4JwWAQeduPZDwF62*>o4ULj_eP^q9 zyK?Jh=oxJUM$mO{iB=q{!l4^~ZM|IKVHj>2)spWo=~G}`8qzUsZNT!UY?kfi_9#)g zu18C<2zMOI+P%c`~_RU z>P>%VbIcQvjQ_LxPCL_op_<$FyQ^Jl#S3F@Pd0X4Mjt#`-C0&YI+XU#bKLm*$fwI8 zO?dGn)7=-wS|%lAqlTq?9YzxBq4wFt6;6Iwrnd#tx00We3U-xwrf>MxppWe6--BIP zsd&+{tD+k7&e!g3!HIbFl!*-W4j*tLAQX)C$;J86qM?-~h96Ao&{Zw+Y~;vfjO0Hw z4Vn?Xhy?@Ggr!71(W?^Sple_Up^D-@glY?w4P} zb(<5<)|OVGRM3m~em3<*^Zjfz-6Fu6ZX+>n&+Iu??Cm$)I0b{-)PWb#B>uYPLPEg6 zBSJ%efcP)BTr_lO@D8X71{s@(s+x&&!vZ;ru&A<2U}8aG;{d68(jaC~(LM~jv1vkb zlbG4R*VO*m1yn zNUS(Z?+ZH40x;@vlM?YXtv~)&tTU1|*va`ywlU6%4pg`DV&<&#(|*wo{mEH`4M(W~ zqKu8z!*uGZc`EP06_S9ltD;djxWG9S5N#a1n>=DO(X*{4M&+@S^Fyj~**@|CCXH#@ z;Uwm8e)3f}8DKbzHE(Dlu*5y}zdwLoJLiM3Fr_?@UIqv}b4aS85C_!qMwE?V23>q9 z%Kmiz% zBI#^-ld_G?4{6`$Ijs)=Iz5$nKCem4+vK%KFsg7niRqqZ8bibV3{#%eiWqL2#kV0M zwn?u_Yqm`DEjOCDNo!kq9ij+B*#wuA7sJO$1=DU)LulJtPnXYf4%@EMq3W?2|KdvEj*4U($6&Z7v{_58Y$(b@ z)+l{o$2Wng6ZmVsK~>}u(|;;A;DYquY$pE)oBap~UAeOKOgiHB9;z8$HAOPD@_n|a zf@54viUUSj(HB@XF5Vw6hq9?;ta6>dEpuY=2K0!N$4L&5F$EB4leM3!|MuDKOL+)u zrQQ`{zSa+|<7C?{-?|n(Bqo3Bx*AerBXP)jpcK0Sj%N6)3}t{~crJY(8K=b8r4*Vq zMTCA^rc_na6r-6kFzOfS|MEcGzI<8}`Xyn@0&!zzbbPLLhRFEY-Oa>l(gDd_xjV)| zCxy#iJc5%3ps9eF*9m)Fok?zmZQ3jh&`;LK$=vuHS?lGY#reCiL*Ylxmc{Ruxe`A^ zqv8{S^CPO?a6Nb(Y`?2=1j7HDy%!slb|a1e3sfrDm`hSyvV0x0VFCo(_Ud5jm{Kt-w59*5 zb$tA)=pg4S#r0R~!s}0tC)Vj7RD4C-nL?FRunVjrC%GCUp>4^E->E*;nD6`GXBW)h zCR_=s&El_r{qpY9N4HLD&- z>9G{s7#}1`TnT;4`L@TGd2UE&f55~=pnWluj645w?){Qq=vp7)4w*E2N}{=VJ|dfN&_(5b&gH(HuQ`=r};x=%Hpvku^QPCjsP z9yZA4D`vLGK*Ce%F(l63ob@2^>=LG0yJ!G_XgLOsHOWY+_m9(Kx zadThtSgElE4ez>^mgPOsR(O;Qo9_;z`efN9Qn2VR7h+FQr=ssQH}=+Xr!V6qwx^4I z%*>0fE(8}m9c=HLD_!}&B{y0^6X#m{wN46O!@lHFD#S5sp-QjAV|+oX*1iJPXtO+d zD{@E4Cnpan;k*Y83#4i-HreSa`A4A3)aA8vkhA z9{_qgfn+7QSJy&IdniGY3~&y4@_>!@X?>xI7MdtTtx*xj7gyE6e@k>dHr1OB2>%~K z=w3_oSN?Dh@8QjC(Z<)s5_4-4^Smytgtjah@EqIM{gbwNlGpJ6RsV z7=d*CffvhMaFR9W8j^6R+ss?_(D9W(Yx|*UUfXKeSw^m0v+M?+VA3=F=6o6542*r3! zspTVpk5SNQ)%dCjFNF^Dcz_ygSp8%yS5T> z#_YE$<<6e#kZAmv3a9~c&||DQj~KnuCuqrGRNed}PImnds>RVr&23V8Xwrr#oXQ+} zWhOId^0^9w^$p3t!1fkVt5!?|QfcJP#sVh+VPn%Cw-vB*NGHltx9mszf0^ z`4PE92Kzi8zMeFA6iIR}8C{ker+$3}4bJyRh@-lu978n1=6GmajpfQaNlGEZq)rwU z0A6)^UK#*-l+^N$lj^_tdxe0!vSlR@+A*%)6##~-UY36$C-`5LU1>NJY}+2$daa3J z9!trLWsqv@j3t?2EMbVoIzsj>#A68+VT>`Dq>^Pu4Tdab>&Z?=v`CZe4U)0TGI`NA zy~q3g|Gt0casRuH`@HV!Jns8G&Xb&)Xe8_)t2<+f+(eE9E8TYxBAcD@>C*M#SkMX& zI!HmY8?|fzTrcyGetZe8SASt6a~|S}{V%Z>f%z})W&f&X#8K0W-a&oGZ;GV;0F4$? zxYm;+9i5_RE-B zj&jqfkP zX(b)A#Ga`oyt(VkO7Ot&R4jpEqyg~bmbhn|`4u^zhuQ*ty@ab&=*-C;FS!Z% zP00}ekL^c<-zClw7}6GmMI#NkEX_maIqI)%cMD0MBlki%Th}}bugJ~G#fs0KW*2WH zzF&W0Iy3~q!Y7WYC;h5$5~;fAh7Miqgo6mVM(@4rt-RR;kU5&6U;FRV0_N)R90FEBWm}huS0^1RH!+Ql>)Dd)-k!nz{Y;?mU(Ll;)4vng|hhX?kp*8nw^rGH;-=Q$fz7Eixxn6FY7;?n1! zm$H@(k^hEWjORKKGudEUuQg4RE_`cd4t}@vVkbsc=hpmfsmncRcPFz*EdGT!vvt9E zE?GtDxNenpqnuf3#(ZCM7ncyZG~Wy=lvkdOC8-YD_GM7L+vjB7M_8(NFCdGL5zn0^ z64xST;(HL4;0p_A>WxmOB>xq}@pQ0;qbbH!~>^>dJ{hCjTp0>F9>XOOg#lj0>ED3 zQg6vafv^X(s~S%o`=MZ%JfCx9f;dH`LSXp7pl!wbLPr6CUrh?RJYtcx=#()0Pw5YT z;=qn6cT*{%L}~Kv0N<}oS*1l9X5@1sZ9K0ZrSK%Ly>W}c{;dBaM}I>mv#Etj~Ewh%m_!Gu$?c;G*lAl z5J{~Ru37T3f$LLxXYa7|yFrP1=M2m|LWB#+!QbKi@t~LE) zT$LN_07xkKqJP@Erg4`+@7Mtz{RWgb^=*HFc5IN_i|PmX6=OsL%Q~F?dGabyo0K6f zWbg^Nev9bERIsIIcD1_hNlv&ck(!V2!wl8M$ldw1K zyMH;vvYbH(K&4iD3#u&ESFeY5 z71fX|XPe^lh4z-i#NHdJ6zi00Ewnsf(eo^XsqBo$uy5`gwHfhp-s`Qct-w4pWrKy| z+$CXc^fQ_`S9D5C^JNY^0vC5)U^NSRB&W~Uu7nMJD1)s2$?p}VGjoHYGo5hTsTi15 z>Et!(wkn>i3*SrYX!rHa9@Sn*a7J*$FPew=pzSqsB{tm#L^F*=lvHq^OG_Y&@Y|7M zm@AvWKC0N>vwm;9Bd{hR9^|QiwN2ME51#*cyRCX48itr^MYbiq@% z4=(ktY`;>~lh<4L4M>(EjXNvOgJjnU_Ow^~;Zu(PnwLCg2=hFuEAv*Eo)9TF5%)&8 z)l=H8&gLB`@V>7g{P)P1E4R;-k?^KHnw;5;Lgs3g>Rk#NIcqldK_My5h3%)}*DeDM_3+e-(|7+*K~X1G(iFaCtRA?39O|vA6_50Zd_Fh{38*N_DdmOK zmxU-ebBi`(p9y6AXGNWwMpMF`-+6K#>Otm3kO9Se7@)*Ee;aQAh!h^&^zaQtq*Mst zxk}E)BlFCDxf9j>OzRZ(*Mh|@4~~DrEd7wcc<4oT9FN{X4-y0#;dg}qs!VunMV`J^ zK|kMtfQx7zQ^ZnIZv{~aaS}nl1L(?`vp>7!=DKg0bmTauLxEE*1<=0>7&Euu$j+ND2K8G0TYxmgMx(@$vZ8xZ1?{SGOusNl(auW*Aqp5YVDJ+06E1ch!KR^K@QHMe!ZO+s%u-(u8yt=7~Xu>#Gz zG1hB0!u&;y>+J`bP^S8pmF!(-PP+CDPR6O~ScgYQ;mgFR|K*It14@*i)Um}04*kU2 z8_uzmlYH3@mhEi0By+~)a%bD0<3k9#+l~NX&fy@)1aGl9)KWaxfEzF4LDsZELHBzD zwz`tKL-(roRVBqSCtctt>sesRcKE^84P$=J^r$baw0)wpAylw`A6YmB;nT2TWNt6q`#w zbji@}RbsG|ibh~gY#7({&YjEO#bll;Ak~c4C(u?LX%uTFiUmTb-3}Vx&)z$sTTWLE zz({#C$(7?!nm8>&?F27MXAPwnc0SPE@EqFaxp3WGd2XL1UB1*~Y*L|Xad|~7dV$Vy zbP$z>%hvwU8K=~WPpSF;S6aNQEdjpE9uCU?hE7zqOG9l`8UvMkblzKUH2be^y8jp& zbC771OK}nw)19PaBi-tbjGh$wS@7`7cC0f?gaQ@E#vY0K`GKBBT^l>z`6{-Xat;i` z-hwr^^5L^=@N3$Nr7jJ9y-uOal1a*MD(gUzn!@E~>N?MZHOw!oj7G@~qZOVq@^E@^gVoL`1~+`zrg4GH=q zhUR8rZV6ybF}5Kn|Ijy1xVyqnCbXR|s(F&j6nTT2I&B@6U)Momn zl~40vbNl+;CPGgwrXWGeRz#vo^va=%#z!&v-QX>;r?CzDmF&wICs&t^gjb+HbyAlu zMj$fEW+#&V8gGY(KVE`c>Cwx4@n%%k0e}1*(>b4BUJnY1Zgl-#TGDp0Kkn<2!w5~g zvI66hkuJCqL^qCJr{ynR-v56Ayn?5WKTl%wvo~rR^I$L2G3XIr$!y>eANg-P#SqaU fgzs%Vr*-jYG(YMS<ttdtee# literal 0 HcmV?d00001 diff --git a/website/static/img/docusaurus.png b/website/static/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 zcma)=cTf{R(}xj7f`AaDml%oxrAm_`5IRVc-jPtHML-0kDIiip57LWD@4bW~(nB|) z34|^sbOZqj<;8ct`Tl-)=Jw`pZtiw=e$UR_Mn2b8rM$y@hlq%XQe90+?|Mf68-Ux_ zzTBiDn~3P%oVt>{f$z+YC7A)8ak`PktoIXDkpXod+*gQW4fxTWh!EyR9`L|fi4YlH z{IyM;2-~t3s~J-KF~r-Z)FWquQCfG*TQy6w*9#k2zUWV-+tCNvjrtl9(o}V>-)N!) ziZgEgV>EG+b(j@ex!dx5@@nGZim*UfFe<+e;(xL|j-Pxg(PCsTL~f^br)4{n5?OU@ z*pjt{4tG{qBcDSa3;yKlopENd6Yth=+h9)*lkjQ0NwgOOP+5Xf?SEh$x6@l@ZoHoYGc5~d2>pO43s3R|*yZw9yX^kEyUV2Zw1%J4o`X!BX>CwJ zI8rh1-NLH^x1LnaPGki_t#4PEz$ad+hO^$MZ2 ziwt&AR}7_yq-9Pfn}k3`k~dKCbOsHjvWjnLsP1{)rzE8ERxayy?~{Qz zHneZ2gWT3P|H)fmp>vA78a{0&2kk3H1j|n59y{z@$?jmk9yptqCO%* zD2!3GHNEgPX=&Ibw?oU1>RSxw3;hhbOV77-BiL%qQb1(4J|k=Y{dani#g>=Mr?Uyd z)1v~ZXO_LT-*RcG%;i|Wy)MvnBrshlQoPxoO*82pKnFSGNKWrb?$S$4x+24tUdpb= zr$c3K25wQNUku5VG@A=`$K7%?N*K+NUJ(%%)m0Vhwis*iokN#atyu(BbK?+J+=H z!kaHkFGk+qz`uVgAc600d#i}WSs|mtlkuwPvFp) z1{Z%nt|NwDEKj1(dhQ}GRvIj4W?ipD76jZI!PGjd&~AXwLK*98QMwN&+dQN1ML(6< z@+{1`=aIc z9Buqm97vy3RML|NsM@A>Nw2=sY_3Ckk|s;tdn>rf-@Ke1m!%F(9(3>V%L?w#O&>yn z(*VIm;%bgezYB;xRq4?rY})aTRm>+RL&*%2-B%m; zLtxLTBS=G!bC$q;FQ|K3{nrj1fUp`43Qs&V!b%rTVfxlDGsIt3}n4p;1%Llj5ePpI^R} zl$Jhx@E}aetLO!;q+JH@hmelqg-f}8U=XnQ+~$9RHGUDOoR*fR{io*)KtYig%OR|08ygwX%UqtW81b@z0*`csGluzh_lBP=ls#1bwW4^BTl)hd|IIfa zhg|*M%$yt@AP{JD8y!7kCtTmu{`YWw7T1}Xlr;YJTU1mOdaAMD172T8Mw#UaJa1>V zQ6CD0wy9NEwUsor-+y)yc|Vv|H^WENyoa^fWWX zwJz@xTHtfdhF5>*T70(VFGX#8DU<^Z4Gez7vn&4E<1=rdNb_pj@0?Qz?}k;I6qz@| zYdWfcA4tmI@bL5JcXuoOWp?ROVe*&o-T!><4Ie9@ypDc!^X&41u(dFc$K$;Tv$c*o zT1#8mGWI8xj|Hq+)#h5JToW#jXJ73cpG-UE^tsRf4gKw>&%Z9A>q8eFGC zG@Iv(?40^HFuC_-%@u`HLx@*ReU5KC9NZ)bkS|ZWVy|_{BOnlK)(Gc+eYiFpMX>!# zG08xle)tntYZ9b!J8|4H&jaV3oO(-iFqB=d}hGKk0 z%j)johTZhTBE|B-xdinS&8MD=XE2ktMUX8z#eaqyU?jL~PXEKv!^) zeJ~h#R{@O93#A4KC`8@k8N$T3H8EV^E2 z+FWxb6opZnX-av5ojt@`l3TvSZtYLQqjps{v;ig5fDo^}{VP=L0|uiRB@4ww$Eh!CC;75L%7|4}xN+E)3K&^qwJizphcnn=#f<&Np$`Ny%S)1*YJ`#@b_n4q zi%3iZw8(I)Dzp0yY}&?<-`CzYM5Rp+@AZg?cn00DGhf=4|dBF8BO~2`M_My>pGtJwNt4OuQm+dkEVP4 z_f*)ZaG6@t4-!}fViGNd%E|2%ylnzr#x@C!CrZSitkHQ}?_;BKAIk|uW4Zv?_npjk z*f)ztC$Cj6O<_{K=dPwO)Z{I=o9z*lp?~wmeTTP^DMP*=<-CS z2FjPA5KC!wh2A)UzD-^v95}^^tT<4DG17#wa^C^Q`@f@=jLL_c3y8@>vXDJd6~KP( zurtqU1^(rnc=f5s($#IxlkpnU=ATr0jW`)TBlF5$sEwHLR_5VPTGiO?rSW9*ND`bYN*OX&?=>!@61{Z4)@E;VI9 zvz%NmR*tl>p-`xSPx$}4YcdRc{_9k)>4Jh&*TSISYu+Y!so!0JaFENVY3l1n*Fe3_ zRyPJ(CaQ-cNP^!3u-X6j&W5|vC1KU!-*8qCcT_rQN^&yqJ{C(T*`(!A=))=n%*-zp_ewRvYQoJBS7b~ zQlpFPqZXKCXUY3RT{%UFB`I-nJcW0M>1^*+v)AxD13~5#kfSkpWys^#*hu)tcd|VW zEbVTi`dbaM&U485c)8QG#2I#E#h)4Dz8zy8CLaq^W#kXdo0LH=ALhK{m_8N@Bj=Um zTmQOO*ID(;Xm}0kk`5nCInvbW9rs0pEw>zlO`ZzIGkB7e1Afs9<0Z(uS2g*BUMhp> z?XdMh^k}k<72>}p`Gxal3y7-QX&L{&Gf6-TKsE35Pv%1 z;bJcxPO+A9rPGsUs=rX(9^vydg2q`rU~otOJ37zb{Z{|)bAS!v3PQ5?l$+LkpGNJq zzXDLcS$vMy|9sIidXq$NE6A-^v@)Gs_x_3wYxF%y*_e{B6FvN-enGst&nq0z8Hl0< z*p6ZXC*su`M{y|Fv(Vih_F|83=)A6ay-v_&ph1Fqqcro{oeu99Y0*FVvRFmbFa@gs zJ*g%Gik{Sb+_zNNf?Qy7PTf@S*dTGt#O%a9WN1KVNj`q$1Qoiwd|y&_v?}bR#>fdP zSlMy2#KzRq4%?ywXh1w;U&=gKH%L~*m-l%D4Cl?*riF2~r*}ic9_{JYMAwcczTE`!Z z^KfriRf|_YcQ4b8NKi?9N7<4;PvvQQ}*4YxemKK3U-7i}ap8{T7=7`e>PN7BG-Ej;Uti2$o=4T#VPb zm1kISgGzj*b?Q^MSiLxj26ypcLY#RmTPp+1>9zDth7O?w9)onA%xqpXoKA-`Jh8cZ zGE(7763S3qHTKNOtXAUA$H;uhGv75UuBkyyD;eZxzIn6;Ye7JpRQ{-6>)ioiXj4Mr zUzfB1KxvI{ZsNj&UA`+|)~n}96q%_xKV~rs?k=#*r*7%Xs^Hm*0~x>VhuOJh<2tcb zKbO9e-w3zbekha5!N@JhQm7;_X+J!|P?WhssrMv5fnQh$v*986uWGGtS}^szWaJ*W z6fLVt?OpPMD+-_(3x8Ra^sX~PT1t5S6bfk@Jb~f-V)jHRul#Hqu;0(+ER7Z(Z4MTR z+iG>bu+BW2SNh|RAGR2-mN5D1sTcb-rLTha*@1@>P~u;|#2N{^AC1hxMQ|(sp3gTa zDO-E8Yn@S7u=a?iZ!&&Qf2KKKk7IT`HjO`U*j1~Df9Uxz$~@otSCK;)lbLSmBuIj% zPl&YEoRwsk$8~Az>>djrdtp`PX z`Pu#IITS7lw07vx>YE<4pQ!&Z^7L?{Uox`CJnGjYLh1XN^tt#zY*0}tA*a=V)rf=&-kLgD|;t1D|ORVY}8 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/website/static/img/favicon-16x16.png b/website/static/img/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..178c10711387dbff479e5b5d2fa6966ee4c540b3 GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>`T@Ck7(s%#9%Yz)b6 zEUj(~%4`hFZgfv+@}!4j(%Kk>69%8&fnd8=5}8HhV3VAOj~!%Id6uvf0LMZL({z7J5Jn4?O3fA z(dm@fq!`j>n9#2h+U}Uxq#V@r|NsBS>FYRvfhblIG z%v{JRkdTy?FmZ|#)1@^$MnRiSH1GyH_;`i+$(;xaVBy|i+;LJ{bM=YUr&g`Z&d54> zs)&JgOKHj1FHd<(c(3+6abyaLk~*fgYgyVev1wt~xD*&8U0tQ4t*hDH)zigYCp4^{ zy}Nz+^zHrY=kGW3=w4OnkPuMdkr7eRvWzJ}AxQgFOju}`nH5_KXMjSOR~X|H2G$N{ zOUb0I0WqhJ9?Cy&nOiTJ zTUc4xd$I_#u!2j2$>9`c<;@`qr*B+2apcSqnIr6{8$1?x=`p+#7cBYYWI7dS1%s!n KpUXO@geCwPM^2Og literal 0 HcmV?d00001 diff --git a/website/static/img/favicon-32x32.png b/website/static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..f1efee03ab3cbef83577a5b041c102fb9d599fe9 GIT binary patch literal 1533 zcmZ`%dpwj`82(Uchjz8tNl{ZFmeHsPT{ap&cO%BNW*f$kA~Tv{#wFkR$X!?>*DfpD zg?2C%)-|lz&@Rm)^HUl>>qo6?|Gm1Jn#EF=Z|v|ogA&UV76l*2-;#} zO>{;PC*7On&`c~&`W=N0{^kzm5LBL~AokuUZPKir9Uv%N8-n0i2wFiYcnX5p1PGd@ zLXg>Y2*NT7YEB)6AlYOmd$Q#i4~|8^l^B2kX+%eZOW}YM2>|>rgVvFkKeu4u86+*( z5gm7sxY(fHE37zP*| z5W)qven8h1(R4wy$cQ!>*+)hQo`_o@u=4|Ij)=rn@&K(t&C z0}qr3ny&F?{#oiyF<5(8$1};qFB5AI3_X!;_Q1?PvwKi<`$>mAyKv{JSbJ7s@5r0$ zzqVNh=Ni#62F7RB*VpG4K9)6fyGQ-Jha88sgNebpuV)vg=NF5sI!R$Sb~#_M4#_X9 ze75*;xmwWY6L(MBJ<*ACqon5f%)7;Ri%aECgiP<%YWO+sWxUKhluVhu*=%eSZJ!$JZ8Fc+SJGi-PXmn~`*DEO?xvai( zU~y^L)GrfHNo8hKw04gyEw2iMqj*Zn{vT6WS(VRv##UCv5{V@FPQwmTOjKS~*MLYY zUK6iLghNxHsK(eg!t!z%CNayyv&}P>>Q$w}hZD;22tjbBVhU z3idc7=h@(Z7joz{qUVMjJBv660Cf_w`xN342uvsl-W|z#B(op=ulg)!M;8>KusccBM) zmW_j@{KTejs8nzI3-e7i;f%)TO@9a)Tg!r}35qEx-i0v)=4)^-PLF}vqL7x5l61A4{~;w+ zA&q2hA5uwlqt4_Ne2Xp0%Ptxfsify#(@6m!5eP-s$Cgxb$?x zt!nOgiSfR9dj69@N(HCu@!XK3^(c?#&slo-D&lBiVBOMNh2dywKlzDlRyxa+GsQdN z(J?3JqP3A)RB#pxnoi)(s;>WCk0#mm7lzpaCR3!J?me2Qbdsn_Y^tuT%8V(S6|gn6yDX7}v<=ZnWH_twmRL zH8OGPJpnl|@j-qNti4Yt64&$5C)Z+Gda!)GS#&d62pt9J0O0@uPcX(C8j%SH%?O5O zhQ@k?17-xmkrr^_KZ2lO-vB@E{|jt$O?y#+dpOyHM-?TM=rmJ#&?_JtOGn~E3o7ytz75d- literal 0 HcmV?d00001 diff --git a/website/static/img/favicon.ico b/website/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0145fbfbd5b887d60a9edca52036888a7d3cbd0d GIT binary patch literal 15086 zcmeHOX>?Ro5^l#CJ@aSAIdc>o(20nsFerM|;|!ysqXS})Eri8ELVyHF!X5}DguahO z!j6P}7eqlpQG~DvVMq2o5SAn?VF?KkLK3po)K{-xr#s#0yoLtCIrKS|`}*bGcfVV= zs&3t?YK!F&%cGWh^(@@_S-yS2VtLDAvH1DfzCU5HoaTE^aEt$U{k_F9f**K^pW!Z+ zAST?GPffjX_g7i1k1>6yl$xrPwvFka59kQLBb6!52Xuh3#WTh?n11It2mbz~vZ^uM zUQyAJr22)D>J{Vz>OiVTJ5muopgx^R#SAE6oT-d6l<6_df!javy;&+YrbKlQAT6*C zY0aJ`t!Z`N(5KZ%^940~hP1ZzNc9dT#(aY**oHqs4T;TFA^tkvCQtKtf2*9-q$+7G zo+pL1P%4S%P@CoQkm}c!wC2w-=1Pp+;3?+t*_)&WM;Ec&MDsj~RcI5^Dl^{=>_*GH zR{g_y4YXgBbqHx4-)H0poslFk=zgZ1o{6P&KJp8bc2L6r@@!wO~gZw<` z{CAZ92Tp#f>-(4?{|}u0GJg0szz_Qw{DDXNqx`Fqx&!;FcyCeuReWck*|#ahZzZks zf8FB8xZ^t1qo3pZ(WH=n@-x8U-99m_`Lp!H*l?N`)trX6_&ZrKk2~Ef&EjXQle_+# zZe(4e%=4#d)8g?oHLL**ZCcGVKY{u9Z)+$&=Q;@Y93eq~l+$_vgR)xi@$|t7*v>ohh!(i_#zK?3MjBi=W>+ z_VZWh#O`%eRB+3V0T(&fGHCy=i|MQA02&eST)F%l+N?SyE*e9**;k$V7v9RFl!IGn z`Gj6HrhQ$JOVc`L62HNdQSEBe_oKSnjCw*5li4(&iATfg9zpTk@D z(VWO8v}@%&%Fevt)W4{(fX*lHqg69vXhQHCVkaupF)#6BeIX|!18dSEtvwyt@-yY- zTyw%vkav?#?MZ>$6C25^jM=|}SiwWNJ(zoDF~mkkKgLe9=4?V?|%44`pAuQ3js zze>+T25;j->kC$3E@te;2Xo50kS24S-t$A&F+O)W^q1?~#qaPQ%wrgz>1Ou%n11_d zmgqGz)PNzF&K=uBlS2RH*5>Ma%F`k<2`oG3PwXeilH=z_=0#e{a_h1VKEQAA1n-7D zof7sQZTx1e$c2I7R&I{iDa_S)zHAGf#aza=e}#S=--A*QZKL9%LgN*@Mk8g-o%;C_ zKV<5YDs0nh&^N3bXOni@$2Nl>xMY6JgJ}^T(4N%`oowCu1z+41{Dw}CYWFfN9o>yi z?pe>a>82e!F0y(3p|39MFLJ2s6848V{hQG4Rr6hJQ*ludt(qR=Q~btykNf;p@hj4f z>~P{2aOYgR!h6FKn$LR!@Hwu%G4BxpHE6-$*0Lwx%+5kL`={_$zR1x}6MKs-bMZHB zLw*c>o7nj+T0PrJ=_e05$tiUAdd7L$xuWdetlJ&~cU+rVv}8mu9ovyW`8Tuem~nB7 z_vYlCYw5d@U1(I>mxS-==Qw}4_6EQ7uSS!*y(9Z*#@Q28Qe12wx1^+4e51`vCeqaK z_ucwNShF$z`-kY~>HV9iAV1gM9~ao04{iK`zP7fr`$leY8}`pEe#Q~O)%^q56f^#oBmT>2$7#dDIN=F!xwlKDd$n8an1fmVGhd;vdlDAX;^7_HKdV)~ zP8qx@(*i%v4Qp8EP5WnM-r+J2llakZDEkP&AZzT-7F0M^HSw>-?s||j7mS|X>ji$V z-dpaNZfsz=&-zY&e1qKt9&hKuHcjSFIR4PkZT#VZ zz^^pYLOJ*1E8X%|7H;c#2mT9w*H$OFTEqE4W1DCbX|&q?=JK0M%u4-;6M)S!NhU(J;qYV6=bB{|5-z6OjB zxudXF$iZhYHDs#Fb4ZZ7hoJZL+5yZF_Ovn)hSlq zTmw<0`g9@{@`>(KATQu63Te#yB=0j`lRqK9uEN`pis}izXEWAu-2MgFjSqjX#`lM_ zKBTZ*ah-=1&-#v(g1+4@m2lrorUb?m$n-}8_cdJn*9W zhkw1`fECX&|BN;f-Q zF4eeqV*>}q|BQ1&kcG(Z_hEeI^?e<`63o9H$LIzROm@Hiw!FLf!D5)0e#^m*g0q1XkpyE}uCr&mw+(a_nvB3+c4oS`q zxy1C72Pk1?tW&%YIkNb!^(Fq9aVA+}*~r(OIl7Zp#7AOg$e-Er zDR>{=i#Rc2{Tsd>E%8>p=0UGRK^!w-#$ZZ6ae#9eMVt@dSo-P1v}TTyc&RZrkrBK6 zIj_I{8Jnztf8e8$k2)dwC_PtxDK$xA^jHV<(=k`!b*f9q(WD;SD)D73PTJuedOja> zH!=URIDlbD<0oa#$F{GM^+tYTT7+vJ%=*bwEQ3!;9R2ix&GPJ3j;$MUUT?<7+`xlL zA#c;V`NQc_%28b&IG35i^RvGb^Jk2}J*E4*oHHFqSI(W}^(qz_PTIbbMsvM^$fJq* z%ez>%riM2l4N;5bYj;! z&O3#OO|kQ|g7J}inAxWh?c{ot>??X*19GOvcC4nwBZ4W;9&fKIwJLL?n$g}hi=_4g zs6 zpVu3?dE^0iulh=CYkBoJ;QQ=;{scYP{=+o$c^ePoBVGZ!4;x%z4v61_y#lg{wKe3= zzRrBl?X}18(TDdm_$cM|cf8Nmq8rVn9@AouL^>BP%e;fa!BXhOZY)8QpcWZSw?uq}8-x>@$ z%yp&-5|=@oQZN9=T_lW+SXV?_#4aW=)n`3SQi$WUdRg}c;g5Pl0jxh9gQ}Qb)PL&| z9>`~(nDsn%4ci&`T|SQ{szH4V)qo!4HL(suk4#ZaR3^uh=JD9IFm@tG4Xk=3=AK4l zFeb)EoC0A9KPG#ef`4mP_M-+x2C4AC<18yTn6jOz@eS4G<6NdZTWehBaa@688c|L8 zjGwMG_w!!H@w=XgcKh_-lH8t-s8Ihb=`V5(KhgC)`aReCqLU%$k6P@fCFhO$3fwpR zPF&;6V4Rm+bh%68EG-y*BF+}Cvmdic>MW*l4VA_|7JS9Eb2O>l!FdO@JWgjATYu;! zY9(j(ZX~sRs43gIVh+vXT0i*d@b^#cOO$gHYTn>83x0?G_zu4Tgt{EmAftvEK2Pk& zf0bHO`0zKcXG%R1p3@xrGY?QV03T=f%K386fPV;|40A)xAZmF~3yd?Q@YR?<>pn1{ zHU{Sj)b*i$2>bWcd z#4qdST4Ms7GFSe;@XWF8(kM&o^by}LM?M^%b$8vl;T`v9{kbT=AN1BXv(Bloz+-Hi idZ}*BG9ZWU=|ep>kDR{)sjz@F_7mD$@4z~t@Bab!?d6{U literal 0 HcmV?d00001 diff --git a/website/static/img/logo.svg b/website/static/img/logo.svg new file mode 100644 index 0000000..9db6d0d --- /dev/null +++ b/website/static/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/stackql-cover.png b/website/static/img/stackql-cover.png new file mode 100644 index 0000000000000000000000000000000000000000..872999ade8cefbb87d897c0662d8a9b41c0eae5e GIT binary patch literal 29955 zcmeFZcQ~7G_&%(=)q!eC&7!3>OYPZVv{kD_Y(*7STf_=&joR9(y{VNT_Kc{JXeo-u z9wjAaBKAu1K0e>yd%VZ{|NGZ_eE)FpM0oD|ey;nv&g(qSJCXXjT9+9)7#SECET^IRzl3_BKb<~7)xKKc z=_I1=f~;G1gO9AfXO=pYsvgdAAp5miqkgPPrj7-aIh3_z_0v>mYNy;TUI50%AhlhJ z3qAq-a8vuF=xrr zO}k#Am1!&K9PdPiEQlC3G2$ZHe-6e*3}=p?U?INyoAIE07-Xl2^F@zfgXKVWn5kV1 z`%r>aqv8H`5G$^LJIh*m8d|gwFhQU8>LH(E=n(jR@|hYn-nuXmds(WlqhR; zs$;H5QsOti2eEb)II-f2BC(Bpa^P&OIQY=Clf~<{DPl6}soqiP0bJRxo5$%z_@VUV zz$l6`%|k{~ng3JGW_;+Avu)1!doN}Hai~suv zNs9{VHRp^O*??~cs(}Ci3uOoyI-_w)wBPyK^61ruks6g;!y0S-kpvZ3-pTD zNaA73vPg#=)2N80|G}(NbIha26*7nKOtd7evw!7+y?Lq$n#c|N{!Q9zgSW^-X~#7M zI{LBvd41WG{#e7Q+-5EQ5(GyMon(#~As2NLh8SE3ViXZ4@tx!FK z2yU6Tzp;W+ta!0sJ}<*)^J{TCdShiqC)uL;^`A$`T=fR{#%#jStl>^^?ThNfpeq&2 zjHtYgH$P3aUb9$X_y2A741XmA)&Or^Rk8_Gr0FDdZ@$odXsvYGguy!+c8>k=+#L1W zMU>d7_t7Zx1Q%bB?Md!_kM5=9!V(8jQ4uVAz=8y(mIAKjN83NhVB`NgMd-XZbWXfk zp?O`n^UFelctc%a9Lr4?TD-L^jTf=r)&u!-)kWg9yS>!0%>n8^^<-4t}6h#(4;x~cGRnEfi~ zVI{ig$^cRD;6|){C7gg}e(!UGar=9yLYCcr#u?MZ#$`@eGVk?2ELIv}V^><~XdJ9b z;sdfiBfwtq->O8xit&{BzH{m0(?1-<%?!AbvqeHgFW!#ulEGK1FUdeywOkJ7+KCY+;Y5iHl)<#%2PU`+3a3W&?HZ=Xyk){?EBY~ zw9f>n{J!ELF7MwqST#Uj2;MF67XqI1oa>k9e#JL`+L8Ti3Djb%sGmV<&vor$c>Vi8 z^X$QSOmU{+4pTU-!Db1wB*9*+>uFSWt1Fa%q_Mr<`7( z!As&9uZg$U_}&jz6;qp(XwKn4wcfqoiA!Qc3rYRi9ZqvrPoeK0RIkl~C3c#YjV5zH z(XOfZHRYmN9kO>jA|l}y8Cp40{mBak20KY!80p{rB@~scyZ){C8&+%E-I*LSOIeFh z(5$YX5E{38U=TwYyI8L4Al~%zMU|vDu6;(lSwu&9DQ_c zk_#U9?|+$h7ufpUs{FYxj5)iv~8)ps4eNWnK-BHJ4g&QG3Q`sg8ZpMlLm*F^b&m5f_y=-<7)0> zI(DAz7}9&K?jRrgc^yJPj0=D6?B0}cB%W&I`;-2uy@i~woip2{ zsmkJt9IBLma2Cw$%$YDL8mp8Uo zh2NFqfkL(>ql9r*Y&IHW^b$%+CATeB5~S0*avr6drJ%qa@ZG8%dFgzmqaaRe>u1^@ zlPhd0EZaXhFpCM$4UL|jaI(SdP6MOdqVS39TMa2WTZY?DL=52D?K1(c1QzPQIcG>R z+jxG#L`yxw*myjHdYd)i8D*L|5yHs>M^iGF)!m`f86kr{mb$1=$m3`);%dB>iIY_C zZ~h;OtCJ!_x!A_p?m3exF4sN&A5o0;k(=Ve_L>KyE*%d2MI5AZkh z?<@5l`T+YD+)6^F(M;j9Pv>V2|4oJr-TkO1PKSfy0*0nzQHyf<+?|@_GM#uASLJ0f z7UNE#6}=c+h7@E%^k#oS5%<9Mv)ln`cB?6B$4AbY65UWprFX@|EFL`5(2RZ>d13DN z*#KMW_@JO!L^zpDo2;sey2F79AhTl{&eA95VJhI+I-mTP%x`L@-0+_s=>_y=^yBLS z?>#Ca%+x^A6zt=>5m~mW!)q(Dh4#)QiDVZje_DO8+kjK7R%RsT0pxl@wyW>@fRON% z&@mtxr|o8s_!^-`XCxo4)s3ocN-YwugMyN?g478H;YrzSD0SW z6kwO%dG~bbB6c*`IC*EthPSEet*a%T^nWV)gu`k`U-Q9E6<9q}C3$X=%65NR|13>O zxm9U|Gk>0m7WnW0A53qe6!W-EdL?g>QWK)R7D$##S8Pg|Up{0q$1KpKooR!({N>KD zUquT%76G3OrafGH;qyhyYoVqFy&yQmlZ`D6Jk25{JeC%AlA6AMt*@lb|lg72#DOt zQn6mumoF5Zhqt7IinxVUf*0~QPYmZk(62sjwdL>Xba7X}{D-Sgo9dq-U-{iJH#CL7 zh6RYyS2RI=;@HlcCriL=zqEJ76_=gxR*@&y%!uVl;yw;6pX#^ zdFeyr=MIF>jFKKRqXnBC7}l<2)MnqD%H1Snyfm8eV~fr1R@hM7o%nRG_%XG$^`jY= zBem_QAe*ExNv@E~GfXOn+Dmn{9GLjdmmRy7afjXqDdA-O3%~}fNCeHuhzSPCN%(5r z5QUl_^`&@E!}gc#QDtQzqP-J`kVO0&@SVd|X-uDG{ecyhQor1u(4AA#xA{2Kc31jC z>8z+-$k~m$XPQ0Yg9Cf8Mzo;M} zn!^3ic&g`~Kuj>iBgh>Y94>P3>c5&9>tK;oF4`w{pm^DuE1oE3nF=IYL;L2?%kj!q z`;8npMqt>*CdLC!OeMy74-Xwbs#6a8vs9=z9u5PE;x1h~IFd0BA$$SZWbnW!#By72 zYAIRv>VRBnobWF(jhRMHHgx`_WMr|X69fP^m7aTlR5)gwT<)Qx?%9_5Nul2;mp^+u zWD+IIF$?w`2^+zyI;kEmIxY2W5{Iu_xVYT=VFqtQ*X$yF%C}*f>Fbk zZaK_*A5LboZq~G)IWI=jG-|NSh_kAwDRpPP^vL0~$?yC;7SBZ6!DPei0`61g=&u~07F%~7PG6Dy@V1kk83^7IK{6VNoWOE zK0ECq*BktC9r4IRR0BM?$E{WO&8tDR^{Ct|`3i0&y5IxRJD1~)x!^Uj(~NSkt0Jv8 zVC3MCp2yBB_`_&6cg|ONC0b-Kw2>{bCs9syL%rWfgt!>qjIlOu;0DmvDUd7TcCOe- z(M1C$<3JlVuMJWxYU66csOuIX?=UawUeXGf&;LHwBoa3VzC*rcOu0HGoCtrG3c%_w?Y%co}2x-bbX$1yj_+%mOnrpRt5=wBW? zyfQI3ljY-kV{jN+R8^I?#R(h1TuP`ENa~=jRW%QGCWs3sSI$s7v|>;!dkZQ|s;09( z1GUKQpC7Ituc|Cq*{|%)KB#78jxoJJt7G21Z>|qTpGm&fL>7(c$L$Y2o%eu1 zBDN`5k%YM`%gmQ&cHv}ud(h`_vHcwAwX1J-Yb?9w^oH(2Wb%~%Wx)fo6CI%5gLe8#Ip6IprV4x}HO6{P1C zCBf^;vjiXRsqSy*9anr^6v81P{GEz!q_)~n6GVmoM5@+WGRA#;*2#a%i8E}ze2x9> z9)^gH9s;Gx1=2}uy1GQ3=3sxy#U?MU-@2Ej16!#-8Rag|%r2cad2o07UaooG2|uu% z_@iVo?p8eEvx&Yze7P_le<=LnyTmJFzuMY1W|5?r>AlKgG)DkTuE^tqV>%Z=1(ck+DyCgc8>;t->TlYIG zwwZFozi)-Opv$}K!WN!WmbGZirc|-0vsTPni&d@ReAnDdYqiapX<3`2xTVdaU(cB= zw`o;TiyAi|EO6VUZfToo4XlC)B4PsoWC8T2PHP21MV!P|0q)9vp0Tqb147QYkC+U> zU$Kn!W??ormxN$TcBEw&Z&D-t4(Q%|2~pw=f4yh>0esiW*yjovWl?&NLw{x5-{gC1R- zBI?-Jw;^r+gYt$t0bmRuadZD8B7JNx_~j~4o8vhkl(Jp|KY^M&^~d-0c1e}O0VQ@} z%{;o01h(waLX}&H*C&@Xwo<@Q+oit%(;>t2IUmZ&QznLvdP!Uz8>&h<3R3mAmcf)i zGqTg%2A3y-CZudexQFiE7h*g7Hcmtb_U=|+Vq#A6ZQ)x$S< z9S^ef5O21Mz}Ew7zFE{K+L3ISALWQ_u3O;ez_cFb**iVTpAE2tadAgB)cKCs(C?SE zY<;cSS~Yc|KP6OOI!j2QwQn?ctD06C-6x$c(YsF7eRoC$QEr~06(KWUqunDopPz ziL}TITg}cT?M?ms?W(&`$*$Sg)j zbAdgt3T84(h-+_rtCS;Y*VyK#+;9@?Lkwd*Kq#c!hjAJ`1V$({^Ur+b0%Gp=|U5KRAD1)E02J{)ePt`vd4@o^nVg#b0 zS3XOSY5+Yh;LUkQrj$QJEmQojO8v_NyAIBY$#4kFDM}`>X@Uk~FHRd6v&^$EXo3u+ z183$(^%6(28f63H=fjdSqy$v95_gN3xSNAHvX?g69ruD(g)oZxvp&(`zB z-1&`qDtRiyNA&>hz4ZavgAld3-U0Op>-|09GDsuwrJgV`uRIW+`6P%>RBV^X4DS_rG#c&vjhh?F)3KIVLTF1YU!zGzm zv4hojMPr2XTB8b?w9A+>G$@t0m>6) zLz>i}cf9YAz=$s&kJu42Db`~=0|}D4ZZrJn{`JB$*jJdiDCPr*^kdYc=jaLU!-0SB zk5Pilm7x*{Tg{HC${NJn%ASepXouG!1~dycvcgM_{g6R3db|ZIKwOHRRkLv&7Cv=q zj#{}j;^M2$TPi7>#AfB${mWBf62RM1`Wk=s=$=>MRkjL~oc#@=6X9f=9a_TRMm$fp zt7spxi?;y=1WtbY8oHpq$TE)Von~&)rM6xHj9K=0%s{`4a=Br1f1v0V!r+PmfFpOA z=;@wSw}0oQ7Eeb<7YlREeDgaTo+J0BR0RN=&oa;w3VxMYoKMFG1;n`pYKWihKsE>O zxf7J|k-vonO@X48yUf^e!)>%oBB_fc$Cm_`;W4^ZSG&J5dYv3gPNS%0Bly!&h#T!t zPF{G`?4ia;`BS}D<3i5ajyb$-f7=a*8oNl@R!1L{MJ9oE*^1mG&)xFUsmW#S?B$uI zrvPm6Fwl@3xAknX&jEqV0Ggx`?VNV|W2obAvqZ=4$w=egX(bjFv}|nqM*2D4fIJFV zCQlK&(T4uRZKW{}2IC{ZB8NR-<@oXXlux^lBW+G!rkEiD@7muk@e{cW6oLJ&I6auv zJy=fEoeqLvQb#5g3!4ARmF6Svj=}SIKxUN|Z-VXxMXjF9IdvX|P(F*ej!y;aJ>8w~vY5F<@f8E}ROlTwGbQ;JULe3k zkr6yi%T#;NK(tgD|1zi&?GBVPHsTEIo50SPz(h0KBNRZ(#7FBn5M+NUa9*m(d$eL- zt+xN_v2X0Fu5g6Eb(l|jy_-t|-PL?<`z^`S-UbgcVYO~dI1&~Rvh=kyQ_}1}R@BW+ zd(N+{<)2VpN>nmF@Fbb=YJW+5S?S_oc>}D@1Z-~)c;kO1%g+WCF&}2Fy7|M?Z`LVT zR^#4zfm;AS!`xEgY4U6|Ztoksg74^F&0Bm+ZRZ7+e_M|QHg(rFzL0jqOASr!#nfJ2 z>)dFcP*ZZqdAgszX<;=gV(T}1M2Eh-@e2NCn$Ky(F~`m8Q5S$Dg~U~;5uScvROE6g zlZDS_f{n4!>!ozO8se?L>fook?oV?5{@b3^cE`!1_YR7i8=(J4?g^8qb@{%M#@!|E z^Nz@XF9|+yC+m5Y!{G|9!9&qZUpwi$YEafnfCxuP0o1MP}BWJ|qJ;Vwdn=u9Ukzl4+pvO>cM|yV0(# zoBEmOp!;y>V;t46=VI=0*O}T-Yyxz@iLzxpVl1zEtpm-|JjV-2FGub8y-TJ3Dv)#n z3Odx!{Wh7&j*tEcnQXg8U zAyu%`<)4;#+V^-=1>G0yhXo7jqR^clLxT>nS!bK$7sQMf|vx?=dnY*XCi7! zMd*aLr$hSd(9F+(<+GDCZ6$9EiIgec&@qUG4u*}$@_ep#^t4L!ic6i|LvVB%`zou) zqjY2>C=((F=Fxy_A24MnU~6UFWC`F8DZ z4kCSmDhtA5{D9kddGN8o?x0}?!KY1G*gK~fx3S$L0MKC)4M09HVm6){5=(1?_)&NF z8Ob#bVjhlV*Ja_`c==;Wfu z{Vn{|_1Wx({gZZC3>R?`jxSZ%Uma6(dNZ18q)F(Xqk>qie}&!CkYh2)?;Wces#~~J zq%{aOK56$Jk>zOz5nYQ7GEtC$X4kC5B^uu_t_@URg9g5=CWl%YdFq#ZOuc=M(Jlw;9mRd$a+_Ks|-L!w*on z<-xDba;n1+R$?tD56kIKWdJ+=(tlS2KuHPW&v=`cjUV=$|B836*W4bz?F6LarQur6 zLAS3KZA0fPUS3LXSc$W*-fg?LlHkRpn~*o78y_(rT4@m*Xkjty*#rod5~oHK)eZNA zyAE!Tl$St1C^(J0iSJPwhOkKurYE5=5@IH3sp$DT6KbvF!aW~()=)|?Rd)D}aG(m+ z-HT1rT9kE?+!8%#-q*-)xnD~*6P7<&`FuU2_0TMh9q&xk+D-tgmR{o_X z3?VKq6nsq1NWGrrp+0tBWOuprj^PNC2$ST`DE&&|u93-VF$5FxDo6}MHH4zz&R{+H z5m#R$jdMCX_Adi_iS%n7sZJ6O3;kv3(t`61jx>>9;>^J8D6E)`f?wp5gPY)lB!#c zmTt*DYS;UvV8W+)?pUiGCG8{{8r{NOCC5vYkzq`MPdt3bUB9~Oz!n=Jg^A8`MzXkk zGhZqIi>kBm69Pw@J>+K&Rz6+@ZEcr%mH2eh2_o1nxh13Snv4E3cG^Z+tB9!V z1}hg)&ijYJ&b{ocEC0)e+L67efqQhs^2uha>ukm8JQI_?MwwFIOZWWYrbfm8 zpklqU>b}sSBi2EMuICcuEYp!1u}6z36>-B|Y4cKJjMf%`pQ?_^54F~|jc)H~u=UO-brNm z_@-?kGJ8-f?hARKQ!V)%@y$*--8JJz^CH&P=IEs9OzHBOb;mJOc{k)i|FlB#%Zi9_baH+J(Z0X;1nILv-JrYR;MW)4-tLfbc+_2Z2plUg2*G5~$uIC02Ro#)dTPhZZ<+w%k2W z2;$x?R=I=ywok23Uonq*;CvJ(@kSXjy?O>xq!aI>_Gwxosphx`pR}R0X(3S&t4WH& zbA=#Q2p$rOoiRxl%=GqXRHimL-pZOyZxgYqdffEyPpT8uzNpYEJ~hi~>qxm{WYG<} zf$iy8u8r4BI4rj6S#Q~1{Ey7p+Vg%)Q3WVcHPZg=;TWBhqB$afuDeJyg2)U{xvueIr!b+xxbqGYx&#bcxsAtAH!R=NL&y045K=b^HzYQ?|R{J|^z^eG$+0V2S5 zx=^}$-i;-P-*rGyBj%KwY5Na9fG{3LvjdO?3QY1noAwBk;#>yF!npRL1ui4=j%|~=o%cPq7T&OzzcQ-KDXn-+VR3uZr@E2wy>pm`yp1(p za`U0C{(G70SgAIcbxo;-;9e!tRVSV<+M09w7j5Y2(t(gj=*|x*$H+JI_sg}~gQaJ* zhssjLS!0%KO?(<%XYVc<0;Q#yw8h`03I`f-Z_DSHx$^hm=%;K`tg!5uoN$Mz+hss9 z-<~LpQ*yz1u);ag4UoKB?mxi`SUAQX>1|wl*c0Q0dhVt`jPjlz!KB;&zS_3DYWudlW$RDXi{SBZ z4Ub<35u}qYWU=ayh?akftqz|i@zTEbi0h>qoQ0g~5nm}84jbVAeo|Az$X27D)qmtR z0+kju{Ss_Fp?PXTv3!Lnfe|Z%{~f^PA8GiG$B$n|orTYJh7A6?8*DN0p&~&XEnYVD zyM^hj?Ty)A9FI!Re^oOv=2+mh#g1C(bHzhXU+&`4j}bdzJQK~ByP5ZS53MOcfwF`z z$n6L??*A=yaso15Pk~D_sphd5*-ZdSRADM4hMh_D6e!>g!&I2j%{TVK~iq(zp zBd@1cc{Bl2KulVyAp#|st2B3V{}~>lqhW7|rxxTTTi{^=TmXqs;I!FF3>FBDXG=IN zDY71ifs!);7Itn1@8{57Jh}KiBHP!pYPDQbuLLJ2b&ZH0%WhCqG3Yq$ zH#3KpbQyNm3?g;xH2yN zUn#>XtdBoWpZw_fi-%g~nn90~hNCRE>+{G!@EY8A8Y!BwjGp$GA8ADrO*mDpJGeOj z)uScpsiRQ|muFvc)s;%yrxQoF>l5EUdoFx%yHn9`;h*d){rtW00 z#ddC52(sr%227qHXKC8)aFO4!@ofm9Fe4`3!k{3WSOPl-0C?t|6n_f zW*ozP+*nBFMo+lLgC`sg?pmoe{Tr`T>Qk%)j8#sC*q*6niy+ST`sIAX#AvUHr)*Y- zug>V47BTEM8Qp}B0)8s1C3F>E0D-fE8GeS)7Ydby#=94ovo==8ryBP--?&8ZMBA-d z2a=k+Ej=*BcC1=AeSc+>z!Q5phy0HF?HlxT!7Oi&G?`$hrn1%4BnNj;>==1(b+YPs zDiU2D4M2@Mg?H`>5{7Sy)E8#IYI=STF>)Qf`Mt(EjSDkOIdBo&=HrR+>^+L;0+nd_glzf2%$!XMXU0+>?NoH$|c$NE1N-B)Tcv%|6&R zE0ha}pcz-LN^w+Y`*(ib;^!Te3O}|aSX5zO6r2w)%m{K)^cv`$$9j|}{m1Xh_}mds zDbAjTWJbE%dttk5rsN(*Ft5ZDEmDljk#!#-MRP~nNnQk!X>XSWD%_-tTi*rztJ&eX zE)Xa|uL+!>!v}21f8n!R9nLHBSNVp4+LS!I;b>e|I--0;{3KGMBhyFzzM^L~;4lR6$dCf=;P z1(2BYyej3TR?+s!9MvI!E#lE+?VTiH7ctU@y5m+ECfzOe!wk@zyAMY?r8t&lOqR49 z#2f1llw^ZE``T)CFP#+zV~nPA-KG0@J>u>>uCetTh&x|dXJIREjBQBS>h@1-Vmhlf z<+#k#Qo;YN%qvF1q)Lk0la%O0$e%*pp&o5C54Hi26Ju`Jk9SVzp|!%zh<3`f6Ez{Q*g1_kD8q16%Hw z78^xP$4xa@#9nw6s@m1ERO>Vu2Y3U_V^_#cYLwDvRkZ=*mTrw5Il)F|*M z322-O`>mS`H<(=qMPR}rpXVBl3zAQky5r?Yx|`y~WYT-UYvSv1iEJ5=_&t|sm1?Z{ zV9yiOP}&y&7s~O*%@poCU>0gVB4ZVzvCDqN+!JHC7Bh-HgRzGK@PgrT)L5!hJUq ze5NWdEzPauKFSB!S$-E`!41HzD;)3_57lKif=1w-PZ;n0ofjFzj+B+JD!ARPb4G`^ zM6FpA$iCP+W_noAQA8SGlk2&$#vpQFj=ikBlPRz3ex?Ip=XkDXuNqHj zztQ&i%)_=40AeFiwi~zs1M@XDsmC`mGBo4A>R|u1n)hP7O7uDY#Ge?x4cJwCd=Xc* z&-M5D?*GlnXR~PO<-BzX5?UrXiz0lHNprS_%zCY{fx}H&*k6V%HeLfgheoV%qVh?R zE>qh4hZ>>6*7DSda@`o@l?s0>5NwHLJE+7VM;U|j4A4<@p`B3Wq25!{94Cy?bgs>! zghA_H8OrVsnvI}K=?oYBO#=D3Z3aw|%(uadT@1+O%A}z${jc*r-1D~qF9l$oc_AIn z@xqCZ`)Dsr_uGaNd*mdPpq-$*EgUbgqoaVC#;GGeUJheecEfPziFTi2)lO7)Q?mL_ zQzXl9&}wM81o`Sqyb`II`=v%OvY0t)CC(L0ff~x4DqVB~zDT|$mq$j2-p33yk+@ohmb?9cZId3X`AJ2o%dw=hRY;I zjI5eB-fWJu+_8;x;pPW8%3;xjQL)ZfqQWv=O~)>s>%;8-#7wHHj$Rg!I9T|G?_WT% zm!B_Jm3KBXYhC{{cjT@uC+X9!dnYN zDsL@j*zEvTMDc-`hVIJihhm5{|DP1M@#c+-2dF@5b1VwMhIc`V%a`on##?T-Bkg8t zk}sHc*kCJReXC9-<*P)1;1W5!Ijj@0{WY>(B%F_<+S+sZ*VbPMt*Vq+Do9h1qZ$Rs zlHP`|b?j7`aU3FYmR$R1xUHD~I*i<@|f*fMCY>f*7nsP0tw+*P6Ak1 z(4&BhW|}w4HTpAT#LApSns zJm9GEsPx!!C4nfZhxFx1dQW~=_tj9!YsGVCXQsQ}5eeM_SfWL@+P|6S5_`n^RbKmZ z@b-wi=q_>`52d)29U0qWXWIn$t+ra0zi11WZ$&@Ig&-Gff9W86pH2gX5!qs`|CZcP zKocVJC=0e{jB2rr_ht;5_ZT&c;jn<$4k5M|$*E>h^;QQ$dd9~4IuNh`&R1ntN_{-) z%n0d@isz2nRcC)@ai5C)C8uo4cMa6|A!#<6W}K}CeLa>!{UacFG2Z4YP#Ml)UD6@e zzAxrkmouhQOtd+`@P+RSeIwY772sCyA&y-(bB06{ zMV3Sm3u&wR{4#$<_1lVo@+07cfxRm@5y1b0s?}nwUF5A- zVZZMh@ckid&mO}gOFD>hw0Ii5GtTve}!F%909R@DZZW)Al~Ss zLqG!F^A>52yl#P{hsJkF>+CSlT4C{D^l^C|@1(?%x5`I(DQ2QKxG;+X;GK&|8&}!U zKUBFX6YWvvhikFCN~&Uk{VYx&RTpDx$)S{`tRCH!!)2*(31Dy02M9xQ5-Iof`CesQ zGPi&MZP2;a4O*3b7;g2`u_XOI#iZ*S;D{^!!Ld8Y%|X{AN4-fdZi*VwfN9XvOs0(! z8*au>$Cz~E3Y20|$QMvlrH}f}K*AAgw-Sgn67tYknFwafFxr6{KxI6w<=570Ah9}A zGtgP6rPDH|;5=Zh^fpu6O`!%z{fPRDP}YoA1FY)QU2g{xy){xa4tFb%gVa5Z*J zLIJAjzupsUD*HP4GtKyu7%;xi|G`U+aa^agDwtf0C{0PhdBx8^K$L50i8>=+OrDXz zy;h5mY;?oE*PC4O_|LP{B$D(Ad%6+wp;W#I>lI5Z9Rbcxh?Z2B1RO1ShJ&+Uwx%|x zO|#Qr?i{UzXkgNqInsxaHn7pt?pvcTEQa9j!!=v_M&~nwLTSbV*J8(7H`@L)sXP@z z@7ErfKV$;5(Cny4CnF(su<_T2M6TD^O%4mjYiw&IDS3Za>(-Lel;RggV%rJl{~>n% zlS1)}?3b$M*kk6i6f#Bf@}!flc6mj6rENY|;a@Ge->JCNzA^|1{#oYZAk^B_eZist zaU~f`IH}Yd@cLCThTFzu%Mo+7T6*TF2mQiKt*~aBlDOttqg`iCNV;hUm0++?a>4Ufc*+k-YeCy_SZwrc*d6!gmhpM+dAdrWb zLq=oks$c7fOmO|Ntlj(#xQ}|Qn_8YBqm;KKuscT`wgKZgzY|WI+`}b;7y4!&WW*75~0y9=(THyV4n z$&RZN&76QiH+PLqR}G!yzJvhuDj`evwFI55RzDiLW(0|7jkY<;ij7yE_LcToHIE^9 zifTV%Xwp2EAw=aOqIb_ltA*4*i0@k4S{g&9gkBL><5(@R`^mJGeZDsDjs3mfPDCyi zo8G@Vf^$dAiSksg*F(*K@=ZF&b9d&P8laZ>&;93Qh1L7|ImO<-72S1%O!X2@ zzeK1rOo z4xDkn^QaVP7vwV67g`J@>OY(9eiv|>Z;E{iVPOEyy8t(~IhYu_qL-Z!@T6b%alF#i zzLcuw*Cd8ldaN)82KHQ~VYg>m5)Dm7Y0bO=-@gGK=J+T5SFKL`J_Q`-V$gqoeEM&C zyK!Z(yOy)cErur%lAYpJvCjA|3*gQf-Z8=he|Ad;Q(VS&5)ay!J{A$KjP_JLWbltV zUTEPYJDK5zWYVW&tM@U<|7DT!ofU8jkl|gL#dd7%@zITf*m%|Hy}m{H6~N#7N1*WA zS}@%&mdx&0UiTk@o9@odb!fapNxaTVqRyay;{8GgeFt3^7pumnZa% zg=H=VwBu*!K~05wLl+O$wiy_{n*d?WPRKL6+n(W5bGWN%*xJIw!0_PRnR^Sh2%}{g z>W)9K?kBE)PuXps+0Vp5sJZ|B%bUQTZCY)f3)Y`bMR6Ni*Le|;f!h-+zy~t`5B{2} zGV~1rnG481lNVS4pYZ>gnIbT=rN178q5YvAX9R zng_$8e5bQ&4rV_NJytt3^J^ef}lzEczQKCd47n?1|SHn@C4?>Q_j=IlyiY@=?c z$2Hr)D;$BA67g#N!9j#(ztIg}4rzH((JI=Dpk!ybrGIGPp*!iBaV3i>gH=(^H*4wu zE_g8Ll07Eby6vUnSw9s`kVo0o^LF~gdHrU^Qb6=6&lgt-w#{>`lHzkJxtzn-h~%-sj(VPdX*@e_qGWPsH;dLmStP2H& z$7XY~-7o9Z(4Cwj6;JuB_~t?XZOl92ub*hE3w*V#y3~1rl_Nf!*it`bhAGVLbT*;X zsRiRYl^!JnQ9JBg<03FN%yN3tVzqfRxU8-tiT_r_jMBEfQt|}G655(2b{SLWc)itr zPvL8u-O}H^p*Cj@;4q9p^vL*X?@!&6(tb$>)6 z*fXzIjO-MX`dPR6Y`sH<1MgdcvXZYw=Q&mZ>Qu96lPI>P$Hiz2`b3I~eW79b=YW+qwMA{a7G}^Z4DC z66fwN%Uk|#z-~{GM$b?`Vxo2EiqEnUbUP-pQr2ZFc zICsQ8vH2Ib^H#1n;-x?wQYD%|y+7m1GY!7om&t2dE36~7W7pgd?aN{{JA0a9rsz?e`?sC#tQWNJp>D`P3seJGG2a&jPF{1>U%_nJ4MN`$lIxz%)!{<{Y~Dn{RAo z<~ZC{(rPEtxp1zr_KX6C0+KSp1qDaLO3xr&LuUYM-PJ4($wd)J(E z@+@U@j#ziK%>bzvLx9HJVvmW0h!{K^5v!zMIXFbsUBZvcupg9Z#43XI80$`Y?7Y>Xz``L(m3?Z_!+ zj9F8dTw|HoI&y=HaKBhhE{-YDR-VZ(x3RVw+fsF?Zwk7`@srW@Q%|nCY4w#B4`e(+hmXE9v7U>q|!HxPfJrYj!HQK;-R;%&4btPUn^F%({!2 z)t9F%PASZ}+uti*Dq>!NW940HpQ9`*>9*$a_`5&dJ91vnjYiDJL9|AH?^%I^c97Od z{c?yq;e^iO_BSj%8t%%IMDCuhv@-%BJ>y<+sI%?J`K3Nyx|dj&hG_E2tH{?zmQ=8Z zcwk;$cZs}EU-NvD%^4?iGs@pWDXzx+NnQNg5?@z}e|{ci#O}_W{iWc`p%7>KytOc= z7jFaHUcr?IEe%MWba=PYXx2%krx+7vFJ=LyM+5)2AL zGXG!gefL+A{r`VED@SIIa^32k-JxlY+@sXAVVWsuE*y6`0m%e6t=l~+@3fq$IRa5h z1-F%gr75W?DyRvmIS>&yDxa(O_k6zR`#*f&KXN#SbDfLV>vcWW^Kk_&K21!mij%5} zGI-==o9hO~hT*nATeeQ8%;4;nDnSOtc}$XjW-T;j)2L%3g$=Pu0Iv>XIC#<;5O5Q! zV!p!N4|JwQsG^b4R^N0P7s_7`m-Zc=n=XG45M6Z?sh<8bTq8=9z3l|8fF;f-bUrAf z8Wa6+nDsU1HY0w?6LHVFrmt8>8>ykHy5}G zsxq$ykfM=0TV3rqLLe}AXJ!!=$$^mu8*@Vpl&!9v2R#H1YcV6yn^KYzbco}q#97;~ zk(*uz&d#d|pCF=uI$7z#{B*RRJw6_>X4?A}xulf^i!>PrQ8&zZo(_uSZ4s(4Zq2z(f_e4rJ z!2QcksCV>dh1(%#$n~tBKMI!N5#)kGB8KGIIi&ortX=p;1}mVRMa*G7j(RJCwYg!! zp$h9flD*wTTEua%lV~Avh;H38t&Ile zq?)hMH<0Te?|ECQUsLRDD9O?AubDebv0|*=@4I~1bkp-VOPO*l+Mj@D%c7No*V|KE z@|__ybzJu%?4oH^)K~^}YMI%_QOoaqs>fO00RE?!oJZ`GZ$hy%vFyyWcHA(hueoht zX&Et8q2PGqh|OH452IFAom_9ILg{&Q*z6*F_osb-hm1aKp)6gBf6p<8b%@f)PReNT zJ-GF`ThncL18a&@()D9@XuFJT`CQ0+3~ba^cHE5k^$Md%6szxB(cZO?C?PT@e3Mtu z_$u|`k9Nm0Jq1&b6@|oBb9O?3EGfk7ZT++H_ieY`y{rpx;l1nwI!YSNIjc=c3fJ+U zp4D$8j;pd0>=7*GpuY&|w6A8R0Tbmyip8JGU%#q{>iAl-`iOOr8im5|l3-(9KZxlC z(!SMs6XxYunuHJYR7~%v!xZwJTana z@{X;MFLc^%|9e=Tx_nA#dsGr_BNN{%ayMj~rI>Xi)TklHH9Vx3K?K<_{YZ1vupV!n z{_j~~QrMTi(_2$F&#tf+=>}$^o1GYc!!OB4);9;rvgo0IIY_S4aL#qYr_GFEkw*8| z$K1?F9#S593)R5%{b^{tnEmS)YwD`S^!vN$R@3T&?Cr{M`wd%eGkt`kmJ~|Pb%O_N zF%XgS^sbqKt+LcK1GDk^zmWqU{#4x|XwoC(*QHnsbBfz<4B#A1&Niu5W}SbM)jHUg zy#AbYk`?NkJk8b8F!wOYx@WF~En!m5<1@F&{k_zaGmCztVH#4usr+b=UyAj?)#p{? zcoVUfr3NZ28vTYFwQ@aqJPN-Rd2=LSX65zHy5|0mFw>f2r&;wQygT=QdC#U2QjLVD zLng~t8~$Bs%TdoT{y%^SPrNg{x_o7}Ew16G2JvGib*Czc73ntlcS=tCF4eqLBu8K0 zRM2Wd>4_c4hG&HDgeC)zVJWmi3R1#%$&h**y06E;!b>a9s|!qH?@hm~0@-1Y)dG=hnYHs2L&M6na9aj#L> zgi-vb)4~zii5E)lgo8`sV~3iR&r;ltC&4m|H9`SPq9u#wZ+9g+7#f0zVbPkN?N6=C2fLD_d^K&f2x*BS^XFKXeuen4h9|aUl49fp zf*u5)r;FP_@CO=pPfXs#eRyY*CT3g_5H2}>C#5rIVvAVYE+w%73z$KR+Q_v#T;_gb zM34<<-mSmh&~XZvoVLXmw_N&8;k#R9reSaJWmvEz&B z$uvIAvGnaAnH&Cb7n8kquJ;amyUB$z4Dw2YMfhqhb{#L`w!mJyZ}%D~+6HoSS!g2m z(`ljn*l&>VRcFW2Qk+=M^Ly-8{=g^Pk_|cHR|>7Qve|lM{Vt}q=lB_m%zw!BX-E?| zzyJ!!yQwrqMY-s(>91w-w7dT}u{f}ETQBMwCH^*q?=Ij2Cd^0IP>TQIMf!g7d26v> zZe;Ja+-IC*6>aIru1N2dN^w9IDimHa{%CD$Hk$VU-MEc^S?+(w!S;Ck(Sva(sKt4p z7bu)N0BTVd6_CrG2ZXqd*@?HXc~f`9@7G4=If(z8EWK;TOPsx>?3I{Ih9}2-1N|W! zCU2irHQ%i0s-qRFX}t8NwDWdzoXhxN?~6+K$^o2f!%g}tT}o_{Z|mUSnnY(Ow+^Cw zkVLzInewXu;zgC(tq`rf2t6eIw%iP|6|uI?l9L5r2ivXqU~IqxN-Q)x+?*nlfSFjB zAV(PWp26pb1`m`!4PIL>;y{|{I)3dD<_Rzly($E671|o>(f#Z%5Q~Tq&lUxxuj_$k zi?XZl2#qW*ca?vBt>bOcJt0jE`r;jLdfq+x2Pl6&uO`hdo>IT~L~G!kjGDMMc^*N6 zx+cWl!>>`x)^ajY;p4p1>DkFUym#f5fxe7wYfH5Mb)ZA(`_y51_trw9nno}E2x9d0 z0!hsxU+7?*gnO;y5vfAUCSdw@gOA4wS=i3SouIem0TnJzMK6Du4%t4vn|A;cmYjH} zti{XPv1Z5MFG_$%r(+6h$T4^A-^-uA$Bbs@b_Q+EzjLH-HMP{5TjE0g_;)7G=Y8Lo z2bx5-n&-wRN-;qRwB!o5xH9;42&{s)Is?J&2^(xrua&eS77MHSV$!`HV|<*v>o(R2 zR=B}6(35lujeepNiL0(~wz_)D=FHd|7nF>*pAJWT%}tJz7fdZbl*~idT>5)eMNB^i zrjHo?uKh>i%+TC=@cGP*)QMRBdqqbl9qU2JSwU;Tzc&n%Sz9CW8ee4P^n2EN1)#N? zO)-6kb^r+PuF%x8)|t)RxfXq}=LitcPdZjK`Sdg=W~V^6HLwzUZ_&X}mx0YeJ+5`h zG>~JfKMGpq)88cpf_tRs4TIzeQcga=3x|~KRx*;zy!whOu!P%LC`uo3%cD*utqdaF zM!?{XCNR_P;z0u9ceof4#lJhn%rDq}%N_hyBycSAwtgDRiDA!gDZBX7Zj%3O9{E#~ zLcdHlINhrkASrakcLh|G9-fxxlpu0u99LB3SyKRb6uG>($Z`m>vp|%xXcjAV+ zu}A^a0;dp>B^qWJrrW_YN*fq0rieR zaExTZ_s;$%c;LDyOv}3HW2~-gx~!P3$9n_$hUkb91PGfpddF-;MC%&7B=0&F7O)b%#hrMmi{FK9?@p%l^_*XGOt|3V)`ltPAkK|98ROl5oL_=jOfeP0H zV&;Jk@{$GHMD6cDPrz)?cL04J_wEf*eIh{1i^gzjIVgBOPU5Vc9OUKo=#b-_7)1@rC5HE^ zWa_PXorztDR_SgX`%(~3GnqT$BTOFS5-;wKZVoJnCM!{9h--evw5#G?Q;Lq$LHCjF zVrV|OKHwrHt#xt>mX?Uxt!;ebV+cPD-4F1YeMZZl^fD8`-hXC%Fs7GhN05(M>%CTl z>nxwY@@zQpy+mOzQPmjPy>QRxg$|?Z&GUpK+cu?(1L3;b;(_EpRWq|}J)^-5KdWUsr3r2dbBC9%78aGde6xc6dU)_mUur(1Pf zon&61cx>uR-c=7ziO$sv=`Syy-^v2T^c&;^*DR~F%+p@hGk)ndl=x%tlSl+0Ov`Zepsszt! zTV1Ii>Hl=xl*qK_bU5!<^j9|xw$2{*u9=4@e>M84xNA06kF+Gn+vpTwsri^CX8uvN zP@WAL37fx+0bHXPKfaz>Lj|_#+ts?7pYZu=Q0ALj*Tw;O`%a@(LLC!^@r)2FanalC zl~g;OJ~!BVJI^k&=EByfp}y5buICA`LSEX(`w={$!*Dr8)dcFv!kf9Y99T}d#@MoG z@%|oq+r)#c71!0lH^U10&8x847|in7fcT?PM&zg;3^({SwDm}Fx`K(}P_5JkwQQu4Q0^=c< zebib)Oja|7%kV$%!~LC&(O|~tC1~CAn}5+qGQ+y->~BTHH%jd#Pt9{8?%!_vD-!w= z3UfQ4HPzoiVR=5F1VOVP@}|Z+J!S}7U{CX~k>@cD%S0tv&$elDu^T~(L#CfT+^0_% z3#`uC={Wa+|N!71Gu5AL+#do`Iq)R2b@AU+Y!#v&c0GpB<( z%Q|~%w>FVw4gN!8U!$Oct(9?FODk|>Ie3J9GvAH@D9&O`rvTy7y-;)(ta}PkGFC9r z%S$~rDfFa>W2?ItcF%xM$}2G5kh50)H1LaeBBqNOX5;eB4qAl2ay5cS-)-jpdX0@V zjf$PckecbgpYFN~vMLLXa`yPh26a&EuF}oe*ybVs2aJUt6VLfUau9o^Xk(i~7+vrK z_|H8quPKVuJ(;A14nbDbH7;$AAK}Oh$$tQfRAxRyvLIr;uj!D`c@z=Dc)1ABFH|ie zy>WNz!A!cKf$L8nA22wq&u@^Z+_)WC^u?o2Is6VZxO-A}x$=`nvPMvZeidr{O4+@O zL}blG>`Y(HfQDxHURv7azI8^g|g&`wFcncgW2pkUoX=9x77_KsNWt?@T+??`M2B_K9xNI+2}E~@U3 zbo2~;YO{1iOJZ^XDm|0qhrS@?HxXjlsFL=Ns`>f~MFuhRAH6j*^_!vr(rzoy8{UMD z*$JAB6Oqk^$ImCn=**tcoSm!Rd#D^xVEoIC>2)V0rcfFhHhc|tvwdo!wFzHsVy%nn=Ptwzt2$g1m&PWGnv@Gai`7MYx|;G|X$u9C zZmX#pk6l>3i_f}5!E@q^cUS=%=&wI#yRe0Ns#o=40C@R1n(5!`@wNYSdZWtL-mqn3 z6)O$F&4bJhf8xbr3oh<_CS?_;0^OO@!&U=br7+)a-iPN+>~SI(V*&Umr3T`n4V;}by5=TMW5i>NO(`Cjp!NdXi*X8^WE!HnPGS2t${@k4fEzmu$z*DlO_1ndwKWZZnm48 zqJzgtD#D=fj+`S$jbft-Mg+fGa2xzvS&pSP?wr%or~)0^_6t70FU4|~tJn|4H`bVR zcC4jOh+mFMnH8Ie@N+)fAih8;m`u8$2KqNXQ~@X<$;0pgFgCJJ4(C=WXOah^;5*h0wk>%DOUn}oPHzmR=3bavm7zuE zuaS|U!t0EW)fMAG1k5;w-?h@A8QT~By>-~0V9Vut@6ugfoZ{pVz9M5-ExMqOzH*&W zvmvn>D<}R#DktTT${QB=(5iUv8b;lT}sDYIDRPP<8SV)OH@+ zHngj{K6Mv@tgt~4;$3rPmH$p`la@%tk|W-NFP-d~iQHLM$|@q)^FL$3Q*UQTlJF^j zTy_LroK59jdJ1Bzzm`9_(^mA}D}alba07%&t&VJo9)>Jb%w|DgcY3fhHlJ7Lmc2Ic z+Z>r)7Sd{}HP!rU&9_-v_|Un$B--~mcopE8enY1QNh-$~#1$(}>Km8easwpkfm!*2&3LH=ikTjJUo=I9@;is`zt-p$ygt6;`;k@`AmDAKDQDuv>c)e z7|KM+liS^xUBAt9-VtTFK9<|qVGYgAmI*b|N0MNQu(H|I<_3=k)SY@S!A>`O_?>g} zkAJ3kGL`=03e+eAp90b-L|lmIct@(c%Ev;!(2fBz^BfSIN9pF& zhR&5gXmc*9Ai_OwWb>L>mFr-*ZmmEdVgI%mHPM1U^8ISZMzU{n9_XXNbg{jIZdO{u zS7NV--x$&+vZ5!n{muG=Z_oJgWK`k=t?NUm2XwK@AWJ0Q&zz4(l!=Waqv$O7w;zV} zgEfq@4P$64XM81Ds5L&&sL;2dW5ST1gEql4bv-dDyeGcbTyp5= za|LV!N%&8r5$U`ng49mJ=;jY!H?s}%iEj>1xK#`^v~e-sJa{u(ak$xVr|O7AAfi%{ zzYs$bQGdc8w~xKONdL9D+AY`(i-Z#dESJDFVdg}EW6D2}$)&H(Em*mD`e?fNzRHM= z=b4iMxovG*Pag5mPsO=4#MoGeG2+6b!(H4{_yfB&TGPJ46I;cKC9kWZ!G@J|abH$e z+bILFx>2aP`Wh{Z(?T+^G4nLrovOk(nvt3mBL2kha?`u-HXd7S4Ep>`&C_i=f8$hq z%ks+r{)`#=GkfJU#} zhUFqgPi06;Rgu78XWf4|Z~L}~x{!{+6OW9EqA)MU_M2hR{d}!h){WS8bb+1}=RDEx z07MI}p_cYYu+0%@v?E68iy0FzUq%OYGiMOz8uwVsb9`;i8At)FHxsGy-)=De zIlg6Uj8>|!w6%h4Z_?>=gAVH+LZt84R$U~E_MP7{5TS(>AaG5~0DUGoT>ftB?oMnB zf|tfB-4md09k4IRYsIkobik{Thpt>YIq691 zAU3=kE?~PyQ-XRnHJ-A!Q!Xp!H`*H!Ub)a>`s7&;x?Yf9YHkKOpGCK-t#ekpn>-(V z@AVKmOz!Vke^7XRu4bULOa+a=++q8V{}XcSDZ(LUXjU5=ZtsEqWNeiEloUGCep$a| z6&66v=Csm!J=i|)hD6EyOHKk|vn<7(1-~g&GH~$ImV1i*%8)lLR)q44uFr9^)7Q&K zH*LAC-@lj{F9^1MUHO`V{-Jrfcm8&*Kdalb$44$$$Dc?k&SWFkO;kMvo2DQl%uQE^8SzRNEX+jlKA&C~L7YPdAeg=2KH+(F18I zvIZ+53CH;Xp*>1>ay9Ar@FY-{!T7u=0TMjw1bJ3xY*FmJ(QhdR#O60Q(w0Ej@1qf` z1^IgTwV466qLJ8K`W!Gt%CKr9j~mr|{Pi14I^BIG@$y1X=KU$J3msTol2UebCvfeK z|JY^OrPTsuG)%{pM)Se+J@1lAO4=oTTPo+OJ|3@KtgfRQ9g!6~MQc~eNfpO8NpV{sAoTPlnGB{SWj6{pjtNGD*0z;i>Ii_SaC<>y4on;(!r)U*R)0yEhw6g5=TIS9$iSIs35ndk@EyPi z9i(fhFbcG+4`XMrV$~MGIUtLQ@Rqxnx@^^qzLTazOI^jP+bchlLc@*G&%Qb^!YapL z<6kDm`i;-p`p>Hhao6X74w}RZyi`qov1_dTf!A7bXGK+(5))&#>6YlRx_;k3GPSLt zgh`XK1y_uR?=ZA%e1QGa=j~%=y9~`-2aoW8NT` z<_tOgMiJP!vI0Q$@4w;Mf8T@>`s&s~76gM>wlhYbL|q12qkeOY8@k&HcEiUp=DTCr zBc1_vL@YBcdw+g9QL$|Ug~jDdq4ChJzJ+xwH4^+|h5lA4mO zfl=Y@s&lc6SNF{f+x11w;Zj5V{*>4Ww{w;@Kf5IbaTo~$WC`b1lAJs}_?5XPC{p>7 z+_g7S${kzN6~zP1i5W%;np`<4g>bKk*4Zp;rnt7}*0g@s-k61g=W>?f+E?mj6d$7c z_p=?zu`$RDq&TO9;9g7HZ|P6*5GthBhDv`@?8&2T1inEy=-Q@ELHmG~Bc=$lAgiT9 zxI+2DsaY%I#a}~nc2Q$g+VLu5&Ccdu+}`wUm1{6ZJr)KA9fhHZwGYZb?3Z zwnbTk7B^OCILJi>m|OF%o!X*L^w^yg+#_RQiXJ>B>tlIG;>1NDOC}cOMq7=HJJF^| zdC*KLOe;Q~F>qfF{6PI5BWRFuXW%wtV-w%uvay6U9_Yu%ddkfMCbj|fr*fwGOV-+C ze0=jxtf6%>ArgpK+0WlWIkD_QdYq6mO~d&F43i;G4RiC!$(*U6L!h`s!W&7VMA>fl77_zwghPDjDA&}+x_UJz?ryO7`|tA8!b#RWH{5g!tBSH* z7^duYoU=JQ?I}T?W%;oD+5FJ_n5#*ZL8*_N$#DIER}D%I4=IEI}u+g(BD?jBdJS=!8r z9?D^=K0VuvLQG65`pE0aWGxhv!`;`b1V%r3>DTc9xzy47tzdM=%_NJN)~+2tOT4yH znZ!ogb4M39zu3nuP^IbjmYN}HQ{pK(8!d_+HAd&p^`3FdpYV~j9@vx)n=IXPAsZNR z@iP*sCQ2bvkk56?lS1BR1@CP6z8Iyx)G9usTHE&vbz?_w2qG;}cUkMpmy+8Who8_( zo!264YY#u6LHO_8_6`k2vKe)&hFcwGD3WqT?3fbN!7n%BqdWLX?s2p@B9JeklR?uZiu#3B^*?2w+87B!OD^;qX zo@;^t)h&U`J>fk)cPxZrC?_l)_W2%}96piCBn4-hxuX?KqpZ+F`yUc69sExq9b3gr zi&PP*VlF-m8}k<1vjw#0@7ZItGJ?QFeWp*7)E1>S0d3EdqqfH%m>>tfx^-n0%uzmF=CHFk|{Cnfd0oDkR=Jog;TTt7BU3m`1^>1PLBp?miv{l`{VlpRT z&L6Dm?~&Cn&C!S1qIWks146msZbh`gfAgT3(^l;$wCsV0-v0@qAB?UIpM%|DPc5?<@cB$N!Br|MzbEcQO3mjQf8V!+#gU|L==Iy+j~Z Y#5x*y>S=)4?+3-TD|S|u7G9742QxT=#{d8T literal 0 HcmV?d00001 diff --git a/website/static/img/stackql-featured-image.png b/website/static/img/stackql-featured-image.png new file mode 100644 index 0000000000000000000000000000000000000000..872999ade8cefbb87d897c0662d8a9b41c0eae5e GIT binary patch literal 29955 zcmeFZcQ~7G_&%(=)q!eC&7!3>OYPZVv{kD_Y(*7STf_=&joR9(y{VNT_Kc{JXeo-u z9wjAaBKAu1K0e>yd%VZ{|NGZ_eE)FpM0oD|ey;nv&g(qSJCXXjT9+9)7#SECET^IRzl3_BKb<~7)xKKc z=_I1=f~;G1gO9AfXO=pYsvgdAAp5miqkgPPrj7-aIh3_z_0v>mYNy;TUI50%AhlhJ z3qAq-a8vuF=xrr zO}k#Am1!&K9PdPiEQlC3G2$ZHe-6e*3}=p?U?INyoAIE07-Xl2^F@zfgXKVWn5kV1 z`%r>aqv8H`5G$^LJIh*m8d|gwFhQU8>LH(E=n(jR@|hYn-nuXmds(WlqhR; zs$;H5QsOti2eEb)II-f2BC(Bpa^P&OIQY=Clf~<{DPl6}soqiP0bJRxo5$%z_@VUV zz$l6`%|k{~ng3JGW_;+Avu)1!doN}Hai~suv zNs9{VHRp^O*??~cs(}Ci3uOoyI-_w)wBPyK^61ruks6g;!y0S-kpvZ3-pTD zNaA73vPg#=)2N80|G}(NbIha26*7nKOtd7evw!7+y?Lq$n#c|N{!Q9zgSW^-X~#7M zI{LBvd41WG{#e7Q+-5EQ5(GyMon(#~As2NLh8SE3ViXZ4@tx!FK z2yU6Tzp;W+ta!0sJ}<*)^J{TCdShiqC)uL;^`A$`T=fR{#%#jStl>^^?ThNfpeq&2 zjHtYgH$P3aUb9$X_y2A741XmA)&Or^Rk8_Gr0FDdZ@$odXsvYGguy!+c8>k=+#L1W zMU>d7_t7Zx1Q%bB?Md!_kM5=9!V(8jQ4uVAz=8y(mIAKjN83NhVB`NgMd-XZbWXfk zp?O`n^UFelctc%a9Lr4?TD-L^jTf=r)&u!-)kWg9yS>!0%>n8^^<-4t}6h#(4;x~cGRnEfi~ zVI{ig$^cRD;6|){C7gg}e(!UGar=9yLYCcr#u?MZ#$`@eGVk?2ELIv}V^><~XdJ9b z;sdfiBfwtq->O8xit&{BzH{m0(?1-<%?!AbvqeHgFW!#ulEGK1FUdeywOkJ7+KCY+;Y5iHl)<#%2PU`+3a3W&?HZ=Xyk){?EBY~ zw9f>n{J!ELF7MwqST#Uj2;MF67XqI1oa>k9e#JL`+L8Ti3Djb%sGmV<&vor$c>Vi8 z^X$QSOmU{+4pTU-!Db1wB*9*+>uFSWt1Fa%q_Mr<`7( z!As&9uZg$U_}&jz6;qp(XwKn4wcfqoiA!Qc3rYRi9ZqvrPoeK0RIkl~C3c#YjV5zH z(XOfZHRYmN9kO>jA|l}y8Cp40{mBak20KY!80p{rB@~scyZ){C8&+%E-I*LSOIeFh z(5$YX5E{38U=TwYyI8L4Al~%zMU|vDu6;(lSwu&9DQ_c zk_#U9?|+$h7ufpUs{FYxj5)iv~8)ps4eNWnK-BHJ4g&QG3Q`sg8ZpMlLm*F^b&m5f_y=-<7)0> zI(DAz7}9&K?jRrgc^yJPj0=D6?B0}cB%W&I`;-2uy@i~woip2{ zsmkJt9IBLma2Cw$%$YDL8mp8Uo zh2NFqfkL(>ql9r*Y&IHW^b$%+CATeB5~S0*avr6drJ%qa@ZG8%dFgzmqaaRe>u1^@ zlPhd0EZaXhFpCM$4UL|jaI(SdP6MOdqVS39TMa2WTZY?DL=52D?K1(c1QzPQIcG>R z+jxG#L`yxw*myjHdYd)i8D*L|5yHs>M^iGF)!m`f86kr{mb$1=$m3`);%dB>iIY_C zZ~h;OtCJ!_x!A_p?m3exF4sN&A5o0;k(=Ve_L>KyE*%d2MI5AZkh z?<@5l`T+YD+)6^F(M;j9Pv>V2|4oJr-TkO1PKSfy0*0nzQHyf<+?|@_GM#uASLJ0f z7UNE#6}=c+h7@E%^k#oS5%<9Mv)ln`cB?6B$4AbY65UWprFX@|EFL`5(2RZ>d13DN z*#KMW_@JO!L^zpDo2;sey2F79AhTl{&eA95VJhI+I-mTP%x`L@-0+_s=>_y=^yBLS z?>#Ca%+x^A6zt=>5m~mW!)q(Dh4#)QiDVZje_DO8+kjK7R%RsT0pxl@wyW>@fRON% z&@mtxr|o8s_!^-`XCxo4)s3ocN-YwugMyN?g478H;YrzSD0SW z6kwO%dG~bbB6c*`IC*EthPSEet*a%T^nWV)gu`k`U-Q9E6<9q}C3$X=%65NR|13>O zxm9U|Gk>0m7WnW0A53qe6!W-EdL?g>QWK)R7D$##S8Pg|Up{0q$1KpKooR!({N>KD zUquT%76G3OrafGH;qyhyYoVqFy&yQmlZ`D6Jk25{JeC%AlA6AMt*@lb|lg72#DOt zQn6mumoF5Zhqt7IinxVUf*0~QPYmZk(62sjwdL>Xba7X}{D-Sgo9dq-U-{iJH#CL7 zh6RYyS2RI=;@HlcCriL=zqEJ76_=gxR*@&y%!uVl;yw;6pX#^ zdFeyr=MIF>jFKKRqXnBC7}l<2)MnqD%H1Snyfm8eV~fr1R@hM7o%nRG_%XG$^`jY= zBem_QAe*ExNv@E~GfXOn+Dmn{9GLjdmmRy7afjXqDdA-O3%~}fNCeHuhzSPCN%(5r z5QUl_^`&@E!}gc#QDtQzqP-J`kVO0&@SVd|X-uDG{ecyhQor1u(4AA#xA{2Kc31jC z>8z+-$k~m$XPQ0Yg9Cf8Mzo;M} zn!^3ic&g`~Kuj>iBgh>Y94>P3>c5&9>tK;oF4`w{pm^DuE1oE3nF=IYL;L2?%kj!q z`;8npMqt>*CdLC!OeMy74-Xwbs#6a8vs9=z9u5PE;x1h~IFd0BA$$SZWbnW!#By72 zYAIRv>VRBnobWF(jhRMHHgx`_WMr|X69fP^m7aTlR5)gwT<)Qx?%9_5Nul2;mp^+u zWD+IIF$?w`2^+zyI;kEmIxY2W5{Iu_xVYT=VFqtQ*X$yF%C}*f>Fbk zZaK_*A5LboZq~G)IWI=jG-|NSh_kAwDRpPP^vL0~$?yC;7SBZ6!DPei0`61g=&u~07F%~7PG6Dy@V1kk83^7IK{6VNoWOE zK0ECq*BktC9r4IRR0BM?$E{WO&8tDR^{Ct|`3i0&y5IxRJD1~)x!^Uj(~NSkt0Jv8 zVC3MCp2yBB_`_&6cg|ONC0b-Kw2>{bCs9syL%rWfgt!>qjIlOu;0DmvDUd7TcCOe- z(M1C$<3JlVuMJWxYU66csOuIX?=UawUeXGf&;LHwBoa3VzC*rcOu0HGoCtrG3c%_w?Y%co}2x-bbX$1yj_+%mOnrpRt5=wBW? zyfQI3ljY-kV{jN+R8^I?#R(h1TuP`ENa~=jRW%QGCWs3sSI$s7v|>;!dkZQ|s;09( z1GUKQpC7Ituc|Cq*{|%)KB#78jxoJJt7G21Z>|qTpGm&fL>7(c$L$Y2o%eu1 zBDN`5k%YM`%gmQ&cHv}ud(h`_vHcwAwX1J-Yb?9w^oH(2Wb%~%Wx)fo6CI%5gLe8#Ip6IprV4x}HO6{P1C zCBf^;vjiXRsqSy*9anr^6v81P{GEz!q_)~n6GVmoM5@+WGRA#;*2#a%i8E}ze2x9> z9)^gH9s;Gx1=2}uy1GQ3=3sxy#U?MU-@2Ej16!#-8Rag|%r2cad2o07UaooG2|uu% z_@iVo?p8eEvx&Yze7P_le<=LnyTmJFzuMY1W|5?r>AlKgG)DkTuE^tqV>%Z=1(ck+DyCgc8>;t->TlYIG zwwZFozi)-Opv$}K!WN!WmbGZirc|-0vsTPni&d@ReAnDdYqiapX<3`2xTVdaU(cB= zw`o;TiyAi|EO6VUZfToo4XlC)B4PsoWC8T2PHP21MV!P|0q)9vp0Tqb147QYkC+U> zU$Kn!W??ormxN$TcBEw&Z&D-t4(Q%|2~pw=f4yh>0esiW*yjovWl?&NLw{x5-{gC1R- zBI?-Jw;^r+gYt$t0bmRuadZD8B7JNx_~j~4o8vhkl(Jp|KY^M&^~d-0c1e}O0VQ@} z%{;o01h(waLX}&H*C&@Xwo<@Q+oit%(;>t2IUmZ&QznLvdP!Uz8>&h<3R3mAmcf)i zGqTg%2A3y-CZudexQFiE7h*g7Hcmtb_U=|+Vq#A6ZQ)x$S< z9S^ef5O21Mz}Ew7zFE{K+L3ISALWQ_u3O;ez_cFb**iVTpAE2tadAgB)cKCs(C?SE zY<;cSS~Yc|KP6OOI!j2QwQn?ctD06C-6x$c(YsF7eRoC$QEr~06(KWUqunDopPz ziL}TITg}cT?M?ms?W(&`$*$Sg)j zbAdgt3T84(h-+_rtCS;Y*VyK#+;9@?Lkwd*Kq#c!hjAJ`1V$({^Ur+b0%Gp=|U5KRAD1)E02J{)ePt`vd4@o^nVg#b0 zS3XOSY5+Yh;LUkQrj$QJEmQojO8v_NyAIBY$#4kFDM}`>X@Uk~FHRd6v&^$EXo3u+ z183$(^%6(28f63H=fjdSqy$v95_gN3xSNAHvX?g69ruD(g)oZxvp&(`zB z-1&`qDtRiyNA&>hz4ZavgAld3-U0Op>-|09GDsuwrJgV`uRIW+`6P%>RBV^X4DS_rG#c&vjhh?F)3KIVLTF1YU!zGzm zv4hojMPr2XTB8b?w9A+>G$@t0m>6) zLz>i}cf9YAz=$s&kJu42Db`~=0|}D4ZZrJn{`JB$*jJdiDCPr*^kdYc=jaLU!-0SB zk5Pilm7x*{Tg{HC${NJn%ASepXouG!1~dycvcgM_{g6R3db|ZIKwOHRRkLv&7Cv=q zj#{}j;^M2$TPi7>#AfB${mWBf62RM1`Wk=s=$=>MRkjL~oc#@=6X9f=9a_TRMm$fp zt7spxi?;y=1WtbY8oHpq$TE)Von~&)rM6xHj9K=0%s{`4a=Br1f1v0V!r+PmfFpOA z=;@wSw}0oQ7Eeb<7YlREeDgaTo+J0BR0RN=&oa;w3VxMYoKMFG1;n`pYKWihKsE>O zxf7J|k-vonO@X48yUf^e!)>%oBB_fc$Cm_`;W4^ZSG&J5dYv3gPNS%0Bly!&h#T!t zPF{G`?4ia;`BS}D<3i5ajyb$-f7=a*8oNl@R!1L{MJ9oE*^1mG&)xFUsmW#S?B$uI zrvPm6Fwl@3xAknX&jEqV0Ggx`?VNV|W2obAvqZ=4$w=egX(bjFv}|nqM*2D4fIJFV zCQlK&(T4uRZKW{}2IC{ZB8NR-<@oXXlux^lBW+G!rkEiD@7muk@e{cW6oLJ&I6auv zJy=fEoeqLvQb#5g3!4ARmF6Svj=}SIKxUN|Z-VXxMXjF9IdvX|P(F*ej!y;aJ>8w~vY5F<@f8E}ROlTwGbQ;JULe3k zkr6yi%T#;NK(tgD|1zi&?GBVPHsTEIo50SPz(h0KBNRZ(#7FBn5M+NUa9*m(d$eL- zt+xN_v2X0Fu5g6Eb(l|jy_-t|-PL?<`z^`S-UbgcVYO~dI1&~Rvh=kyQ_}1}R@BW+ zd(N+{<)2VpN>nmF@Fbb=YJW+5S?S_oc>}D@1Z-~)c;kO1%g+WCF&}2Fy7|M?Z`LVT zR^#4zfm;AS!`xEgY4U6|Ztoksg74^F&0Bm+ZRZ7+e_M|QHg(rFzL0jqOASr!#nfJ2 z>)dFcP*ZZqdAgszX<;=gV(T}1M2Eh-@e2NCn$Ky(F~`m8Q5S$Dg~U~;5uScvROE6g zlZDS_f{n4!>!ozO8se?L>fook?oV?5{@b3^cE`!1_YR7i8=(J4?g^8qb@{%M#@!|E z^Nz@XF9|+yC+m5Y!{G|9!9&qZUpwi$YEafnfCxuP0o1MP}BWJ|qJ;Vwdn=u9Ukzl4+pvO>cM|yV0(# zoBEmOp!;y>V;t46=VI=0*O}T-Yyxz@iLzxpVl1zEtpm-|JjV-2FGub8y-TJ3Dv)#n z3Odx!{Wh7&j*tEcnQXg8U zAyu%`<)4;#+V^-=1>G0yhXo7jqR^clLxT>nS!bK$7sQMf|vx?=dnY*XCi7! zMd*aLr$hSd(9F+(<+GDCZ6$9EiIgec&@qUG4u*}$@_ep#^t4L!ic6i|LvVB%`zou) zqjY2>C=((F=Fxy_A24MnU~6UFWC`F8DZ z4kCSmDhtA5{D9kddGN8o?x0}?!KY1G*gK~fx3S$L0MKC)4M09HVm6){5=(1?_)&NF z8Ob#bVjhlV*Ja_`c==;Wfu z{Vn{|_1Wx({gZZC3>R?`jxSZ%Uma6(dNZ18q)F(Xqk>qie}&!CkYh2)?;Wces#~~J zq%{aOK56$Jk>zOz5nYQ7GEtC$X4kC5B^uu_t_@URg9g5=CWl%YdFq#ZOuc=M(Jlw;9mRd$a+_Ks|-L!w*on z<-xDba;n1+R$?tD56kIKWdJ+=(tlS2KuHPW&v=`cjUV=$|B836*W4bz?F6LarQur6 zLAS3KZA0fPUS3LXSc$W*-fg?LlHkRpn~*o78y_(rT4@m*Xkjty*#rod5~oHK)eZNA zyAE!Tl$St1C^(J0iSJPwhOkKurYE5=5@IH3sp$DT6KbvF!aW~()=)|?Rd)D}aG(m+ z-HT1rT9kE?+!8%#-q*-)xnD~*6P7<&`FuU2_0TMh9q&xk+D-tgmR{o_X z3?VKq6nsq1NWGrrp+0tBWOuprj^PNC2$ST`DE&&|u93-VF$5FxDo6}MHH4zz&R{+H z5m#R$jdMCX_Adi_iS%n7sZJ6O3;kv3(t`61jx>>9;>^J8D6E)`f?wp5gPY)lB!#c zmTt*DYS;UvV8W+)?pUiGCG8{{8r{NOCC5vYkzq`MPdt3bUB9~Oz!n=Jg^A8`MzXkk zGhZqIi>kBm69Pw@J>+K&Rz6+@ZEcr%mH2eh2_o1nxh13Snv4E3cG^Z+tB9!V z1}hg)&ijYJ&b{ocEC0)e+L67efqQhs^2uha>ukm8JQI_?MwwFIOZWWYrbfm8 zpklqU>b}sSBi2EMuICcuEYp!1u}6z36>-B|Y4cKJjMf%`pQ?_^54F~|jc)H~u=UO-brNm z_@-?kGJ8-f?hARKQ!V)%@y$*--8JJz^CH&P=IEs9OzHBOb;mJOc{k)i|FlB#%Zi9_baH+J(Z0X;1nILv-JrYR;MW)4-tLfbc+_2Z2plUg2*G5~$uIC02Ro#)dTPhZZ<+w%k2W z2;$x?R=I=ywok23Uonq*;CvJ(@kSXjy?O>xq!aI>_Gwxosphx`pR}R0X(3S&t4WH& zbA=#Q2p$rOoiRxl%=GqXRHimL-pZOyZxgYqdffEyPpT8uzNpYEJ~hi~>qxm{WYG<} zf$iy8u8r4BI4rj6S#Q~1{Ey7p+Vg%)Q3WVcHPZg=;TWBhqB$afuDeJyg2)U{xvueIr!b+xxbqGYx&#bcxsAtAH!R=NL&y045K=b^HzYQ?|R{J|^z^eG$+0V2S5 zx=^}$-i;-P-*rGyBj%KwY5Na9fG{3LvjdO?3QY1noAwBk;#>yF!npRL1ui4=j%|~=o%cPq7T&OzzcQ-KDXn-+VR3uZr@E2wy>pm`yp1(p za`U0C{(G70SgAIcbxo;-;9e!tRVSV<+M09w7j5Y2(t(gj=*|x*$H+JI_sg}~gQaJ* zhssjLS!0%KO?(<%XYVc<0;Q#yw8h`03I`f-Z_DSHx$^hm=%;K`tg!5uoN$Mz+hss9 z-<~LpQ*yz1u);ag4UoKB?mxi`SUAQX>1|wl*c0Q0dhVt`jPjlz!KB;&zS_3DYWudlW$RDXi{SBZ z4Ub<35u}qYWU=ayh?akftqz|i@zTEbi0h>qoQ0g~5nm}84jbVAeo|Az$X27D)qmtR z0+kju{Ss_Fp?PXTv3!Lnfe|Z%{~f^PA8GiG$B$n|orTYJh7A6?8*DN0p&~&XEnYVD zyM^hj?Ty)A9FI!Re^oOv=2+mh#g1C(bHzhXU+&`4j}bdzJQK~ByP5ZS53MOcfwF`z z$n6L??*A=yaso15Pk~D_sphd5*-ZdSRADM4hMh_D6e!>g!&I2j%{TVK~iq(zp zBd@1cc{Bl2KulVyAp#|st2B3V{}~>lqhW7|rxxTTTi{^=TmXqs;I!FF3>FBDXG=IN zDY71ifs!);7Itn1@8{57Jh}KiBHP!pYPDQbuLLJ2b&ZH0%WhCqG3Yq$ zH#3KpbQyNm3?g;xH2yN zUn#>XtdBoWpZw_fi-%g~nn90~hNCRE>+{G!@EY8A8Y!BwjGp$GA8ADrO*mDpJGeOj z)uScpsiRQ|muFvc)s;%yrxQoF>l5EUdoFx%yHn9`;h*d){rtW00 z#ddC52(sr%227qHXKC8)aFO4!@ofm9Fe4`3!k{3WSOPl-0C?t|6n_f zW*ozP+*nBFMo+lLgC`sg?pmoe{Tr`T>Qk%)j8#sC*q*6niy+ST`sIAX#AvUHr)*Y- zug>V47BTEM8Qp}B0)8s1C3F>E0D-fE8GeS)7Ydby#=94ovo==8ryBP--?&8ZMBA-d z2a=k+Ej=*BcC1=AeSc+>z!Q5phy0HF?HlxT!7Oi&G?`$hrn1%4BnNj;>==1(b+YPs zDiU2D4M2@Mg?H`>5{7Sy)E8#IYI=STF>)Qf`Mt(EjSDkOIdBo&=HrR+>^+L;0+nd_glzf2%$!XMXU0+>?NoH$|c$NE1N-B)Tcv%|6&R zE0ha}pcz-LN^w+Y`*(ib;^!Te3O}|aSX5zO6r2w)%m{K)^cv`$$9j|}{m1Xh_}mds zDbAjTWJbE%dttk5rsN(*Ft5ZDEmDljk#!#-MRP~nNnQk!X>XSWD%_-tTi*rztJ&eX zE)Xa|uL+!>!v}21f8n!R9nLHBSNVp4+LS!I;b>e|I--0;{3KGMBhyFzzM^L~;4lR6$dCf=;P z1(2BYyej3TR?+s!9MvI!E#lE+?VTiH7ctU@y5m+ECfzOe!wk@zyAMY?r8t&lOqR49 z#2f1llw^ZE``T)CFP#+zV~nPA-KG0@J>u>>uCetTh&x|dXJIREjBQBS>h@1-Vmhlf z<+#k#Qo;YN%qvF1q)Lk0la%O0$e%*pp&o5C54Hi26Ju`Jk9SVzp|!%zh<3`f6Ez{Q*g1_kD8q16%Hw z78^xP$4xa@#9nw6s@m1ERO>Vu2Y3U_V^_#cYLwDvRkZ=*mTrw5Il)F|*M z322-O`>mS`H<(=qMPR}rpXVBl3zAQky5r?Yx|`y~WYT-UYvSv1iEJ5=_&t|sm1?Z{ zV9yiOP}&y&7s~O*%@poCU>0gVB4ZVzvCDqN+!JHC7Bh-HgRzGK@PgrT)L5!hJUq ze5NWdEzPauKFSB!S$-E`!41HzD;)3_57lKif=1w-PZ;n0ofjFzj+B+JD!ARPb4G`^ zM6FpA$iCP+W_noAQA8SGlk2&$#vpQFj=ikBlPRz3ex?Ip=XkDXuNqHj zztQ&i%)_=40AeFiwi~zs1M@XDsmC`mGBo4A>R|u1n)hP7O7uDY#Ge?x4cJwCd=Xc* z&-M5D?*GlnXR~PO<-BzX5?UrXiz0lHNprS_%zCY{fx}H&*k6V%HeLfgheoV%qVh?R zE>qh4hZ>>6*7DSda@`o@l?s0>5NwHLJE+7VM;U|j4A4<@p`B3Wq25!{94Cy?bgs>! zghA_H8OrVsnvI}K=?oYBO#=D3Z3aw|%(uadT@1+O%A}z${jc*r-1D~qF9l$oc_AIn z@xqCZ`)Dsr_uGaNd*mdPpq-$*EgUbgqoaVC#;GGeUJheecEfPziFTi2)lO7)Q?mL_ zQzXl9&}wM81o`Sqyb`II`=v%OvY0t)CC(L0ff~x4DqVB~zDT|$mq$j2-p33yk+@ohmb?9cZId3X`AJ2o%dw=hRY;I zjI5eB-fWJu+_8;x;pPW8%3;xjQL)ZfqQWv=O~)>s>%;8-#7wHHj$Rg!I9T|G?_WT% zm!B_Jm3KBXYhC{{cjT@uC+X9!dnYN zDsL@j*zEvTMDc-`hVIJihhm5{|DP1M@#c+-2dF@5b1VwMhIc`V%a`on##?T-Bkg8t zk}sHc*kCJReXC9-<*P)1;1W5!Ijj@0{WY>(B%F_<+S+sZ*VbPMt*Vq+Do9h1qZ$Rs zlHP`|b?j7`aU3FYmR$R1xUHD~I*i<@|f*fMCY>f*7nsP0tw+*P6Ak1 z(4&BhW|}w4HTpAT#LApSns zJm9GEsPx!!C4nfZhxFx1dQW~=_tj9!YsGVCXQsQ}5eeM_SfWL@+P|6S5_`n^RbKmZ z@b-wi=q_>`52d)29U0qWXWIn$t+ra0zi11WZ$&@Ig&-Gff9W86pH2gX5!qs`|CZcP zKocVJC=0e{jB2rr_ht;5_ZT&c;jn<$4k5M|$*E>h^;QQ$dd9~4IuNh`&R1ntN_{-) z%n0d@isz2nRcC)@ai5C)C8uo4cMa6|A!#<6W}K}CeLa>!{UacFG2Z4YP#Ml)UD6@e zzAxrkmouhQOtd+`@P+RSeIwY772sCyA&y-(bB06{ zMV3Sm3u&wR{4#$<_1lVo@+07cfxRm@5y1b0s?}nwUF5A- zVZZMh@ckid&mO}gOFD>hw0Ii5GtTve}!F%909R@DZZW)Al~Ss zLqG!F^A>52yl#P{hsJkF>+CSlT4C{D^l^C|@1(?%x5`I(DQ2QKxG;+X;GK&|8&}!U zKUBFX6YWvvhikFCN~&Uk{VYx&RTpDx$)S{`tRCH!!)2*(31Dy02M9xQ5-Iof`CesQ zGPi&MZP2;a4O*3b7;g2`u_XOI#iZ*S;D{^!!Ld8Y%|X{AN4-fdZi*VwfN9XvOs0(! z8*au>$Cz~E3Y20|$QMvlrH}f}K*AAgw-Sgn67tYknFwafFxr6{KxI6w<=570Ah9}A zGtgP6rPDH|;5=Zh^fpu6O`!%z{fPRDP}YoA1FY)QU2g{xy){xa4tFb%gVa5Z*J zLIJAjzupsUD*HP4GtKyu7%;xi|G`U+aa^agDwtf0C{0PhdBx8^K$L50i8>=+OrDXz zy;h5mY;?oE*PC4O_|LP{B$D(Ad%6+wp;W#I>lI5Z9Rbcxh?Z2B1RO1ShJ&+Uwx%|x zO|#Qr?i{UzXkgNqInsxaHn7pt?pvcTEQa9j!!=v_M&~nwLTSbV*J8(7H`@L)sXP@z z@7ErfKV$;5(Cny4CnF(su<_T2M6TD^O%4mjYiw&IDS3Za>(-Lel;RggV%rJl{~>n% zlS1)}?3b$M*kk6i6f#Bf@}!flc6mj6rENY|;a@Ge->JCNzA^|1{#oYZAk^B_eZist zaU~f`IH}Yd@cLCThTFzu%Mo+7T6*TF2mQiKt*~aBlDOttqg`iCNV;hUm0++?a>4Ufc*+k-YeCy_SZwrc*d6!gmhpM+dAdrWb zLq=oks$c7fOmO|Ntlj(#xQ}|Qn_8YBqm;KKuscT`wgKZgzY|WI+`}b;7y4!&WW*75~0y9=(THyV4n z$&RZN&76QiH+PLqR}G!yzJvhuDj`evwFI55RzDiLW(0|7jkY<;ij7yE_LcToHIE^9 zifTV%Xwp2EAw=aOqIb_ltA*4*i0@k4S{g&9gkBL><5(@R`^mJGeZDsDjs3mfPDCyi zo8G@Vf^$dAiSksg*F(*K@=ZF&b9d&P8laZ>&;93Qh1L7|ImO<-72S1%O!X2@ zzeK1rOo z4xDkn^QaVP7vwV67g`J@>OY(9eiv|>Z;E{iVPOEyy8t(~IhYu_qL-Z!@T6b%alF#i zzLcuw*Cd8ldaN)82KHQ~VYg>m5)Dm7Y0bO=-@gGK=J+T5SFKL`J_Q`-V$gqoeEM&C zyK!Z(yOy)cErur%lAYpJvCjA|3*gQf-Z8=he|Ad;Q(VS&5)ay!J{A$KjP_JLWbltV zUTEPYJDK5zWYVW&tM@U<|7DT!ofU8jkl|gL#dd7%@zITf*m%|Hy}m{H6~N#7N1*WA zS}@%&mdx&0UiTk@o9@odb!fapNxaTVqRyay;{8GgeFt3^7pumnZa% zg=H=VwBu*!K~05wLl+O$wiy_{n*d?WPRKL6+n(W5bGWN%*xJIw!0_PRnR^Sh2%}{g z>W)9K?kBE)PuXps+0Vp5sJZ|B%bUQTZCY)f3)Y`bMR6Ni*Le|;f!h-+zy~t`5B{2} zGV~1rnG481lNVS4pYZ>gnIbT=rN178q5YvAX9R zng_$8e5bQ&4rV_NJytt3^J^ef}lzEczQKCd47n?1|SHn@C4?>Q_j=IlyiY@=?c z$2Hr)D;$BA67g#N!9j#(ztIg}4rzH((JI=Dpk!ybrGIGPp*!iBaV3i>gH=(^H*4wu zE_g8Ll07Eby6vUnSw9s`kVo0o^LF~gdHrU^Qb6=6&lgt-w#{>`lHzkJxtzn-h~%-sj(VPdX*@e_qGWPsH;dLmStP2H& z$7XY~-7o9Z(4Cwj6;JuB_~t?XZOl92ub*hE3w*V#y3~1rl_Nf!*it`bhAGVLbT*;X zsRiRYl^!JnQ9JBg<03FN%yN3tVzqfRxU8-tiT_r_jMBEfQt|}G655(2b{SLWc)itr zPvL8u-O}H^p*Cj@;4q9p^vL*X?@!&6(tb$>)6 z*fXzIjO-MX`dPR6Y`sH<1MgdcvXZYw=Q&mZ>Qu96lPI>P$Hiz2`b3I~eW79b=YW+qwMA{a7G}^Z4DC z66fwN%Uk|#z-~{GM$b?`Vxo2EiqEnUbUP-pQr2ZFc zICsQ8vH2Ib^H#1n;-x?wQYD%|y+7m1GY!7om&t2dE36~7W7pgd?aN{{JA0a9rsz?e`?sC#tQWNJp>D`P3seJGG2a&jPF{1>U%_nJ4MN`$lIxz%)!{<{Y~Dn{RAo z<~ZC{(rPEtxp1zr_KX6C0+KSp1qDaLO3xr&LuUYM-PJ4($wd)J(E z@+@U@j#ziK%>bzvLx9HJVvmW0h!{K^5v!zMIXFbsUBZvcupg9Z#43XI80$`Y?7Y>Xz``L(m3?Z_!+ zj9F8dTw|HoI&y=HaKBhhE{-YDR-VZ(x3RVw+fsF?Zwk7`@srW@Q%|nCY4w#B4`e(+hmXE9v7U>q|!HxPfJrYj!HQK;-R;%&4btPUn^F%({!2 z)t9F%PASZ}+uti*Dq>!NW940HpQ9`*>9*$a_`5&dJ91vnjYiDJL9|AH?^%I^c97Od z{c?yq;e^iO_BSj%8t%%IMDCuhv@-%BJ>y<+sI%?J`K3Nyx|dj&hG_E2tH{?zmQ=8Z zcwk;$cZs}EU-NvD%^4?iGs@pWDXzx+NnQNg5?@z}e|{ci#O}_W{iWc`p%7>KytOc= z7jFaHUcr?IEe%MWba=PYXx2%krx+7vFJ=LyM+5)2AL zGXG!gefL+A{r`VED@SIIa^32k-JxlY+@sXAVVWsuE*y6`0m%e6t=l~+@3fq$IRa5h z1-F%gr75W?DyRvmIS>&yDxa(O_k6zR`#*f&KXN#SbDfLV>vcWW^Kk_&K21!mij%5} zGI-==o9hO~hT*nATeeQ8%;4;nDnSOtc}$XjW-T;j)2L%3g$=Pu0Iv>XIC#<;5O5Q! zV!p!N4|JwQsG^b4R^N0P7s_7`m-Zc=n=XG45M6Z?sh<8bTq8=9z3l|8fF;f-bUrAf z8Wa6+nDsU1HY0w?6LHVFrmt8>8>ykHy5}G zsxq$ykfM=0TV3rqLLe}AXJ!!=$$^mu8*@Vpl&!9v2R#H1YcV6yn^KYzbco}q#97;~ zk(*uz&d#d|pCF=uI$7z#{B*RRJw6_>X4?A}xulf^i!>PrQ8&zZo(_uSZ4s(4Zq2z(f_e4rJ z!2QcksCV>dh1(%#$n~tBKMI!N5#)kGB8KGIIi&ortX=p;1}mVRMa*G7j(RJCwYg!! zp$h9flD*wTTEua%lV~Avh;H38t&Ile zq?)hMH<0Te?|ECQUsLRDD9O?AubDebv0|*=@4I~1bkp-VOPO*l+Mj@D%c7No*V|KE z@|__ybzJu%?4oH^)K~^}YMI%_QOoaqs>fO00RE?!oJZ`GZ$hy%vFyyWcHA(hueoht zX&Et8q2PGqh|OH452IFAom_9ILg{&Q*z6*F_osb-hm1aKp)6gBf6p<8b%@f)PReNT zJ-GF`ThncL18a&@()D9@XuFJT`CQ0+3~ba^cHE5k^$Md%6szxB(cZO?C?PT@e3Mtu z_$u|`k9Nm0Jq1&b6@|oBb9O?3EGfk7ZT++H_ieY`y{rpx;l1nwI!YSNIjc=c3fJ+U zp4D$8j;pd0>=7*GpuY&|w6A8R0Tbmyip8JGU%#q{>iAl-`iOOr8im5|l3-(9KZxlC z(!SMs6XxYunuHJYR7~%v!xZwJTana z@{X;MFLc^%|9e=Tx_nA#dsGr_BNN{%ayMj~rI>Xi)TklHH9Vx3K?K<_{YZ1vupV!n z{_j~~QrMTi(_2$F&#tf+=>}$^o1GYc!!OB4);9;rvgo0IIY_S4aL#qYr_GFEkw*8| z$K1?F9#S593)R5%{b^{tnEmS)YwD`S^!vN$R@3T&?Cr{M`wd%eGkt`kmJ~|Pb%O_N zF%XgS^sbqKt+LcK1GDk^zmWqU{#4x|XwoC(*QHnsbBfz<4B#A1&Niu5W}SbM)jHUg zy#AbYk`?NkJk8b8F!wOYx@WF~En!m5<1@F&{k_zaGmCztVH#4usr+b=UyAj?)#p{? zcoVUfr3NZ28vTYFwQ@aqJPN-Rd2=LSX65zHy5|0mFw>f2r&;wQygT=QdC#U2QjLVD zLng~t8~$Bs%TdoT{y%^SPrNg{x_o7}Ew16G2JvGib*Czc73ntlcS=tCF4eqLBu8K0 zRM2Wd>4_c4hG&HDgeC)zVJWmi3R1#%$&h**y06E;!b>a9s|!qH?@hm~0@-1Y)dG=hnYHs2L&M6na9aj#L> zgi-vb)4~zii5E)lgo8`sV~3iR&r;ltC&4m|H9`SPq9u#wZ+9g+7#f0zVbPkN?N6=C2fLD_d^K&f2x*BS^XFKXeuen4h9|aUl49fp zf*u5)r;FP_@CO=pPfXs#eRyY*CT3g_5H2}>C#5rIVvAVYE+w%73z$KR+Q_v#T;_gb zM34<<-mSmh&~XZvoVLXmw_N&8;k#R9reSaJWmvEz&B z$uvIAvGnaAnH&Cb7n8kquJ;amyUB$z4Dw2YMfhqhb{#L`w!mJyZ}%D~+6HoSS!g2m z(`ljn*l&>VRcFW2Qk+=M^Ly-8{=g^Pk_|cHR|>7Qve|lM{Vt}q=lB_m%zw!BX-E?| zzyJ!!yQwrqMY-s(>91w-w7dT}u{f}ETQBMwCH^*q?=Ij2Cd^0IP>TQIMf!g7d26v> zZe;Ja+-IC*6>aIru1N2dN^w9IDimHa{%CD$Hk$VU-MEc^S?+(w!S;Ck(Sva(sKt4p z7bu)N0BTVd6_CrG2ZXqd*@?HXc~f`9@7G4=If(z8EWK;TOPsx>?3I{Ih9}2-1N|W! zCU2irHQ%i0s-qRFX}t8NwDWdzoXhxN?~6+K$^o2f!%g}tT}o_{Z|mUSnnY(Ow+^Cw zkVLzInewXu;zgC(tq`rf2t6eIw%iP|6|uI?l9L5r2ivXqU~IqxN-Q)x+?*nlfSFjB zAV(PWp26pb1`m`!4PIL>;y{|{I)3dD<_Rzly($E671|o>(f#Z%5Q~Tq&lUxxuj_$k zi?XZl2#qW*ca?vBt>bOcJt0jE`r;jLdfq+x2Pl6&uO`hdo>IT~L~G!kjGDMMc^*N6 zx+cWl!>>`x)^ajY;p4p1>DkFUym#f5fxe7wYfH5Mb)ZA(`_y51_trw9nno}E2x9d0 z0!hsxU+7?*gnO;y5vfAUCSdw@gOA4wS=i3SouIem0TnJzMK6Du4%t4vn|A;cmYjH} zti{XPv1Z5MFG_$%r(+6h$T4^A-^-uA$Bbs@b_Q+EzjLH-HMP{5TjE0g_;)7G=Y8Lo z2bx5-n&-wRN-;qRwB!o5xH9;42&{s)Is?J&2^(xrua&eS77MHSV$!`HV|<*v>o(R2 zR=B}6(35lujeepNiL0(~wz_)D=FHd|7nF>*pAJWT%}tJz7fdZbl*~idT>5)eMNB^i zrjHo?uKh>i%+TC=@cGP*)QMRBdqqbl9qU2JSwU;Tzc&n%Sz9CW8ee4P^n2EN1)#N? zO)-6kb^r+PuF%x8)|t)RxfXq}=LitcPdZjK`Sdg=W~V^6HLwzUZ_&X}mx0YeJ+5`h zG>~JfKMGpq)88cpf_tRs4TIzeQcga=3x|~KRx*;zy!whOu!P%LC`uo3%cD*utqdaF zM!?{XCNR_P;z0u9ceof4#lJhn%rDq}%N_hyBycSAwtgDRiDA!gDZBX7Zj%3O9{E#~ zLcdHlINhrkASrakcLh|G9-fxxlpu0u99LB3SyKRb6uG>($Z`m>vp|%xXcjAV+ zu}A^a0;dp>B^qWJrrW_YN*fq0rieR zaExTZ_s;$%c;LDyOv}3HW2~-gx~!P3$9n_$hUkb91PGfpddF-;MC%&7B=0&F7O)b%#hrMmi{FK9?@p%l^_*XGOt|3V)`ltPAkK|98ROl5oL_=jOfeP0H zV&;Jk@{$GHMD6cDPrz)?cL04J_wEf*eIh{1i^gzjIVgBOPU5Vc9OUKo=#b-_7)1@rC5HE^ zWa_PXorztDR_SgX`%(~3GnqT$BTOFS5-;wKZVoJnCM!{9h--evw5#G?Q;Lq$LHCjF zVrV|OKHwrHt#xt>mX?Uxt!;ebV+cPD-4F1YeMZZl^fD8`-hXC%Fs7GhN05(M>%CTl z>nxwY@@zQpy+mOzQPmjPy>QRxg$|?Z&GUpK+cu?(1L3;b;(_EpRWq|}J)^-5KdWUsr3r2dbBC9%78aGde6xc6dU)_mUur(1Pf zon&61cx>uR-c=7ziO$sv=`Syy-^v2T^c&;^*DR~F%+p@hGk)ndl=x%tlSl+0Ov`Zepsszt! zTV1Ii>Hl=xl*qK_bU5!<^j9|xw$2{*u9=4@e>M84xNA06kF+Gn+vpTwsri^CX8uvN zP@WAL37fx+0bHXPKfaz>Lj|_#+ts?7pYZu=Q0ALj*Tw;O`%a@(LLC!^@r)2FanalC zl~g;OJ~!BVJI^k&=EByfp}y5buICA`LSEX(`w={$!*Dr8)dcFv!kf9Y99T}d#@MoG z@%|oq+r)#c71!0lH^U10&8x847|in7fcT?PM&zg;3^({SwDm}Fx`K(}P_5JkwQQu4Q0^=c< zebib)Oja|7%kV$%!~LC&(O|~tC1~CAn}5+qGQ+y->~BTHH%jd#Pt9{8?%!_vD-!w= z3UfQ4HPzoiVR=5F1VOVP@}|Z+J!S}7U{CX~k>@cD%S0tv&$elDu^T~(L#CfT+^0_% z3#`uC={Wa+|N!71Gu5AL+#do`Iq)R2b@AU+Y!#v&c0GpB<( z%Q|~%w>FVw4gN!8U!$Oct(9?FODk|>Ie3J9GvAH@D9&O`rvTy7y-;)(ta}PkGFC9r z%S$~rDfFa>W2?ItcF%xM$}2G5kh50)H1LaeBBqNOX5;eB4qAl2ay5cS-)-jpdX0@V zjf$PckecbgpYFN~vMLLXa`yPh26a&EuF}oe*ybVs2aJUt6VLfUau9o^Xk(i~7+vrK z_|H8quPKVuJ(;A14nbDbH7;$AAK}Oh$$tQfRAxRyvLIr;uj!D`c@z=Dc)1ABFH|ie zy>WNz!A!cKf$L8nA22wq&u@^Z+_)WC^u?o2Is6VZxO-A}x$=`nvPMvZeidr{O4+@O zL}blG>`Y(HfQDxHURv7azI8^g|g&`wFcncgW2pkUoX=9x77_KsNWt?@T+??`M2B_K9xNI+2}E~@U3 zbo2~;YO{1iOJZ^XDm|0qhrS@?HxXjlsFL=Ns`>f~MFuhRAH6j*^_!vr(rzoy8{UMD z*$JAB6Oqk^$ImCn=**tcoSm!Rd#D^xVEoIC>2)V0rcfFhHhc|tvwdo!wFzHsVy%nn=Ptwzt2$g1m&PWGnv@Gai`7MYx|;G|X$u9C zZmX#pk6l>3i_f}5!E@q^cUS=%=&wI#yRe0Ns#o=40C@R1n(5!`@wNYSdZWtL-mqn3 z6)O$F&4bJhf8xbr3oh<_CS?_;0^OO@!&U=br7+)a-iPN+>~SI(V*&Umr3T`n4V;}by5=TMW5i>NO(`Cjp!NdXi*X8^WE!HnPGS2t${@k4fEzmu$z*DlO_1ndwKWZZnm48 zqJzgtD#D=fj+`S$jbft-Mg+fGa2xzvS&pSP?wr%or~)0^_6t70FU4|~tJn|4H`bVR zcC4jOh+mFMnH8Ie@N+)fAih8;m`u8$2KqNXQ~@X<$;0pgFgCJJ4(C=WXOah^;5*h0wk>%DOUn}oPHzmR=3bavm7zuE zuaS|U!t0EW)fMAG1k5;w-?h@A8QT~By>-~0V9Vut@6ugfoZ{pVz9M5-ExMqOzH*&W zvmvn>D<}R#DktTT${QB=(5iUv8b;lT}sDYIDRPP<8SV)OH@+ zHngj{K6Mv@tgt~4;$3rPmH$p`la@%tk|W-NFP-d~iQHLM$|@q)^FL$3Q*UQTlJF^j zTy_LroK59jdJ1Bzzm`9_(^mA}D}alba07%&t&VJo9)>Jb%w|DgcY3fhHlJ7Lmc2Ic z+Z>r)7Sd{}HP!rU&9_-v_|Un$B--~mcopE8enY1QNh-$~#1$(}>Km8easwpkfm!*2&3LH=ikTjJUo=I9@;is`zt-p$ygt6;`;k@`AmDAKDQDuv>c)e z7|KM+liS^xUBAt9-VtTFK9<|qVGYgAmI*b|N0MNQu(H|I<_3=k)SY@S!A>`O_?>g} zkAJ3kGL`=03e+eAp90b-L|lmIct@(c%Ev;!(2fBz^BfSIN9pF& zhR&5gXmc*9Ai_OwWb>L>mFr-*ZmmEdVgI%mHPM1U^8ISZMzU{n9_XXNbg{jIZdO{u zS7NV--x$&+vZ5!n{muG=Z_oJgWK`k=t?NUm2XwK@AWJ0Q&zz4(l!=Waqv$O7w;zV} zgEfq@4P$64XM81Ds5L&&sL;2dW5ST1gEql4bv-dDyeGcbTyp5= za|LV!N%&8r5$U`ng49mJ=;jY!H?s}%iEj>1xK#`^v~e-sJa{u(ak$xVr|O7AAfi%{ zzYs$bQGdc8w~xKONdL9D+AY`(i-Z#dESJDFVdg}EW6D2}$)&H(Em*mD`e?fNzRHM= z=b4iMxovG*Pag5mPsO=4#MoGeG2+6b!(H4{_yfB&TGPJ46I;cKC9kWZ!G@J|abH$e z+bILFx>2aP`Wh{Z(?T+^G4nLrovOk(nvt3mBL2kha?`u-HXd7S4Ep>`&C_i=f8$hq z%ks+r{)`#=GkfJU#} zhUFqgPi06;Rgu78XWf4|Z~L}~x{!{+6OW9EqA)MU_M2hR{d}!h){WS8bb+1}=RDEx z07MI}p_cYYu+0%@v?E68iy0FzUq%OYGiMOz8uwVsb9`;i8At)FHxsGy-)=De zIlg6Uj8>|!w6%h4Z_?>=gAVH+LZt84R$U~E_MP7{5TS(>AaG5~0DUGoT>ftB?oMnB zf|tfB-4md09k4IRYsIkobik{Thpt>YIq691 zAU3=kE?~PyQ-XRnHJ-A!Q!Xp!H`*H!Ub)a>`s7&;x?Yf9YHkKOpGCK-t#ekpn>-(V z@AVKmOz!Vke^7XRu4bULOa+a=++q8V{}XcSDZ(LUXjU5=ZtsEqWNeiEloUGCep$a| z6&66v=Csm!J=i|)hD6EyOHKk|vn<7(1-~g&GH~$ImV1i*%8)lLR)q44uFr9^)7Q&K zH*LAC-@lj{F9^1MUHO`V{-Jrfcm8&*Kdalb$44$$$Dc?k&SWFkO;kMvo2DQl%uQE^8SzRNEX+jlKA&C~L7YPdAeg=2KH+(F18I zvIZ+53CH;Xp*>1>ay9Ar@FY-{!T7u=0TMjw1bJ3xY*FmJ(QhdR#O60Q(w0Ej@1qf` z1^IgTwV466qLJ8K`W!Gt%CKr9j~mr|{Pi14I^BIG@$y1X=KU$J3msTol2UebCvfeK z|JY^OrPTsuG)%{pM)Se+J@1lAO4=oTTPo+OJ|3@KtgfRQ9g!6~MQc~eNfpO8NpV{sAoTPlnGB{SWj6{pjtNGD*0z;i>Ii_SaC<>y4on;(!r)U*R)0yEhw6g5=TIS9$iSIs35ndk@EyPi z9i(fhFbcG+4`XMrV$~MGIUtLQ@Rqxnx@^^qzLTazOI^jP+bchlLc@*G&%Qb^!YapL z<6kDm`i;-p`p>Hhao6X74w}RZyi`qov1_dTf!A7bXGK+(5))&#>6YlRx_;k3GPSLt zgh`XK1y_uR?=ZA%e1QGa=j~%=y9~`-2aoW8NT` z<_tOgMiJP!vI0Q$@4w;Mf8T@>`s&s~76gM>wlhYbL|q12qkeOY8@k&HcEiUp=DTCr zBc1_vL@YBcdw+g9QL$|Ug~jDdq4ChJzJ+xwH4^+|h5lA4mO zfl=Y@s&lc6SNF{f+x11w;Zj5V{*>4Ww{w;@Kf5IbaTo~$WC`b1lAJs}_?5XPC{p>7 z+_g7S${kzN6~zP1i5W%;np`<4g>bKk*4Zp;rnt7}*0g@s-k61g=W>?f+E?mj6d$7c z_p=?zu`$RDq&TO9;9g7HZ|P6*5GthBhDv`@?8&2T1inEy=-Q@ELHmG~Bc=$lAgiT9 zxI+2DsaY%I#a}~nc2Q$g+VLu5&Ccdu+}`wUm1{6ZJr)KA9fhHZwGYZb?3Z zwnbTk7B^OCILJi>m|OF%o!X*L^w^yg+#_RQiXJ>B>tlIG;>1NDOC}cOMq7=HJJF^| zdC*KLOe;Q~F>qfF{6PI5BWRFuXW%wtV-w%uvay6U9_Yu%ddkfMCbj|fr*fwGOV-+C ze0=jxtf6%>ArgpK+0WlWIkD_QdYq6mO~d&F43i;G4RiC!$(*U6L!h`s!W&7VMA>fl77_zwghPDjDA&}+x_UJz?ryO7`|tA8!b#RWH{5g!tBSH* z7^duYoU=JQ?I}T?W%;oD+5FJ_n5#*ZL8*_N$#DIER}D%I4=IEI}u+g(BD?jBdJS=!8r z9?D^=K0VuvLQG65`pE0aWGxhv!`;`b1V%r3>DTc9xzy47tzdM=%_NJN)~+2tOT4yH znZ!ogb4M39zu3nuP^IbjmYN}HQ{pK(8!d_+HAd&p^`3FdpYV~j9@vx)n=IXPAsZNR z@iP*sCQ2bvkk56?lS1BR1@CP6z8Iyx)G9usTHE&vbz?_w2qG;}cUkMpmy+8Who8_( zo!264YY#u6LHO_8_6`k2vKe)&hFcwGD3WqT?3fbN!7n%BqdWLX?s2p@B9JeklR?uZiu#3B^*?2w+87B!OD^;qX zo@;^t)h&U`J>fk)cPxZrC?_l)_W2%}96piCBn4-hxuX?KqpZ+F`yUc69sExq9b3gr zi&PP*VlF-m8}k<1vjw#0@7ZItGJ?QFeWp*7)E1>S0d3EdqqfH%m>>tfx^-n0%uzmF=CHFk|{Cnfd0oDkR=Jog;TTt7BU3m`1^>1PLBp?miv{l`{VlpRT z&L6Dm?~&Cn&C!S1qIWks146msZbh`gfAgT3(^l;$wCsV0-v0@qAB?UIpM%|DPc5?<@cB$N!Br|MzbEcQO3mjQf8V!+#gU|L==Iy+j~Z Y#5x*y>S=)4?+3-TD|S|u7G9742QxT=#{d8T literal 0 HcmV?d00001 diff --git a/website/static/img/stackql-nvidia-provider-featured-image.png b/website/static/img/stackql-nvidia-provider-featured-image.png new file mode 100644 index 0000000000000000000000000000000000000000..872999ade8cefbb87d897c0662d8a9b41c0eae5e GIT binary patch literal 29955 zcmeFZcQ~7G_&%(=)q!eC&7!3>OYPZVv{kD_Y(*7STf_=&joR9(y{VNT_Kc{JXeo-u z9wjAaBKAu1K0e>yd%VZ{|NGZ_eE)FpM0oD|ey;nv&g(qSJCXXjT9+9)7#SECET^IRzl3_BKb<~7)xKKc z=_I1=f~;G1gO9AfXO=pYsvgdAAp5miqkgPPrj7-aIh3_z_0v>mYNy;TUI50%AhlhJ z3qAq-a8vuF=xrr zO}k#Am1!&K9PdPiEQlC3G2$ZHe-6e*3}=p?U?INyoAIE07-Xl2^F@zfgXKVWn5kV1 z`%r>aqv8H`5G$^LJIh*m8d|gwFhQU8>LH(E=n(jR@|hYn-nuXmds(WlqhR; zs$;H5QsOti2eEb)II-f2BC(Bpa^P&OIQY=Clf~<{DPl6}soqiP0bJRxo5$%z_@VUV zz$l6`%|k{~ng3JGW_;+Avu)1!doN}Hai~suv zNs9{VHRp^O*??~cs(}Ci3uOoyI-_w)wBPyK^61ruks6g;!y0S-kpvZ3-pTD zNaA73vPg#=)2N80|G}(NbIha26*7nKOtd7evw!7+y?Lq$n#c|N{!Q9zgSW^-X~#7M zI{LBvd41WG{#e7Q+-5EQ5(GyMon(#~As2NLh8SE3ViXZ4@tx!FK z2yU6Tzp;W+ta!0sJ}<*)^J{TCdShiqC)uL;^`A$`T=fR{#%#jStl>^^?ThNfpeq&2 zjHtYgH$P3aUb9$X_y2A741XmA)&Or^Rk8_Gr0FDdZ@$odXsvYGguy!+c8>k=+#L1W zMU>d7_t7Zx1Q%bB?Md!_kM5=9!V(8jQ4uVAz=8y(mIAKjN83NhVB`NgMd-XZbWXfk zp?O`n^UFelctc%a9Lr4?TD-L^jTf=r)&u!-)kWg9yS>!0%>n8^^<-4t}6h#(4;x~cGRnEfi~ zVI{ig$^cRD;6|){C7gg}e(!UGar=9yLYCcr#u?MZ#$`@eGVk?2ELIv}V^><~XdJ9b z;sdfiBfwtq->O8xit&{BzH{m0(?1-<%?!AbvqeHgFW!#ulEGK1FUdeywOkJ7+KCY+;Y5iHl)<#%2PU`+3a3W&?HZ=Xyk){?EBY~ zw9f>n{J!ELF7MwqST#Uj2;MF67XqI1oa>k9e#JL`+L8Ti3Djb%sGmV<&vor$c>Vi8 z^X$QSOmU{+4pTU-!Db1wB*9*+>uFSWt1Fa%q_Mr<`7( z!As&9uZg$U_}&jz6;qp(XwKn4wcfqoiA!Qc3rYRi9ZqvrPoeK0RIkl~C3c#YjV5zH z(XOfZHRYmN9kO>jA|l}y8Cp40{mBak20KY!80p{rB@~scyZ){C8&+%E-I*LSOIeFh z(5$YX5E{38U=TwYyI8L4Al~%zMU|vDu6;(lSwu&9DQ_c zk_#U9?|+$h7ufpUs{FYxj5)iv~8)ps4eNWnK-BHJ4g&QG3Q`sg8ZpMlLm*F^b&m5f_y=-<7)0> zI(DAz7}9&K?jRrgc^yJPj0=D6?B0}cB%W&I`;-2uy@i~woip2{ zsmkJt9IBLma2Cw$%$YDL8mp8Uo zh2NFqfkL(>ql9r*Y&IHW^b$%+CATeB5~S0*avr6drJ%qa@ZG8%dFgzmqaaRe>u1^@ zlPhd0EZaXhFpCM$4UL|jaI(SdP6MOdqVS39TMa2WTZY?DL=52D?K1(c1QzPQIcG>R z+jxG#L`yxw*myjHdYd)i8D*L|5yHs>M^iGF)!m`f86kr{mb$1=$m3`);%dB>iIY_C zZ~h;OtCJ!_x!A_p?m3exF4sN&A5o0;k(=Ve_L>KyE*%d2MI5AZkh z?<@5l`T+YD+)6^F(M;j9Pv>V2|4oJr-TkO1PKSfy0*0nzQHyf<+?|@_GM#uASLJ0f z7UNE#6}=c+h7@E%^k#oS5%<9Mv)ln`cB?6B$4AbY65UWprFX@|EFL`5(2RZ>d13DN z*#KMW_@JO!L^zpDo2;sey2F79AhTl{&eA95VJhI+I-mTP%x`L@-0+_s=>_y=^yBLS z?>#Ca%+x^A6zt=>5m~mW!)q(Dh4#)QiDVZje_DO8+kjK7R%RsT0pxl@wyW>@fRON% z&@mtxr|o8s_!^-`XCxo4)s3ocN-YwugMyN?g478H;YrzSD0SW z6kwO%dG~bbB6c*`IC*EthPSEet*a%T^nWV)gu`k`U-Q9E6<9q}C3$X=%65NR|13>O zxm9U|Gk>0m7WnW0A53qe6!W-EdL?g>QWK)R7D$##S8Pg|Up{0q$1KpKooR!({N>KD zUquT%76G3OrafGH;qyhyYoVqFy&yQmlZ`D6Jk25{JeC%AlA6AMt*@lb|lg72#DOt zQn6mumoF5Zhqt7IinxVUf*0~QPYmZk(62sjwdL>Xba7X}{D-Sgo9dq-U-{iJH#CL7 zh6RYyS2RI=;@HlcCriL=zqEJ76_=gxR*@&y%!uVl;yw;6pX#^ zdFeyr=MIF>jFKKRqXnBC7}l<2)MnqD%H1Snyfm8eV~fr1R@hM7o%nRG_%XG$^`jY= zBem_QAe*ExNv@E~GfXOn+Dmn{9GLjdmmRy7afjXqDdA-O3%~}fNCeHuhzSPCN%(5r z5QUl_^`&@E!}gc#QDtQzqP-J`kVO0&@SVd|X-uDG{ecyhQor1u(4AA#xA{2Kc31jC z>8z+-$k~m$XPQ0Yg9Cf8Mzo;M} zn!^3ic&g`~Kuj>iBgh>Y94>P3>c5&9>tK;oF4`w{pm^DuE1oE3nF=IYL;L2?%kj!q z`;8npMqt>*CdLC!OeMy74-Xwbs#6a8vs9=z9u5PE;x1h~IFd0BA$$SZWbnW!#By72 zYAIRv>VRBnobWF(jhRMHHgx`_WMr|X69fP^m7aTlR5)gwT<)Qx?%9_5Nul2;mp^+u zWD+IIF$?w`2^+zyI;kEmIxY2W5{Iu_xVYT=VFqtQ*X$yF%C}*f>Fbk zZaK_*A5LboZq~G)IWI=jG-|NSh_kAwDRpPP^vL0~$?yC;7SBZ6!DPei0`61g=&u~07F%~7PG6Dy@V1kk83^7IK{6VNoWOE zK0ECq*BktC9r4IRR0BM?$E{WO&8tDR^{Ct|`3i0&y5IxRJD1~)x!^Uj(~NSkt0Jv8 zVC3MCp2yBB_`_&6cg|ONC0b-Kw2>{bCs9syL%rWfgt!>qjIlOu;0DmvDUd7TcCOe- z(M1C$<3JlVuMJWxYU66csOuIX?=UawUeXGf&;LHwBoa3VzC*rcOu0HGoCtrG3c%_w?Y%co}2x-bbX$1yj_+%mOnrpRt5=wBW? zyfQI3ljY-kV{jN+R8^I?#R(h1TuP`ENa~=jRW%QGCWs3sSI$s7v|>;!dkZQ|s;09( z1GUKQpC7Ituc|Cq*{|%)KB#78jxoJJt7G21Z>|qTpGm&fL>7(c$L$Y2o%eu1 zBDN`5k%YM`%gmQ&cHv}ud(h`_vHcwAwX1J-Yb?9w^oH(2Wb%~%Wx)fo6CI%5gLe8#Ip6IprV4x}HO6{P1C zCBf^;vjiXRsqSy*9anr^6v81P{GEz!q_)~n6GVmoM5@+WGRA#;*2#a%i8E}ze2x9> z9)^gH9s;Gx1=2}uy1GQ3=3sxy#U?MU-@2Ej16!#-8Rag|%r2cad2o07UaooG2|uu% z_@iVo?p8eEvx&Yze7P_le<=LnyTmJFzuMY1W|5?r>AlKgG)DkTuE^tqV>%Z=1(ck+DyCgc8>;t->TlYIG zwwZFozi)-Opv$}K!WN!WmbGZirc|-0vsTPni&d@ReAnDdYqiapX<3`2xTVdaU(cB= zw`o;TiyAi|EO6VUZfToo4XlC)B4PsoWC8T2PHP21MV!P|0q)9vp0Tqb147QYkC+U> zU$Kn!W??ormxN$TcBEw&Z&D-t4(Q%|2~pw=f4yh>0esiW*yjovWl?&NLw{x5-{gC1R- zBI?-Jw;^r+gYt$t0bmRuadZD8B7JNx_~j~4o8vhkl(Jp|KY^M&^~d-0c1e}O0VQ@} z%{;o01h(waLX}&H*C&@Xwo<@Q+oit%(;>t2IUmZ&QznLvdP!Uz8>&h<3R3mAmcf)i zGqTg%2A3y-CZudexQFiE7h*g7Hcmtb_U=|+Vq#A6ZQ)x$S< z9S^ef5O21Mz}Ew7zFE{K+L3ISALWQ_u3O;ez_cFb**iVTpAE2tadAgB)cKCs(C?SE zY<;cSS~Yc|KP6OOI!j2QwQn?ctD06C-6x$c(YsF7eRoC$QEr~06(KWUqunDopPz ziL}TITg}cT?M?ms?W(&`$*$Sg)j zbAdgt3T84(h-+_rtCS;Y*VyK#+;9@?Lkwd*Kq#c!hjAJ`1V$({^Ur+b0%Gp=|U5KRAD1)E02J{)ePt`vd4@o^nVg#b0 zS3XOSY5+Yh;LUkQrj$QJEmQojO8v_NyAIBY$#4kFDM}`>X@Uk~FHRd6v&^$EXo3u+ z183$(^%6(28f63H=fjdSqy$v95_gN3xSNAHvX?g69ruD(g)oZxvp&(`zB z-1&`qDtRiyNA&>hz4ZavgAld3-U0Op>-|09GDsuwrJgV`uRIW+`6P%>RBV^X4DS_rG#c&vjhh?F)3KIVLTF1YU!zGzm zv4hojMPr2XTB8b?w9A+>G$@t0m>6) zLz>i}cf9YAz=$s&kJu42Db`~=0|}D4ZZrJn{`JB$*jJdiDCPr*^kdYc=jaLU!-0SB zk5Pilm7x*{Tg{HC${NJn%ASepXouG!1~dycvcgM_{g6R3db|ZIKwOHRRkLv&7Cv=q zj#{}j;^M2$TPi7>#AfB${mWBf62RM1`Wk=s=$=>MRkjL~oc#@=6X9f=9a_TRMm$fp zt7spxi?;y=1WtbY8oHpq$TE)Von~&)rM6xHj9K=0%s{`4a=Br1f1v0V!r+PmfFpOA z=;@wSw}0oQ7Eeb<7YlREeDgaTo+J0BR0RN=&oa;w3VxMYoKMFG1;n`pYKWihKsE>O zxf7J|k-vonO@X48yUf^e!)>%oBB_fc$Cm_`;W4^ZSG&J5dYv3gPNS%0Bly!&h#T!t zPF{G`?4ia;`BS}D<3i5ajyb$-f7=a*8oNl@R!1L{MJ9oE*^1mG&)xFUsmW#S?B$uI zrvPm6Fwl@3xAknX&jEqV0Ggx`?VNV|W2obAvqZ=4$w=egX(bjFv}|nqM*2D4fIJFV zCQlK&(T4uRZKW{}2IC{ZB8NR-<@oXXlux^lBW+G!rkEiD@7muk@e{cW6oLJ&I6auv zJy=fEoeqLvQb#5g3!4ARmF6Svj=}SIKxUN|Z-VXxMXjF9IdvX|P(F*ej!y;aJ>8w~vY5F<@f8E}ROlTwGbQ;JULe3k zkr6yi%T#;NK(tgD|1zi&?GBVPHsTEIo50SPz(h0KBNRZ(#7FBn5M+NUa9*m(d$eL- zt+xN_v2X0Fu5g6Eb(l|jy_-t|-PL?<`z^`S-UbgcVYO~dI1&~Rvh=kyQ_}1}R@BW+ zd(N+{<)2VpN>nmF@Fbb=YJW+5S?S_oc>}D@1Z-~)c;kO1%g+WCF&}2Fy7|M?Z`LVT zR^#4zfm;AS!`xEgY4U6|Ztoksg74^F&0Bm+ZRZ7+e_M|QHg(rFzL0jqOASr!#nfJ2 z>)dFcP*ZZqdAgszX<;=gV(T}1M2Eh-@e2NCn$Ky(F~`m8Q5S$Dg~U~;5uScvROE6g zlZDS_f{n4!>!ozO8se?L>fook?oV?5{@b3^cE`!1_YR7i8=(J4?g^8qb@{%M#@!|E z^Nz@XF9|+yC+m5Y!{G|9!9&qZUpwi$YEafnfCxuP0o1MP}BWJ|qJ;Vwdn=u9Ukzl4+pvO>cM|yV0(# zoBEmOp!;y>V;t46=VI=0*O}T-Yyxz@iLzxpVl1zEtpm-|JjV-2FGub8y-TJ3Dv)#n z3Odx!{Wh7&j*tEcnQXg8U zAyu%`<)4;#+V^-=1>G0yhXo7jqR^clLxT>nS!bK$7sQMf|vx?=dnY*XCi7! zMd*aLr$hSd(9F+(<+GDCZ6$9EiIgec&@qUG4u*}$@_ep#^t4L!ic6i|LvVB%`zou) zqjY2>C=((F=Fxy_A24MnU~6UFWC`F8DZ z4kCSmDhtA5{D9kddGN8o?x0}?!KY1G*gK~fx3S$L0MKC)4M09HVm6){5=(1?_)&NF z8Ob#bVjhlV*Ja_`c==;Wfu z{Vn{|_1Wx({gZZC3>R?`jxSZ%Uma6(dNZ18q)F(Xqk>qie}&!CkYh2)?;Wces#~~J zq%{aOK56$Jk>zOz5nYQ7GEtC$X4kC5B^uu_t_@URg9g5=CWl%YdFq#ZOuc=M(Jlw;9mRd$a+_Ks|-L!w*on z<-xDba;n1+R$?tD56kIKWdJ+=(tlS2KuHPW&v=`cjUV=$|B836*W4bz?F6LarQur6 zLAS3KZA0fPUS3LXSc$W*-fg?LlHkRpn~*o78y_(rT4@m*Xkjty*#rod5~oHK)eZNA zyAE!Tl$St1C^(J0iSJPwhOkKurYE5=5@IH3sp$DT6KbvF!aW~()=)|?Rd)D}aG(m+ z-HT1rT9kE?+!8%#-q*-)xnD~*6P7<&`FuU2_0TMh9q&xk+D-tgmR{o_X z3?VKq6nsq1NWGrrp+0tBWOuprj^PNC2$ST`DE&&|u93-VF$5FxDo6}MHH4zz&R{+H z5m#R$jdMCX_Adi_iS%n7sZJ6O3;kv3(t`61jx>>9;>^J8D6E)`f?wp5gPY)lB!#c zmTt*DYS;UvV8W+)?pUiGCG8{{8r{NOCC5vYkzq`MPdt3bUB9~Oz!n=Jg^A8`MzXkk zGhZqIi>kBm69Pw@J>+K&Rz6+@ZEcr%mH2eh2_o1nxh13Snv4E3cG^Z+tB9!V z1}hg)&ijYJ&b{ocEC0)e+L67efqQhs^2uha>ukm8JQI_?MwwFIOZWWYrbfm8 zpklqU>b}sSBi2EMuICcuEYp!1u}6z36>-B|Y4cKJjMf%`pQ?_^54F~|jc)H~u=UO-brNm z_@-?kGJ8-f?hARKQ!V)%@y$*--8JJz^CH&P=IEs9OzHBOb;mJOc{k)i|FlB#%Zi9_baH+J(Z0X;1nILv-JrYR;MW)4-tLfbc+_2Z2plUg2*G5~$uIC02Ro#)dTPhZZ<+w%k2W z2;$x?R=I=ywok23Uonq*;CvJ(@kSXjy?O>xq!aI>_Gwxosphx`pR}R0X(3S&t4WH& zbA=#Q2p$rOoiRxl%=GqXRHimL-pZOyZxgYqdffEyPpT8uzNpYEJ~hi~>qxm{WYG<} zf$iy8u8r4BI4rj6S#Q~1{Ey7p+Vg%)Q3WVcHPZg=;TWBhqB$afuDeJyg2)U{xvueIr!b+xxbqGYx&#bcxsAtAH!R=NL&y045K=b^HzYQ?|R{J|^z^eG$+0V2S5 zx=^}$-i;-P-*rGyBj%KwY5Na9fG{3LvjdO?3QY1noAwBk;#>yF!npRL1ui4=j%|~=o%cPq7T&OzzcQ-KDXn-+VR3uZr@E2wy>pm`yp1(p za`U0C{(G70SgAIcbxo;-;9e!tRVSV<+M09w7j5Y2(t(gj=*|x*$H+JI_sg}~gQaJ* zhssjLS!0%KO?(<%XYVc<0;Q#yw8h`03I`f-Z_DSHx$^hm=%;K`tg!5uoN$Mz+hss9 z-<~LpQ*yz1u);ag4UoKB?mxi`SUAQX>1|wl*c0Q0dhVt`jPjlz!KB;&zS_3DYWudlW$RDXi{SBZ z4Ub<35u}qYWU=ayh?akftqz|i@zTEbi0h>qoQ0g~5nm}84jbVAeo|Az$X27D)qmtR z0+kju{Ss_Fp?PXTv3!Lnfe|Z%{~f^PA8GiG$B$n|orTYJh7A6?8*DN0p&~&XEnYVD zyM^hj?Ty)A9FI!Re^oOv=2+mh#g1C(bHzhXU+&`4j}bdzJQK~ByP5ZS53MOcfwF`z z$n6L??*A=yaso15Pk~D_sphd5*-ZdSRADM4hMh_D6e!>g!&I2j%{TVK~iq(zp zBd@1cc{Bl2KulVyAp#|st2B3V{}~>lqhW7|rxxTTTi{^=TmXqs;I!FF3>FBDXG=IN zDY71ifs!);7Itn1@8{57Jh}KiBHP!pYPDQbuLLJ2b&ZH0%WhCqG3Yq$ zH#3KpbQyNm3?g;xH2yN zUn#>XtdBoWpZw_fi-%g~nn90~hNCRE>+{G!@EY8A8Y!BwjGp$GA8ADrO*mDpJGeOj z)uScpsiRQ|muFvc)s;%yrxQoF>l5EUdoFx%yHn9`;h*d){rtW00 z#ddC52(sr%227qHXKC8)aFO4!@ofm9Fe4`3!k{3WSOPl-0C?t|6n_f zW*ozP+*nBFMo+lLgC`sg?pmoe{Tr`T>Qk%)j8#sC*q*6niy+ST`sIAX#AvUHr)*Y- zug>V47BTEM8Qp}B0)8s1C3F>E0D-fE8GeS)7Ydby#=94ovo==8ryBP--?&8ZMBA-d z2a=k+Ej=*BcC1=AeSc+>z!Q5phy0HF?HlxT!7Oi&G?`$hrn1%4BnNj;>==1(b+YPs zDiU2D4M2@Mg?H`>5{7Sy)E8#IYI=STF>)Qf`Mt(EjSDkOIdBo&=HrR+>^+L;0+nd_glzf2%$!XMXU0+>?NoH$|c$NE1N-B)Tcv%|6&R zE0ha}pcz-LN^w+Y`*(ib;^!Te3O}|aSX5zO6r2w)%m{K)^cv`$$9j|}{m1Xh_}mds zDbAjTWJbE%dttk5rsN(*Ft5ZDEmDljk#!#-MRP~nNnQk!X>XSWD%_-tTi*rztJ&eX zE)Xa|uL+!>!v}21f8n!R9nLHBSNVp4+LS!I;b>e|I--0;{3KGMBhyFzzM^L~;4lR6$dCf=;P z1(2BYyej3TR?+s!9MvI!E#lE+?VTiH7ctU@y5m+ECfzOe!wk@zyAMY?r8t&lOqR49 z#2f1llw^ZE``T)CFP#+zV~nPA-KG0@J>u>>uCetTh&x|dXJIREjBQBS>h@1-Vmhlf z<+#k#Qo;YN%qvF1q)Lk0la%O0$e%*pp&o5C54Hi26Ju`Jk9SVzp|!%zh<3`f6Ez{Q*g1_kD8q16%Hw z78^xP$4xa@#9nw6s@m1ERO>Vu2Y3U_V^_#cYLwDvRkZ=*mTrw5Il)F|*M z322-O`>mS`H<(=qMPR}rpXVBl3zAQky5r?Yx|`y~WYT-UYvSv1iEJ5=_&t|sm1?Z{ zV9yiOP}&y&7s~O*%@poCU>0gVB4ZVzvCDqN+!JHC7Bh-HgRzGK@PgrT)L5!hJUq ze5NWdEzPauKFSB!S$-E`!41HzD;)3_57lKif=1w-PZ;n0ofjFzj+B+JD!ARPb4G`^ zM6FpA$iCP+W_noAQA8SGlk2&$#vpQFj=ikBlPRz3ex?Ip=XkDXuNqHj zztQ&i%)_=40AeFiwi~zs1M@XDsmC`mGBo4A>R|u1n)hP7O7uDY#Ge?x4cJwCd=Xc* z&-M5D?*GlnXR~PO<-BzX5?UrXiz0lHNprS_%zCY{fx}H&*k6V%HeLfgheoV%qVh?R zE>qh4hZ>>6*7DSda@`o@l?s0>5NwHLJE+7VM;U|j4A4<@p`B3Wq25!{94Cy?bgs>! zghA_H8OrVsnvI}K=?oYBO#=D3Z3aw|%(uadT@1+O%A}z${jc*r-1D~qF9l$oc_AIn z@xqCZ`)Dsr_uGaNd*mdPpq-$*EgUbgqoaVC#;GGeUJheecEfPziFTi2)lO7)Q?mL_ zQzXl9&}wM81o`Sqyb`II`=v%OvY0t)CC(L0ff~x4DqVB~zDT|$mq$j2-p33yk+@ohmb?9cZId3X`AJ2o%dw=hRY;I zjI5eB-fWJu+_8;x;pPW8%3;xjQL)ZfqQWv=O~)>s>%;8-#7wHHj$Rg!I9T|G?_WT% zm!B_Jm3KBXYhC{{cjT@uC+X9!dnYN zDsL@j*zEvTMDc-`hVIJihhm5{|DP1M@#c+-2dF@5b1VwMhIc`V%a`on##?T-Bkg8t zk}sHc*kCJReXC9-<*P)1;1W5!Ijj@0{WY>(B%F_<+S+sZ*VbPMt*Vq+Do9h1qZ$Rs zlHP`|b?j7`aU3FYmR$R1xUHD~I*i<@|f*fMCY>f*7nsP0tw+*P6Ak1 z(4&BhW|}w4HTpAT#LApSns zJm9GEsPx!!C4nfZhxFx1dQW~=_tj9!YsGVCXQsQ}5eeM_SfWL@+P|6S5_`n^RbKmZ z@b-wi=q_>`52d)29U0qWXWIn$t+ra0zi11WZ$&@Ig&-Gff9W86pH2gX5!qs`|CZcP zKocVJC=0e{jB2rr_ht;5_ZT&c;jn<$4k5M|$*E>h^;QQ$dd9~4IuNh`&R1ntN_{-) z%n0d@isz2nRcC)@ai5C)C8uo4cMa6|A!#<6W}K}CeLa>!{UacFG2Z4YP#Ml)UD6@e zzAxrkmouhQOtd+`@P+RSeIwY772sCyA&y-(bB06{ zMV3Sm3u&wR{4#$<_1lVo@+07cfxRm@5y1b0s?}nwUF5A- zVZZMh@ckid&mO}gOFD>hw0Ii5GtTve}!F%909R@DZZW)Al~Ss zLqG!F^A>52yl#P{hsJkF>+CSlT4C{D^l^C|@1(?%x5`I(DQ2QKxG;+X;GK&|8&}!U zKUBFX6YWvvhikFCN~&Uk{VYx&RTpDx$)S{`tRCH!!)2*(31Dy02M9xQ5-Iof`CesQ zGPi&MZP2;a4O*3b7;g2`u_XOI#iZ*S;D{^!!Ld8Y%|X{AN4-fdZi*VwfN9XvOs0(! z8*au>$Cz~E3Y20|$QMvlrH}f}K*AAgw-Sgn67tYknFwafFxr6{KxI6w<=570Ah9}A zGtgP6rPDH|;5=Zh^fpu6O`!%z{fPRDP}YoA1FY)QU2g{xy){xa4tFb%gVa5Z*J zLIJAjzupsUD*HP4GtKyu7%;xi|G`U+aa^agDwtf0C{0PhdBx8^K$L50i8>=+OrDXz zy;h5mY;?oE*PC4O_|LP{B$D(Ad%6+wp;W#I>lI5Z9Rbcxh?Z2B1RO1ShJ&+Uwx%|x zO|#Qr?i{UzXkgNqInsxaHn7pt?pvcTEQa9j!!=v_M&~nwLTSbV*J8(7H`@L)sXP@z z@7ErfKV$;5(Cny4CnF(su<_T2M6TD^O%4mjYiw&IDS3Za>(-Lel;RggV%rJl{~>n% zlS1)}?3b$M*kk6i6f#Bf@}!flc6mj6rENY|;a@Ge->JCNzA^|1{#oYZAk^B_eZist zaU~f`IH}Yd@cLCThTFzu%Mo+7T6*TF2mQiKt*~aBlDOttqg`iCNV;hUm0++?a>4Ufc*+k-YeCy_SZwrc*d6!gmhpM+dAdrWb zLq=oks$c7fOmO|Ntlj(#xQ}|Qn_8YBqm;KKuscT`wgKZgzY|WI+`}b;7y4!&WW*75~0y9=(THyV4n z$&RZN&76QiH+PLqR}G!yzJvhuDj`evwFI55RzDiLW(0|7jkY<;ij7yE_LcToHIE^9 zifTV%Xwp2EAw=aOqIb_ltA*4*i0@k4S{g&9gkBL><5(@R`^mJGeZDsDjs3mfPDCyi zo8G@Vf^$dAiSksg*F(*K@=ZF&b9d&P8laZ>&;93Qh1L7|ImO<-72S1%O!X2@ zzeK1rOo z4xDkn^QaVP7vwV67g`J@>OY(9eiv|>Z;E{iVPOEyy8t(~IhYu_qL-Z!@T6b%alF#i zzLcuw*Cd8ldaN)82KHQ~VYg>m5)Dm7Y0bO=-@gGK=J+T5SFKL`J_Q`-V$gqoeEM&C zyK!Z(yOy)cErur%lAYpJvCjA|3*gQf-Z8=he|Ad;Q(VS&5)ay!J{A$KjP_JLWbltV zUTEPYJDK5zWYVW&tM@U<|7DT!ofU8jkl|gL#dd7%@zITf*m%|Hy}m{H6~N#7N1*WA zS}@%&mdx&0UiTk@o9@odb!fapNxaTVqRyay;{8GgeFt3^7pumnZa% zg=H=VwBu*!K~05wLl+O$wiy_{n*d?WPRKL6+n(W5bGWN%*xJIw!0_PRnR^Sh2%}{g z>W)9K?kBE)PuXps+0Vp5sJZ|B%bUQTZCY)f3)Y`bMR6Ni*Le|;f!h-+zy~t`5B{2} zGV~1rnG481lNVS4pYZ>gnIbT=rN178q5YvAX9R zng_$8e5bQ&4rV_NJytt3^J^ef}lzEczQKCd47n?1|SHn@C4?>Q_j=IlyiY@=?c z$2Hr)D;$BA67g#N!9j#(ztIg}4rzH((JI=Dpk!ybrGIGPp*!iBaV3i>gH=(^H*4wu zE_g8Ll07Eby6vUnSw9s`kVo0o^LF~gdHrU^Qb6=6&lgt-w#{>`lHzkJxtzn-h~%-sj(VPdX*@e_qGWPsH;dLmStP2H& z$7XY~-7o9Z(4Cwj6;JuB_~t?XZOl92ub*hE3w*V#y3~1rl_Nf!*it`bhAGVLbT*;X zsRiRYl^!JnQ9JBg<03FN%yN3tVzqfRxU8-tiT_r_jMBEfQt|}G655(2b{SLWc)itr zPvL8u-O}H^p*Cj@;4q9p^vL*X?@!&6(tb$>)6 z*fXzIjO-MX`dPR6Y`sH<1MgdcvXZYw=Q&mZ>Qu96lPI>P$Hiz2`b3I~eW79b=YW+qwMA{a7G}^Z4DC z66fwN%Uk|#z-~{GM$b?`Vxo2EiqEnUbUP-pQr2ZFc zICsQ8vH2Ib^H#1n;-x?wQYD%|y+7m1GY!7om&t2dE36~7W7pgd?aN{{JA0a9rsz?e`?sC#tQWNJp>D`P3seJGG2a&jPF{1>U%_nJ4MN`$lIxz%)!{<{Y~Dn{RAo z<~ZC{(rPEtxp1zr_KX6C0+KSp1qDaLO3xr&LuUYM-PJ4($wd)J(E z@+@U@j#ziK%>bzvLx9HJVvmW0h!{K^5v!zMIXFbsUBZvcupg9Z#43XI80$`Y?7Y>Xz``L(m3?Z_!+ zj9F8dTw|HoI&y=HaKBhhE{-YDR-VZ(x3RVw+fsF?Zwk7`@srW@Q%|nCY4w#B4`e(+hmXE9v7U>q|!HxPfJrYj!HQK;-R;%&4btPUn^F%({!2 z)t9F%PASZ}+uti*Dq>!NW940HpQ9`*>9*$a_`5&dJ91vnjYiDJL9|AH?^%I^c97Od z{c?yq;e^iO_BSj%8t%%IMDCuhv@-%BJ>y<+sI%?J`K3Nyx|dj&hG_E2tH{?zmQ=8Z zcwk;$cZs}EU-NvD%^4?iGs@pWDXzx+NnQNg5?@z}e|{ci#O}_W{iWc`p%7>KytOc= z7jFaHUcr?IEe%MWba=PYXx2%krx+7vFJ=LyM+5)2AL zGXG!gefL+A{r`VED@SIIa^32k-JxlY+@sXAVVWsuE*y6`0m%e6t=l~+@3fq$IRa5h z1-F%gr75W?DyRvmIS>&yDxa(O_k6zR`#*f&KXN#SbDfLV>vcWW^Kk_&K21!mij%5} zGI-==o9hO~hT*nATeeQ8%;4;nDnSOtc}$XjW-T;j)2L%3g$=Pu0Iv>XIC#<;5O5Q! zV!p!N4|JwQsG^b4R^N0P7s_7`m-Zc=n=XG45M6Z?sh<8bTq8=9z3l|8fF;f-bUrAf z8Wa6+nDsU1HY0w?6LHVFrmt8>8>ykHy5}G zsxq$ykfM=0TV3rqLLe}AXJ!!=$$^mu8*@Vpl&!9v2R#H1YcV6yn^KYzbco}q#97;~ zk(*uz&d#d|pCF=uI$7z#{B*RRJw6_>X4?A}xulf^i!>PrQ8&zZo(_uSZ4s(4Zq2z(f_e4rJ z!2QcksCV>dh1(%#$n~tBKMI!N5#)kGB8KGIIi&ortX=p;1}mVRMa*G7j(RJCwYg!! zp$h9flD*wTTEua%lV~Avh;H38t&Ile zq?)hMH<0Te?|ECQUsLRDD9O?AubDebv0|*=@4I~1bkp-VOPO*l+Mj@D%c7No*V|KE z@|__ybzJu%?4oH^)K~^}YMI%_QOoaqs>fO00RE?!oJZ`GZ$hy%vFyyWcHA(hueoht zX&Et8q2PGqh|OH452IFAom_9ILg{&Q*z6*F_osb-hm1aKp)6gBf6p<8b%@f)PReNT zJ-GF`ThncL18a&@()D9@XuFJT`CQ0+3~ba^cHE5k^$Md%6szxB(cZO?C?PT@e3Mtu z_$u|`k9Nm0Jq1&b6@|oBb9O?3EGfk7ZT++H_ieY`y{rpx;l1nwI!YSNIjc=c3fJ+U zp4D$8j;pd0>=7*GpuY&|w6A8R0Tbmyip8JGU%#q{>iAl-`iOOr8im5|l3-(9KZxlC z(!SMs6XxYunuHJYR7~%v!xZwJTana z@{X;MFLc^%|9e=Tx_nA#dsGr_BNN{%ayMj~rI>Xi)TklHH9Vx3K?K<_{YZ1vupV!n z{_j~~QrMTi(_2$F&#tf+=>}$^o1GYc!!OB4);9;rvgo0IIY_S4aL#qYr_GFEkw*8| z$K1?F9#S593)R5%{b^{tnEmS)YwD`S^!vN$R@3T&?Cr{M`wd%eGkt`kmJ~|Pb%O_N zF%XgS^sbqKt+LcK1GDk^zmWqU{#4x|XwoC(*QHnsbBfz<4B#A1&Niu5W}SbM)jHUg zy#AbYk`?NkJk8b8F!wOYx@WF~En!m5<1@F&{k_zaGmCztVH#4usr+b=UyAj?)#p{? zcoVUfr3NZ28vTYFwQ@aqJPN-Rd2=LSX65zHy5|0mFw>f2r&;wQygT=QdC#U2QjLVD zLng~t8~$Bs%TdoT{y%^SPrNg{x_o7}Ew16G2JvGib*Czc73ntlcS=tCF4eqLBu8K0 zRM2Wd>4_c4hG&HDgeC)zVJWmi3R1#%$&h**y06E;!b>a9s|!qH?@hm~0@-1Y)dG=hnYHs2L&M6na9aj#L> zgi-vb)4~zii5E)lgo8`sV~3iR&r;ltC&4m|H9`SPq9u#wZ+9g+7#f0zVbPkN?N6=C2fLD_d^K&f2x*BS^XFKXeuen4h9|aUl49fp zf*u5)r;FP_@CO=pPfXs#eRyY*CT3g_5H2}>C#5rIVvAVYE+w%73z$KR+Q_v#T;_gb zM34<<-mSmh&~XZvoVLXmw_N&8;k#R9reSaJWmvEz&B z$uvIAvGnaAnH&Cb7n8kquJ;amyUB$z4Dw2YMfhqhb{#L`w!mJyZ}%D~+6HoSS!g2m z(`ljn*l&>VRcFW2Qk+=M^Ly-8{=g^Pk_|cHR|>7Qve|lM{Vt}q=lB_m%zw!BX-E?| zzyJ!!yQwrqMY-s(>91w-w7dT}u{f}ETQBMwCH^*q?=Ij2Cd^0IP>TQIMf!g7d26v> zZe;Ja+-IC*6>aIru1N2dN^w9IDimHa{%CD$Hk$VU-MEc^S?+(w!S;Ck(Sva(sKt4p z7bu)N0BTVd6_CrG2ZXqd*@?HXc~f`9@7G4=If(z8EWK;TOPsx>?3I{Ih9}2-1N|W! zCU2irHQ%i0s-qRFX}t8NwDWdzoXhxN?~6+K$^o2f!%g}tT}o_{Z|mUSnnY(Ow+^Cw zkVLzInewXu;zgC(tq`rf2t6eIw%iP|6|uI?l9L5r2ivXqU~IqxN-Q)x+?*nlfSFjB zAV(PWp26pb1`m`!4PIL>;y{|{I)3dD<_Rzly($E671|o>(f#Z%5Q~Tq&lUxxuj_$k zi?XZl2#qW*ca?vBt>bOcJt0jE`r;jLdfq+x2Pl6&uO`hdo>IT~L~G!kjGDMMc^*N6 zx+cWl!>>`x)^ajY;p4p1>DkFUym#f5fxe7wYfH5Mb)ZA(`_y51_trw9nno}E2x9d0 z0!hsxU+7?*gnO;y5vfAUCSdw@gOA4wS=i3SouIem0TnJzMK6Du4%t4vn|A;cmYjH} zti{XPv1Z5MFG_$%r(+6h$T4^A-^-uA$Bbs@b_Q+EzjLH-HMP{5TjE0g_;)7G=Y8Lo z2bx5-n&-wRN-;qRwB!o5xH9;42&{s)Is?J&2^(xrua&eS77MHSV$!`HV|<*v>o(R2 zR=B}6(35lujeepNiL0(~wz_)D=FHd|7nF>*pAJWT%}tJz7fdZbl*~idT>5)eMNB^i zrjHo?uKh>i%+TC=@cGP*)QMRBdqqbl9qU2JSwU;Tzc&n%Sz9CW8ee4P^n2EN1)#N? zO)-6kb^r+PuF%x8)|t)RxfXq}=LitcPdZjK`Sdg=W~V^6HLwzUZ_&X}mx0YeJ+5`h zG>~JfKMGpq)88cpf_tRs4TIzeQcga=3x|~KRx*;zy!whOu!P%LC`uo3%cD*utqdaF zM!?{XCNR_P;z0u9ceof4#lJhn%rDq}%N_hyBycSAwtgDRiDA!gDZBX7Zj%3O9{E#~ zLcdHlINhrkASrakcLh|G9-fxxlpu0u99LB3SyKRb6uG>($Z`m>vp|%xXcjAV+ zu}A^a0;dp>B^qWJrrW_YN*fq0rieR zaExTZ_s;$%c;LDyOv}3HW2~-gx~!P3$9n_$hUkb91PGfpddF-;MC%&7B=0&F7O)b%#hrMmi{FK9?@p%l^_*XGOt|3V)`ltPAkK|98ROl5oL_=jOfeP0H zV&;Jk@{$GHMD6cDPrz)?cL04J_wEf*eIh{1i^gzjIVgBOPU5Vc9OUKo=#b-_7)1@rC5HE^ zWa_PXorztDR_SgX`%(~3GnqT$BTOFS5-;wKZVoJnCM!{9h--evw5#G?Q;Lq$LHCjF zVrV|OKHwrHt#xt>mX?Uxt!;ebV+cPD-4F1YeMZZl^fD8`-hXC%Fs7GhN05(M>%CTl z>nxwY@@zQpy+mOzQPmjPy>QRxg$|?Z&GUpK+cu?(1L3;b;(_EpRWq|}J)^-5KdWUsr3r2dbBC9%78aGde6xc6dU)_mUur(1Pf zon&61cx>uR-c=7ziO$sv=`Syy-^v2T^c&;^*DR~F%+p@hGk)ndl=x%tlSl+0Ov`Zepsszt! zTV1Ii>Hl=xl*qK_bU5!<^j9|xw$2{*u9=4@e>M84xNA06kF+Gn+vpTwsri^CX8uvN zP@WAL37fx+0bHXPKfaz>Lj|_#+ts?7pYZu=Q0ALj*Tw;O`%a@(LLC!^@r)2FanalC zl~g;OJ~!BVJI^k&=EByfp}y5buICA`LSEX(`w={$!*Dr8)dcFv!kf9Y99T}d#@MoG z@%|oq+r)#c71!0lH^U10&8x847|in7fcT?PM&zg;3^({SwDm}Fx`K(}P_5JkwQQu4Q0^=c< zebib)Oja|7%kV$%!~LC&(O|~tC1~CAn}5+qGQ+y->~BTHH%jd#Pt9{8?%!_vD-!w= z3UfQ4HPzoiVR=5F1VOVP@}|Z+J!S}7U{CX~k>@cD%S0tv&$elDu^T~(L#CfT+^0_% z3#`uC={Wa+|N!71Gu5AL+#do`Iq)R2b@AU+Y!#v&c0GpB<( z%Q|~%w>FVw4gN!8U!$Oct(9?FODk|>Ie3J9GvAH@D9&O`rvTy7y-;)(ta}PkGFC9r z%S$~rDfFa>W2?ItcF%xM$}2G5kh50)H1LaeBBqNOX5;eB4qAl2ay5cS-)-jpdX0@V zjf$PckecbgpYFN~vMLLXa`yPh26a&EuF}oe*ybVs2aJUt6VLfUau9o^Xk(i~7+vrK z_|H8quPKVuJ(;A14nbDbH7;$AAK}Oh$$tQfRAxRyvLIr;uj!D`c@z=Dc)1ABFH|ie zy>WNz!A!cKf$L8nA22wq&u@^Z+_)WC^u?o2Is6VZxO-A}x$=`nvPMvZeidr{O4+@O zL}blG>`Y(HfQDxHURv7azI8^g|g&`wFcncgW2pkUoX=9x77_KsNWt?@T+??`M2B_K9xNI+2}E~@U3 zbo2~;YO{1iOJZ^XDm|0qhrS@?HxXjlsFL=Ns`>f~MFuhRAH6j*^_!vr(rzoy8{UMD z*$JAB6Oqk^$ImCn=**tcoSm!Rd#D^xVEoIC>2)V0rcfFhHhc|tvwdo!wFzHsVy%nn=Ptwzt2$g1m&PWGnv@Gai`7MYx|;G|X$u9C zZmX#pk6l>3i_f}5!E@q^cUS=%=&wI#yRe0Ns#o=40C@R1n(5!`@wNYSdZWtL-mqn3 z6)O$F&4bJhf8xbr3oh<_CS?_;0^OO@!&U=br7+)a-iPN+>~SI(V*&Umr3T`n4V;}by5=TMW5i>NO(`Cjp!NdXi*X8^WE!HnPGS2t${@k4fEzmu$z*DlO_1ndwKWZZnm48 zqJzgtD#D=fj+`S$jbft-Mg+fGa2xzvS&pSP?wr%or~)0^_6t70FU4|~tJn|4H`bVR zcC4jOh+mFMnH8Ie@N+)fAih8;m`u8$2KqNXQ~@X<$;0pgFgCJJ4(C=WXOah^;5*h0wk>%DOUn}oPHzmR=3bavm7zuE zuaS|U!t0EW)fMAG1k5;w-?h@A8QT~By>-~0V9Vut@6ugfoZ{pVz9M5-ExMqOzH*&W zvmvn>D<}R#DktTT${QB=(5iUv8b;lT}sDYIDRPP<8SV)OH@+ zHngj{K6Mv@tgt~4;$3rPmH$p`la@%tk|W-NFP-d~iQHLM$|@q)^FL$3Q*UQTlJF^j zTy_LroK59jdJ1Bzzm`9_(^mA}D}alba07%&t&VJo9)>Jb%w|DgcY3fhHlJ7Lmc2Ic z+Z>r)7Sd{}HP!rU&9_-v_|Un$B--~mcopE8enY1QNh-$~#1$(}>Km8easwpkfm!*2&3LH=ikTjJUo=I9@;is`zt-p$ygt6;`;k@`AmDAKDQDuv>c)e z7|KM+liS^xUBAt9-VtTFK9<|qVGYgAmI*b|N0MNQu(H|I<_3=k)SY@S!A>`O_?>g} zkAJ3kGL`=03e+eAp90b-L|lmIct@(c%Ev;!(2fBz^BfSIN9pF& zhR&5gXmc*9Ai_OwWb>L>mFr-*ZmmEdVgI%mHPM1U^8ISZMzU{n9_XXNbg{jIZdO{u zS7NV--x$&+vZ5!n{muG=Z_oJgWK`k=t?NUm2XwK@AWJ0Q&zz4(l!=Waqv$O7w;zV} zgEfq@4P$64XM81Ds5L&&sL;2dW5ST1gEql4bv-dDyeGcbTyp5= za|LV!N%&8r5$U`ng49mJ=;jY!H?s}%iEj>1xK#`^v~e-sJa{u(ak$xVr|O7AAfi%{ zzYs$bQGdc8w~xKONdL9D+AY`(i-Z#dESJDFVdg}EW6D2}$)&H(Em*mD`e?fNzRHM= z=b4iMxovG*Pag5mPsO=4#MoGeG2+6b!(H4{_yfB&TGPJ46I;cKC9kWZ!G@J|abH$e z+bILFx>2aP`Wh{Z(?T+^G4nLrovOk(nvt3mBL2kha?`u-HXd7S4Ep>`&C_i=f8$hq z%ks+r{)`#=GkfJU#} zhUFqgPi06;Rgu78XWf4|Z~L}~x{!{+6OW9EqA)MU_M2hR{d}!h){WS8bb+1}=RDEx z07MI}p_cYYu+0%@v?E68iy0FzUq%OYGiMOz8uwVsb9`;i8At)FHxsGy-)=De zIlg6Uj8>|!w6%h4Z_?>=gAVH+LZt84R$U~E_MP7{5TS(>AaG5~0DUGoT>ftB?oMnB zf|tfB-4md09k4IRYsIkobik{Thpt>YIq691 zAU3=kE?~PyQ-XRnHJ-A!Q!Xp!H`*H!Ub)a>`s7&;x?Yf9YHkKOpGCK-t#ekpn>-(V z@AVKmOz!Vke^7XRu4bULOa+a=++q8V{}XcSDZ(LUXjU5=ZtsEqWNeiEloUGCep$a| z6&66v=Csm!J=i|)hD6EyOHKk|vn<7(1-~g&GH~$ImV1i*%8)lLR)q44uFr9^)7Q&K zH*LAC-@lj{F9^1MUHO`V{-Jrfcm8&*Kdalb$44$$$Dc?k&SWFkO;kMvo2DQl%uQE^8SzRNEX+jlKA&C~L7YPdAeg=2KH+(F18I zvIZ+53CH;Xp*>1>ay9Ar@FY-{!T7u=0TMjw1bJ3xY*FmJ(QhdR#O60Q(w0Ej@1qf` z1^IgTwV466qLJ8K`W!Gt%CKr9j~mr|{Pi14I^BIG@$y1X=KU$J3msTol2UebCvfeK z|JY^OrPTsuG)%{pM)Se+J@1lAO4=oTTPo+OJ|3@KtgfRQ9g!6~MQc~eNfpO8NpV{sAoTPlnGB{SWj6{pjtNGD*0z;i>Ii_SaC<>y4on;(!r)U*R)0yEhw6g5=TIS9$iSIs35ndk@EyPi z9i(fhFbcG+4`XMrV$~MGIUtLQ@Rqxnx@^^qzLTazOI^jP+bchlLc@*G&%Qb^!YapL z<6kDm`i;-p`p>Hhao6X74w}RZyi`qov1_dTf!A7bXGK+(5))&#>6YlRx_;k3GPSLt zgh`XK1y_uR?=ZA%e1QGa=j~%=y9~`-2aoW8NT` z<_tOgMiJP!vI0Q$@4w;Mf8T@>`s&s~76gM>wlhYbL|q12qkeOY8@k&HcEiUp=DTCr zBc1_vL@YBcdw+g9QL$|Ug~jDdq4ChJzJ+xwH4^+|h5lA4mO zfl=Y@s&lc6SNF{f+x11w;Zj5V{*>4Ww{w;@Kf5IbaTo~$WC`b1lAJs}_?5XPC{p>7 z+_g7S${kzN6~zP1i5W%;np`<4g>bKk*4Zp;rnt7}*0g@s-k61g=W>?f+E?mj6d$7c z_p=?zu`$RDq&TO9;9g7HZ|P6*5GthBhDv`@?8&2T1inEy=-Q@ELHmG~Bc=$lAgiT9 zxI+2DsaY%I#a}~nc2Q$g+VLu5&Ccdu+}`wUm1{6ZJr)KA9fhHZwGYZb?3Z zwnbTk7B^OCILJi>m|OF%o!X*L^w^yg+#_RQiXJ>B>tlIG;>1NDOC}cOMq7=HJJF^| zdC*KLOe;Q~F>qfF{6PI5BWRFuXW%wtV-w%uvay6U9_Yu%ddkfMCbj|fr*fwGOV-+C ze0=jxtf6%>ArgpK+0WlWIkD_QdYq6mO~d&F43i;G4RiC!$(*U6L!h`s!W&7VMA>fl77_zwghPDjDA&}+x_UJz?ryO7`|tA8!b#RWH{5g!tBSH* z7^duYoU=JQ?I}T?W%;oD+5FJ_n5#*ZL8*_N$#DIER}D%I4=IEI}u+g(BD?jBdJS=!8r z9?D^=K0VuvLQG65`pE0aWGxhv!`;`b1V%r3>DTc9xzy47tzdM=%_NJN)~+2tOT4yH znZ!ogb4M39zu3nuP^IbjmYN}HQ{pK(8!d_+HAd&p^`3FdpYV~j9@vx)n=IXPAsZNR z@iP*sCQ2bvkk56?lS1BR1@CP6z8Iyx)G9usTHE&vbz?_w2qG;}cUkMpmy+8Who8_( zo!264YY#u6LHO_8_6`k2vKe)&hFcwGD3WqT?3fbN!7n%BqdWLX?s2p@B9JeklR?uZiu#3B^*?2w+87B!OD^;qX zo@;^t)h&U`J>fk)cPxZrC?_l)_W2%}96piCBn4-hxuX?KqpZ+F`yUc69sExq9b3gr zi&PP*VlF-m8}k<1vjw#0@7ZItGJ?QFeWp*7)E1>S0d3EdqqfH%m>>tfx^-n0%uzmF=CHFk|{Cnfd0oDkR=Jog;TTt7BU3m`1^>1PLBp?miv{l`{VlpRT z&L6Dm?~&Cn&C!S1qIWks146msZbh`gfAgT3(^l;$wCsV0-v0@qAB?UIpM%|DPc5?<@cB$N!Br|MzbEcQO3mjQf8V!+#gU|L==Iy+j~Z Y#5x*y>S=)4?+3-TD|S|u7G9742QxT=#{d8T literal 0 HcmV?d00001 diff --git a/website/static/img/stackql-registry-logo-mobile.svg b/website/static/img/stackql-registry-logo-mobile.svg new file mode 100644 index 0000000..1de09ec --- /dev/null +++ b/website/static/img/stackql-registry-logo-mobile.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/static/img/stackql-registry-logo-white-mobile.svg b/website/static/img/stackql-registry-logo-white-mobile.svg new file mode 100644 index 0000000..88c628e --- /dev/null +++ b/website/static/img/stackql-registry-logo-white-mobile.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/static/img/stackql-registry-logo-white.svg b/website/static/img/stackql-registry-logo-white.svg new file mode 100644 index 0000000..9b98a38 --- /dev/null +++ b/website/static/img/stackql-registry-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/stackql-registry-logo.svg b/website/static/img/stackql-registry-logo.svg new file mode 100644 index 0000000..6e34cb9 --- /dev/null +++ b/website/static/img/stackql-registry-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/undraw_docusaurus_mountain.svg b/website/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..af961c4 --- /dev/null +++ b/website/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/undraw_docusaurus_react.svg b/website/static/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..94b5cf0 --- /dev/null +++ b/website/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/undraw_docusaurus_tree.svg b/website/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..d9161d3 --- /dev/null +++ b/website/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/safari-pinned-tab.svg b/website/static/safari-pinned-tab.svg new file mode 100644 index 0000000..2563f76 --- /dev/null +++ b/website/static/safari-pinned-tab.svg @@ -0,0 +1,27 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/website/static/site.webmanifest b/website/static/site.webmanifest new file mode 100644 index 0000000..c0f898a --- /dev/null +++ b/website/static/site.webmanifest @@ -0,0 +1,11 @@ +{ + "name": "StackQL AWS Provider", + "short_name": "StackQL AWS", + "icons": [ + { "src": "/favicon-32x32.png", "sizes": "32x32", "type": "image/png" }, + { "src": "/favicon-16x16.png", "sizes": "16x16", "type": "image/png" } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/website/yarn.lock b/website/yarn.lock new file mode 100644 index 0000000..574786a --- /dev/null +++ b/website/yarn.lock @@ -0,0 +1,11022 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@11ty/gray-matter@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@11ty/gray-matter/-/gray-matter-1.0.0.tgz#35ee04d76b870893c053f64f659c923a7a9db2d7" + integrity sha512-7mJJl+wf1AByoT0PknQiQfOPnVNT4fevGrUBVWO4HXsnYn1aQPyRyrELYrNUFleUBM++KzMKN6QaxHPk0t/6/g== + dependencies: + js-yaml "^4.1.0" + kind-of "^6.0.3" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +"@algolia/abtesting@1.25.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.25.0.tgz#cf3b1ead5b9910b22ec953bcf1e20ad8b308f5d4" + integrity sha512-rSTin9Uta23uaewYVQEp8XI9T3iA/zrg0/1G2vhf8oFFDxFL5vybnZ5IQwsVAg4JpKxPX4/WYNKdcfWrZymk7w== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/autocomplete-core@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz#702df67a08cb3cfe8c33ee1111ef136ec1a9e232" + integrity sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.19.2" + "@algolia/autocomplete-shared" "1.19.2" + +"@algolia/autocomplete-core@^1.19.2": + version "1.19.11" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.11.tgz#b41b86edf8e3ae682566ccbf3757ed16079d32ed" + integrity sha512-Txje8Sw5yMH4ApvgqR9rAxxWgmVKG+lIgl/e6MEn/IVkQvB/NZu7rV2+2Iy4/p34/D+DWS+hxpZL39w33pJXKA== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.19.11" + "@algolia/autocomplete-shared" "1.19.11" + +"@algolia/autocomplete-plugin-algolia-insights@1.19.11": + version "1.19.11" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.11.tgz#b9335adf78ffb466a2d4541e6d7cbe9f11383a2d" + integrity sha512-NW7gVJqk1dQQeOEsY9+GqImCJwjL0YZW50gLDdfjI/9zfYNiCCByzpQaUM9YRzVr1QM61FHiVRjT6advLwl9Qw== + dependencies: + "@algolia/autocomplete-shared" "1.19.11" + +"@algolia/autocomplete-plugin-algolia-insights@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz#3584b625b9317e333d1ae43664d02358e175c52d" + integrity sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg== + dependencies: + "@algolia/autocomplete-shared" "1.19.2" + +"@algolia/autocomplete-shared@1.19.11": + version "1.19.11" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.11.tgz#dceb4fdfaa5d9f800e74f714b0e5d7735536dd33" + integrity sha512-9oYPEMmMAH+/EDUGKJJ6oX6JI7YNq7tmWTxEbe8r/qmZnM5BoJSzo8C3Wa2Kc/EPyBJjFrjw7qwo7huzqAYW0g== + +"@algolia/autocomplete-shared@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz#c0b7b8dc30a5c65b70501640e62b009535e4578f" + integrity sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w== + +"@algolia/client-abtesting@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.59.0.tgz#3a6c22f3b71b79c9911d7a9b5d137401cd39d57f" + integrity sha512-bm2XN0hCSMYwStSsCBT0/PUB2BDxoyR1Lnub3c392HMEy9bi8PUSW8vR6zltVEKWG2t4PQFWMD5C07bmJxGgPg== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/client-analytics@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.59.0.tgz#0eaba7b10c46da7bac955841961134a8af16e435" + integrity sha512-XOFPOTa69WuqHR6c5tMgnUUwwqQgNSzMpxmhrgA9KmxRf8WIqEa0cokHJvohk5CYb7CZx0xeSL6Bk2IUJ7Lv7Q== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/client-common@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.59.0.tgz#3def8bbdba75c5eb13e5fbbdbbc80a6b4362f897" + integrity sha512-PC8ipLOYFKRTfIUY1J3FJxS6ryzWziaXmIX9/sNMoUR8L+XhF7hX2QAeUI87YVl5zujvlYTSOb+HAIqKXDjyHQ== + +"@algolia/client-insights@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.59.0.tgz#47d8127d4f9093dbb9c4456f18139378614248ac" + integrity sha512-yFNcCMM5fHiyoR0HuxMrzy+VjDcmhFUZTm2IJ2DHwGsVH3B5SEob4zTmeEZ3j/AZqNnmrJOCKl/tJnBg7+84bA== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/client-personalization@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.59.0.tgz#b4200dbbeeda202440d0a81176bc004347c655ae" + integrity sha512-GYja6HkDt2VrQhWmB2cLx3Z5fDwI9no7q+xwCWcFrTPm5CLH9QZvK0XLO9co1FcNIDxxkMaP3AXM39/XcecEOg== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/client-query-suggestions@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.59.0.tgz#5abd4de319821587b5fefffcb6a82557877f6fce" + integrity sha512-Wofg7bMpWh8N5qDDZs0wy6whc+KMmdNsxgrIGp9Ug2s1Bka0uq7AjyckdxReKPHLA0Q1qH8X/SNh0wn2t2X2Lw== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/client-search@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.59.0.tgz#04b78294e570410025ae5baa2af726afd94060f6" + integrity sha512-fHnALZfbEnODczGk14Y/1YBRApp6UEpZUTexGcMUPzY7RDc7q4HN2Y6jh0KUG8Jo9B+q+wOoQEc3ziR0ErbuFg== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/events@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== + +"@algolia/ingestion@1.59.0": + version "1.59.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.59.0.tgz#c151412bef8130958b49f2b67c74267b4390a3ae" + integrity sha512-Fa38s1mHgoaLCT117sfJ6P78rtxUt93CYxBYpq1VOIcslaF+cH+1h5uikAPsKfxLnsuEDZHiBiaI6eNPTsQMRA== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/monitoring@1.59.0": + version "1.59.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.59.0.tgz#a4d88bd92c7732d9753cd8540113b8b80435824d" + integrity sha512-NyNsRSqM2tF1MX7ZGw/j4rduoEJiQ5wfvbSo/CFVdEzYCjyxbGFRPOZyS/GETJG9rk1TdHOq8NZqKqk/u1fm4g== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/recommend@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.59.0.tgz#59fc6015f6a5d0c044d2ff1f7085a33e6229da73" + integrity sha512-nXBK2uygWtvbCOffMWqqfjjcEtp9enDKY5/2Pw/Hhw8VVaOyK2ThbGK04bNX/Le+qoK1VHYkodWGVTKfw0Otkw== + dependencies: + "@algolia/client-common" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +"@algolia/requester-browser-xhr@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.59.0.tgz#d5212acb793a600bf456b5de9fa9821cbb982c80" + integrity sha512-yb+4afX/zja8QwX0KmV4/ae2kyYkRknsE79CRusYS2U5D8qwn2wq0cn1x12f3tm3F3+5FgmDdbuGdQTuCLSKMQ== + dependencies: + "@algolia/client-common" "5.59.0" + +"@algolia/requester-fetch@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.59.0.tgz#76eed36e67286b59da4b6685587d93b0e600774f" + integrity sha512-Lp52TmpA1QtNmdHzs505Xwf4tgII7RAapkDSF9AAtWIBETcGaTIaXci4Rd9nS6SdaWK1BWTSqAPp5wzh6UN3Ag== + dependencies: + "@algolia/client-common" "5.59.0" + +"@algolia/requester-node-http@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.59.0.tgz#b443a095ba494f5d176b891dcd07d8edad78c686" + integrity sha512-YYHLEs5rC6oRTFwT7bJaKBR9NSFzikeVHGAT1ffATmUQzR8XqyhHXjoieAUoR7fBU6I5cfy1FVeh5GoRgriuzA== + dependencies: + "@algolia/client-common" "5.59.0" + +"@antfu/install-pkg@^2.0.1": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-2.1.0.tgz#0e227e9161f8c9821b1a8944ff26366be929a519" + integrity sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw== + dependencies: + package-manager-detector "^1.8.0" + tinyexec "^1.3.1" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7" + integrity sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw== + dependencies: + "@babel/helper-validator-identifier" "^7.29.7" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629" + integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== + +"@babel/core@^7.21.3", "@babel/core@^7.25.9": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7" + integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helpers" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.25.9", "@babel/generator@^7.29.7", "@babel/generator@^7.29.8": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.8.tgz#4b0b887885422643339e09022148a4c4ebaa4979" + integrity sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg== + dependencies: + "@babel/parser" "^7.29.8" + "@babel/types" "^7.29.8" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz#c70fe3c6ecbdc3fd2dd1b0f498428b88b82ce47f" + integrity sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw== + dependencies: + "@babel/types" "^7.29.7" + +"@babel/helper-compilation-targets@^7.28.6", "@babel/helper-compilation-targets@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042" + integrity sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g== + dependencies: + "@babel/compat-data" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz#6eddf286f2ec418f740c91d60a83347c55838ddd" + integrity sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/traverse" "^7.29.7" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz#5d4c3f928f315cf6c4184ea2fc3b5b38745b2430" + integrity sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + regexpu-core "^6.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1" + integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA== + dependencies: + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" + lodash.debounce "^4.0.8" + resolve "^1.22.11" + +"@babel/helper-globals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b" + integrity sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA== + +"@babel/helper-member-expression-to-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz#8dbdb3ce0b5c487e1aec10e13c9a43a500814df8" + integrity sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396" + integrity sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-module-transforms@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae" + integrity sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg== + dependencies: + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-optimise-call-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz#77b0b5b94f1997fa9d6e3125f445227b1faf9d85" + integrity sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong== + dependencies: + "@babel/types" "^7.29.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.29.7", "@babel/helper-plugin-utils@^7.8.0": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz#c0a0766f1a13617d8a17407d7ab8f9d486225ea4" + integrity sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw== + +"@babel/helper-remap-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz#34b1f68dd75b86d31df781a29c3ff2df88da82e6" + integrity sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-wrap-function" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-replace-supers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz#bc3c3964329043c79112e513c1b198f16589ac21" + integrity sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz#50c95c7e4c4f54936cfa0116428edc559862d551" + integrity sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-string-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f" + integrity sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw== + +"@babel/helper-validator-identifier@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2" + integrity sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg== + +"@babel/helper-validator-option@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a" + integrity sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw== + +"@babel/helper-wrap-function@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz#eec72163044548a0935e9d182bf2d547ec5ff483" + integrity sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw== + dependencies: + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helpers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607" + integrity sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg== + dependencies: + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/parser@^7.29.7", "@babel/parser@^7.29.8": + version "7.29.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.9.tgz#e7ee0a24f752c5296c6455855ccb72662e67ea96" + integrity sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA== + dependencies: + "@babel/types" "^7.29.8" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz#2b535896d933a85aa92377eaa3d51a437d54a4e3" + integrity sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz#b00711a9e52bf4fe55ef7e54b2ef4a881bf804c8" + integrity sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz#2375328852026a3cf6bc0bcf2de7d236f2d5e701" + integrity sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz#759a857c46c4d2a6199685cf71070d81ae5f743a" + integrity sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz#86de98dd8e03836178231ea96c27dab26016a705" + integrity sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz#f5d892681dbf4b08753436a5e55000d5ba728d6d" + integrity sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-import-assertions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz#c5cd868505269126cc18882e1f01f7b0e0e24b4e" + integrity sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-syntax-import-attributes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz#6115264516e95ead0f35a41710906612e447f605" + integrity sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-syntax-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz#622c16f9ad63782fe6e83dadc7e40330744b7f1e" + integrity sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-syntax-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz#7c29388932313ed58413a0343048d75d92fb5b24" + integrity sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz#d651343f562c03f47951bd1802195d0e10605f27" + integrity sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-async-generator-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz#a5365617921d82a1fee33124a1102bb38a1e677d" + integrity sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-transform-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz#3b5e8f1fb58133cf701bcf0baaf6f01bfd1a8889" + integrity sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w== + dependencies: + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" + +"@babel/plugin-transform-block-scoped-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz#96d292634434082d6687bcdb81139affedf77e8c" + integrity sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-block-scoping@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz#baa376691ae16244cd14335422fca6900f54e17d" + integrity sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-class-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz#034897b8a21beec163332fac2de235b14409abdf" + integrity sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-class-static-block@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz#fed8efd19f3dd3e1114ee390707c70912778fd7c" + integrity sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-classes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz#61d3e5aaae0c838acc3204d9db7c8dc05c25815b" + integrity sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-transform-computed-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz#95028787ca31901b9a20b5c6d9605c32346f55ad" + integrity sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/template" "^7.29.7" + +"@babel/plugin-transform-destructuring@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz#5781ec6947852e27b64c1165f0db431f408090e4" + integrity sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-transform-dotall-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz#b203de9740e4c7ff6b55ce436ed5313b88d70af8" + integrity sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-duplicate-keys@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz#8f3fe721835cb7a433420841dae90afc962ea7ae" + integrity sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz#dc6c405e55c01b7657e1827a25332c4ac17e9cac" + integrity sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-dynamic-import@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz#a83a6faec5bab5b619adf9d0eac6c1c270123c2a" + integrity sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-explicit-resource-management@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz#65c8b9f76ec915b02a0e1df703125a0fca58abaa" + integrity sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + +"@babel/plugin-transform-exponentiation-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz#00bf002fde8794356171f5d4df200f6bc0d5a303" + integrity sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-export-namespace-from@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz#d6014f45cec61d7691335c6c9804204bee801d51" + integrity sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-for-of@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz#c65a678592117717aacdb10c1b73a9cb85e830be" + integrity sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + +"@babel/plugin-transform-function-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz#8b87f8a7504dbcd96135167e3fc4f61126a7bd86" + integrity sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg== + dependencies: + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-transform-json-strings@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz#f57d63dcc05b4481c281acedcd8fc4e3e439a1d4" + integrity sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz#b90bd47463326c2a9d779e1bd5e1f88b9f421921" + integrity sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-logical-assignment-operators@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz#9b29425adf5c794967aabe4b046a046a167bac2f" + integrity sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-member-expression-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz#1281689fa2fefc17b110d21ebafd0fe9402d5309" + integrity sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-modules-amd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz#f05ca662c8a1dc4be2f337af9c7e80369c942d6c" + integrity sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew== + dependencies: + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-modules-commonjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz#70e6835abf2663dafbe94b8ef1f51de7351ef135" + integrity sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ== + dependencies: + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-modules-systemjs@^7.29.7": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz#e60a6a42ac63a3095f9cc7264f698a100c8fe05d" + integrity sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA== + dependencies: + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.8" + +"@babel/plugin-transform-modules-umd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz#391d1c0215aca6307257f2f608598dfe55feb6cf" + integrity sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA== + dependencies: + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz#21e75d847b31189842fa7a77703722ed4b43d27d" + integrity sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-new-target@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz#714147ce7947e1b49cbd84137ca2e75e92b2a067" + integrity sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz#8a54cdf88c3f50433a6173117a286195b67714cc" + integrity sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-numeric-separator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz#0266d5cd42ab87ec40fee45a4e36483cfdcbc66a" + integrity sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-object-rest-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz#e0d5060241803922c545676613cc8acbbda0d266" + integrity sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A== + dependencies: + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-transform-object-super@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz#e89283d14fa3c35817d4493ffc6bc649aa10e4eb" + integrity sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + +"@babel/plugin-transform-optional-catch-binding@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz#729664f79985be504eba112c51de9f71d009030b" + integrity sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz#b84a1b574b3c73001023092567e16c492b720e51" + integrity sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + +"@babel/plugin-transform-parameters@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz#a5ddc3b9bfb534814cb8334cbeba47d9cf9db090" + integrity sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-private-methods@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz#cea8bd3ab99533892897a02999d5b752584ad145" + integrity sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-private-property-in-object@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz#4a2f6be5aba47be7afbdb4cd7903c46edf3a7661" + integrity sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-property-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz#d45817cd72f9e134ab1f7fbb79264cfcb85cf636" + integrity sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-react-constant-elements@^7.21.3": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.29.7.tgz#8264440ea2ffc5ec405aebd7eac074815d6e28b1" + integrity sha512-J0wGhKan+rIiE2OhfhRptySLrJ6SjQYM6b6N1FMlhyhCcw1Mig8vQjWchyB+bgHGDvaWo6Diu6CLRMra2uMtmg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-react-display-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz#bf161a6d750267b79db7ff6f8fb89c3369b02df3" + integrity sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-react-jsx-development@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz#64e6aacb5cb43b9e80d3d5f19ddefc158a624f09" + integrity sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.29.7" + +"@babel/plugin-transform-react-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz#3d16a0e5773f079400a8c82a190709cdf92ee204" + integrity sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/plugin-transform-react-pure-annotations@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz#76445c90112dd0a7371b63264563bfa9a4fcd6e3" + integrity sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-regenerator@^7.29.7": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz#3a4a4dd7214af9d524f0503bb97c99af5f4abf26" + integrity sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-regexp-modifiers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz#68311c0c10af2198212528863f8542843e424025" + integrity sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-reserved-words@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz#a6feeb179b36a5f1fc6e3154c1eb727bdbe35876" + integrity sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-runtime@^7.25.9": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz#7c7fb6e2a46dce67e278b6cc84421c1d16da5695" + integrity sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q== + dependencies: + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz#25c0436b98f4bd9ca4b98e1fbd662743bbaab9bf" + integrity sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-spread@^7.29.7": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz#c894cff38556a5dafeb412e13fc012b6df4b95a2" + integrity sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + +"@babel/plugin-transform-sticky-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz#a42c0fd1fa42f7e98e1e0c7757f72a1bbca3a015" + integrity sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-template-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz#ada97d8e0832bca8edb315888aa654b1570f3835" + integrity sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-typeof-symbol@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz#d848a4677c1ee3485ab017f4018f04597798911c" + integrity sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-typescript@^7.29.7": + version "7.29.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.9.tgz#963dc446aea3fafcab8ffe217329263f5613feb6" + integrity sha512-FFwIwzU+7SCOuxxV4YtJql6T9981ZVTm+FHO5GhVsRqCTdy0WwrEZh3l42ARpXruJUDGOptdduHW6Zr7pNPLNg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-syntax-typescript" "^7.29.7" + +"@babel/plugin-transform-unicode-escapes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz#1e99554b0cddfd650d649a9f2b996049893e5720" + integrity sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-unicode-property-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz#44444afc73768c2190fac4d95f7716817b7f204a" + integrity sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-unicode-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz#c3064b293ff7f1794b71f7650eec8db9896d3e59" + integrity sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-unicode-sets-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz#b03ac9f27326f6197e8e574add83bbf33fc34ecd" + integrity sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.25.9": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.7.tgz#5e2ab5e764b493fdefc99c43aeaa70a9533a37fd" + integrity sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA== + dependencies: + "@babel/compat-data" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.29.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.29.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.29.7" + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.29.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.29.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.29.7" + "@babel/plugin-syntax-import-attributes" "^7.29.7" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.29.7" + "@babel/plugin-transform-async-generator-functions" "^7.29.7" + "@babel/plugin-transform-async-to-generator" "^7.29.7" + "@babel/plugin-transform-block-scoped-functions" "^7.29.7" + "@babel/plugin-transform-block-scoping" "^7.29.7" + "@babel/plugin-transform-class-properties" "^7.29.7" + "@babel/plugin-transform-class-static-block" "^7.29.7" + "@babel/plugin-transform-classes" "^7.29.7" + "@babel/plugin-transform-computed-properties" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-dotall-regex" "^7.29.7" + "@babel/plugin-transform-duplicate-keys" "^7.29.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-dynamic-import" "^7.29.7" + "@babel/plugin-transform-explicit-resource-management" "^7.29.7" + "@babel/plugin-transform-exponentiation-operator" "^7.29.7" + "@babel/plugin-transform-export-namespace-from" "^7.29.7" + "@babel/plugin-transform-for-of" "^7.29.7" + "@babel/plugin-transform-function-name" "^7.29.7" + "@babel/plugin-transform-json-strings" "^7.29.7" + "@babel/plugin-transform-literals" "^7.29.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.29.7" + "@babel/plugin-transform-member-expression-literals" "^7.29.7" + "@babel/plugin-transform-modules-amd" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-modules-systemjs" "^7.29.7" + "@babel/plugin-transform-modules-umd" "^7.29.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-new-target" "^7.29.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.29.7" + "@babel/plugin-transform-numeric-separator" "^7.29.7" + "@babel/plugin-transform-object-rest-spread" "^7.29.7" + "@babel/plugin-transform-object-super" "^7.29.7" + "@babel/plugin-transform-optional-catch-binding" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/plugin-transform-private-methods" "^7.29.7" + "@babel/plugin-transform-private-property-in-object" "^7.29.7" + "@babel/plugin-transform-property-literals" "^7.29.7" + "@babel/plugin-transform-regenerator" "^7.29.7" + "@babel/plugin-transform-regexp-modifiers" "^7.29.7" + "@babel/plugin-transform-reserved-words" "^7.29.7" + "@babel/plugin-transform-shorthand-properties" "^7.29.7" + "@babel/plugin-transform-spread" "^7.29.7" + "@babel/plugin-transform-sticky-regex" "^7.29.7" + "@babel/plugin-transform-template-literals" "^7.29.7" + "@babel/plugin-transform-typeof-symbol" "^7.29.7" + "@babel/plugin-transform-unicode-escapes" "^7.29.7" + "@babel/plugin-transform-unicode-property-regex" "^7.29.7" + "@babel/plugin-transform-unicode-regex" "^7.29.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.29.7" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.18.6", "@babel/preset-react@^7.25.9": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.29.7.tgz#2ed18366e38c2081bbf1760dc01e88fa5674eb17" + integrity sha512-C+PV1TFUPTmBQGoPBL8j2QmLpZ117YTCwxIZeJOM96GbYMFSc7/pOXU5lVykwnZxyTqQxRsvoRk6f2FktZgGHA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-transform-react-display-name" "^7.29.7" + "@babel/plugin-transform-react-jsx" "^7.29.7" + "@babel/plugin-transform-react-jsx-development" "^7.29.7" + "@babel/plugin-transform-react-pure-annotations" "^7.29.7" + +"@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.25.9": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz#de9be1f47b785c979ec7b3a71f4cd8bae5267b62" + integrity sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-typescript" "^7.29.7" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.25.9", "@babel/runtime@^7.28.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.7.tgz#12022450c45a4da6d8d8287b18a4ff2ddb23f768" + integrity sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw== + +"@babel/template@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700" + integrity sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/traverse@^7.25.9", "@babel/traverse@^7.29.7", "@babel/traverse@^7.29.8": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.8.tgz#4111014cdc71a0f95d9471907590baa0b8a6b28a" + integrity sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.8" + "@babel/helper-globals" "^7.29.7" + "@babel/parser" "^7.29.8" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.8" + debug "^4.3.1" + +"@babel/types@^7.21.3", "@babel/types@^7.29.7", "@babel/types@^7.29.8", "@babel/types@^7.4.4": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.8.tgz#1229eef31d85156d70fa3f4cd859376d0eaf6863" + integrity sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg== + dependencies: + "@babel/helper-string-parser" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + +"@braintree/sanitize-url@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz#ca2035b0fefe956a8676ff0c69af73e605fcd81f" + integrity sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA== + +"@chevrotain/cst-dts-gen@11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz#501ea6177fa21cc57264c792ef5cc3d0bb9410fd" + integrity sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q== + dependencies: + "@chevrotain/gast" "11.1.2" + "@chevrotain/types" "11.1.2" + lodash-es "4.17.23" + +"@chevrotain/gast@11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@chevrotain/gast/-/gast-11.1.2.tgz#213393f2b5842e8bf13369bdc042c7fd18201af2" + integrity sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g== + dependencies: + "@chevrotain/types" "11.1.2" + lodash-es "4.17.23" + +"@chevrotain/regexp-to-ast@11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz#6aeb0b3fd5e3f220b063b3d856fbbaed582e4cfa" + integrity sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw== + +"@chevrotain/types@11.1.2", "@chevrotain/types@~11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-11.1.2.tgz#e83a1a2704f0c5e49e7592b214031a0f4a34d7e5" + integrity sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw== + +"@chevrotain/utils@11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-11.1.2.tgz#a0b13637acc0a2933d8a2edeba4bf1da789c565d" + integrity sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA== + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@csstools/cascade-layer-name-parser@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz#43f962bebead0052a9fed1a2deeb11f85efcbc72" + integrity sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A== + +"@csstools/color-helpers@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.1.0.tgz#106c54c808cabfd1ab4c602d8505ee584c2996ef" + integrity sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA== + +"@csstools/css-calc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.4.tgz#8473f63e2fcd6e459838dd412401d5948f224c65" + integrity sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ== + +"@csstools/css-color-parser@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz#4e386af3a99dd36c46fef013cfe4c1c341eed6f0" + integrity sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA== + dependencies: + "@csstools/color-helpers" "^5.1.0" + "@csstools/css-calc" "^2.1.4" + +"@csstools/css-parser-algorithms@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" + integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== + +"@csstools/css-tokenizer@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" + integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== + +"@csstools/media-query-list-parser@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz#7aec77bcb89c2da80ef207e73f474ef9e1b3cdf1" + integrity sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ== + +"@csstools/postcss-alpha-function@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz#7989605711de7831bc7cd75b94c9b5bac9c3728e" + integrity sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-cascade-layers@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz#dd2c70db3867b88975f2922da3bfbae7d7a2cae7" + integrity sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg== + dependencies: + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + +"@csstools/postcss-color-function-display-p3-linear@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz#3017ff5e1f65307d6083e58e93d76724fb1ebf9f" + integrity sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-color-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz#a7c85a98c77b522a194a1bbb00dd207f40c7a771" + integrity sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-color-mix-function@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz#2f1ee9f8208077af069545c9bd79bb9733382c2a" + integrity sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-color-mix-variadic-function-arguments@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz#b4012b62a4eaa24d694172bb7137f9d2319cb8f2" + integrity sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-content-alt-text@^2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz#1d52da1762893c32999ff76839e48d6ec7c7a4cb" + integrity sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-contrast-color-function@^2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz#ca46986d095c60f208d9e3f24704d199c9172637" + integrity sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-exponential-functions@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz#fc03d1272888cb77e64cc1a7d8a33016e4f05c69" + integrity sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-font-format-keywords@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz#6730836eb0153ff4f3840416cc2322f129c086e6" + integrity sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-gamut-mapping@^2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz#be0e34c9f0142852cccfc02b917511f0d677db8b" + integrity sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-gradients-interpolation-method@^5.0.12": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz#0955cce4d97203b861bf66742bbec611b2f3661c" + integrity sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-hwb-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz#07f7ecb08c50e094673bd20eaf7757db0162beee" + integrity sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-ic-unit@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz#2ee2da0690db7edfbc469279711b9e69495659d2" + integrity sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-initial@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz#c385bd9d8ad31ad159edd7992069e97ceea4d09a" + integrity sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg== + +"@csstools/postcss-is-pseudo-class@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz#d34e850bcad4013c2ed7abe948bfa0448aa8eb74" + integrity sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ== + dependencies: + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + +"@csstools/postcss-light-dark-function@^2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz#0df448aab9a33cb9a085264ff1f396fb80c4437d" + integrity sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-logical-float-and-clear@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz#62617564182cf86ab5d4e7485433ad91e4c58571" + integrity sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ== + +"@csstools/postcss-logical-overflow@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz#c6de7c5f04e3d4233731a847f6c62819bcbcfa1d" + integrity sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA== + +"@csstools/postcss-logical-overscroll-behavior@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz#43c03eaecdf34055ef53bfab691db6dc97a53d37" + integrity sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w== + +"@csstools/postcss-logical-resize@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz#4df0eeb1a61d7bd85395e56a5cce350b5dbfdca6" + integrity sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-logical-viewport-units@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz#016d98a8b7b5f969e58eb8413447eb801add16fc" + integrity sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ== + dependencies: + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-media-minmax@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz#184252d5b93155ae526689328af6bdf3fc113987" + integrity sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" + +"@csstools/postcss-media-queries-aspect-ratio-number-values@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz#f485c31ec13d6b0fb5c528a3474334a40eff5f11" + integrity sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" + +"@csstools/postcss-nested-calc@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz#754e10edc6958d664c11cde917f44ba144141c62" + integrity sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#3738ecadb38cd6521c9565635d61aa4bf5457d27" + integrity sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz#416640ef10227eea1375b47b72d141495950971d" + integrity sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-position-area-property@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz#41f0cbc737a81a42890d5ec035fa26a45f4f4ad4" + integrity sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q== + +"@csstools/postcss-progressive-custom-properties@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz#c39780b9ff0d554efb842b6bd75276aa6f1705db" + integrity sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-property-rule-prelude-list@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz#700b7aa41228c02281bda074ae778f36a09da188" + integrity sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-random-function@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz#3191f32fe72936e361dadf7dbfb55a0209e2691e" + integrity sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-relative-color-syntax@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz#ced792450102441f7c160e1d106f33e4b44181f8" + integrity sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-scope-pseudo-class@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz#9fe60e9d6d91d58fb5fc6c768a40f6e47e89a235" + integrity sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q== + dependencies: + postcss-selector-parser "^7.0.0" + +"@csstools/postcss-sign-functions@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz#a9ac56954014ae4c513475b3f1b3e3424a1e0c12" + integrity sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-stepped-value-functions@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz#36036f1a0e5e5ee2308e72f3c9cb433567c387b9" + integrity sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-syntax-descriptor-syntax-production@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz#98590e372e547cdae60aef47cfee11f3881307dd" + integrity sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow== + dependencies: + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-system-ui-font-family@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz#bd65b79078debf6f67b318dc9b71a8f9fa16f8c8" + integrity sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-text-decoration-shorthand@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz#fae1b70f07d1b7beb4c841c86d69e41ecc6f743c" + integrity sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA== + dependencies: + "@csstools/color-helpers" "^5.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz#3f94ed2e319b57f2c59720b64e4d0a8a6fb8c3b2" + integrity sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-unset-value@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz#7caa981a34196d06a737754864baf77d64de4bba" + integrity sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA== + +"@csstools/selector-resolve-nested@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz#848c6f44cb65e3733e478319b9342b7aa436fac7" + integrity sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g== + +"@csstools/selector-specificity@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz#037817b574262134cabd68fc4ec1a454f168407b" + integrity sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw== + +"@csstools/utilities@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/utilities/-/utilities-2.0.0.tgz#f7ff0fee38c9ffb5646d47b6906e0bc8868bde60" + integrity sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ== + +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@docsearch/core@4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@docsearch/core/-/core-4.7.0.tgz#914962191f2718b9caa48f4cbe46c0720fdc055d" + integrity sha512-p/9xVKmPDj3FPvMfPf5naVO3Ej8SCbcUugGvx1+8GgkuBNbqxqN2Irx3WLBv8VY0jH7XpRwKWdlmjXLZsmTLsg== + +"@docsearch/css@4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-4.7.0.tgz#d6d93c6ddf5e813a3ea09da719e150c222693a5c" + integrity sha512-Sk5xkdRFeE7PeWjG9l4AfTwdvMfr9wHiwNNCpHXT4v4SNyNMKdHGvEILc31BgaVFGDDNbv5u/a73tofRiwbEZw== + +"@docsearch/react@^3.9.0 || ^4.3.2": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-4.7.0.tgz#8e7d77c34d19755f98d225a3413eddf605658d70" + integrity sha512-x6oedjJ8O8/pIDBsMo5Orca3/6cQCz616/CwthVe68l43mqnj2lrJ9kFQITBqy8hMsS3nWeBWFoVO5dJ1DCFKA== + dependencies: + "@algolia/autocomplete-core" "1.19.2" + "@docsearch/core" "4.7.0" + "@docsearch/css" "4.7.0" + +"@docusaurus/babel@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.10.2.tgz#4d5f8ac4d16bfe26c06f256687831787edb46e8a" + integrity sha512-aJ1hpGyvfkte3dDAfNbWM4biW4yWZBVz7TIGLZP+v+tWOBgxX3e0N5ZIXHIvmfNNXTI77pcHUx3KmtOk05Ze3Q== + dependencies: + "@babel/core" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.25.9" + "@babel/preset-env" "^7.25.9" + "@babel/preset-react" "^7.25.9" + "@babel/preset-typescript" "^7.25.9" + "@babel/runtime" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + babel-plugin-dynamic-import-node "^2.3.3" + fs-extra "^11.1.1" + tslib "^2.6.0" + +"@docusaurus/bundler@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.10.2.tgz#323492eb0550b6a7f6e5fa6b9877cdb2c53b1be3" + integrity sha512-i0ZNcy0f0WhaOlYVgzLsWhIoEXO9kS3HRoKPtgE6vQtZUq7arKZaYdNBudr3mqCmd+TyOkwtwfHgs1ENj07r5g== + dependencies: + "@babel/core" "^7.25.9" + "@docusaurus/babel" "3.10.2" + "@docusaurus/cssnano-preset" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + babel-loader "^9.2.1" + clean-css "^5.3.3" + copy-webpack-plugin "^11.0.0" + css-loader "^6.11.0" + css-minimizer-webpack-plugin "^5.0.1" + cssnano "^6.1.2" + file-loader "^6.2.0" + html-minifier-terser "^7.2.0" + mini-css-extract-plugin "^2.9.2" + null-loader "^4.0.1" + postcss "^8.5.4" + postcss-loader "^7.3.4" + postcss-preset-env "^10.2.1" + terser-webpack-plugin "^5.3.9" + tslib "^2.6.0" + url-loader "^4.1.1" + webpack "^5.95.0" + webpackbar "^7.0.0" + +"@docusaurus/core@3.10.2", "@docusaurus/core@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.10.2.tgz#349cae728fc3769b3f8aef4cf538ccb79aace8d0" + integrity sha512-EYByj6nk+aD9KeVxV6Hmo2/nAAT79P21Y82ycTBOBtrmqilloIbIEhgL2/8Xpt2Jz/pgNqHAwyusOGwmbKeJmA== + dependencies: + "@docusaurus/babel" "3.10.2" + "@docusaurus/bundler" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + boxen "^6.2.1" + chalk "^4.1.2" + chokidar "^3.5.3" + cli-table3 "^0.6.3" + combine-promises "^1.1.0" + commander "^5.1.0" + core-js "^3.31.1" + detect-port "^2.1.0" + escape-html "^1.0.3" + eta "^2.2.0" + eval "^0.1.8" + execa "^5.1.1" + fs-extra "^11.1.1" + html-tags "^3.3.1" + html-webpack-plugin "^5.6.0" + leven "^3.1.0" + lodash "^4.17.21" + open "^8.4.0" + p-map "^4.0.0" + prompts "^2.4.2" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" + react-loadable-ssr-addon-v5-slorber "^1.0.3" + react-router "^5.3.4" + react-router-config "^5.1.1" + react-router-dom "^5.3.4" + semver "^7.5.4" + serve-handler "^6.1.7" + tinypool "^1.0.2" + tslib "^2.6.0" + update-notifier "^6.0.2" + webpack "^5.95.0" + webpack-bundle-analyzer "^4.10.2" + webpack-dev-server "^5.2.2" + webpack-merge "^6.0.1" + +"@docusaurus/cssnano-preset@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.2.tgz#e3ac7e85585f77e8fdef95176ab7c211d1296630" + integrity sha512-4gCnHRbJLTloiwfvFAa92tgb2gI4KYhvjfQVYnEaiMO/EgvWfCo1LwytHXen+1oZAN0VAlS0JAPxp3MsvKDa3A== + dependencies: + cssnano-preset-advanced "^6.1.2" + postcss "^8.5.4" + postcss-sort-media-queries "^5.2.0" + tslib "^2.6.0" + +"@docusaurus/faster@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/faster/-/faster-3.10.2.tgz#6cacd14085445d5826990f7525c5df1cf371e04a" + integrity sha512-p/5E5/RyHv+QWusJMPN5i3OMJTqTgkhuwzVbB1AReDWTUHXQCmf5mlTFzGiDrWeQWIDOKsuOPn1jJh0s9LUOHA== + dependencies: + "@docusaurus/types" "3.10.2" + "@rspack/core" "^1.7.10" + "@swc/core" "^1.15.40" + "@swc/html" "^1.15.40" + browserslist "^4.24.2" + lightningcss "^1.27.0" + semver "^7.5.4" + swc-loader "^0.2.6" + tslib "^2.6.0" + webpack "^5.95.0" + +"@docusaurus/logger@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.2.tgz#280bed53d0eb9cdc56e896a155036207910e89c9" + integrity sha512-gSEwqtPfCAnC3ZSJY6xL7tcIfgg0vFD39jbv93eakuweyvO2864xR0K+kmKwBhkTCtWRNjuGGnb5rdmkD/ndqw== + dependencies: + chalk "^4.1.2" + tslib "^2.6.0" + +"@docusaurus/lqip-loader@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-3.10.2.tgz#6cfe52091e4df3832acfec4001910d0e0889158b" + integrity sha512-U9ON9YXhfQcF7s4JUrcw02Nxez9ctI5nu/+6XGGmLJ+yx36ALT1fFCHzHfd7+TvSB1H7aoT/6T5BdfZvRp++Wg== + dependencies: + "@docusaurus/logger" "3.10.2" + file-loader "^6.2.0" + lodash "^4.17.21" + sharp "^0.32.3" + tslib "^2.6.0" + +"@docusaurus/mdx-loader@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.10.2.tgz#3b4e7ffacff4ed856db2ec4e94c13b0a652d62eb" + integrity sha512-9Fd4V/SFjfrVQ0JH5EN0+iPWyFunvTeQE3gfyFeetqPaXMP0OylIjOw16dCuXG4NZJrYdBqwzjh18/h3gRi47w== + dependencies: + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + "@mdx-js/mdx" "^3.0.0" + "@slorber/remark-comment" "^1.0.0" + escape-html "^1.0.3" + estree-util-value-to-estree "^3.0.1" + file-loader "^6.2.0" + fs-extra "^11.1.1" + image-size "^2.0.2" + mdast-util-mdx "^3.0.0" + mdast-util-to-string "^4.0.0" + rehype-raw "^7.0.0" + remark-directive "^3.0.0" + remark-emoji "^4.0.0" + remark-frontmatter "^5.0.0" + remark-gfm "^4.0.0" + stringify-object "^3.3.0" + tslib "^2.6.0" + unified "^11.0.3" + unist-util-visit "^5.0.0" + url-loader "^4.1.1" + vfile "^6.0.1" + webpack "^5.88.1" + +"@docusaurus/module-type-aliases@3.10.2", "@docusaurus/module-type-aliases@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.2.tgz#7c3b940c77d72e71d33a1e76f0e003b418e6163a" + integrity sha512-h/I5e4jaAhDHW4vaLENi1i2hnOEnXY1t9R+nnRTbgUl7ymVRzN/HF7dDfj8rKYGj8gfIge+Ef+iYRAMtbGvsrQ== + dependencies: + "@docusaurus/types" "3.10.2" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" + +"@docusaurus/plugin-content-blog@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.10.2.tgz#2374886ec3d76e8f014e85db8c3c010de6c419be" + integrity sha512-0cbEnNKf0InmLkhj/+nVRmqEnWEoOE8Mh+2x1qOXI0qYpCnphq4RXknVJ8BvybKRXqYVvbmdMfiJSup+k4tm5w== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + cheerio "1.0.0-rc.12" + combine-promises "^1.1.0" + feed "^4.2.2" + fs-extra "^11.1.1" + lodash "^4.17.21" + schema-dts "^1.1.2" + srcset "^4.0.0" + tslib "^2.6.0" + unist-util-visit "^5.0.0" + utility-types "^3.10.0" + webpack "^5.88.1" + +"@docusaurus/plugin-content-docs@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.2.tgz#249bbc806437f227b06410ecc771eb67d8910a9a" + integrity sha512-Sqwl4FPoZBDrlY8I2VU2H8O0M91CHp9T8ToMSkTZmjvHCif+1laqfXi6sTk8IfyVS/trN5yNjcWd1bFsGB6W5Q== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + "@types/react-router-config" "^5.0.7" + combine-promises "^1.1.0" + fs-extra "^11.1.1" + js-yaml "^4.1.0" + lodash "^4.17.21" + schema-dts "^1.1.2" + tslib "^2.6.0" + utility-types "^3.10.0" + webpack "^5.88.1" + +"@docusaurus/plugin-content-pages@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.2.tgz#377c11b36a6a5e0c0c14dd9dea799f986d662ed7" + integrity sha512-h5R12sZ/vV9EPiVjvIl9YFCOwkpwXes7dQMYt3EvP6Pphu4amHxxTqWxf08Fl5DR8h+oZMbWpFTNw5vKEYfvzQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + fs-extra "^11.1.1" + tslib "^2.6.0" + webpack "^5.88.1" + +"@docusaurus/plugin-css-cascade-layers@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.2.tgz#54edc6450b0bb95be5990ea416b4c4dc5e6bdde0" + integrity sha512-UkdvQby5OQUKWrw3lLnSTJXQ6VETaUVTuPQX9AABtmFm5h+ifEBx1OQ+LN726Q4byuwBf2ElHkf4qU4hTxdvRg== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + tslib "^2.6.0" + +"@docusaurus/plugin-debug@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.10.2.tgz#2452f258668bb2514085d2d5fff700457c531aad" + integrity sha512-8vbZNOSCpnsT57EY6CgN7sgRVmx3KTYwO8Uvo2pbxOyb8tbqAwtT9SslqaQ41HbA1v1hpn5RP7u5s2KvRwAFpQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + fs-extra "^11.1.1" + react-json-view-lite "^2.3.0" + tslib "^2.6.0" + +"@docusaurus/plugin-google-analytics@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.2.tgz#7a0375c5a238cd9220166d9be8afc00ba508c55d" + integrity sha512-kMHMBK9j4VAtgd5owwrRLRIi0EjkrpXlX7ePj1+y68XfVZV9I1T4S+koPDm+Hfw2TtnyHvh0uNrDvjz+DjQGVA== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + tslib "^2.6.0" + +"@docusaurus/plugin-google-gtag@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.2.tgz#65df25eb5fb3f2a3f2d0fba8ddd423060e09e1ca" + integrity sha512-Vt90nNFhtAChRe9+it1hcHFgFvETdSnOkL5Bma+p6E/yU2tAYrvvyk+gv+LJGM2ZUkyKuKXLRsZ2Lb0bO7+Vog== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + tslib "^2.6.0" + +"@docusaurus/plugin-google-tag-manager@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.2.tgz#882a24e51dc42487d2c1d4f2cde3f59c99a276cb" + integrity sha512-MLCffCldysi/R0nzJQP7ZWd0xAoGNnSTiVOo6TTR6mKVGFhE+/XArGe67ZcaZv1uytgQXoXs92VJrgVDrz80rQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + tslib "^2.6.0" + +"@docusaurus/plugin-ideal-image@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-3.10.2.tgz#51fa3048328ce403b2f153aee1fa676827d49106" + integrity sha512-M1uRffUaE5hqbo7368jSclYSU6oOOFdJ3/fq644kwaoComeG+jjBJ9piFrHkExtiU2Q7zcm1dWaqtfJVrR9wSQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/lqip-loader" "3.10.2" + "@docusaurus/responsive-loader" "^1.7.0" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + sharp "^0.32.3" + tslib "^2.6.0" + webpack "^5.88.1" + +"@docusaurus/plugin-sitemap@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.2.tgz#6c662c7df3bb7d36887f8b73f54d85dc4d36371d" + integrity sha512-PODkwg5XetLML3hU/3xpCKJUZ9cqExLaBnD/Fzzwj2VHogLeqnDisLIujae87zuze7T4mCm2A6KEqZkyiz07EQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + fs-extra "^11.1.1" + sitemap "^7.1.1" + tslib "^2.6.0" + +"@docusaurus/plugin-svgr@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.2.tgz#916fd0a5d39bf73cb621de9789cce243a7ef1754" + integrity sha512-JgfT3jWM0TJ8Uw0cEcqxHpybngQY1vlBYpuuNO+gEh5iPh5Ar+vxq/u9CFrYsWeXy48BN7Db76Pzp2edNXUQ8A== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + "@svgr/core" "8.1.0" + "@svgr/webpack" "^8.1.0" + tslib "^2.6.0" + webpack "^5.88.1" + +"@docusaurus/preset-classic@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.10.2.tgz#e4419c811723ab913a946c63efcc15e7f5f60a0a" + integrity sha512-a4B3VczmDl99zK0EufDQYomdJ186WDingjmDXxhN2PNPS9Ty/Y2M5CLFX1KQMRKqRTLiRDKfutzG5IY1FC/ceg== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/plugin-content-blog" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/plugin-content-pages" "3.10.2" + "@docusaurus/plugin-css-cascade-layers" "3.10.2" + "@docusaurus/plugin-debug" "3.10.2" + "@docusaurus/plugin-google-analytics" "3.10.2" + "@docusaurus/plugin-google-gtag" "3.10.2" + "@docusaurus/plugin-google-tag-manager" "3.10.2" + "@docusaurus/plugin-sitemap" "3.10.2" + "@docusaurus/plugin-svgr" "3.10.2" + "@docusaurus/theme-classic" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-search-algolia" "3.10.2" + "@docusaurus/types" "3.10.2" + +"@docusaurus/responsive-loader@^1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@docusaurus/responsive-loader/-/responsive-loader-1.7.1.tgz#fe22a657263350cbc777e296e8d8403c53d2f247" + integrity sha512-jAebZ43f8GVpZSrijLGHVVp7Y0OMIPRaL+HhiIWQ+f/b72lTsKLkSkOVHEzvd2psNJ9lsoiM3gt6akpak6508w== + dependencies: + loader-utils "^2.0.0" + +"@docusaurus/theme-classic@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.10.2.tgz#a64bd600c789b33c67c30c256b07e2ca0f57e2ae" + integrity sha512-JqTSLQmqmA9uKWZsD5iwBGJ4JyKB4/yTw6PsSXVPRJG/6GAm/u+add9Iip+hvwP12/AnPNztrdxsI14NJW4KeA== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/plugin-content-blog" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/plugin-content-pages" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + "@mdx-js/react" "^3.0.0" + clsx "^2.0.0" + copy-text-to-clipboard "^3.2.0" + infima "0.2.0-alpha.45" + lodash "^4.17.21" + nprogress "^0.2.0" + postcss "^8.5.4" + prism-react-renderer "^2.3.0" + prismjs "^1.29.0" + react-router-dom "^5.3.4" + rtlcss "^4.1.0" + tslib "^2.6.0" + utility-types "^3.10.0" + +"@docusaurus/theme-common@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.10.2.tgz#5cf2a8b76554b8b38c6afe8448470c411f683e5b" + integrity sha512-R9b/vMpK1yye6hNZTA6x/ivRv+at6GhxnXcxkpzCGzO1R1RwiquqiFg2wMFh6aqlJTpWRFKpFD2TzCDQcyOU0A== + dependencies: + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + clsx "^2.0.0" + parse-numeric-range "^1.3.0" + prism-react-renderer "^2.3.0" + tslib "^2.6.0" + utility-types "^3.10.0" + +"@docusaurus/theme-mermaid@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-mermaid/-/theme-mermaid-3.10.2.tgz#826e47a01fefbe49fdbb0f4f575c9399d3ccd92c" + integrity sha512-Stssh5MYQJ+EdYugUXf+ZcpeJFQPKXf0KCd/SWp10o3CmXNaOoh5IEgVjVqY1e1XhQf3on4+Y4BnrMiD95E2SQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + mermaid ">=11.6.0" + tslib "^2.6.0" + +"@docusaurus/theme-search-algolia@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.2.tgz#e7756d4088a7df4d11fd734bfe0e8fa28ceac1dd" + integrity sha512-1msxllyhi/5m77JukXtp5UFnUAriwZIC1oJ7MTnpQpCwLTbclJi5BK5n28CTZuSXpQN2ewbbnqRgAhMM6c6ihg== + dependencies: + "@algolia/autocomplete-core" "^1.19.2" + "@docsearch/react" "^3.9.0 || ^4.3.2" + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + algoliasearch "^5.37.0" + algoliasearch-helper "^3.26.0" + clsx "^2.0.0" + eta "^2.2.0" + fs-extra "^11.1.1" + lodash "^4.17.21" + tslib "^2.6.0" + utility-types "^3.10.0" + +"@docusaurus/theme-translations@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.10.2.tgz#cd649083babd12df324e7129008aaccacd4cfb13" + integrity sha512-iv20wrxnyXkY89LM3TzRlzGlt5fIGO5UnaR6UL1ZVfB9RRFjxQFQ6awDrwAc6Km8Y5gD8pInuwYPF+6/TiCxXA== + dependencies: + fs-extra "^11.1.1" + tslib "^2.6.0" + +"@docusaurus/types@3.10.2", "@docusaurus/types@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.10.2.tgz#9ffe35adfb4587e49158ee9e10d94b86419a5932" + integrity sha512-B6rvfwIFSapUqUJjMriZswX13K8l5Z7AcmVE6uTEJpYddQieSTR12DsGaFtcZAIDsQd4p+0WTl0Vc6jmZK0Trw== + dependencies: + "@mdx-js/mdx" "^3.0.0" + "@types/history" "^4.7.11" + "@types/mdast" "^4.0.2" + "@types/react" "*" + commander "^5.1.0" + joi "^17.9.2" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" + utility-types "^3.10.0" + webpack "^5.95.0" + webpack-merge "^5.9.0" + +"@docusaurus/utils-common@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.10.2.tgz#a65fcfffafa4e15a59fe61d7ba315ee5d4c49269" + integrity sha512-x3Dz6jv6iQKBNjBmVTu8p57abMp/VNTUgKBMgRVXJc5444orBTsArv0+cdfrXTiz/VMmHfDRVkPbL7GH2B7T7w== + dependencies: + "@docusaurus/types" "3.10.2" + tslib "^2.6.0" + +"@docusaurus/utils-validation@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.10.2.tgz#2624b0ca6675675da2f063828115b43c9a22de47" + integrity sha512-sn8unbDfUL585NtR3cwHefPicOyaHvPaX7VD0aOg/siIxUBoKyKKaGEqzJZDS64mM43TnxurkYDtmB1wsJlZsw== + dependencies: + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + fs-extra "^11.2.0" + joi "^17.9.2" + js-yaml "^4.1.0" + lodash "^4.17.21" + tslib "^2.6.0" + +"@docusaurus/utils@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.10.2.tgz#d99c1ffc5c7961e912344269a8728ce2aad8b3dc" + integrity sha512-xx0W3eav2uW1NRIpuHJWNwLTC15xPNjU4Uxi9NSnd3swYC96BE3vFiT93SD8s24kmAAWNwgZwfZ2fghGZ01Lcw== + dependencies: + "@11ty/gray-matter" "^1.0.0" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + escape-string-regexp "^4.0.0" + execa "^5.1.1" + file-loader "^6.2.0" + fs-extra "^11.1.1" + github-slugger "^1.5.0" + globby "^11.1.0" + jiti "^1.20.0" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.5" + p-queue "^6.6.2" + prompts "^2.4.2" + resolve-pathname "^3.0.0" + tslib "^2.6.0" + url-loader "^4.1.1" + utility-types "^3.10.0" + webpack "^5.88.1" + +"@emnapi/core@^1.5.0": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.3.tgz#5e95348a42cd1e06f0b9aa380cd74091daa4d520" + integrity sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg== + dependencies: + "@emnapi/wasi-threads" "1.2.3" + tslib "^2.4.0" + +"@emnapi/runtime@^1.5.0": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.3.tgz#84257ae3b0531eb2aec1ffa23d70700da007ba95" + integrity sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz#c9bf72fd4be5b928aee894820e8d814ed73916e9" + integrity sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g== + dependencies: + tslib "^2.4.0" + +"@emotion/babel-plugin@^11.13.5": + version "11.13.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz#eab8d65dbded74e0ecfd28dc218e75607c4e7bc0" + integrity sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/serialize" "^1.3.3" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.14.0": + version "11.14.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.14.0.tgz#ee44b26986eeb93c8be82bb92f1f7a9b21b2ed76" + integrity sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA== + dependencies: + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.2" + "@emotion/weak-memoize" "^0.4.0" + stylis "4.2.0" + +"@emotion/hash@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" + integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== + +"@emotion/is-prop-valid@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz#e9ad47adff0b5c94c72db3669ce46de33edf28c0" + integrity sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw== + dependencies: + "@emotion/memoize" "^0.9.0" + +"@emotion/memoize@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" + integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== + +"@emotion/react@^11.14.0": + version "11.14.0" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.14.0.tgz#cfaae35ebc67dd9ef4ea2e9acc6cd29e157dd05d" + integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.13.5" + "@emotion/cache" "^11.14.0" + "@emotion/serialize" "^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.2.0" + "@emotion/utils" "^1.4.2" + "@emotion/weak-memoize" "^0.4.0" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.3.tgz#d291531005f17d704d0463a032fe679f376509e8" + integrity sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA== + dependencies: + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.2" + csstype "^3.0.2" + +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== + +"@emotion/styled@^11.14.1": + version "11.14.1" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.1.tgz#8c34bed2948e83e1980370305614c20955aacd1c" + integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.13.5" + "@emotion/is-prop-valid" "^1.3.0" + "@emotion/serialize" "^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.2.0" + "@emotion/utils" "^1.4.2" + +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== + +"@emotion/use-insertion-effect-with-fallbacks@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz#8a8cb77b590e09affb960f4ff1e9a89e532738bf" + integrity sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg== + +"@emotion/utils@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.2.tgz#6df6c45881fcb1c412d6688a311a98b7f59c1b52" + integrity sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA== + +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@iconify/react@^6.0.0": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@iconify/react/-/react-6.0.2.tgz#b6d9bd0e13f9cb85b3a7fddbc70bbf71f5da1d33" + integrity sha512-SMmC2sactfpJD427WJEDN6PMyznTFMhByK9yLW0gOTtnjzzbsi/Ke/XqsumsavFPwNiXs8jSiYeZTmLCLwO+Fg== + dependencies: + "@iconify/types" "^2.0.0" + +"@iconify/types@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" + integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== + +"@iconify/utils@^3.0.2": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-3.1.7.tgz#fff11c528490b119a250ace3cf35a0a78e182317" + integrity sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w== + dependencies: + "@antfu/install-pkg" "^2.0.1" + "@iconify/types" "^2.0.0" + import-meta-resolve "^4.2.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz#f4c663e862f06dc98ca4d453862c46902789a18d" + integrity sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw== + +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28", "@jridgewell/trace-mapping@^0.3.31": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jsonjoy.com/base64@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-17.67.0.tgz#7eeda3cb41138d77a90408fd2e42b2aba10576d7" + integrity sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw== + +"@jsonjoy.com/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== + +"@jsonjoy.com/buffers@17.67.0", "@jsonjoy.com/buffers@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz#5c58dbcdeea8824ce296bd1cfce006c2eb167b3d" + integrity sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw== + +"@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== + +"@jsonjoy.com/codegen@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz#3635fd8769d77e19b75dc5574bc9756019b2e591" + integrity sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q== + +"@jsonjoy.com/codegen@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== + +"@jsonjoy.com/fs-core@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.79.0.tgz#ad4dd92688da6812184fc04d1eda0afbfd663723" + integrity sha512-bxSwMrDY71OjEdj2mAYBxSe4BnHtAOjOxqUoFJc0WsllcGgA8iYl6wRF+4aVdFUjjEyHfBwxVv0QqW4AweIUZw== + dependencies: + "@jsonjoy.com/fs-node-builtins" "4.79.0" + "@jsonjoy.com/fs-node-utils" "4.79.0" + thingies "^2.5.0" + +"@jsonjoy.com/fs-fsa@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.79.0.tgz#80b3df89e3402ff0abbc87386f12c85a412acf89" + integrity sha512-EdadmStAvZw4jYg4iW3mDxBmzMFSI8jcHQkSl+rIQIO7dWbPdXaB83PBQhNCCtMBeX7zwcOFjpp0ecXqbYbjUA== + dependencies: + "@jsonjoy.com/fs-core" "4.79.0" + "@jsonjoy.com/fs-node-builtins" "4.79.0" + "@jsonjoy.com/fs-node-utils" "4.79.0" + thingies "^2.5.0" + +"@jsonjoy.com/fs-node-builtins@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.79.0.tgz#68de66759363b641579b7e0e60a0699434a91fe4" + integrity sha512-LoBHewVHp/bZQ8Om1Iivl6NEHg7Mmby9kXJZysfnHYW4256rzXFSEcEpto1qgSAka+sq2v4N/Cnl562Z15MByA== + +"@jsonjoy.com/fs-node-to-fsa@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.79.0.tgz#8a2d73acf27cb56b1c50c8dd82a42801e552b1f2" + integrity sha512-xFza/t81sVL4rik7h3SlcymC6X7pvNllI88LW1GESEANDXinf5lZoqju59i3AsGLyy4i0eBQvPiizWSMwCunQA== + dependencies: + "@jsonjoy.com/fs-fsa" "4.79.0" + "@jsonjoy.com/fs-node-builtins" "4.79.0" + "@jsonjoy.com/fs-node-utils" "4.79.0" + +"@jsonjoy.com/fs-node-utils@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.79.0.tgz#2027d373b9bfc6c57629a4b95f41543c847612da" + integrity sha512-Rj/WevHB8DV8VyEvFGSvDD3m3JHOVk3fO1biH26iworL9/rqdUMKQQeyiKTLbdf3Z9s9vVZnn8ZC0FWZgtO2mg== + dependencies: + "@jsonjoy.com/fs-node-builtins" "4.79.0" + glob-to-regex.js "^1.3.1" + +"@jsonjoy.com/fs-node@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.79.0.tgz#2fa2b746b069482394988132f61012ec168214b3" + integrity sha512-/k18aT1X+A2yLdlTe3WKpL5y2qrvbcUY1BXA4A+s8fBfTeXfi+xdvEB85JVXVf2i9kzASQZFx8dHw9OchgMUhQ== + dependencies: + "@jsonjoy.com/fs-core" "4.79.0" + "@jsonjoy.com/fs-node-builtins" "4.79.0" + "@jsonjoy.com/fs-node-utils" "4.79.0" + "@jsonjoy.com/fs-print" "4.79.0" + "@jsonjoy.com/fs-snapshot" "4.79.0" + glob-to-regex.js "^1.3.1" + thingies "^2.5.0" + +"@jsonjoy.com/fs-print@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.79.0.tgz#eb65991853ab80491110ae42a637455d9d272e71" + integrity sha512-Bp5Q+OV1Dnl8oKf8hVhmboeI+NWbWRk1GxtJzuRvopDeNBDBh0RLevEsfnOVtwBwgRZaptSXn3e/mm3kbOzfDw== + dependencies: + "@jsonjoy.com/fs-node-utils" "4.79.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/fs-snapshot@4.79.0": + version "4.79.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.79.0.tgz#eadd70e354afaeb97fc996c8ef7431249aea73fa" + integrity sha512-/GY+eMvOl4ZQHUnrKYjC/t3N0BImBg7zv/cAGm3kiwUfqSQuo87jtbjmD3mzgQMv16K8zttkHE2wT9GaVsehvA== + dependencies: + "@jsonjoy.com/buffers" "^17.65.0" + "@jsonjoy.com/fs-node-utils" "4.79.0" + "@jsonjoy.com/json-pack" "^17.65.0" + "@jsonjoy.com/util" "^17.65.0" + +"@jsonjoy.com/json-pack@^1.11.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== + dependencies: + "@jsonjoy.com/base64" "^1.1.2" + "@jsonjoy.com/buffers" "^1.2.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/json-pointer" "^1.0.2" + "@jsonjoy.com/util" "^1.9.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pack@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz#8dd8ff65dd999c5d4d26df46c63915c7bdec093a" + integrity sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w== + dependencies: + "@jsonjoy.com/base64" "17.67.0" + "@jsonjoy.com/buffers" "17.67.0" + "@jsonjoy.com/codegen" "17.67.0" + "@jsonjoy.com/json-pointer" "17.67.0" + "@jsonjoy.com/util" "17.67.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pointer@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz#74439573dc046e0c9a3a552fb94b391bc75313b8" + integrity sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA== + dependencies: + "@jsonjoy.com/util" "17.67.0" + +"@jsonjoy.com/json-pointer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== + dependencies: + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/util" "^1.9.0" + +"@jsonjoy.com/util@17.67.0", "@jsonjoy.com/util@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-17.67.0.tgz#7c4288fc3808233e55c7610101e7bb4590cddd3f" + integrity sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew== + dependencies: + "@jsonjoy.com/buffers" "17.67.0" + "@jsonjoy.com/codegen" "17.67.0" + +"@jsonjoy.com/util@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== + dependencies: + "@jsonjoy.com/buffers" "^1.0.0" + "@jsonjoy.com/codegen" "^1.0.0" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@mdx-js/mdx@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-3.1.1.tgz#c5ffd991a7536b149e17175eee57a1a2a511c6d1" + integrity sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ== + dependencies: + "@types/estree" "^1.0.0" + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdx" "^2.0.0" + acorn "^8.0.0" + collapse-white-space "^2.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + estree-util-scope "^1.0.0" + estree-walker "^3.0.0" + hast-util-to-jsx-runtime "^2.0.0" + markdown-extensions "^2.0.0" + recma-build-jsx "^1.0.0" + recma-jsx "^1.0.0" + recma-stringify "^1.0.0" + rehype-recma "^1.0.0" + remark-mdx "^3.0.0" + remark-parse "^11.0.0" + remark-rehype "^11.0.0" + source-map "^0.7.0" + unified "^11.0.0" + unist-util-position-from-estree "^2.0.0" + unist-util-stringify-position "^4.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +"@mdx-js/react@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.1.1.tgz#24bda7fffceb2fe256f954482123cda1be5f5fef" + integrity sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw== + dependencies: + "@types/mdx" "^2.0.0" + +"@mermaid-js/parser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-2.0.0.tgz#018b3e6754e4302fb059765c37bae30ecdff4147" + integrity sha512-K8BeapFUfrfxbRAUQAG5oBOCwo1+bNWzaVnPxTCutkfrTBn6T/j91FIhqxWJ32SUeQ9T3iy1zcmPZ5ROZEvDrg== + dependencies: + "@chevrotain/types" "~11.1.2" + +"@module-federation/error-codes@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.22.0.tgz#31ccc990dc240d73912ba7bd001f7e35ac751992" + integrity sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug== + +"@module-federation/runtime-core@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz#7321ec792bb7d1d22bee6162ec43564b769d2a3c" + integrity sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/runtime-tools@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz#36f2a7cb267af208a9d1a237fe9a71b4bf31431e" + integrity sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/webpack-bundler-runtime" "0.22.0" + +"@module-federation/runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.22.0.tgz#f789c9ef40d846d110711c8221ecc0ad938d43d8" + integrity sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/runtime-core" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/sdk@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.22.0.tgz#6ad4c1de85a900c3c80ff26cb87cce253e3a2770" + integrity sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g== + +"@module-federation/webpack-bundler-runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz#dcbe8f972d722fe278e6a7c21988d4bee53d401d" + integrity sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@mui/core-downloads-tracker@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.11.tgz#93251cf192641b9582641991feea60149159902c" + integrity sha512-a7I/b/nBTdXYz2cOSlEmkQ9WWE1x8FHpqMhFPp+Y1VPFxcOw91G5ELOHARQAGSPy5V+UCgJua6K/1x70bAtQPw== + +"@mui/icons-material@^7.3.1": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-7.3.11.tgz#dfea40829d1ca96c074c85093fdfe0de170af5ad" + integrity sha512-+hz5ilwHZ3djd5es3sCErLioqe/NhZcYTsV/TNXZAMdJdb23F4xzJjqnnZdnurc3S1+ietcssRNqieOhPQLZ7Q== + dependencies: + "@babel/runtime" "^7.28.6" + +"@mui/material@^7.3.1": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-7.3.11.tgz#aa6e0640bb29bd01e6c353ac3436fa0b20e5a36b" + integrity sha512-yq8bPc3LxOwKRWpcjRgDkYFmpM6aKlARfESTmOQcvLYFeJwtHte2tw6hJDrb8sk8wcvpDprHEHVaoUU0MslIkw== + dependencies: + "@babel/runtime" "^7.28.6" + "@mui/core-downloads-tracker" "^7.3.11" + "@mui/system" "^7.3.11" + "@mui/types" "^7.4.12" + "@mui/utils" "^7.3.11" + "@popperjs/core" "^2.11.8" + "@types/react-transition-group" "^4.4.12" + clsx "^2.1.1" + csstype "^3.2.3" + prop-types "^15.8.1" + react-is "^19.2.3" + react-transition-group "^4.4.5" + +"@mui/private-theming@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-7.3.11.tgz#96d4cde586624916816f5a97fef3c808cf562fb0" + integrity sha512-9B+YKms0fRHbNrqp9tOT/DNbNnU5gyvJ1o3qAGXfq8GmZcbJnE3At9x07Zr/o0pkhzg4aDdwXVqe4+AcgtOCPA== + dependencies: + "@babel/runtime" "^7.28.6" + "@mui/utils" "^7.3.11" + prop-types "^15.8.1" + +"@mui/styled-engine@^7.3.10": + version "7.3.10" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-7.3.10.tgz#53e98c1fdeda972b5932c76f6a2a29faf33f0d11" + integrity sha512-WxE9SiF8xskAQqGjsp0poXCkCqsoXFEsSr0HBXfApmGHR+DBnXRp+z46Vsltg4gpPM4Z96DeAQRpeAOnhNg7Ng== + dependencies: + "@babel/runtime" "^7.28.6" + "@emotion/cache" "^11.14.0" + "@emotion/serialize" "^1.3.3" + "@emotion/sheet" "^1.4.0" + csstype "^3.2.3" + prop-types "^15.8.1" + +"@mui/system@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-7.3.11.tgz#ffb8ba06f43d697db80257b9a2dfc8042b18554a" + integrity sha512-7izwGWdNawAKpBKcRlx7f2gFnAAjmASBWvMcyX4YYEeLOFsbfGRbUYGInvnAcUeql3rPxI7F9Ft4oY2OLRz44g== + dependencies: + "@babel/runtime" "^7.28.6" + "@mui/private-theming" "^7.3.11" + "@mui/styled-engine" "^7.3.10" + "@mui/types" "^7.4.12" + "@mui/utils" "^7.3.11" + clsx "^2.1.1" + csstype "^3.2.3" + prop-types "^15.8.1" + +"@mui/types@^7.4.12": + version "7.4.12" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.4.12.tgz#e4eba37a7506419ea5c5e0604322ba82b271bf46" + integrity sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w== + dependencies: + "@babel/runtime" "^7.28.6" + +"@mui/utils@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-7.3.11.tgz#493f46f053fe3a692e041b1b6b8295e2f46d9448" + integrity sha512-XTjGnifwteg71/ij+0e7Y7d+hwyntMYP5wPoA/g2drdGH+Flkvjwy0OfrVpKBbaOvofq4zU/LIyUZyKgmWu18g== + dependencies: + "@babel/runtime" "^7.28.6" + "@mui/types" "^7.4.12" + "@types/prop-types" "^15.7.15" + clsx "^2.1.1" + prop-types "^15.8.1" + react-is "^19.2.3" + +"@napi-rs/wasm-runtime@1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c" + integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw== + dependencies: + "@emnapi/core" "^1.5.0" + "@emnapi/runtime" "^1.5.0" + "@tybys/wasm-util" "^0.10.1" + +"@noble/hashes@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.9.5": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.9.5.tgz#d00db559bc06702a5702d047df4ba376e8ada76f" + integrity sha512-4Ivz0fsyFofe0bslNsYcGN9+iETdHX4v+BFwIPr+K/BAt61sHXECP63ff9FntU9zcfVQELJFdUG9so44OjUlBQ== + dependencies: + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/asn1-x509" "^2.9.5" + "@peculiar/asn1-x509-attr" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-csr@^2.6.0": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.9.5.tgz#d43ea2c72969f9d57aff5f083d8dad8814ccefc3" + integrity sha512-9dO6PcoJeI+1xJ4rG7eINMa6f9Ix/QdRs5UGZ0D7v/R3TzmsbVr5cqAgfYw4xgS9U54ouHYqEz0bIZBbM/UY1g== + dependencies: + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/asn1-x509" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-ecc@^2.6.0": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.9.5.tgz#25e01ad537dff87d4af6e9d19ae080aa0f0ebe9e" + integrity sha512-OD+HLlcV7wCL64w0rheX/C0J31DbJce0nf8ulv3UNftQ617JEZE3sQ4cMN6PotXWlJ1M5GQx90G3bywtdKOstw== + dependencies: + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/asn1-x509" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-pfx@^2.9.5": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.9.5.tgz#daaa30c60ce9ac10901dd2df74b5825117e79b49" + integrity sha512-btcH7lbcD4410qnjHvv7F0kEuMNKbX8CFAZSs9CDPWHKzT1byLPHYeR40AnUw9z4CzsijMY0daBFYUvVx75sdA== + dependencies: + "@peculiar/asn1-cms" "^2.9.5" + "@peculiar/asn1-pkcs8" "^2.9.5" + "@peculiar/asn1-rsa" "^2.9.5" + "@peculiar/asn1-schema" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-pkcs8@^2.9.5": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.9.5.tgz#d33e29733c1d0975f892e5f39fc2e36add4b9a1c" + integrity sha512-c7UghAGQdBfAHL9JdwcJkAc/lDJKNXfCdYXPXlf8BZdD/fVJjJnXKHxX4gyLhkFTvnGhME7caieSgc2ROtqYTQ== + dependencies: + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/asn1-x509" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-pkcs9@^2.6.0": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.9.5.tgz#de86036edf0fbdbf2781e3930d6247469680722f" + integrity sha512-4R/zMgLSHbQIZRBwP1KzX6iuNHmW3xFWwu9TS9A00N60fmQqp9DkkqnQFyd0mAYMQTrQefuzQ/yP4U8sOLGUgQ== + dependencies: + "@peculiar/asn1-cms" "^2.9.5" + "@peculiar/asn1-pfx" "^2.9.5" + "@peculiar/asn1-pkcs8" "^2.9.5" + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/asn1-x509" "^2.9.5" + "@peculiar/asn1-x509-attr" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.9.5": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.9.5.tgz#2d4bae3c32e634e6c0d3b617bc8aaee50d618c98" + integrity sha512-kHwBLVMkm9ljlM521ovS7y4z4mr8xuHTdNyyoPlDvckBwFKSgs9HqKBryLBeqHqL2YpIgl+Vspl7kzNGG2phzA== + dependencies: + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/asn1-x509" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.9.5": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.9.5.tgz#db0e72002915b25c806b505d49621bc6085d3ad9" + integrity sha512-Ez3wLKVjaxdsLcgeWN4OE31QkM7oBOgKuuBJxldRYAkfYw2C+8zJPcSd/SThnbhszsEOlAmoaS5kIIkN29fGKQ== + dependencies: + "@peculiar/utils" "^2.0.2" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-x509-attr@^2.9.5": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.9.5.tgz#28d534a55b34c9e781e74402493a7e49f1e7ef46" + integrity sha512-PlbL1a74RZiry7puPCZ5hdk/puvivxYJPbjadr2i7DBjHCJFEKCfTRPKL3DILeZFtzJjn95J5EBtSc4/TB9/6Q== + dependencies: + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/asn1-x509" "^2.9.5" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.9.5": + version "2.9.5" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.9.5.tgz#98bf4cb64707085c194f05918bdd3af30be85ef8" + integrity sha512-NP3ecvN6zTDlwCvogIWL7MJN9AZNuskkIbnlhrlkB97Mn2EqirBUQ8GKzsOmdAL3pRvjGu1Uk/a4DNfiZrWxhw== + dependencies: + "@peculiar/asn1-schema" "^2.9.5" + "@peculiar/utils" "^2.0.2" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/utils@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@peculiar/utils/-/utils-2.0.3.tgz#a27ca4c4b73652e110f19a7d16d664f458a5528e" + integrity sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ== + dependencies: + tslib "^2.8.1" + +"@peculiar/x509@^1.14.2": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@peculiar/x509/-/x509-1.14.3.tgz#2c44c2b89474346afec38a0c2803ec4fb8ce959e" + integrity sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA== + dependencies: + "@peculiar/asn1-cms" "^2.6.0" + "@peculiar/asn1-csr" "^2.6.0" + "@peculiar/asn1-ecc" "^2.6.0" + "@peculiar/asn1-pkcs9" "^2.6.0" + "@peculiar/asn1-rsa" "^2.6.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" + pvtsutils "^1.3.6" + reflect-metadata "^0.2.2" + tslib "^2.8.1" + tsyringe "^4.10.0" + +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^3.0.2": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-3.0.3.tgz#17b59982126c86294a8d248aa1d7b185f2df6484" + integrity sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.29" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1" + integrity sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww== + +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@rspack/binding-darwin-arm64@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.12.tgz#e6e10e7ff15c2254d6cbe9125a747ada880a34f3" + integrity sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A== + +"@rspack/binding-darwin-x64@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.12.tgz#fe90b64228eb49612e4932049325f52a4ddcfd28" + integrity sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg== + +"@rspack/binding-linux-arm64-gnu@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.12.tgz#61d63a0fcb9b4eb25b9d68e1f897c8e2619a8a5a" + integrity sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw== + +"@rspack/binding-linux-arm64-musl@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.12.tgz#fd5157890b1250937bb98332dcbb35ff2d7aafd3" + integrity sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA== + +"@rspack/binding-linux-x64-gnu@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.12.tgz#a8c963c47a043069b154c704d87bf6a658772ac7" + integrity sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew== + +"@rspack/binding-linux-x64-musl@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.12.tgz#1e95af2b152a0833272c26c3473cfa60832ef8b0" + integrity sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw== + +"@rspack/binding-wasm32-wasi@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.12.tgz#37a10f322e82cbd51114e8a3182f46c6af101a20" + integrity sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg== + dependencies: + "@napi-rs/wasm-runtime" "1.0.7" + +"@rspack/binding-win32-arm64-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.12.tgz#77f648ee1cb717c50fdd02126a528b4960654116" + integrity sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g== + +"@rspack/binding-win32-ia32-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.12.tgz#9f7cbb26a9c8d9a1cc15d2059de21172b1623c41" + integrity sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ== + +"@rspack/binding-win32-x64-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.12.tgz#b4c6dceaa63def4aa205d25246c1a5b05d7f36b0" + integrity sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA== + +"@rspack/binding@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.12.tgz#8c0b19795f980b0e513855245e689719352c08a4" + integrity sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA== + optionalDependencies: + "@rspack/binding-darwin-arm64" "1.7.12" + "@rspack/binding-darwin-x64" "1.7.12" + "@rspack/binding-linux-arm64-gnu" "1.7.12" + "@rspack/binding-linux-arm64-musl" "1.7.12" + "@rspack/binding-linux-x64-gnu" "1.7.12" + "@rspack/binding-linux-x64-musl" "1.7.12" + "@rspack/binding-wasm32-wasi" "1.7.12" + "@rspack/binding-win32-arm64-msvc" "1.7.12" + "@rspack/binding-win32-ia32-msvc" "1.7.12" + "@rspack/binding-win32-x64-msvc" "1.7.12" + +"@rspack/core@^1.7.10": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.12.tgz#e2a36bd16a10e10aee5905827064ac4b8a63b321" + integrity sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ== + dependencies: + "@module-federation/runtime-tools" "0.22.0" + "@rspack/binding" "1.7.12" + "@rspack/lite-tapable" "1.1.0" + +"@rspack/lite-tapable@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz#3cfdafeed01078e116bd4f191b684c8b484de425" + integrity sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw== + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.12" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.12.tgz#0cacd3cff047a32936b1ace47ea7c86eaab60a7f" + integrity sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g== + +"@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@sindresorhus/is@^5.2.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" + integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== + +"@slorber/remark-comment@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@slorber/remark-comment/-/remark-comment-1.0.0.tgz#2a020b3f4579c89dec0361673206c28d67e08f5a" + integrity sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.1.0" + micromark-util-symbol "^1.0.1" + +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/plugin-jsx@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== + dependencies: + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" + +"@svgr/webpack@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" + +"@swc/core-darwin-arm64@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.16.2.tgz#b180d8647923c75e5aabbf4ea6e543d113aa3c79" + integrity sha512-i/j0HNbnn79qnTVPicvay92Nark8fW8NQqn1e2mGERjUXNpBV0+SwQxlRpk2zBhn6laJ8PDI6Kn1nHZhnz3LCA== + +"@swc/core-darwin-x64@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.16.2.tgz#ae8286ddd5a6f1b0f1c540e3338682fed7ceb2ab" + integrity sha512-HrwqHyEyHVXO3qTk8EkNK7/b6sOZSEoNh+pot6RdE5x0LbNqfo8LtJUvi3UTXr+5ja/o5HbJdW80eCXo+NjbiA== + +"@swc/core-linux-arm-gnueabihf@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.16.2.tgz#9879d6eb91d3663dfcae557cde866642b21b7590" + integrity sha512-MdXi83Z/gGp1LIrg+h7HKxiul/z/Bty/ZJSvYAFqDl9zteC1XLSAZdScquKtXPp50rdyXqritTDCqQBhwVfZKA== + +"@swc/core-linux-arm64-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.16.2.tgz#9684df59917e4b0de8f528f04cf7f6e7526ca7b1" + integrity sha512-/jcTmK6Ktz3owM3YtiKvjofV6p3VpHnYzTIrOGwDIOsDigRAAVuZ8east33wYO/7UTdKYFlyHNnJNT0WJqOA3Q== + +"@swc/core-linux-arm64-musl@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.16.2.tgz#36b59ed1a46795755e6d083e6693753c5ea1e7d0" + integrity sha512-4gFarKaFnlJTSlJYKmMhV4u+3YE4uYfiydpBoYjmgQhCf9lAieOq+WilZaK9vVSHeqLuQpTEiGULZqAdsRX5Dw== + +"@swc/core-linux-ppc64-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.16.2.tgz#b0f648e760031e4674e0d07eb4991dfb468d21ee" + integrity sha512-syqSLGd6KlZ1PciNzs6bIUlhOuFztZufebOHaERjc4N4SqNZxyqYd4I+jj/EfOYnpe0kNjccn9HJLN1p5dz3+w== + +"@swc/core-linux-s390x-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.16.2.tgz#7757e4999f4e236a8bb05bd04367574ce926d4cc" + integrity sha512-ZBBLK+ewGyXLzWeMS7wbKtWBdnif6etn7xvPY/iOfbdsjX/+bgkp1pQt2lWF2wlu2hXYZuhJ/tHZE/QR8/apzg== + +"@swc/core-linux-x64-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.16.2.tgz#a25271e8199c46e54f1042c9d98fbf38fdb4736c" + integrity sha512-LyHJgxCA4Tje0ysBMbEb0tt/ie8kgUKoFE3JAKFhpevmTmhYEoC0H9s47WuDsqiFckF1ITUguZIXJG6K5e0dvg== + +"@swc/core-linux-x64-musl@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.16.2.tgz#afc4e5f5e519e4e2ca75a560496fbc6b5164718d" + integrity sha512-PghXJlVM1cgtLfNUR1vxFo1z+PDRAe8cWAJlZZ7spmeiN7BospGXg/MHUg7oNSgwSX7Zo//YKv9P5yD9apsFJQ== + +"@swc/core-win32-arm64-msvc@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.16.2.tgz#98b936a9cf2faad87c92c979161f17f22c55b742" + integrity sha512-StTOSefYBxemvNYYUI3UmO1a8y+hSPjjfHogC2TEHL+Z1PlEBim/XtLas5rS04jAzT9RrNmbtX911SZ42H9jSQ== + +"@swc/core-win32-ia32-msvc@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.16.2.tgz#2e30f6a8f78b0c79268e6d39f0ae3b378919449c" + integrity sha512-fycER209DYIzsibpTMC+chND05OfOjgztWL9U8OE6/uUlsOUZH3eh98isBLEnOymYUhlJLEt5++W1+KL/FOh5Q== + +"@swc/core-win32-x64-msvc@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.16.2.tgz#a25e080ed09770e68c1dc5a2a7e973a01dc40b2f" + integrity sha512-cSd1z6ivSrJPVr+moVwOHWjeKy6TpO4/Shwcv5KCrKYXCccxwh4pRy1C3fDioNx2PF1jPZWHKZjtXt+Be9VbaQ== + +"@swc/core@^1.15.40": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.16.2.tgz#6cc0c7f27938bea7208467a18ab518fa23b78367" + integrity sha512-95I4kiSMeveI/Mhi+tE4fiWcWLUMfzfKrk0jtr8LRMqHgOgq+xHS+zExkDqoO4b5OeeuXHMWVdD5MeP3X6sULw== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.28" + optionalDependencies: + "@swc/core-darwin-arm64" "1.16.2" + "@swc/core-darwin-x64" "1.16.2" + "@swc/core-linux-arm-gnueabihf" "1.16.2" + "@swc/core-linux-arm64-gnu" "1.16.2" + "@swc/core-linux-arm64-musl" "1.16.2" + "@swc/core-linux-ppc64-gnu" "1.16.2" + "@swc/core-linux-s390x-gnu" "1.16.2" + "@swc/core-linux-x64-gnu" "1.16.2" + "@swc/core-linux-x64-musl" "1.16.2" + "@swc/core-win32-arm64-msvc" "1.16.2" + "@swc/core-win32-ia32-msvc" "1.16.2" + "@swc/core-win32-x64-msvc" "1.16.2" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/html-darwin-arm64@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.16.2.tgz#dfe45d70266262a59aaaa0d93740b6161803f192" + integrity sha512-SNBUxkxLBXD0ATwnOG1rF8mpSrRtFDfqWnEUmbm/g4KwmCt7NuHHv9YYqA3lqfq90Ucc+Xlk7afx8KAW/utz4A== + +"@swc/html-darwin-x64@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.16.2.tgz#72066bda0d843c024dd5230aa013445d10037cde" + integrity sha512-WVBgn6yrBPMZu+DL95/XGAXYcgd1nhd67Ml1UjMtFoFMVKY+VRpCq8JpTZTMXhWbVoRENUHk+3PHu0nNjlE/Fg== + +"@swc/html-linux-arm-gnueabihf@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.16.2.tgz#efa7dd85b03b941ac173ae2870355f9721993905" + integrity sha512-V9F/Akd2TXrf5nUhdLgdy3FoVFxQbw8pA2AOyqnEOa2Mbm1R7DZJJ0GdShEMcoyMyMDB9r/4pWuWfxNtP4mFHA== + +"@swc/html-linux-arm64-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.16.2.tgz#4b6a02b42a40463e9ed9a96e0c42b7095b244f48" + integrity sha512-jonZVtHc6BesMjC/muUEJGzE1L2kVdgiPVuHc7CL79MrUm0Hjf8LS4Wmtjqe2bLTfRcaMfaYl/60ZcRXHCaYSQ== + +"@swc/html-linux-arm64-musl@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.16.2.tgz#0334e071cb8a01e0423fe7da27204b71f1afed66" + integrity sha512-dvki9/sgacHk9ouORmnIok5FbpeE9zUE8yqGGhL1kitNJi6/TKzfnMOpRxSxeDk1/ccvJTAdjRGDIGkT45+b3Q== + +"@swc/html-linux-ppc64-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.16.2.tgz#6c0d7293a1f7f7631e975c767755eb5236769193" + integrity sha512-6m0vVWHl9MW7cmWKVgKlFW6yhRv0uahMEaDxNIvXrPC3LdbbiiYZui+ryhyQGIYeVps3OMujzUjc0GihNz/afQ== + +"@swc/html-linux-s390x-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.16.2.tgz#853018d7b57377e2f3b23d369a1571862c34d2b9" + integrity sha512-TOlz6wgKyZjg4THJsNZfDz/rAMO+rBa0s2eewTeHEfuJhI+jGu7H6Co6bdbMpN3oyDvTMG7N1f1ktSbkE0erAg== + +"@swc/html-linux-x64-gnu@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.16.2.tgz#a347921e256f6ecb8847956bbacd4a23e1476adb" + integrity sha512-5EduoVpsnuAAkG9BW8COxcIKAe5swgNAEo+BVkAJCOy1ZMZm0krQYBdvlaDCsGGE9yLDKVPm7rpYIi7vTTZTbA== + +"@swc/html-linux-x64-musl@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.16.2.tgz#ebfbbdb05f2f991a34bc500dce0ca10bfbcdfc3b" + integrity sha512-c0Z84dvBd0oh1ZcBHnM18itmvJFLbCZBKFF2lEDHsGBSLQ/1sPbggEKsVO4KgWkkhwQV2l9AB4jnsw1HrwZJCg== + +"@swc/html-win32-arm64-msvc@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.16.2.tgz#69207d99cd80e55fe1ea722c8c8d5174b3d3cd2a" + integrity sha512-Aq7V2B5gS23X59DzV2z892c4NBHYtJbwhvsCjJN1MBMx723htjgNE9KVIJp9dQaJBr2PrNfb/u3QFwnWV2tAoQ== + +"@swc/html-win32-ia32-msvc@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.16.2.tgz#9473a17f22c65ec20059533bd8cc78b32c82a711" + integrity sha512-9gslPcsfXxKvAZtOvDkxGuEbM7lqBrONzLAyRsyUtw8KxFcSYkGIO48RDTstGWOkgTgKjjAq/WWqt9qr/NcE3A== + +"@swc/html-win32-x64-msvc@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.16.2.tgz#7c7aeaa21b8848a765be2d4f7ee2ee3fecfd0f52" + integrity sha512-Kdb4VdC8FyF5s1MQaFUNeASLckHECrb/oYy/6OCtU+hbgxQ/o/JCgE4uCe8YAg0LCWSOjhx73PCZDGwPf1TpKw== + +"@swc/html@^1.15.40": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.16.2.tgz#91ee34374e4c926c6c8a8f43561688192b8a1725" + integrity sha512-RmWH8m5dePWDFpHpmFKquZCRe5SyD/Sb0FBPxWcWv/tsjtlJl6oHeaxBsTL2edvaHuW385Fy5nPuTjDD/a+GEA== + dependencies: + "@swc/counter" "^0.1.3" + optionalDependencies: + "@swc/html-darwin-arm64" "1.16.2" + "@swc/html-darwin-x64" "1.16.2" + "@swc/html-linux-arm-gnueabihf" "1.16.2" + "@swc/html-linux-arm64-gnu" "1.16.2" + "@swc/html-linux-arm64-musl" "1.16.2" + "@swc/html-linux-ppc64-gnu" "1.16.2" + "@swc/html-linux-s390x-gnu" "1.16.2" + "@swc/html-linux-x64-gnu" "1.16.2" + "@swc/html-linux-x64-musl" "1.16.2" + "@swc/html-win32-arm64-msvc" "1.16.2" + "@swc/html-win32-ia32-msvc" "1.16.2" + "@swc/html-win32-x64-msvc" "1.16.2" + +"@swc/types@^0.1.28": + version "0.1.28" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.28.tgz#e3cd892383fba3b8904c40518bbe1265a50753f2" + integrity sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw== + dependencies: + "@swc/counter" "^0.1.3" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@tybys/wasm-util@^0.10.1": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.4.tgz#3e85ecb266f9d1722250e89bc69528615720b154" + integrity sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A== + dependencies: + tslib "^2.4.0" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/d3-array@*": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.2.tgz#e02151464d02d4a1b44646d0fcdb93faf88fde8c" + integrity sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw== + +"@types/d3-axis@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.6.tgz#e760e5765b8188b1defa32bc8bb6062f81e4c795" + integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-brush@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.6.tgz#c2f4362b045d472e1b186cdbec329ba52bdaee6c" + integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.6.tgz#1706ca40cf7ea59a0add8f4456efff8f8775793d" + integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== + +"@types/d3-color@*": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== + +"@types/d3-contour@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.6.tgz#9ada3fa9c4d00e3a5093fed0356c7ab929604231" + integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== + dependencies: + "@types/d3-array" "*" + "@types/geojson" "*" + +"@types/d3-delaunay@*": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" + integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== + +"@types/d3-dispatch@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz#ef004d8a128046cfce434d17182f834e44ef95b2" + integrity sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA== + +"@types/d3-drag@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.7.tgz#b13aba8b2442b4068c9a9e6d1d82f8bcea77fc02" + integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz#0a351f996dc99b37f4fa58b492c2d1c04e3dac17" + integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== + +"@types/d3-ease@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-fetch@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz#c04a2b4f23181aa376f30af0283dbc7b3b569980" + integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@*": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.10.tgz#6dc8fc6e1f35704f3b057090beeeb7ac674bff1a" + integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== + +"@types/d3-format@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== + +"@types/d3-geo@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.1.1.tgz#9e283af179601c549581600b3fec25941911329d" + integrity sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz#6023fb3b2d463229f2d680f9ac4b47466f71f17b" + integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== + +"@types/d3-interpolate@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.1.1.tgz#f632b380c3aca1dba8e34aa049bcd6a4af23df8a" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + +"@types/d3-polygon@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz#dfae54a6d35d19e76ac9565bcb32a8e54693189c" + integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== + +"@types/d3-quadtree@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz#d4740b0fe35b1c58b66e1488f4e7ed02952f570f" + integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== + +"@types/d3-random@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.4.tgz#6bd3683b8332fc0f01e7059b7636bc5c7ede7337" + integrity sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA== + +"@types/d3-scale-chromatic@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@*": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-selection@*": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.12.tgz#bb207aec0b20bbe62466781c07e74212e9f5c0b1" + integrity sha512-Qe/KWYhEiIIxGs7HrAAjMfShxKldx19SJtr5zu53f3afPsdZNz7HHtdTLXo/kqeiWNXVycI24kSnfzBYkTzpgw== + +"@types/d3-shape@*": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.2.0.tgz#66ff342011dc243c6c20e6b899523d148aca412d" + integrity sha512-kVd74ta9eof3eJOvbNd1vGKS/XERRyQbT26Og63hIsvDO84cjD5gEOhsXf26w3FSoNlPVz84DOFcKv/oou+fMw== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz#d6bc1e6b6a7db69cccfbbdd4c34b70632d9e9db2" + integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== + +"@types/d3-time@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" + integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== + +"@types/d3-timer@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + +"@types/d3-transition@*": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.9.tgz#1136bc57e9ddb3c390dccc9b5ff3b7d2b8d94706" + integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-zoom@*": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz#dccb32d1c56b1e1c6e0f1180d994896f038bc40b" + integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.3.tgz#d4550a85d08f4978faf0a4c36b848c61eaac07e2" + integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-delaunay" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-zoom" "*" + +"@types/debug@^4.0.0": + version "4.1.13" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7" + integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw== + dependencies: + "@types/ms" "*" + +"@types/estree-jsx@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz#858a88ea20f34fe65111f005a689fa1ebf70dc18" + integrity sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg== + dependencies: + "@types/estree" "*" + +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.8": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.9.tgz#cf3f0e876d7bee15a93ab925b82bf570a3904a24" + integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.3.tgz#9d34c88c0c9ee62b9a6e4d9f8ab8d7e29688e6b4" + integrity sha512-dPfW8NFiOF4wOHc7+N/QSxlY9cfSsenewGbAz8C8U/MULPd/YZ27LvJUIlzaXie7e6Ove9YunJGgC9tbHD2cKw== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33": + version "4.19.9" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz#b746a8bb6c389af7a31141397bb539f775b0ae84" + integrity sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "^2" + +"@types/express@^4.17.25": + version "4.17.25" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "^1" + +"@types/geojson@*": + version "7946.0.16" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" + integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== + +"@types/hast@^3.0.0": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.5.tgz#48020de4c0e63492f4ca9db42068c108f68b7f8f" + integrity sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g== + dependencies: + "@types/unist" "*" + +"@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-cache-semantics@^4.0.2": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3" + integrity sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q== + +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/http-proxy@^1.17.8": + version "1.17.17" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533" + integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mdast@^4.0.0", "@types/mdast@^4.0.2": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + +"@types/mdx@^2.0.0": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.14.tgz#c1e54113265b152021ab0afe0434e3cadd90bfe3" + integrity sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/ms@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + +"@types/node@*": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.6.2.tgz#11bfb8e00bafe728d2113e474a7637becc9ab279" + integrity sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g== + dependencies: + undici-types "~8.9.0" + +"@types/node@^17.0.5": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prismjs@^1.26.0": + version "1.26.6" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.6.tgz#6ea27c126d645319ae4f7055eda63a9e835c0187" + integrity sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw== + +"@types/prop-types@^15.7.15": + version "15.7.15" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7" + integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== + +"@types/qs@*": + version "6.15.1" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.1.tgz#8606884272c63f0db96986bd3548650d8a9388bf" + integrity sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/react-router-config@*", "@types/react-router-config@^5.0.7": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.11.tgz#2761a23acc7905a66a94419ee40294a65aaa483a" + integrity sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "^5.1.0" + +"@types/react-router-dom@*": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*", "@types/react-router@^5.1.0": + version "5.1.20" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react-transition-group@^4.4.12": + version "4.4.12" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.12.tgz#b5d76568485b02a307238270bfe96cb51ee2a044" + integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== + +"@types/react@*": + version "19.3.0" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.3.0.tgz#3b3ce8d8c1627fb5ccd4dadd57ef445c5a153b77" + integrity sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg== + dependencies: + csstype "^3.2.2" + +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + +"@types/sax@^1.2.1": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.7.tgz#ba5fe7df9aa9c89b6dff7688a19023dd2963091d" + integrity sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A== + dependencies: + "@types/node" "*" + +"@types/send@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@^1", "@types/serve-static@^1.15.5": + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.36": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/trusted-types@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + +"@types/unist@^2.0.0": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" + integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== + +"@types/ws@^8.5.10": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== + dependencies: + "@types/yargs-parser" "*" + +"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.3.1": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.4.0.tgz#5e2e1374c0a30b5a42e8b083523a225c6945f88a" + integrity sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ== + +"@upsetjs/venn.js@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@upsetjs/venn.js/-/venn.js-2.0.0.tgz#3be192038cdda927aa4f8b22ab51af82abf47f34" + integrity sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw== + optionalDependencies: + d3-selection "^3.0.0" + d3-transition "^3.0.1" + +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.0.0: + version "8.3.5" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496" + integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw== + dependencies: + acorn "^8.11.0" + +acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.18.0.tgz#4faf01b2d6d326bfeed97aea1f52220b5f4c1940" + integrity sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ== + +address@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-2.0.3.tgz#e910900615db3d8a20c040d4c710631062fc4ba8" + integrity sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: + version "6.15.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.15.0.tgz#07e982c74626167aa7a2495c53817892d7139492" + integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.20.0: + version "8.20.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9" + integrity sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +algoliasearch-helper@^3.26.0: + version "3.29.3" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.29.3.tgz#dc21f119320acbdd5890a21021846b5730d11e03" + integrity sha512-gVOMbbPVrCO3Xs+B+BLAIGFqIQow6qHMTYCEeBqLQB9m4ZmKUqMwkEumlal2iyyezHEd4Y0FvFTLbCRutCutIQ== + dependencies: + "@algolia/events" "^4.0.1" + +algoliasearch@^5.37.0: + version "5.59.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.59.0.tgz#c4d592b6d99fd0fa9929eaf40077b75824f45a68" + integrity sha512-wUXzaeI7B526W4y1gFg3lcxgDZ67XSgRJIiellYWOas/pLpO7rOtxm9Gr2E/C8aiSDXIgx1q5TdSsvK67Uakqw== + dependencies: + "@algolia/abtesting" "1.25.0" + "@algolia/client-abtesting" "5.59.0" + "@algolia/client-analytics" "5.59.0" + "@algolia/client-common" "5.59.0" + "@algolia/client-insights" "5.59.0" + "@algolia/client-personalization" "5.59.0" + "@algolia/client-query-suggestions" "5.59.0" + "@algolia/client-search" "5.59.0" + "@algolia/ingestion" "1.59.0" + "@algolia/monitoring" "1.59.0" + "@algolia/recommend" "5.59.0" + "@algolia/requester-browser-xhr" "5.59.0" + "@algolia/requester-fetch" "5.59.0" + "@algolia/requester-node-http" "5.59.0" + +ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.2.2: + version "6.3.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.3.0.tgz#247c8e7b70a1a43b10ce14c0226fcbf58e8815d5" + integrity sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== + +ansis@^3.2.0: + version "3.17.0" + resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7" + integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asn1js@^3.0.10, asn1js@^3.0.6: + version "3.0.10" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.10.tgz#df26c874c8a8b41ca605efea47b2ad07551013dd" + integrity sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg== + dependencies: + pvtsutils "^1.3.6" + pvutils "^1.1.5" + tslib "^2.8.1" + +astring@^1.8.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.9.0.tgz#cc73e6062a7eb03e7d19c22d8b0b3451fd9bfeef" + integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== + +autoprefixer@^10.4.19, autoprefixer@^10.4.23: + version "10.6.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.6.1.tgz#437cea1a0b96cedc4065c05327b728b1594faf27" + integrity sha512-cL1Qz6ADZhcEbny/8HPfe99J6HhNoYtpX2LFLIbhgGE7Q1hlQVkYFdetDN7Id3KiQxhDrHwzlHr/YQCnZ8+xSA== + dependencies: + browserslist "^4.28.9" + caniuse-lite "^1.0.30001810" + fraction.js "^5.3.4" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +b4a@^1.6.4, b4a@^1.8.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.9.0.tgz#6336313b6e76b299c397afa68676ec6ebc788845" + integrity sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ== + +babel-loader@^9.2.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" + integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== + dependencies: + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-polyfill-corejs2@^0.4.14, babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.17" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91" + integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.8" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" + integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.5" + core-js-compat "^3.43.0" + +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587" + integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.8" + core-js-compat "^3.48.0" + +babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721" + integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.8" + +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +balanced-match@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" + integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== + +bare-events@^2.5.4, bare-events@^2.7.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.9.2.tgz#01d377b64c3c7167b28b52da7add3221aecf2d7f" + integrity sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA== + +bare-fs@^4.0.1, bare-fs@^4.5.5: + version "4.8.1" + resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-4.8.1.tgz#1a946560b45844dc37120c00330eae7c8a1c44cf" + integrity sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg== + dependencies: + bare-events "^2.5.4" + bare-path "^3.0.0" + bare-stream "^2.6.4" + bare-url "^2.2.2" + fast-fifo "^1.3.2" + +bare-path@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-3.1.2.tgz#67261bc74a9ba0105ba139b8638f218c09e8d82e" + integrity sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw== + +bare-stream@^2.6.4: + version "2.13.4" + resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.13.4.tgz#61d448a268d1efd992103aae6bd729332f278ac0" + integrity sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA== + dependencies: + b4a "^1.8.1" + streamx "^2.25.0" + teex "^1.0.1" + +bare-url@^2.2.2: + version "2.5.4" + resolved "https://registry.yarnpkg.com/bare-url/-/bare-url-2.5.4.tgz#10ab50f39b50335e2aa7672d5941043dbfc7749e" + integrity sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g== + dependencies: + bare-path "^3.0.0" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +baseline-browser-mapping@^2.11.25: + version "2.11.26" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.26.tgz#01bf6774efb3fbb9de20afc6b923ab85c7d230a6" + integrity sha512-GLQdD3y6UF8iVuMJl5fHgE4jdn/ua7n+toKfLgNlg3BqQtOZjpy68T8Tup8/wGWZCDlm7KMg7tPb4MPn7oN0TQ== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +body-parser@~1.20.5: + version "1.20.8" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.8.tgz#328d51ce46cb19c983f3d9661016df2765283a37" + integrity sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA== + dependencies: + bytes "~3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "~1.2.0" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + on-finished "~2.4.1" + qs "~6.16.0" + raw-body "~2.5.3" + type-is "~1.6.18" + unpipe "~1.0.0" + +bonjour-service@^1.2.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.4.tgz#8ff5b85fa0641e0996bf40bcf61fc0c6727b66d3" + integrity sha512-jCZcVv7eoc4QesRscwEZtSROBen+6LpKAmBIsQYQrsAeVHLyMXWX/t6eIV5KiRZYNUBl8eVqImEEMQ8L5+c/Kw== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boxen@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== + dependencies: + ansi-align "^3.0.1" + camelcase "^6.2.0" + chalk "^4.1.2" + cli-boxes "^3.0.0" + string-width "^5.0.1" + type-fest "^2.5.0" + widest-line "^4.0.1" + wrap-ansi "^8.0.1" + +boxen@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + dependencies: + ansi-align "^3.0.1" + camelcase "^7.0.1" + chalk "^5.2.0" + cli-boxes "^3.0.0" + string-width "^5.1.2" + type-fest "^2.13.0" + widest-line "^4.0.1" + wrap-ansi "^8.1.0" + +brace-expansion@^1.1.7: + version "1.1.21" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.21.tgz#edf4fab5c64d051aea5a8def49aba1c7522279f3" + integrity sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^5.0.8: + version "5.0.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.12.tgz#995fbb4750a77c4d16a7dc942ff2ca6ef8e675ec" + integrity sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ== + dependencies: + balanced-match "^4.0.2" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.28.1, browserslist@^4.28.7, browserslist@^4.28.9: + version "4.29.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.29.1.tgz#f723071987a4f094177d94e01f6dc6e7493b972c" + integrity sha512-AUdjuRyCNGUYtqpqfTmWyM4fXay8yIQhmLnvYe/THMGfT9B/34X7xQd3ifKxwyNPPpowVBjLb+64BN9Rn1mizw== + dependencies: + baseline-browser-mapping "^2.11.25" + caniuse-lite "^1.0.30001810" + electron-to-chromium "^1.5.438" + node-releases "^2.0.57" + update-browserslist-db "^1.3.3" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2, bytes@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +bytestreamjs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bytestreamjs/-/bytestreamjs-2.0.1.tgz#a32947c7ce389a6fa11a09a9a563d0a45889535e" + integrity sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ== + +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.8: + version "10.2.14" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" + integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== + dependencies: + "@types/http-cache-semantics" "^4.0.2" + get-stream "^6.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.3" + mimic-response "^4.0.0" + normalize-url "^8.0.0" + responselike "^3.0.0" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.9.tgz#39a644700c80bc7d0ca9102fc6d1d43b2fd7eee7" + integrity sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + get-intrinsic "^1.3.0" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001810: + version "1.0.30001812" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001812.tgz#55b32ed819d120b384149a4f9fd59d179ce008f9" + integrity sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.0.1, chalk@^5.2.0: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@1.0.0-rc.12: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + +chevrotain@~11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-11.1.2.tgz#1db446bdeb63fe42d366508a34280c2e3c0c4f62" + integrity sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg== + dependencies: + "@chevrotain/cst-dts-gen" "11.1.2" + "@chevrotain/gast" "11.1.2" + "@chevrotain/regexp-to-ast" "11.1.2" + "@chevrotain/types" "11.1.2" + "@chevrotain/utils" "11.1.2" + lodash-es "4.17.23" + +chokidar@^3.5.3, chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +clean-css@^5.2.2, clean-css@^5.3.3, clean-css@~5.3.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-table3@^0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +clipboard@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5" + integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clsx@^2.0.0, clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +collapse-white-space@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz#640257174f9f42c740b40f3b55ee752924feefca" + integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + +colord@^2.9.3: + version "2.10.0" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.10.0.tgz#56c9050e6b06b4b6c62ddec366a48d65ef57e860" + integrity sha512-AidJptpBJmjTclAp9BkLwJi0T93fo5epJnbaZslpg6QVzpHjAiveF55mE9AcUJiGMqRHgMDY8soMsQtuNYMHfw== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combine-promises@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a" + integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== + +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + +commander@7, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +compressible@~2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.2.tgz#781397127ae2da00c0c5f7c76bda5b2a9b32a49f" + integrity sha512-o8vI5RE5A6EVVOd9o41jKp41aJom+QTEO/Bx8MYNjexMo/Bv2WOjUfZr+aL0WnYSgymUy6zeguqLTsIhV0gMvQ== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + destroy "1.2.0" + negotiator "~0.6.4" + on-headers "~1.1.0" + safe-buffer "5.2.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +consola@^3.2.3: + version "3.4.2" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.4.2.tgz#5af110145397bb67afdab77013fdc34cae590ea7" + integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== + +content-disposition@~0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== + +cookie@~0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +copy-text-to-clipboard@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.2.tgz#99bc79db3f2d355ec33a08d573aff6804491ddb9" + integrity sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A== + +copy-webpack-plugin@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== + dependencies: + fast-glob "^3.2.11" + glob-parent "^6.0.1" + globby "^13.1.1" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +core-js-compat@^3.43.0, core-js-compat@^3.48.0: + version "3.50.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.50.0.tgz#d5922c2a692ab1cba6078c920e7c5567421ae08e" + integrity sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q== + dependencies: + browserslist "^4.28.7" + +core-js@^3.31.1: + version "3.50.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.50.0.tgz#a18646fcb0097650189b4504c803e887bcae4c0a" + integrity sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cose-base@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" + integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== + dependencies: + layout-base "^1.0.0" + +cose-base@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.2.0.tgz#1c395c35b6e10bb83f9769ca8b817d614add5c01" + integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g== + dependencies: + layout-base "^2.0.0" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" + +css-blank-pseudo@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz#32020bff20a209a53ad71b8675852b49e8d57e46" + integrity sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag== + dependencies: + postcss-selector-parser "^7.0.0" + +css-declaration-sorter@^7.2.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz#9c215fbda2dcf4083bae69f125688158ae847deb" + integrity sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw== + +css-has-pseudo@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz#a5ee2daf5f70a2032f3cefdf1e36e7f52a243873" + integrity sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA== + dependencies: + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.2.0" + +css-loader@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" + integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-minimizer-webpack-plugin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" + +css-prefers-color-scheme@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz#ba001b99b8105b8896ca26fc38309ddb2278bd3c" + integrity sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ== + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.2.2.tgz#01b6e8d163637bb2dd6c982ca4ed65863682786e" + integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.0.1, css-what@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" + integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== + +cssdb@^8.6.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.11.0.tgz#e03c9cdc9c5e99d8cddf64a917bfc427b20c143a" + integrity sha512-VzY/8kcK5M8oCVr/cwh24J8XVlCOITpmzCizKBC28o7Z1s23MMojXoJ3q7a+TQQoMKvxC3YlG0Z9yU10kJF1uQ== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-advanced@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz#82b090872b8f98c471f681d541c735acf8b94d3f" + integrity sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ== + dependencies: + autoprefixer "^10.4.19" + browserslist "^4.23.0" + cssnano-preset-default "^6.1.2" + postcss-discard-unused "^6.0.5" + postcss-merge-idents "^6.0.3" + postcss-reduce-idents "^6.0.3" + postcss-zindex "^6.0.2" + +cssnano-preset-default@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" + integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== + dependencies: + browserslist "^4.23.0" + css-declaration-sorter "^7.2.0" + cssnano-utils "^4.0.2" + postcss-calc "^9.0.1" + postcss-colormin "^6.1.0" + postcss-convert-values "^6.1.0" + postcss-discard-comments "^6.0.2" + postcss-discard-duplicates "^6.0.3" + postcss-discard-empty "^6.0.3" + postcss-discard-overridden "^6.0.2" + postcss-merge-longhand "^6.0.5" + postcss-merge-rules "^6.1.1" + postcss-minify-font-values "^6.1.0" + postcss-minify-gradients "^6.0.3" + postcss-minify-params "^6.1.0" + postcss-minify-selectors "^6.0.4" + postcss-normalize-charset "^6.0.2" + postcss-normalize-display-values "^6.0.2" + postcss-normalize-positions "^6.0.2" + postcss-normalize-repeat-style "^6.0.2" + postcss-normalize-string "^6.0.2" + postcss-normalize-timing-functions "^6.0.2" + postcss-normalize-unicode "^6.1.0" + postcss-normalize-url "^6.0.2" + postcss-normalize-whitespace "^6.0.2" + postcss-ordered-values "^6.0.2" + postcss-reduce-initial "^6.1.0" + postcss-reduce-transforms "^6.0.2" + postcss-svgo "^6.0.3" + postcss-unique-selectors "^6.0.4" + +cssnano-utils@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" + integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== + +cssnano@^6.0.1, cssnano@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" + integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== + dependencies: + cssnano-preset-default "^6.1.2" + lilconfig "^3.1.1" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +csstype@^3.0.2, csstype@^3.2.2, csstype@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== + +cytoscape-cose-bilkent@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" + integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== + dependencies: + cose-base "^1.0.0" + +cytoscape-fcose@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471" + integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ== + dependencies: + cose-base "^2.2.0" + +cytoscape@^3.34.0: + version "3.34.3" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.34.3.tgz#1503996ba0b59b901d86310a1f612e92dc464f51" + integrity sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ== + +"d3-array@1 - 2": + version "2.12.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== + dependencies: + internmap "^1.0.0" + +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +d3-axis@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" + +d3-chord@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== + dependencies: + d3-path "1 - 3" + +"d3-color@1 - 3", d3-color@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +d3-contour@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" + integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== + dependencies: + d3-array "^3.2.0" + +d3-delaunay@6: + version "6.0.4" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" + integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== + dependencies: + delaunator "5" + +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== + dependencies: + d3-dispatch "1 - 3" + d3-selection "3" + +"d3-dsv@1 - 3", d3-dsv@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +"d3-format@1 - 3", d3-format@3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.2.tgz#01fdb46b58beb1f55b10b42ad70b6e344d5eb2ae" + integrity sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg== + +d3-geo@3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d" + integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" + integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" + integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== + +d3-polygon@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +"d3-quadtree@1 - 3", d3-quadtree@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-sankey@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" + integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== + dependencies: + d3-array "1 - 2" + d3-shape "^1.2.0" + +d3-scale-chromatic@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +"d3-selection@2 - 3", d3-selection@3, d3-selection@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== + +d3-shape@3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + +d3-shape@^1.2.0: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +"d3-time-format@2 - 4", d3-time-format@4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== + dependencies: + d3-array "2 - 3" + +"d3-timer@1 - 3", d3-timer@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== + +"d3-transition@2 - 3", d3-transition@3, d3-transition@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" + +d3-zoom@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" + +d3@^7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" + integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "4" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + +dagre-d3-es@7.0.14: + version "7.0.14" + resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz#1272276e26457cf3b97dac569f8f0531ec33c377" + integrity sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg== + dependencies: + d3 "^7.9.0" + lodash-es "^4.17.21" + +dayjs@^1.11.21: + version "1.11.23" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.23.tgz#b0a363506dde5f36cf5075e42ebe8115165a8c79" + integrity sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ== + +debounce@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + +decode-named-character-reference@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f" + integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q== + dependencies: + character-entities "^2.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-browser-id@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.1.tgz#f7a7ccb8f5104bf8e0f71ba3b1ccfa5eafdb21e8" + integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== + +default-browser@^5.2.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.5.1.tgz#1790affc52680fbb11e17cab2752d69aa2a37d2c" + integrity sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delaunator@5: + version "5.1.0" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.1.0.tgz#d13271fbf3aff6753f9ea6e235557f20901046ea" + integrity sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ== + dependencies: + robust-predicates "^3.0.2" + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0, destroy@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.0, detect-libc@^2.0.2, detect-libc@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-2.1.0.tgz#03d72644891fa451ca5609b83107a8a0ebd03f91" + integrity sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q== + dependencies: + address "^2.0.1" + +devlop@^1.0.0, devlop@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +dompurify@^3.4.12: + version "3.4.16" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.16.tgz#c51b3709ea15ee9abb07e804f2ef30ea9b953128" + integrity sha512-sqo+pNp3qRhCIpbgRi1y8Tgk27Bo2Ry7w0dC1NBeNTdZChWjz9Xb/KOoZbRP/R6pQZ80Qw8YhXw13hWWBbMRnQ== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" + integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.438: + version "1.5.439" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.439.tgz#d14ad21f157ee83b77d1e46fc031776eec9013c9" + integrity sha512-qu6QIPXhsb+CRcAiTMNjR4A1y/7tCYKkKjr5CZXRVih6qkDf79peZ2BpEU3qoDBNCRrcy3Mra3X9nG5oruuA7Q== + +elkjs@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161" + integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojilib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" + integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +emoticon@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-4.1.0.tgz#d5a156868ee173095627a33de3f1e914c3dde79e" + integrity sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.25.0: + version "5.25.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.25.1.tgz#9d919bfa898b116e58f20e95127c047693158771" + integrity sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.3.3" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + +error-ex@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.4.tgz#b3a8d8bb6f92eecc1629e3e27d3c8607a8a32414" + integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== + dependencies: + is-arrayish "^0.2.1" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^2.1.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.3.2.tgz#311fa4f40168c1975c505477c51b23234d41ad55" + integrity sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz#a2d0b373205724dfa525d23b0c3e1b1ca582c99b" + integrity sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw== + dependencies: + es-errors "^1.3.0" + +es-toolkit@^1.45.1: + version "1.52.0" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.52.0.tgz#71eaf1a8b18834ef77637eccbb885ba4c03cd6dd" + integrity sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA== + +esast-util-from-estree@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz#8d1cfb51ad534d2f159dc250e604f3478a79f1ad" + integrity sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ== + dependencies: + "@types/estree-jsx" "^1.0.0" + devlop "^1.0.0" + estree-util-visit "^2.0.0" + unist-util-position-from-estree "^2.0.0" + +esast-util-from-js@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz#5147bec34cc9da44accf52f87f239a40ac3e8225" + integrity sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw== + dependencies: + "@types/estree-jsx" "^1.0.0" + acorn "^8.0.0" + esast-util-from-estree "^2.0.0" + vfile-message "^4.0.0" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +estree-util-attach-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d" + integrity sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw== + dependencies: + "@types/estree" "^1.0.0" + +estree-util-build-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz#b6d0bced1dcc4f06f25cf0ceda2b2dcaf98168f1" + integrity sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ== + dependencies: + "@types/estree-jsx" "^1.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + estree-walker "^3.0.0" + +estree-util-is-identifier-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" + integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== + +estree-util-scope@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-util-scope/-/estree-util-scope-1.0.1.tgz#28e1e124b5d792f463f43ef3d1690236434b05ea" + integrity sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + +estree-util-to-js@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz#10a6fb924814e6abb62becf0d2bc4dea51d04f17" + integrity sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg== + dependencies: + "@types/estree-jsx" "^1.0.0" + astring "^1.8.0" + source-map "^0.7.0" + +estree-util-value-to-estree@^3.0.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz#cd70cf37e7f78eae3e110d66a3436ce0d18a8f80" + integrity sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ== + dependencies: + "@types/estree" "^1.0.0" + +estree-util-visit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz#13a9a9f40ff50ed0c022f831ddf4b58d05446feb" + integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/unist" "^3.0.0" + +estree-walker@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eta@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eta/-/eta-2.2.0.tgz#eb8b5f8c4e8b6306561a455e62cd7492fe3a9b8a" + integrity sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eval@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== + dependencies: + "@types/node" "*" + require-like ">= 0.1.1" + +eventemitter3@^4.0.0, eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events-universal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/events-universal/-/events-universal-1.0.1.tgz#b56a84fd611b6610e0a2d0f09f80fdf931e2dfe6" + integrity sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw== + dependencies: + bare-events "^2.7.0" + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +express@^4.22.1: + version "4.22.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.22.3.tgz#e8f898d3c17582b1e311dd2c5cd6d8deff84724b" + integrity sha512-Bdcs4+3qlpVlx2NRn6fgX2Ue2/gGRaPeawebgclM0ERSCqDpA+owF1fdPwjJUTAJWMTuAaxjDf+hzb0/4eKvvw== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "~1.20.5" + content-disposition "~0.5.4" + content-type "~1.0.4" + cookie "~0.7.1" + cookie-signature "~1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.3.1" + fresh "~0.5.2" + http-errors "~2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "~2.4.1" + parseurl "~1.3.3" + path-to-regexp "~0.1.13" + proxy-addr "~2.0.7" + qs "~6.16.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "~0.19.0" + serve-static "~1.16.2" + setprototypeof "1.2.0" + statuses "~2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-fifo@^1.2.0, fast-fifo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-uri@^3.0.1: + version "3.1.8" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.8.tgz#f7db8d942e20eead3cfe93b0beeb4eb0169e938b" + integrity sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg== + +fastq@^1.6.0: + version "1.20.3" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.3.tgz#7ab8731e647b56abcfeee997dae333ca3ee1d04d" + integrity sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw== + dependencies: + reusify "^1.0.4" + +fault@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" + integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== + dependencies: + format "^0.2.0" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +feed@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" + integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== + dependencies: + xml-js "^1.6.11" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" + integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "~2.4.1" + parseurl "~1.3.3" + statuses "~2.0.2" + unpipe "~1.0.0" + +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== + dependencies: + common-path-prefix "^3.0.0" + pkg-dir "^7.0.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.0.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" + integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== + +form-data-encoder@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" + integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== + +format@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-5.3.4.tgz#8c0fcc6a9908262df4ed197427bdeef563e0699a" + integrity sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ== + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^11.1.1, fs-extra@^11.2.0: + version "11.4.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.4.1.tgz#6a01ca80008eacf3ca1ffde5ef79088f68203a5a" + integrity sha512-KYAb4c9BJQI6QqGKthV68OHe0badztdXJWKo0WtBA9IuCFPTKvE5ZdUBglP833aMjhaSPNO4A5j/EkzZtGlKjA== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +github-slugger@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regex.js@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.3.1.tgz#2f9fe8821218b18e6dcced9bcb4413932162db4b" + integrity sha512-zhWhMRsgnOym+1txhUmYJGD6eUsbUdrZv55gCYKuJX8t2p3+M8My23PD09bEIsreGUs5pnSa/idmcfp2/IlqGg== + +glob@^13.0.0, glob@^13.0.3: + version "13.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d" + integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw== + dependencies: + minimatch "^10.2.2" + minipass "^7.1.3" + path-scurry "^2.0.2" + +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== + dependencies: + ini "2.0.0" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^13.1.1: + version "13.2.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.3.0" + ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== + dependencies: + delegate "^3.1.2" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +got@^12.1.0: + version "12.6.1" + resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" + integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +hachure-fill@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc" + integrity sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-yarn@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" + integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== + +hasown@^2.0.2, hasown@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003" + integrity sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A== + dependencies: + function-bind "^1.1.2" + +hast-util-from-parse5@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz#830a35022fff28c3fea3697a98c2f4cc6b835a2e" + integrity sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + hastscript "^9.0.0" + property-information "^7.0.0" + vfile "^6.0.0" + vfile-location "^5.0.0" + web-namespaces "^2.0.0" + +hast-util-parse-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" + integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-raw@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.1.0.tgz#79b66b26f6f68fb50dfb4716b2cdca90d92adf2e" + integrity sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + hast-util-from-parse5 "^8.0.0" + hast-util-to-parse5 "^8.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + parse5 "^7.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-to-estree@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz#e654c1c9374645135695cc0ab9f70b8fcaf733d7" + integrity sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w== + dependencies: + "@types/estree" "^1.0.0" + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + estree-util-attach-comments "^3.0.0" + estree-util-is-identifier-name "^3.0.0" + hast-util-whitespace "^3.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + style-to-js "^1.0.0" + unist-util-position "^5.0.0" + zwitch "^2.0.0" + +hast-util-to-jsx-runtime@^2.0.0: + version "2.3.6" + resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz#ff31897aae59f62232e21594eac7ef6b63333e98" + integrity sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg== + dependencies: + "@types/estree" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + hast-util-whitespace "^3.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + style-to-js "^1.0.0" + unist-util-position "^5.0.0" + vfile-message "^4.0.0" + +hast-util-to-parse5@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz#95aa391cc0514b4951418d01c883d1038af42f5d" + integrity sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" + +hastscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-9.0.1.tgz#dbc84bef6051d40084342c229c451cd9dc567dff" + integrity sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^4.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-escaper@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-minifier-terser@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#18752e23a2f0ed4b0f550f217bb41693e975b942" + integrity sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== + dependencies: + camel-case "^4.1.2" + clean-css "~5.3.2" + commander "^10.0.0" + entities "^4.4.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.15.1" + +html-tags@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + +html-webpack-plugin@^5.6.0: + version "5.6.8" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.8.tgz#5425dbc63eb533ffa59e92342be94894a125fc23" + integrity sha512-MZmKQcTnhEh1SPSyMiEytIeDZDUoBZVorNHivQGXMASHf/BSGGOrKa2xQ5bGx3TCe1n109ecCt+cpww7wwWhKA== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + +http-cache-semantics@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~2.0.0, http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== + +http-proxy-middleware@^2.0.9: + version "2.0.10" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.10.tgz#b2df7b705203d7a8c269ac8450cf96b00c532f94" + integrity sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +hyperdyperid@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== + +iconv-lite@0.6: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@~0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +image-size@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-2.0.4.tgz#bbc1933173e4ee1adbbdf9d4958ded15fdb710e3" + integrity sha512-QRUkFFsRV/6fuESxb9Vkq+a0LkSrgKXuc2NEqfikiXxxN/G3tjWt5EVUlMaImRBZRZK/jRBEbYvpPYZL8t08Zw== + +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +import-meta-resolve@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz#08cb85b5bd37ecc8eb1e0f670dc2767002d43734" + integrity sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infima@0.2.0-alpha.45: + version "0.2.0-alpha.45" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.45.tgz#542aab5a249274d81679631b492973dd2c1e7466" + integrity sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw== + +inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.4, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-parser@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.7.tgz#b1fc68bfc0313b8685745e4464e37f9376b9c909" + integrity sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA== + +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + +internmap@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.5.0.tgz#7d4b6c39f9392fb61cf807de6e425e22c10e061f" + integrity sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w== + +is-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + +is-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.4" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.4.tgz#1ee5553818511915685d33bb13d31bf854e5059d" + integrity sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-ci@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + +is-core-module@^2.16.1: + version "2.17.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.17.0.tgz#75c1c76236c9f7e38ddbfff292e127dc13b21027" + integrity sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA== + dependencies: + hasown "^2.0.4" + +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-network-error@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.3.2.tgz#9460bc30f8419a4bca77114f4de88a3ee5e0c519" + integrity sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA== + +is-npm@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.1.0.tgz#f70e0b6c132dfc817ac97d3badc0134945b098d3" + integrity sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-wsl@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.1.tgz#327897b26832a3eb117da6c27492d04ca132594f" + integrity sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw== + dependencies: + is-inside-container "^1.0.0" + +is-yarn-global@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" + integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.4.3: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jiti@^1.20.0: + version "1.21.7" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" + integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== + +joi@^17.9.2: + version "17.13.8" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.8.tgz#92069d521eea09fd709d8abbb86b0ef02862224f" + integrity sha512-iPKOGmiRw1jxf/JOPwxmCcUQAOdF359mdzYiP2DJ+TMX0YK2zjK3D+zYOaGjpumWxOFF/l2xVWjRVK5bGSLdEw== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.2.tgz#8e44fb14a2643c59726bb15787b5f1512cb3d3fb" + integrity sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA== + dependencies: + argparse "^2.0.1" + +jsesc@^3.0.2, jsesc@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.1.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.1.tgz#b6e31717f22cc37330b081ce0051ed5de53af2f6" + integrity sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +katex@^0.16.47: + version "0.16.47" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.47.tgz#0a13a42c2deb4f74e61f162d440b9165a548030f" + integrity sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg== + dependencies: + commander "^8.3.0" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +khroma@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" + integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== + dependencies: + package-json "^8.1.0" + +launch-editor@^2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.1.tgz#f7e0da3f58aaea03fea01074d840b5f739ed7ddc" + integrity sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA== + dependencies: + picocolors "^1.1.1" + shell-quote "^1.8.4" + +layout-base@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" + integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== + +layout-base@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285" + integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lightningcss-android-arm64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz#9a6841f88ae50fc83502903892b41af41bc2b907" + integrity sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg== + +lightningcss-darwin-arm64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz#c0f2c31c0bfd19fa4dd3f18e957a1f1a152097d6" + integrity sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg== + +lightningcss-darwin-x64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz#cb0705965acb538c6683949ce6925fb3cdf7c361" + integrity sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ== + +lightningcss-freebsd-x64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz#763538828b26bab2680dadafcc84ee78b0eb502b" + integrity sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg== + +lightningcss-linux-arm-gnueabihf@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz#6862e3176a331aedbdec1ed352b4d7d0dd0784de" + integrity sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ== + +lightningcss-linux-arm64-gnu@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz#c6a3a2ed15141daf6bdc2628930f8e39bdf473aa" + integrity sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg== + +lightningcss-linux-arm64-musl@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz#7fa1334971fc82845f9827df6ef8a0b20914bac6" + integrity sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ== + +lightningcss-linux-x64-gnu@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz#8b927862ea8c2bbc6831a46509244b50d9936e55" + integrity sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg== + +lightningcss-linux-x64-musl@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz#0c525bb077dfd94404c059cfe42dad797e96aeaf" + integrity sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw== + +lightningcss-win32-arm64-msvc@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz#850ee1103dac989cfab50e3ac22d1a69e394e63d" + integrity sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA== + +lightningcss-win32-x64-msvc@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz#e343ae152eed3609dc6e11949d1a3bf39a1c946f" + integrity sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA== + +lightningcss@^1.27.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.33.0.tgz#c08867d71a79385c6e190214fd72fef3e5f95f0b" + integrity sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA== + dependencies: + detect-libc "^2.0.3" + optionalDependencies: + lightningcss-android-arm64 "1.33.0" + lightningcss-darwin-arm64 "1.33.0" + lightningcss-darwin-x64 "1.33.0" + lightningcss-freebsd-x64 "1.33.0" + lightningcss-linux-arm-gnueabihf "1.33.0" + lightningcss-linux-arm64-gnu "1.33.0" + lightningcss-linux-arm64-musl "1.33.0" + lightningcss-linux-x64-gnu "1.33.0" + lightningcss-linux-x64-musl "1.33.0" + lightningcss-win32-arm64-msvc "1.33.0" + lightningcss-win32-x64-msvc "1.33.0" + +lilconfig@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lodash-es@4.17.23: + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.23.tgz#58c4360fd1b5d33afc6c0bbd3d1149349b1138e0" + integrity sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg== + +lodash-es@^4.17.21: + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.18.1.tgz#b962eeb80d9d983a900bf342961fb7418ca10b1d" + integrity sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.20, lodash@^4.17.21: + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" + integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== + +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + +loose-envify@^1.0.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^11.0.0: + version "11.5.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.5.3.tgz#a7767b4034e35269562d2b9da2b185b5df70c421" + integrity sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +markdown-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" + integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== + +markdown-table@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" + integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== + +marked@^16.3.0: + version "16.4.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.2.tgz#4959a64be6c486f0db7467ead7ce288de54290a3" + integrity sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mdast-util-directive@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz#f3656f4aab6ae3767d3c72cfab5e8055572ccba1" + integrity sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + parse-entities "^4.0.0" + stringify-entities "^4.0.0" + unist-util-visit-parents "^6.0.0" + +mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz#70a3174c894e14df722abf43bc250cbae44b11df" + integrity sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg== + dependencies: + "@types/mdast" "^4.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + +mdast-util-from-markdown@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz#c95822b91aab75f18a4cbe8b2f51b873ed2cf0c7" + integrity sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + mdast-util-to-string "^4.0.0" + micromark "^4.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-decode-string "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-stringify-position "^4.0.0" + +mdast-util-frontmatter@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz#f5f929eb1eb36c8a7737475c7eb438261f964ee8" + integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + escape-string-regexp "^5.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-extension-frontmatter "^2.0.0" + +mdast-util-gfm-autolink-literal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz#abd557630337bd30a6d5a4bd8252e1c2dc0875d5" + integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== + dependencies: + "@types/mdast" "^4.0.0" + ccount "^2.0.0" + devlop "^1.0.0" + mdast-util-find-and-replace "^3.0.0" + micromark-util-character "^2.0.0" + +mdast-util-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz#7778e9d9ca3df7238cc2bd3fa2b1bf6a65b19403" + integrity sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + +mdast-util-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-task-list-item@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz#2cdf63b92c2a331406b0fb0db4c077c1b0331751" + integrity sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-gfm-autolink-literal "^2.0.0" + mdast-util-gfm-footnote "^2.0.0" + mdast-util-gfm-strikethrough "^2.0.0" + mdast-util-gfm-table "^2.0.0" + mdast-util-gfm-task-list-item "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-mdx-expression@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz#43f0abac9adc756e2086f63822a38c8d3c3a5096" + integrity sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-mdx-jsx@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz#fd04c67a2a7499efb905a8a5c578dddc9fdada0d" + integrity sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + parse-entities "^4.0.0" + stringify-entities "^4.0.0" + unist-util-stringify-position "^4.0.0" + vfile-message "^4.0.0" + +mdast-util-mdx@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz#792f9cf0361b46bee1fdf1ef36beac424a099c41" + integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-mdxjs-esm@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" + integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-phrasing@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" + integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== + dependencies: + "@types/mdast" "^4.0.0" + unist-util-is "^6.0.0" + +mdast-util-to-hast@^13.0.0: + version "13.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz#d7ff84ca499a57e2c060ae67548ad950e689a053" + integrity sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" + trim-lines "^3.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +mdast-util-to-markdown@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz#f910ffe60897f04bb4b7e7ee434486f76288361b" + integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + longest-streak "^3.0.0" + mdast-util-phrasing "^4.0.0" + mdast-util-to-string "^4.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-decode-string "^2.0.0" + unist-util-visit "^5.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" + integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== + dependencies: + "@types/mdast" "^4.0.0" + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^4.17.0, memfs@^4.43.1: + version "4.79.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.79.0.tgz#2e007b983d3e27f1b64ba49dfe6fd51e82f51fdb" + integrity sha512-vDFqA9WSa//xa3XIKwMmVqxgWWft4PMKW0k69gBM2rYOzZ3VqL9BrK3Kyl45jSxS7qImDgwejZzEb/xDWhP37g== + dependencies: + "@jsonjoy.com/fs-core" "4.79.0" + "@jsonjoy.com/fs-fsa" "4.79.0" + "@jsonjoy.com/fs-node" "4.79.0" + "@jsonjoy.com/fs-node-builtins" "4.79.0" + "@jsonjoy.com/fs-node-to-fsa" "4.79.0" + "@jsonjoy.com/fs-node-utils" "4.79.0" + "@jsonjoy.com/fs-print" "4.79.0" + "@jsonjoy.com/fs-snapshot" "4.79.0" + "@jsonjoy.com/json-pack" "^1.11.0" + "@jsonjoy.com/util" "^1.9.0" + glob-to-regex.js "^1.3.1" + thingies "^2.5.0" + tree-dump "^1.0.3" + tslib "^2.0.0" + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +mermaid@>=11.6.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-12.0.0.tgz#3c4cdf54fd24110c988b90def857127055eb842b" + integrity sha512-/wQXC9iBxoGV8p3erbvaXs9h77VyLDBH6GdayVjj3hEcSQhFU4N1WUhUppotCEqlIxI2pRMwjwBSwTB1MfZBgQ== + dependencies: + "@braintree/sanitize-url" "^7.1.2" + "@iconify/utils" "^3.0.2" + "@mermaid-js/parser" "^2.0.0" + "@types/d3" "^7.4.3" + "@upsetjs/venn.js" "^2.0.0" + chevrotain "~11.1.2" + cytoscape "^3.34.0" + cytoscape-cose-bilkent "^4.1.0" + cytoscape-fcose "^2.2.0" + d3 "^7.9.0" + d3-sankey "^0.12.3" + dagre-d3-es "7.0.14" + dayjs "^1.11.21" + dompurify "^3.4.12" + elkjs "^0.9.3" + es-toolkit "^1.45.1" + katex "^0.16.47" + khroma "^2.1.0" + marked "^16.3.0" + roughjs "^4.6.6" + stylis "^4.3.6" + ts-dedent "^2.2.0" + uuid "^11.1.0 || ^12 || ^13 || ^14.0.0" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromark-core-commonmark@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" + integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== + dependencies: + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-directive@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz#2eb61985d1995a7c1ff7621676a4f32af29409e8" + integrity sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + parse-entities "^4.0.0" + +micromark-extension-frontmatter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz#651c52ffa5d7a8eeed687c513cd869885882d67a" + integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg== + dependencies: + fault "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-autolink-literal@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== + dependencies: + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-strikethrough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz#86106df8b3a692b5f6a92280d3879be6be46d923" + integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-table@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.2.tgz#54dc246873c0c0bebd84600e578aeb8a5f5de78d" + integrity sha512-pRzm4kDTu0MjlmBkxmS9yYhw60nncfcEwu9NNdPFSQEFXS95ZKyIIyTSHu/o3ReBUrLKYEq+7YaXCRn/bPB4MA== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-tagfilter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-extension-gfm-task-list-item@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz#bcc34d805639829990ec175c3eea12bb5b781f2c" + integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== + dependencies: + micromark-extension-gfm-autolink-literal "^2.0.0" + micromark-extension-gfm-footnote "^2.0.0" + micromark-extension-gfm-strikethrough "^2.0.0" + micromark-extension-gfm-table "^2.0.0" + micromark-extension-gfm-tagfilter "^2.0.0" + micromark-extension-gfm-task-list-item "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-mdx-expression@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz#43d058d999532fb3041195a3c3c05c46fa84543b" + integrity sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-factory-mdx-expression "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-mdx-jsx@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz#ffc98bdb649798902fa9fc5689f67f9c1c902044" + integrity sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + micromark-factory-mdx-expression "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + vfile-message "^4.0.0" + +micromark-extension-mdx-md@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz#1d252881ea35d74698423ab44917e1f5b197b92d" + integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== + dependencies: + micromark-util-types "^2.0.0" + +micromark-extension-mdxjs-esm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz#de21b2b045fd2059bd00d36746081de38390d54a" + integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-position-from-estree "^2.0.0" + vfile-message "^4.0.0" + +micromark-extension-mdxjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz#b5a2e0ed449288f3f6f6c544358159557549de18" + integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== + dependencies: + acorn "^8.0.0" + acorn-jsx "^5.0.0" + micromark-extension-mdx-expression "^3.0.0" + micromark-extension-mdx-jsx "^3.0.0" + micromark-extension-mdx-md "^2.0.0" + micromark-extension-mdxjs-esm "^3.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-destination@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" + integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-label@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" + integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== + dependencies: + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-mdx-expression@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz#bb09988610589c07d1c1e4425285895041b3dfa9" + integrity sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-position-from-estree "^2.0.0" + vfile-message "^4.0.0" + +micromark-factory-space@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-space@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" + integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-title@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" + integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" + integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-character@^1.0.0, micromark-util-character@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-chunked@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" + integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-classify-character@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" + integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-combine-extensions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" + integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== + dependencies: + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" + integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-decode-string@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz#6cb99582e5d271e84efca8e61a807994d7161eb2" + integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + +micromark-util-events-to-acorn@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz#e7a8a6b55a47e5a06c720d5a1c4abae8c37c98f3" + integrity sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg== + dependencies: + "@types/estree" "^1.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + estree-util-visit "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + vfile-message "^4.0.0" + +micromark-util-html-tag-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" + integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== + +micromark-util-normalize-identifier@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" + integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-resolve-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" + integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-subtokenize@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" + integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-symbol@^1.0.0, micromark-util-symbol@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== + +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + +micromark-util-types@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== + +micromark-util-types@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" + integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== + +micromark@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.2.tgz#91395a3e1884a198e62116e33c9c568e39936fdb" + integrity sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromatch@^4.0.2, micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2", mime-db@^1.54.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +mime-types@2.1.18: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== + dependencies: + mime-db "~1.33.0" + +mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.35: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab" + integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A== + dependencies: + mime-db "^1.54.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + +mini-css-extract-plugin@^2.9.2: + version "2.10.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz#5c85ec9450c05d26e32531b465a15a08c3a57253" + integrity sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^10.2.2: + version "10.2.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.6.tgz#fd956bbe0b77241e9f15ac5dccb1c638060968ef" + integrity sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A== + dependencies: + brace-expansion "^5.0.8" + +minimist@^1.2.0, minimist@^1.2.3: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minimizer-webpack-plugin@^5.7.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.12.0.tgz#acef4a0bd3c5ee405f767a9d90e0173b55b16458" + integrity sha512-PCN1x1OzFeFB2GlP91s46q7Gz8Jf16Z7M45bzpoqrYZlh12QeY6tYVM5h299wbwy1DxnQ69VFmmh8Hb2Ff8mbw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.31" + jest-worker "^27.4.5" + schema-utils "^4.3.3" + terser "^5.51.0" + +minipass@^7.1.2, minipass@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" + integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mrmime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" + integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +nanoid@^3.3.18: + version "3.3.19" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.19.tgz#336d4aa4bcd4fb24d2cddede7ffeae40bec03f0a" + integrity sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug== + +napi-build-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e" + integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-abi@^3.3.0: + version "3.96.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.96.0.tgz#8b038bc6cca97d6cec2e9aafdb81b900da1ff80d" + integrity sha512-rebQ/lz7i0EkoLzUVSrKRzA69zMkwLp95kKMWoMDkkM00Suxz0D7zEQPwRml5fQum24mj7bPvmlgLAmu2JCiYg== + dependencies: + semver "^7.3.5" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-emoji@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.2.0.tgz#1d000e3c76e462577895be1b436f4aa2d6760eb0" + integrity sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw== + dependencies: + "@sindresorhus/is" "^4.6.0" + char-regex "^1.0.2" + emojilib "^2.4.0" + skin-tone "^2.0.0" + +node-releases@^2.0.57: + version "2.0.57" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.57.tgz#47827d34b86a98b4b7afacc1222878c286b6ef2d" + integrity sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.1.1.tgz#751a20c8520e5725404c06015fea21d7567f25ef" + integrity sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +null-loader@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.1.tgz#8e63bd3a2dd3c64236a4679428632edd0a6dbc6a" + integrity sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3, object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@^2.4.1, on-finished@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== + +once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^10.0.3: + version "10.2.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" + integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + wsl-utils "^0.1.0" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-retry@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" + integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== + dependencies: + "@types/retry" "0.12.2" + is-network-error "^1.0.0" + retry "^0.13.1" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +package-json-from-dist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +package-json@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== + dependencies: + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" + +package-manager-detector@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.8.0.tgz#70c9a2c4bd1a513dcd6cad006a9fcebec22a1253" + integrity sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-entities@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" + integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw== + dependencies: + "@types/unist" "^2.0.0" + character-entities-legacy "^3.0.0" + character-reference-invalid "^2.0.0" + decode-named-character-reference "^1.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-numeric-range@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== + +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" + integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== + dependencies: + domhandler "^5.0.3" + parse5 "^7.0.0" + +parse5@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== + dependencies: + entities "^6.0.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-data-parser@0.1.0, path-data-parser@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c" + integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w== + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + +path-is-inside@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" + integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + +path-to-regexp@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" + integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== + +path-to-regexp@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== + dependencies: + isarray "0.0.1" + +path-to-regexp@~0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.13.tgz#9b22ec16bc3ab88d05a0c7e369869421401ab17d" + integrity sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" + integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== + +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" + +pkijs@^3.3.3: + version "3.4.1" + resolved "https://registry.yarnpkg.com/pkijs/-/pkijs-3.4.1.tgz#b42c36b5143bc7ea2584e5d1f5bd4b5ac3ca4bca" + integrity sha512-Oo/NZcSWccq8KyoG7gLE9fnltgHns+pNCjCAp/WmjsUySi+sX7y4z4Xqu4fVb42CDHzRPl33fjzT15V1wvcyhA== + dependencies: + "@noble/hashes" "1.8.0" + asn1js "^3.0.6" + bytestreamjs "^2.0.1" + pvtsutils "^1.3.6" + pvutils "^1.1.3" + tslib "^2.8.1" + +points-on-curve@0.2.0, points-on-curve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1" + integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A== + +points-on-path@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52" + integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g== + dependencies: + path-data-parser "0.1.0" + points-on-curve "0.2.0" + +postcss-attribute-case-insensitive@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz#0c4500e3bcb2141848e89382c05b5a31c23033a3" + integrity sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-calc@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + dependencies: + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz#9a3df2296889e629fde18b873bb1f50a4ecf4b83" + integrity sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +postcss-color-hex-alpha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz#5dd3eba1f8facb4ea306cba6e3f7712e876b0c76" + integrity sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz#5ada28406ac47e0796dff4056b0a9d5a6ecead98" + integrity sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-colormin@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" + integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + colord "^2.9.3" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" + integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== + dependencies: + browserslist "^4.23.0" + postcss-value-parser "^4.2.0" + +postcss-custom-media@^11.0.6: + version "11.0.6" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz#6b450e5bfa209efb736830066682e6567bd04967" + integrity sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" + +postcss-custom-properties@^14.0.6: + version "14.0.6" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz#1af73a650bf115ba052cf915287c9982825fc90e" + integrity sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz#9448ed37a12271d7ab6cb364b6f76a46a4a323e8" + integrity sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + postcss-selector-parser "^7.0.0" + +postcss-dir-pseudo-class@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz#80d9e842c9ae9d29f6bf5fd3cf9972891d6cc0ca" + integrity sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-discard-comments@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" + integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== + +postcss-discard-duplicates@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" + integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== + +postcss-discard-empty@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" + integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== + +postcss-discard-overridden@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" + integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== + +postcss-discard-unused@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz#c1b0e8c032c6054c3fbd22aaddba5b248136f338" + integrity sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA== + dependencies: + postcss-selector-parser "^6.0.16" + +postcss-double-position-gradients@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz#b482d08b5ced092b393eb297d07976ab482d4cad" + integrity sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-focus-visible@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz#1f7904904368a2d1180b220595d77b6f8a957868" + integrity sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-focus-within@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz#ac01ce80d3f2e8b2b3eac4ff84f8e15cd0057bc7" + integrity sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz#d5ff0bdf923c06686499ed2b12e125fe64054fed" + integrity sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw== + +postcss-image-set-function@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz#538e94e16716be47f9df0573b56bbaca86e1da53" + integrity sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-lab-function@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz#eb555ac542607730eb0a87555074e4a5c6eef6e4" + integrity sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +postcss-loader@^7.3.4: + version "7.3.4" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" + integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== + dependencies: + cosmiconfig "^8.3.5" + jiti "^1.20.0" + semver "^7.5.4" + +postcss-logical@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-8.1.0.tgz#4092b16b49e3ecda70c4d8945257da403d167228" + integrity sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-merge-idents@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz#7b9c31c7bc823c94bec50f297f04e3c2b838ea65" + integrity sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g== + dependencies: + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + +postcss-merge-longhand@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" + integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^6.1.1" + +postcss-merge-rules@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" + integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + cssnano-utils "^4.0.2" + postcss-selector-parser "^6.0.16" + +postcss-minify-font-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" + integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" + integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== + dependencies: + colord "^2.9.3" + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" + integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== + dependencies: + browserslist "^4.23.0" + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" + integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== + dependencies: + postcss-selector-parser "^6.0.16" + +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.5: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" + integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nesting@^13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-13.0.2.tgz#fde0d4df772b76d03b52eccc84372e8d1ca1402e" + integrity sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ== + dependencies: + "@csstools/selector-resolve-nested" "^3.1.0" + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + +postcss-normalize-charset@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" + integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== + +postcss-normalize-display-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" + integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" + integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" + integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" + integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" + integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" + integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== + dependencies: + browserslist "^4.23.0" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" + integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" + integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-opacity-percentage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz#0b0db5ed5db5670e067044b8030b89c216e1eb0a" + integrity sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ== + +postcss-ordered-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" + integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== + dependencies: + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz#f5252b4a2ee16c68cd8a9029edb5370c4a9808af" + integrity sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-10.0.0.tgz#ba36ee4786ca401377ced17a39d9050ed772e5a9" + integrity sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^10.2.1: + version "10.6.1" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.6.1.tgz#df30cfc54e90af2dcff5f94104e6f272359c9f65" + integrity sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g== + dependencies: + "@csstools/postcss-alpha-function" "^1.0.1" + "@csstools/postcss-cascade-layers" "^5.0.2" + "@csstools/postcss-color-function" "^4.0.12" + "@csstools/postcss-color-function-display-p3-linear" "^1.0.1" + "@csstools/postcss-color-mix-function" "^3.0.12" + "@csstools/postcss-color-mix-variadic-function-arguments" "^1.0.2" + "@csstools/postcss-content-alt-text" "^2.0.8" + "@csstools/postcss-contrast-color-function" "^2.0.12" + "@csstools/postcss-exponential-functions" "^2.0.9" + "@csstools/postcss-font-format-keywords" "^4.0.0" + "@csstools/postcss-gamut-mapping" "^2.0.11" + "@csstools/postcss-gradients-interpolation-method" "^5.0.12" + "@csstools/postcss-hwb-function" "^4.0.12" + "@csstools/postcss-ic-unit" "^4.0.4" + "@csstools/postcss-initial" "^2.0.1" + "@csstools/postcss-is-pseudo-class" "^5.0.3" + "@csstools/postcss-light-dark-function" "^2.0.11" + "@csstools/postcss-logical-float-and-clear" "^3.0.0" + "@csstools/postcss-logical-overflow" "^2.0.0" + "@csstools/postcss-logical-overscroll-behavior" "^2.0.0" + "@csstools/postcss-logical-resize" "^3.0.0" + "@csstools/postcss-logical-viewport-units" "^3.0.4" + "@csstools/postcss-media-minmax" "^2.0.9" + "@csstools/postcss-media-queries-aspect-ratio-number-values" "^3.0.5" + "@csstools/postcss-nested-calc" "^4.0.0" + "@csstools/postcss-normalize-display-values" "^4.0.1" + "@csstools/postcss-oklab-function" "^4.0.12" + "@csstools/postcss-position-area-property" "^1.0.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/postcss-property-rule-prelude-list" "^1.0.0" + "@csstools/postcss-random-function" "^2.0.1" + "@csstools/postcss-relative-color-syntax" "^3.0.12" + "@csstools/postcss-scope-pseudo-class" "^4.0.1" + "@csstools/postcss-sign-functions" "^1.1.4" + "@csstools/postcss-stepped-value-functions" "^4.0.9" + "@csstools/postcss-syntax-descriptor-syntax-production" "^1.0.1" + "@csstools/postcss-system-ui-font-family" "^1.0.0" + "@csstools/postcss-text-decoration-shorthand" "^4.0.3" + "@csstools/postcss-trigonometric-functions" "^4.0.9" + "@csstools/postcss-unset-value" "^4.0.0" + autoprefixer "^10.4.23" + browserslist "^4.28.1" + css-blank-pseudo "^7.0.1" + css-has-pseudo "^7.0.3" + css-prefers-color-scheme "^10.0.0" + cssdb "^8.6.0" + postcss-attribute-case-insensitive "^7.0.1" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^7.0.12" + postcss-color-hex-alpha "^10.0.0" + postcss-color-rebeccapurple "^10.0.0" + postcss-custom-media "^11.0.6" + postcss-custom-properties "^14.0.6" + postcss-custom-selectors "^8.0.5" + postcss-dir-pseudo-class "^9.0.1" + postcss-double-position-gradients "^6.0.4" + postcss-focus-visible "^10.0.1" + postcss-focus-within "^9.0.1" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^6.0.0" + postcss-image-set-function "^7.0.0" + postcss-lab-function "^7.0.12" + postcss-logical "^8.1.0" + postcss-nesting "^13.0.2" + postcss-opacity-percentage "^3.0.0" + postcss-overflow-shorthand "^6.0.0" + postcss-page-break "^3.0.4" + postcss-place "^10.0.0" + postcss-pseudo-class-any-link "^10.0.1" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^8.0.1" + +postcss-pseudo-class-any-link@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz#06455431171bf44b84d79ebaeee9fd1c05946544" + integrity sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-reduce-idents@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz#b0d9c84316d2a547714ebab523ec7d13704cd486" + integrity sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" + integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" + integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz#f2df9c6ac9f95e9fe4416ca41a957eda16130172" + integrity sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: + version "6.1.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz#fdec4ca80f5781bd216ca9bf89a2a0fccfffa5f0" + integrity sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-selector-parser@^7.0.0: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz#45e970f2d93d4547d6754167ed1132f43012c4bf" + integrity sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-sort-media-queries@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz#4556b3f982ef27d3bac526b99b6c0d3359a6cf97" + integrity sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA== + dependencies: + sort-css-media-queries "2.2.0" + +postcss-svgo@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" + integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^3.2.0" + +postcss-unique-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" + integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== + dependencies: + postcss-selector-parser "^6.0.16" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-zindex@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-6.0.2.tgz#e498304b83a8b165755f53db40e2ea65a99b56e1" + integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== + +postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.5.4: + version "8.5.28" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.28.tgz#da4563a99a06e62d6c1cd1acae363224bcaed6e9" + integrity sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A== + dependencies: + nanoid "^3.3.18" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prebuild-install@^7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" + integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^2.0.0" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +prism-react-renderer@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz#ac63b7f78e56c8f2b5e76e823a976d5ede77e35f" + integrity sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig== + dependencies: + "@types/prismjs" "^1.26.0" + clsx "^2.0.0" + +prismjs@^1.29.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9" + integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-information@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.2.0.tgz#0809b34264e995c0bfcd3227028a1e35210af80a" + integrity sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg== + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +proxy-addr@~2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.8.tgz#624e760fd8ab06b1b8320c2f8506d4422cf8e932" + integrity sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pump@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" + integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pupa@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.3.0.tgz#bc4036f9e8920c08ad472bc18fb600067cb83810" + integrity sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA== + dependencies: + escape-goat "^4.0.0" + +pvtsutils@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.6.tgz#ec46e34db7422b9e4fdc5490578c1883657d6001" + integrity sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg== + dependencies: + tslib "^2.8.1" + +pvutils@^1.1.3, pvutils@^1.1.5: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.2.0.tgz#4b5487a9cccd52d275b0538775790a3ca982bc22" + integrity sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg== + +qs@~6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.16.0.tgz#c22c723a28a920f3aacdce8289fabd43eccb79fd" + integrity sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA== + dependencies: + es-define-property "^1.0.1" + side-channel "^1.1.1" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== + +range-parser@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.3.0.tgz#d7f19be812bb62721472b45d3be219ef09572b47" + integrity sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@~2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + +rc@1.2.8, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dom@^19.0.0: + version "19.3.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.3.0.tgz#a0ff19161d7f4e9be5469a07278b0c06e00f9001" + integrity sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q== + dependencies: + scheduler "^0.28.0" + +react-fast-compare@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +"react-helmet-async@npm:@slorber/react-helmet-async@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz#11fbc6094605cf60aa04a28c17e0aab894b4ecff" + integrity sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A== + dependencies: + "@babel/runtime" "^7.12.5" + invariant "^2.2.4" + prop-types "^15.7.2" + react-fast-compare "^3.2.0" + shallowequal "^1.1.0" + +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^19.2.3: + version "19.3.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.3.0.tgz#716028d67e9993d23a2d353c6d08a3c1ef2bbeb4" + integrity sha512-UpMYezM4v5/18F28aC66AEsjXIgE02kyEMH6yLdgLXu/UTfa1Ntwck/nNLrbqJsEXW7gPb0coNO9FQse9WTovA== + +react-json-view-lite@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz#c7ff011c7cc80e9900abc7aa4916c6a5c6d6c1c6" + integrity sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g== + +react-loadable-ssr-addon-v5-slorber@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.3.tgz#bb3791bf481222c63a5bc6b96ee23f68cb5614b9" + integrity sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ== + dependencies: + "@babel/runtime" "^7.10.3" + +"react-loadable@npm:@docusaurus/react-loadable@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz#de6c7f73c96542bd70786b8e522d535d69069dc4" + integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== + dependencies: + "@types/react" "*" + +react-router-config@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" + integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== + dependencies: + "@babel/runtime" "^7.1.2" + +react-router-dom@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.3.4" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.3.4, react-router@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^19.0.0: + version "19.3.0" + resolved "https://registry.yarnpkg.com/react/-/react-19.3.0.tgz#e20aa3a14687075ce863351b5878b0608c3fbfb2" + integrity sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog== + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recma-build-jsx@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz#c02f29e047e103d2fab2054954e1761b8ea253c4" + integrity sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew== + dependencies: + "@types/estree" "^1.0.0" + estree-util-build-jsx "^3.0.0" + vfile "^6.0.0" + +recma-jsx@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/recma-jsx/-/recma-jsx-1.0.1.tgz#58e718f45e2102ed0bf2fa994f05b70d76801a1a" + integrity sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w== + dependencies: + acorn-jsx "^5.0.0" + estree-util-to-js "^2.0.0" + recma-parse "^1.0.0" + recma-stringify "^1.0.0" + unified "^11.0.0" + +recma-parse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/recma-parse/-/recma-parse-1.0.0.tgz#c351e161bb0ab47d86b92a98a9d891f9b6814b52" + integrity sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ== + dependencies: + "@types/estree" "^1.0.0" + esast-util-from-js "^2.0.0" + unified "^11.0.0" + vfile "^6.0.0" + +recma-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/recma-stringify/-/recma-stringify-1.0.0.tgz#54632030631e0c7546136ff9ef8fde8e7b44f130" + integrity sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g== + dependencies: + "@types/estree" "^1.0.0" + estree-util-to-js "^2.0.0" + unified "^11.0.0" + vfile "^6.0.0" + +reflect-metadata@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b" + integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q== + +regenerate-unicode-properties@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz#aa113812ba899b630658c7623466be71e1f86f66" + integrity sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regexpu-core@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" + integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.2" + regjsgen "^0.8.0" + regjsparser "^0.13.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.2.1" + +registry-auth-token@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.1.1.tgz#f1ff69c8e492e7edee07110b4752dd0a8aa82853" + integrity sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q== + dependencies: + "@pnpm/npm-conf" "^3.0.2" + +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.13.0: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.3.tgz#2f0ac72d6d4604d4b38f841ff537ebd9b72fd214" + integrity sha512-ycwFAS14Jw4mppvmK4GR/J6u3WpWpjkEApehuHtLc/8VpPNpDMbQ4WjqwplXifGeyKOzHSFLmSPqzksDQE2Sfg== + dependencies: + jsesc "~3.1.0" + +rehype-raw@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4" + integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== + dependencies: + "@types/hast" "^3.0.0" + hast-util-raw "^9.0.0" + vfile "^6.0.0" + +rehype-recma@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rehype-recma/-/rehype-recma-1.0.0.tgz#d68ef6344d05916bd96e25400c6261775411aa76" + integrity sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw== + dependencies: + "@types/estree" "^1.0.0" + "@types/hast" "^3.0.0" + hast-util-to-estree "^3.0.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +remark-directive@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/remark-directive/-/remark-directive-3.0.1.tgz#689ba332f156cfe1118e849164cc81f157a3ef0a" + integrity sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-directive "^3.0.0" + micromark-extension-directive "^3.0.0" + unified "^11.0.0" + +remark-emoji@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-4.0.1.tgz#671bfda668047689e26b2078c7356540da299f04" + integrity sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg== + dependencies: + "@types/mdast" "^4.0.2" + emoticon "^4.0.1" + mdast-util-find-and-replace "^3.0.1" + node-emoji "^2.1.0" + unified "^11.0.4" + +remark-frontmatter@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz#b68d61552a421ec412c76f4f66c344627dc187a2" + integrity sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-frontmatter "^2.0.0" + micromark-extension-frontmatter "^2.0.0" + unified "^11.0.0" + +remark-gfm@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.1.tgz#33227b2a74397670d357bf05c098eaf8513f0d6b" + integrity sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-gfm "^3.0.0" + micromark-extension-gfm "^3.0.0" + remark-parse "^11.0.0" + remark-stringify "^11.0.0" + unified "^11.0.0" + +remark-mdx@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-3.1.1.tgz#047f97038bc7ec387aebb4b0a4fe23779999d845" + integrity sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg== + dependencies: + mdast-util-mdx "^3.0.0" + micromark-extension-mdxjs "^3.0.0" + +remark-parse@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" + integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + micromark-util-types "^2.0.0" + unified "^11.0.0" + +remark-rehype@^11.0.0: + version "11.1.2" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.2.tgz#2addaadda80ca9bd9aa0da763e74d16327683b37" + integrity sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + mdast-util-to-hast "^13.0.0" + unified "^11.0.0" + vfile "^6.0.0" + +remark-stringify@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-to-markdown "^2.0.0" + unified "^11.0.0" + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +"require-like@>= 0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve@^1.19.0, resolve@^1.22.11: + version "1.22.12" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" + integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== + dependencies: + es-errors "^1.3.0" + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rimraf@^6.0.1: + version "6.1.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.1.3.tgz#afbee236b3bd2be331d4e7ce4493bac1718981af" + integrity sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA== + dependencies: + glob "^13.0.3" + package-json-from-dist "^1.0.1" + +robust-predicates@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.3.tgz#1099061b3349e2c5abec6c2ab0acd440d24d4062" + integrity sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA== + +roughjs@^4.6.6: + version "4.6.6" + resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.6.6.tgz#1059f49a5e0c80dee541a005b20cc322b222158b" + integrity sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ== + dependencies: + hachure-fill "^0.5.2" + path-data-parser "^0.1.0" + points-on-curve "^0.2.0" + points-on-path "^0.2.1" + +rtlcss@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-4.3.0.tgz#f8efd4d5b64f640ec4af8fa25b65bacd9e07cc97" + integrity sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + postcss "^8.4.21" + strip-json-comments "^3.1.1" + +run-applescript@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" + integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rw@1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4, sax@^1.5.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.1.tgz#4c23cf608c0b693ab54b4b5888e92cfe977b9843" + integrity sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q== + +scheduler@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.28.0.tgz#03d3ca348aeaf8b7502f64468f217b27523f9695" + integrity sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw== + +schema-dts@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/schema-dts/-/schema-dts-1.1.5.tgz#9237725d305bac3469f02b292a035107595dc324" + integrity sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg== + +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.3, schema-utils@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.5.0.tgz#aaf8d588bd2b19511175175a5222baef648c009c" + integrity sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA== + dependencies: + "@types/json-schema" "^7.0.15" + ajv "^8.20.0" + ajv-formats "^3.0.1" + ajv-keywords "^5.1.0" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== + +selfsigned@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-5.5.0.tgz#4c9ab7c7c9f35f18fb6a9882c253eb0e6bd6557b" + integrity sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew== + dependencies: + "@peculiar/x509" "^1.14.2" + pkijs "^3.3.3" + +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== + dependencies: + semver "^7.3.5" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: + version "7.8.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69" + integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA== + +send@~0.19.0, send@~0.19.1: + version "0.19.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" + integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "~0.5.2" + http-errors "~2.0.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.4.1" + range-parser "~1.2.1" + statuses "~2.0.2" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-handler@^6.1.7: + version "6.1.7" + resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.7.tgz#e9bb864e87ee71e8dab874cde44d146b77e3fb78" + integrity sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg== + dependencies: + bytes "3.0.0" + content-disposition "0.5.2" + mime-types "2.1.18" + minimatch "3.1.5" + path-is-inside "1.0.2" + path-to-regexp "3.3.0" + range-parser "1.2.0" + +serve-index@^1.9.1: + version "1.9.2" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.2.tgz#2988e3612106d78a5e4849ddff552ce7bd3d9bcb" + integrity sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ== + dependencies: + accepts "~1.3.8" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.8.0" + mime-types "~2.1.35" + parseurl "~1.3.3" + +serve-static@~1.16.2: + version "1.16.3" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" + integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "~0.19.1" + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setprototypeof@1.2.0, setprototypeof@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +sharp@^0.32.3: + version "0.32.6" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" + integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== + dependencies: + color "^4.2.3" + detect-libc "^2.0.2" + node-addon-api "^6.1.0" + prebuild-install "^7.1.1" + semver "^7.5.4" + simple-get "^4.0.1" + tar-fs "^3.0.4" + tunnel-agent "^0.6.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.4: + version "1.10.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.10.0.tgz#482033e192e4f5c07151521ffa03400ec71b1b0f" + integrity sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA== + +side-channel-list@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127" + integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.4" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.1.tgz#ea02c62e05dc4bea67d4442f0fb71ee192f8e0ab" + integrity sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.4" + side-channel-list "^1.0.1" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0, simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.4.tgz#a8d11a45a11600d6a1ecdff6363329e3648c3667" + integrity sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw== + dependencies: + is-arrayish "^0.3.1" + +sirv@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +sitemap@^7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.3.tgz#2b756f79f0b77527c0eaba280c722e4c66c08886" + integrity sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw== + dependencies: + "@types/node" "^17.0.5" + "@types/sax" "^1.2.1" + arg "^5.0.0" + sax "^1.2.4" + +skin-tone@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/skin-tone/-/skin-tone-2.0.0.tgz#4e3933ab45c0d4f4f781745d64b9f4c208e41237" + integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== + dependencies: + unicode-emoji-modifier-base "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sort-css-media-queries@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz#aa33cf4a08e0225059448b6c40eddbf9f1c8334c" + integrity sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA== + +source-map-js@^1.0.1, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.0: + version "0.7.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== + +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +srcset@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" + integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== + +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@~2.0.1, statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + +std-env@^3.7.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.10.0.tgz#d810b27e3a073047b2b5e40034881f5ea6f9c83b" + integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== + +streamx@^2.12.5, streamx@^2.15.0, streamx@^2.25.0: + version "2.28.1" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.28.1.tgz#376cd42a089505a69bec0efdb5189aa45586141f" + integrity sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA== + dependencies: + events-universal "^1.0.0" + fast-fifo "^1.3.2" + text-decoder "^1.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3" + integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== + dependencies: + ansi-regex "^6.2.2" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +style-to-js@^1.0.0: + version "1.1.21" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.21.tgz#2908941187f857e79e28e9cd78008b9a0b3e0e8d" + integrity sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ== + dependencies: + style-to-object "1.0.14" + +style-to-object@1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.14.tgz#1d22f0e7266bb8c6d8cae5caf4ec4f005e08f611" + integrity sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw== + dependencies: + inline-style-parser "0.2.7" + +stylehacks@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" + integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== + dependencies: + browserslist "^4.23.0" + postcss-selector-parser "^6.0.16" + +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + +stylis@^4.3.6: + version "4.4.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.4.0.tgz#c5846c9345f4bfc51bd0cbd7ca35a0744f485a5d" + integrity sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.1.0.tgz#f808c50953207b230fea6200d866697af61617a4" + integrity sha512-bwLf38YmY+TDYHJw1Ex0Co8c4yeXuJAo8YnXGZrscxrvYoVVIvLeniEkV1Ks/54VteMnL4FtyN1+P+TZJdUPmQ== + +svgo@^3.0.2, svgo@^3.2.0: + version "3.3.5" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.5.tgz#8a3d9557ab2f386eca7e24760385849554985a1c" + integrity sha512-8SQMzdrvWaD8deUmrnYB+ASyxBVgWUOilg+A75nE/76WdLpj6LopCwiAVvkzkcqy/9b7t2Mg7faFLjg0ZRcZ3w== + dependencies: + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.0.0" + sax "^1.5.0" + +swc-loader@^0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.7.tgz#2d1611ab314c5d8342d74aa5e5901b3fbf490de2" + integrity sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w== + dependencies: + "@swc/counter" "^0.1.3" + +tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" + integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== + +tar-fs@^2.0.0: + version "2.1.5" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.5.tgz#33e9c29413dce0c58ada7ff77db4e5a30afffe70" + integrity sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-fs@^3.0.4: + version "3.1.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.1.3.tgz#05668cc68a30741c3813f9c16593b8dec7dcbcd1" + integrity sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ== + dependencies: + pump "^3.0.0" + tar-stream "^3.1.5" + optionalDependencies: + bare-fs "^4.0.1" + bare-path "^3.0.0" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar-stream@^3.1.5: + version "3.2.1" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.2.1.tgz#952d72f7aba68ce5cb802ef2e0b19f1bd989140d" + integrity sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ== + dependencies: + b4a "^1.6.4" + bare-fs "^4.5.5" + fast-fifo "^1.2.0" + streamx "^2.15.0" + +teex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/teex/-/teex-1.0.1.tgz#b8fa7245ef8e8effa8078281946c85ab780a0b12" + integrity sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg== + dependencies: + streamx "^2.12.5" + +terser-webpack-plugin@^5.3.9: + version "5.6.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz#47bc41bd8b8fab8383b62ec763b7394829097e7b" + integrity sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + terser "^5.31.1" + +terser@^5.10.0, terser@^5.15.1, terser@^5.31.1, terser@^5.51.0: + version "5.51.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.51.2.tgz#555912425a7f2ff7737425c3718fa76c7069f6ef" + integrity sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.15.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-decoder@^1.1.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.7.tgz#5d073a9a74b9c0a9d28dfadcab96b604af57d8ba" + integrity sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ== + dependencies: + b4a "^1.6.4" + +thingies@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.1.tgz#4eb28e2585a75288f1765a0b08f1dfa020357a6f" + integrity sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + +tiny-invariant@^1.0.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + +tiny-warning@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tinyexec@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.3.1.tgz#16a2e3c6e23fafce72640e678e651db36145b9c6" + integrity sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA== + +tinypool@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.1.1.tgz#059f2d042bd37567fbc017d3d426bdd2a2612591" + integrity sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1, toidentifier@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tree-dump@^1.0.3, tree-dump@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== + +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +trough@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" + integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== + +ts-dedent@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.3.0.tgz#8fac36c7902b541c154ac13a27ac467997af11f8" + integrity sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg== + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.0, tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsyringe@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/tsyringe/-/tsyringe-4.10.0.tgz#d0c95815d584464214060285eaaadd94aa03299c" + integrity sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw== + dependencies: + tslib "^1.9.3" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-fest@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.13.0, type-fest@^2.5.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +undici-types@~8.9.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-8.9.0.tgz#e240d97c8b5d85e5347ce73d25865c7906c1ec9f" + integrity sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + +unicode-emoji-modifier-base@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459" + integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz#65a7adfad8574c219890e219285ce4c64ed67eaa" + integrity sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz#301d4f8a43d2b75c97adfad87c9dd5350c9475d1" + integrity sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ== + +unified@^11.0.0, unified@^11.0.3, unified@^11.0.4: + version "11.0.5" + resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.5.tgz#f66677610a5c0a9ee90cab2b8d4d66037026d9e1" + integrity sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA== + dependencies: + "@types/unist" "^3.0.0" + bail "^2.0.0" + devlop "^1.0.0" + extend "^3.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^6.0.0" + +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== + dependencies: + crypto-random-string "^4.0.0" + +unist-util-is@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9" + integrity sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position-from-estree@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz#d94da4df596529d1faa3de506202f0c9a23f2200" + integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-visit-parents@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz#777df7fb98652ce16b4b7cd999d0a1a40efa3a02" + integrity sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-visit@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468" + integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz#197e21fb2561fa89f8b94fad605a2b296a18993a" + integrity sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +update-notifier@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" + integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== + dependencies: + boxen "^7.0.0" + chalk "^5.0.1" + configstore "^6.0.0" + has-yarn "^3.0.0" + import-lazy "^4.0.0" + is-ci "^3.0.1" + is-installed-globally "^0.4.0" + is-npm "^6.0.0" + is-yarn-global "^0.4.0" + latest-version "^7.0.0" + pupa "^3.1.0" + semver "^7.3.7" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utility-types@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^11.0.0, "uuid@^11.1.0 || ^12 || ^13 || ^14.0.0", uuid@^8.3.2: + version "11.1.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.1.tgz#f6d81d2e1c65d00762e5e29b16c5d2d995e208ad" + integrity sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ== + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vfile-location@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.3.tgz#cb9eacd20f2b6426d19451e0eafa3d0a846225c3" + integrity sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg== + dependencies: + "@types/unist" "^3.0.0" + vfile "^6.0.0" + +vfile-message@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.3.tgz#87b44dddd7b70f0641c2e3ed0864ba73e2ea8df4" + integrity sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + +vfile@^6.0.0, vfile@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + dependencies: + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" + +watchpack@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.2.tgz#e12e82d84674266fc1c6dbfe38891b92ff0522ec" + integrity sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg== + dependencies: + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + +webpack-bundle-analyzer@^4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" + integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + debounce "^1.2.1" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + html-escaper "^2.0.2" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + +webpack-dev-middleware@^7.4.2: + version "7.4.6" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.6.tgz#c27229cb157842882732ee5125fa217a2c6466dc" + integrity sha512-yBWCMvIfUmuhAE8vdqUKzH0vg9kuWN0KeG4vBnqRplUFHRU7lMQjkiJWxVQzvo2BTewqhPhDlMB41rAt2jVA9A== + dependencies: + colorette "^2.0.10" + memfs "^4.43.1" + mime-types "^3.0.1" + on-finished "^2.4.1" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^5.2.2: + version "5.2.6" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.6.tgz#3a5d41233cbb7504f814d19e59a59173fb8ae23d" + integrity sha512-HNLRmamRvVavZQ+avceZifmv8hmdUjg43t6MI4SqJDwFdW7RPQwH5vzGhDRZSX59SgfbeHhLnq3g+uooWo7pVw== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.25" + "@types/express-serve-static-core" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" + ansi-html-community "^0.0.8" + bonjour-service "^1.2.1" + chokidar "^3.6.0" + colorette "^2.0.10" + compression "^1.8.1" + connect-history-api-fallback "^2.0.0" + express "^4.22.1" + graceful-fs "^4.2.6" + http-proxy-middleware "^2.0.9" + ipaddr.js "^2.1.0" + launch-editor "^2.14.1" + open "^10.0.3" + p-retry "^6.2.0" + schema-utils "^4.2.0" + selfsigned "^5.5.0" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^7.4.2" + ws "^8.18.0" + +webpack-merge@^5.9.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-merge@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" + integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.1" + +webpack-sources@^3.5.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.5.3.tgz#35e2bec56951011bbaaffb450936222113bac031" + integrity sha512-F/zS5rEcCKxS6hrhxkLjOzblTsuv89rkuDyP+vToquds6KfPJ3fDqg9UNzbtJcA2AgXZOLMYLQqZpuyE5zDfxg== + +webpack@^5.88.1, webpack@^5.95.0: + version "5.111.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.111.1.tgz#7c12cd014fbb9bfd8509a6cfc6f1c79f4e06cade" + integrity sha512-cNypaz0RP+S4cvQVi1M/3bRUkvNP0xZpL0TjFx+c6jg64VbxD+2weWDgY9UnjRI6dhZgtaj8DU76GGFcJ79xPQ== + dependencies: + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + browserslist "^4.28.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.25.0" + es-module-lexer "^2.1.0" + events "^3.2.0" + graceful-fs "^4.2.11" + mime-db "^1.54.0" + minimizer-webpack-plugin "^5.7.0" + schema-utils "^4.5.0" + tapable "^2.3.0" + watchpack "^2.5.2" + webpack-sources "^3.5.1" + +webpackbar@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-7.0.0.tgz#7228d32881af2392381b6514499ddea73cdf218a" + integrity sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q== + dependencies: + ansis "^3.2.0" + consola "^3.2.3" + pretty-time "^1.1.0" + std-env "^3.7.0" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.5.tgz#569d22764ab21f2de20af0e74b411e8ae5a0fa46" + integrity sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + +wildcard@^2.0.0, wildcard@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.3.1: + version "7.5.13" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.13.tgz#12aa507eaca76c295c278b1aebf4698ab2c1845f" + integrity sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA== + +ws@^8.18.0: + version "8.21.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.3.tgz#660b4faddb6a3e575c86e078126919961f4de4fc" + integrity sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw== + +wsl-utils@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" + integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== + dependencies: + is-wsl "^3.1.0" + +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== + +xml-js@^1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.10.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.3.tgz#76e407ed95c42684fb8e14641e5de62fe65bbcb3" + integrity sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA== + +yocto-queue@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.2.tgz#3e09c95d3f1aa89a58c114c99223edf639152c00" + integrity sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ== + +zwitch@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From ac3d2211dcbd670f24f629133cce2941e21d192f Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Sat, 26 Sep 2026 04:17:10 +1000 Subject: [PATCH 10/17] fix: first live run - canonical pins, SDK-evidenced deletes, truthful smoke harness - downloads written as canonical JSON: the definition servers serialise maps in a non-deterministic key order, so raw-byte pins drifted between two fetches of identical content (NOTES.md item 20) - models.delete / resources.delete (org and team forms) injected from ngcsdk evidence: the definition declares no DELETE for either and the generic artifacts family only takes helm-charts, endpoints, agents, blueprints, apis, playbooks and skills - "delete via artifacts with artifact_type = models" was never possible; docs, mock, integration and smoke updated (342 mapped operations) - smoke harness: pystackql 3.8.4 execute() swallows an HTTP error on a SELECT into an empty result, so a 403 passed as "no rows"; empty SELECTs are re-probed through executeStmt(); the catalog probe discovers a model instead of guessing one; the invalid `containers` artifact type replaced - NOTES.md item 21a records the first live run against the INDIVIDUAL org: public catalog works with the key, every org / registry / NVCF call is refused (403 Access Denied on NGC, 401/403 on NVCF) - the signature of a key without the Private Registry / Cloud Functions service scopes; the legacy token exchange and the ApiKey/basic variants are ruled out Co-Authored-By: Claude Fable 5.1 --- CLAUDE.md | 4 +- NOTES.md | 11 +- README.md | 6 +- provider-dev/config/all_services.csv | 4 + provider-dev/config/clean_report.json | 12 +- provider-dev/config/endpoint_inventory.csv | 4 + provider-dev/config/service_names.json | 2 +- .../docgen/provider-data/headerContent1.txt | 2 +- .../docgen/provider-data/headerContent2.txt | 10 +- .../downloaded/cleaned/ngc_models.json | 212 ++++++++++++++++++ .../src/nvidia/v00.00.00000/provider.yaml | 10 +- .../services/private_registry.yaml | 156 ++++++++++++- provider-dev/scripts/build_inventory.mjs | 2 + provider-dev/scripts/clean_specs.mjs | 166 ++++++++------ provider-dev/source/private_registry.yaml | 116 +++++++++- tests/integration/run_integration_tests.mjs | 7 +- tests/offline_validation.mjs | 3 +- tests/smoke_test.py | 21 +- website/docs/index.md | 10 +- .../services/private_registry/models/index.md | 47 ++++ .../private_registry/resources/index.md | 47 ++++ 21 files changed, 744 insertions(+), 108 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 0fe84b3..4ff214f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,7 +2,7 @@ ## Project -This repository builds and documents the `nvidia` provider for [StackQL](https://github.com/stackql/stackql), enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, generic artifacts such as containers and helm charts, versions and files, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. +This repository builds and documents the `nvidia` provider for [StackQL](https://github.com/stackql/stackql), enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, generic artifacts such as helm charts, endpoints and blueprints, versions and files, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. **Scope notes, recorded so they are never relitigated**: Run:ai and DGX Cloud Lepton have their own control planes and are reserved future siblings. The NIM / API-catalog inference endpoints (`integrate.api.nvidia.com`) are a data-plane LLM surface, out of scope. Artifact binary push/pull is the registry data plane, skipped (`data-plane-file-transfer`). Streaming and gRPC invocation forms are not in the published spec; the HTTP-polling form is mapped (`nvcf_invocation`). Fleet Command, Base Command batch, subscription/billing and notification definitions are out of scope (recorded in `download_manifest.json`). @@ -10,7 +10,7 @@ The provider is a hybrid build: paths, parameters and request bodies come from t ## Positioning context -NVIDIA publishes a Go Terraform provider ([`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc)) covering NVCF functions and telemetry endpoints (one resource and one data source each). State that once, factually. This provider's counter is mechanical completeness from the published definitions (338 operations, 7 services, 83 resources) and the query surfaces that matter: GPU and cluster-group inventory, NVCF fleet state by deployment specification, function sharing audits, registry estate reports, org membership - the AI infrastructure control plane as data. Capability statements and runnable examples, never editorializing. +NVIDIA publishes a Go Terraform provider ([`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc)) covering NVCF functions and telemetry endpoints (one resource and one data source each). State that once, factually. This provider's counter is mechanical completeness from the published definitions (342 operations, 7 services, 83 resources) and the query surfaces that matter: GPU and cluster-group inventory, NVCF fleet state by deployment specification, function sharing audits, registry estate reports, org membership - the AI infrastructure control plane as data. Capability statements and runnable examples, never editorializing. ## Spec sources (three, all pinned) diff --git a/NOTES.md b/NOTES.md index 84691f7..583fe65 100644 --- a/NOTES.md +++ b/NOTES.md @@ -26,11 +26,11 @@ Sibling findings reused, not re-derived: supabase (the project-scope server temp 10. **Definition defects repaired in clean, with a report** (`clean_report.json`): `ngc_kas` declares a relative server (`/`), 29 path parameters whose `name` is prose ("user id or b64encoded email") rather than the template token, one stray path parameter with no token, 16 query parameters with prose names ("Filter using org name" - wire names unknown, dropped) and 24 cookie parameters (`ncid`, `VisitorID`; any-sdk has no cookie location); `ngc_models` has 16 cookie parameters (`sc_cmp`) and camelCase / kebab-case path tokens used inconsistently (`{orgName}` and `{org-name}` for the same thing). Every path parameter is snake_cased in clean (provider-utils' split only converts the first hyphen per token). -11. **Mapping - green.** 498 operations inventoried (55 NVCF, 443 NGC core), 338 mapped (select 156, insert 64, update 42, delete 48, replace 4, exec 24), 160 skipped with reason codes (service-infra 24, internal-admin 34, deprecated-inline 44, superseded-by-v3-twin 4, non-generator-http-verb 7, data-plane-file-transfer 22, non-json-response 4, non-projectable-response 2, legacy-twin 3, duplicate-endpoint-family 15, inbound-webhook 1), 83 resources across 7 services (`catalog` 21, `nvcf_deployments` 7, `nvcf_functions` 7, `nvcf_invocation` 4, `nvcf_queues` 2, `orgs` 11, `private_registry` 31). The 2026-09-25 refresh (NVCF 2.245.1 -> 2.256.0 with a new `/info` endpoint, models definition with a new NIM metadata endpoint, collection shares deprecated inline) moved the counts from the phase-2 baseline of 347 / 149. Notable spec truths kept as-is: the typed models family has no DELETE (deletion rides `artifacts.delete` with `artifact_type = 'models'`, purge is `EXEC`); functions get/update/delete live on `function_versions` (the spec addresses a function by version); `authorizations` is grants-as-data (list `SELECT`, add `INSERT`, remove `DELETE`, set `REPLACE`, delete-all `EXEC`). +11. **Mapping - green.** 502 operations inventoried (55 NVCF, 447 NGC core incl. the 4 SDK-evidenced deletes), 342 mapped (select 156, insert 64, update 42, delete 52, replace 4, exec 24), 160 skipped with reason codes (service-infra 24, internal-admin 34, deprecated-inline 44, superseded-by-v3-twin 4, non-generator-http-verb 7, data-plane-file-transfer 22, non-json-response 4, non-projectable-response 2, legacy-twin 3, duplicate-endpoint-family 15, inbound-webhook 1), 83 resources across 7 services (`catalog` 21, `nvcf_deployments` 7, `nvcf_functions` 7, `nvcf_invocation` 4, `nvcf_queues` 2, `orgs` 11, `private_registry` 31). The 2026-09-25 refresh (NVCF 2.245.1 -> 2.256.0 with a new `/info` endpoint, models definition with a new NIM metadata endpoint, collection shares deprecated inline) moved the counts from the phase-2 baseline of 347 / 149. Notable spec truths: the definition declares no DELETE for models or resources and the generic artifacts family only takes `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks` and `skills` (so "delete via artifacts" was never possible); the SDK's `remove_model` / resources `remove` issue `DELETE` on the entity path, and `clean_specs.mjs` (`inject-sdk-operations`) adds those four operations (org and team forms) with the evidence recorded on the operation - `models.delete` and `resources.delete` are SDK-evidenced, purge stays `EXEC`; functions get/update/delete live on `function_versions` (the spec addresses a function by version); `authorizations` is grants-as-data (list `SELECT`, add `INSERT`, remove `DELETE`, set `REPLACE`, delete-all `EXEC`). 12. **Pagination.** NGC core lists declare zero-based `page-number` + `page-size`; `ngc_kas` responses carry `paginationInfo {index, size, totalPages, totalResults, nextPage}` and the SDK's `ModelListResponse` etc. carry the same object (undeclared in the models definition). any-sdk's `page_number` algorithm (linode/vercel precedent) follows `$.paginationInfo.index` / `$.paginationInfo.totalPages`: it requests page N after the last page N-1 and stops when the echoed index reaches the total, so the terminating request must return an empty page rather than an error - the mock does; the live behaviour is owed (item 21). 64 list methods carry the config plus `queryParamPushdown.top -> page-size` (no documented maximum, none set). NVCF lists are unpaginated. Verified against the mock: 5 rows over 3 pages of 2, `LIMIT 1` -> `page-size=1`. -13. **Casing.** `snake_case_aliases: true` on the provider; `request.nativeCasing` per method from the inventory (`camel` x225 for NVCF and JSON bodies, `kebab` x113 for methods with kebab query parameters). Verified against the mock: `resolve_labels = 'true'` -> `resolve-labels=true`; `display_name` -> `displayName` in POST/PATCH bodies. Docs render the wire spelling of kebab parameters (`page-size`); the engine accepts `page_size`. +13. **Casing.** `snake_case_aliases: true` on the provider; `request.nativeCasing` per method from the inventory (`camel` x229 for NVCF and JSON bodies, `kebab` x113 for methods with kebab query parameters). Verified against the mock: `resolve_labels = 'true'` -> `resolve-labels=true`; `display_name` -> `displayName` in POST/PATCH bodies. Docs render the wire spelling of kebab parameters (`page-size`); the engine accepts `page_size`. 14. **objectKey per response shape.** Lists unwrap their array property; entity reads unwrap their object property; when several qualify the property named after the resource wins (`modelVersion` for `model_versions`, `recipeVersion` for `resource_versions` via the trailing-segment rule, `artifactVersion` for `helm_chart_versions`). Entities with array fields (GPU catalog rows, `gpuCounts`) get none - the first rule tried used the array property and projected `column_anon`. The vendor types `GET .../license/acceptance` as the `requestStatus`-only envelope, so that read is skipped (`non-projectable-response`); the acceptance `POST` stays mapped. @@ -48,7 +48,9 @@ Sibling findings reused, not re-derived: supabase (the project-scope server temp ## Blocked on a key -21. **Live verification - owed once `.env` carries `NGC_API_KEY` / `NGC_ORG`.** `make smoke` covers: bearer acceptance on `orgs`, `current_user`, `users`, `teams`, registry models; the `page_number` pagination against a real multi-page collection (terminating request behaviour, `paginationInfo` present on registry lists); the kebab query parameters; a registry model INSERT / UPDATE / DELETE; NVCF enablement (cluster groups), fleet reads and an undeployed function INSERT / version get / authorizations / DELETE. `make smoke-nvcf` adds the deploy lifecycle (billable, gated, needs `NVCF_SMOKE_CONTAINER_IMAGE`). Also to confirm: whether `/v2/nvcf/...` or the gateway's `/v2/orgs/{org}/nvcf/...` form is right for a personal key (item 7), PUT field-drop semantics on `function_versions.update` and `artifacts.replace` (keycloak rule), and whether `GET /v2/csps` needs the Private Registry scope (phase-1 probe: 401). +21a. **First live run (2026-09-26, INDIVIDUAL org `0783126463337528`, a 70-character `nvapi-` personal key).** The public catalog reads work with the key on the wire (`catalog.models` with `LIMIT` pushdown, the model get, the bare-array GPU catalog, collections). Every authenticated NGC core call answers 403 `FORBIDDEN` / "Access Denied" (`/v2/users/me`, `/v2/orgs`, `/v2/org/{org}/users|teams|models`, `/v2/csps`), `api.ngc.nvidia.com/v2/nvcf/*` answers 401 "Authentication Failed", and `api.nvcf.nvidia.com/v2/nvcf/functions` answers 403 "Authorization failed" (the NVCF problem-details body) - the bearer is recognised as a credential and refused authorization, which is the signature of a key without the Private Registry / Cloud Functions service scopes (or an org without those services: an INDIVIDUAL org has no private registry and NVCF needs enablement). The legacy token exchange (`$oauthtoken:` at `authn.nvidia.com/token`) answers 401 for a personal key, `Authorization: ApiKey` answers 401, basic auth 401 "Not Authenticated", and `POST /v3/keys/get-caller-info` says "Invalid API key." for it - so none of those is the missing step; direct bearer is the right mechanism, and the key or org entitlements are the blocker. Harness finding: pystackql 3.8.4 `execute()` swallows an HTTP error on a SELECT into an empty result (the first run showed 17 false PASSes); `q()` now re-probes an empty SELECT through `executeStmt()`, which surfaces the error. + +21. **Live verification - still owed with an entitled key.** `make smoke` covers: bearer acceptance on `orgs`, `current_user`, `users`, `teams`, registry models; the `page_number` pagination against a real multi-page collection (terminating request behaviour, `paginationInfo` present on registry lists); the kebab query parameters; a registry model INSERT / UPDATE / DELETE; NVCF enablement (cluster groups), fleet reads and an undeployed function INSERT / version get / authorizations / DELETE. `make smoke-nvcf` adds the deploy lifecycle (billable, gated, needs `NVCF_SMOKE_CONTAINER_IMAGE`). Also to confirm: whether `/v2/nvcf/...` or the gateway's `/v2/orgs/{org}/nvcf/...` form is right for a personal key (item 7), PUT field-drop semantics on `function_versions.update` and `artifacts.replace` (keycloak rule), and whether `GET /v2/csps` needs the Private Registry scope (phase-1 probe: 401). ## Open @@ -56,4 +58,5 @@ Sibling findings reused, not re-derived: supabase (the project-scope server temp 2. **`/v2/orgs` list filters** (`Filter using org name`, `...PEC ID`, ...) are declared with prose names; the wire parameter names are unknown, so the list is unfiltered on the wire (client-side `WHERE` still applies). 3. **`csps` writes** (`create`/`update`/`delete` on `/v2/csps`) and the GPU catalog writes are publisher-privileged; mapped as documented, untested. 4. **`orgs.orgs.get` keeps `org_name` as a path parameter** (the remainder after the org prefix is empty, so it cannot ride the server template) - it does not default from `NGC_ORG`. -5. **Docs casing for kebab parameters** - the generated docs show `page-size`; a sanitize-docs rule could present the snake spelling the engine accepts. Cosmetic. +5. **Container images are not in the harvested definitions.** The generic artifact family (`/v2/org/{org}/{artifact_type}`) accepts `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks` and `skills` (the gateway answers 404 "No static resource" for `containers`); container repositories and image tags live under the container registry API (`/v2/org/{org}/repos...`, the SDK's `registry/api/image.py`), whose definition the explorer never published. A candidate for a future harvest if a definition surfaces; the docs say so. +6. **Docs casing for kebab parameters** - handled by `sanitize-docs.mjs` (kebab parameter tokens rendered as snake_case, the spelling the engine accepts). diff --git a/README.md b/README.md index 26286bf..dcd77b8 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # `nvidia` provider for [`stackql`](https://github.com/stackql/stackql) -This repository generates and documents the `nvidia` provider for StackQL, enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, containers and helm charts as metadata, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. The provider is built using the `@stackql/provider-utils` package. +This repository generates and documents the `nvidia` provider for StackQL, enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, helm charts and other artifacts as metadata, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. The provider is built using the `@stackql/provider-utils` package. ## Positioning -NVIDIA publishes a Go Terraform provider, [`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc), covering NVCF functions and telemetry endpoints (one resource and one data source each); it reads `NGC_API_KEY`, `NGC_ORG` and `NGC_TEAM`, and this provider uses the same variables. The surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer: 338 operations across 7 services and 83 resources, with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. The query surfaces that matter: GPU and cluster-group inventory, NVCF function fleet state by deployment specification, function sharing audits, registry and model estate reports, and org membership - the AI infrastructure control plane as data. +NVIDIA publishes a Go Terraform provider, [`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc), covering NVCF functions and telemetry endpoints (one resource and one data source each); it reads `NGC_API_KEY`, `NGC_ORG` and `NGC_TEAM`, and this provider uses the same variables. The surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer: 342 operations across 7 services and 83 resources, with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. The query surfaces that matter: GPU and cluster-group inventory, NVCF function fleet state by deployment specification, function sharing audits, registry and model estate reports, and org membership - the AI infrastructure control plane as data. ## Design Principles @@ -87,7 +87,7 @@ The split assigns operations to services from the inventory, sets each service's | Service | Resources | Contents | |---|---|---| | `orgs` | 11 | organizations, teams, users, team members and member roles, role grants, invitations, current user | -| `private_registry` | 31 | org-scoped artifact metadata: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys, workflows; `*_by_team` twins | +| `private_registry` | 31 | org-scoped artifact metadata: models, resources, recipes, generic artifacts (helm charts, endpoints, blueprints, agents, playbooks, APIs, skills), versions and files, collections, shares, deployment parameters, encryption keys, workflows; `*_by_team` twins | | `catalog` | 21 | public artifact metadata reads plus the GPU and cloud service provider catalogs, NIM metadata publishing | | `nvcf_functions` | 7 | functions, versions, function ids, metadata, authorizations (sharing grants), secrets, rate limits | | `nvcf_deployments` | 7 | deployments and GPU specifications, cluster groups and GPUs, registry credentials, telemetries | diff --git a/provider-dev/config/all_services.csv b/provider-dev/config/all_services.csv index 685e43d..a2a476f 100644 --- a/provider-dev/config/all_services.csv +++ b/provider-dev/config/all_services.csv @@ -191,6 +191,7 @@ private_registry.yaml,/models,createModelInOrg,create_model_in_org,post,ModelRes private_registry.yaml,/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInOrg,stash_artifact_version_in_org,patch,Response,Model Version,model version,model_versions,stash,exec,,Stash artifact version in org private_registry.yaml,/models/{model_name},getModelInOrg,get_model_in_org,get,ModelResponse,Models,models,models,get,select,$.model,Get model details in org private_registry.yaml,/models/{model_name},updateModelInOrg,update_model_in_org,patch,ModelResponse,Models,models,models,update,update,$.model,Update model in org +private_registry.yaml,/models/{model_name},deleteModelInOrg,delete_model_in_org,delete,Response,Models,models,models,delete,delete,,Delete model in org private_registry.yaml,/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,disassociate_key_from_model_in_org,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete,delete,,Disassociate encryption key from model in org private_registry.yaml,/models/{model_name}/shares/org,shareModelInOrgWithOrg,share_model_in_org_with_org,put,Response,Models,models,model_shares,add_org,insert,,Share org model with the org private_registry.yaml,/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,revoke_share_model_in_org_with_org,delete,Response,Models,models,model_shares,remove_org,delete,,Revoke shared org model with the org @@ -216,6 +217,7 @@ private_registry.yaml,/resources,listRecipesInOrg_1,list_recipes_in_org_1,get,Re private_registry.yaml,/resources,createRecipeInOrg_1,create_recipe_in_org_1,post,RecipeResponse,Resources,resources,resources,create,insert,$.recipe,Create recipe in org private_registry.yaml,/resources/{recipe_name},getRecipeInOrg_1,get_recipe_in_org_1,get,RecipeResponse,Resources,resources,resources,get,select,$.recipe,Get recipe in org private_registry.yaml,/resources/{recipe_name},updateRecipeInOrg_1,update_recipe_in_org_1,patch,RecipeResponse,Resources,resources,resources,update,update,$.recipe,Update recipe in org +private_registry.yaml,/resources/{recipe_name},deleteResourceInOrg,delete_resource_in_org,delete,Response,Resources,resources,resources,delete,delete,,Delete resource in org private_registry.yaml,/resources/{recipe_name}/versions,listRecipeVersionsInOrg_1,list_recipe_versions_in_org_1,get,RecipeVersionListResponse,Resource Versions,resource versions,resource_versions,list,select,$.recipeVersions,List recipe versions in org private_registry.yaml,/resources/{recipe_name}/versions,createRecipeVersionInOrg_1,create_recipe_version_in_org_1,post,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,create,insert,$.recipeVersion,Create recipe version in org private_registry.yaml,/resources/{recipe_name}/versions/{version_id},getRecipeVersionInOrg_1,get_recipe_version_in_org_1,get,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,get,select,$.recipeVersion,Get recipe version in org @@ -243,6 +245,7 @@ private_registry.yaml,/team/{team_name}/models,createModelInTeam,create_model_in private_registry.yaml,/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInTeam,stash_artifact_version_in_team,patch,Response,Model Version,model version,model_versions,stash_by_team,exec,,Stash artifact version in team private_registry.yaml,/team/{team_name}/models/{model_name},getModelInTeam,get_model_in_team,get,ModelResponse,Models,models,models,get_by_team,select,$.model,Get model in team private_registry.yaml,/team/{team_name}/models/{model_name},updateModelInTeam,update_model_in_team,patch,ModelResponse,Models,models,models,update_by_team,update,$.model,Update model in team +private_registry.yaml,/team/{team_name}/models/{model_name},deleteModelInTeam,delete_model_in_team,delete,Response,Models,models,models,delete_by_team,delete,,Delete model in org/team private_registry.yaml,/team/{team_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInTeam,disassociate_key_from_model_in_team,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete_by_team,delete,,Disassociate encryption key from model in team private_registry.yaml,/team/{team_name}/models/{model_name}/shares/org,shareModelInTeamWithOrg,share_model_in_team_with_org,put,Response,Models,models,model_shares,add_org_by_team,insert,,Share team model with the org private_registry.yaml,/team/{team_name}/models/{model_name}/shares/org,revokeShareModelInTeamWithOrg,revoke_share_model_in_team_with_org,delete,Response,Models,models,model_shares,remove_org_by_team,delete,,Revoke shared team model with the org @@ -268,6 +271,7 @@ private_registry.yaml,/team/{team_name}/resources,listRecipesInTeam_1,list_recip private_registry.yaml,/team/{team_name}/resources,createRecipeInTeam_1,create_recipe_in_team_1,post,RecipeResponse,Resources,resources,resources,create_by_team,insert,$.recipe,Create recipe in team private_registry.yaml,/team/{team_name}/resources/{recipe_name},getRecipeInTeam_1,get_recipe_in_team_1,get,RecipeResponse,Resources,resources,resources,get_by_team,select,$.recipe,Get recipe in team private_registry.yaml,/team/{team_name}/resources/{recipe_name},updateRecipeInTeam_1,update_recipe_in_team_1,patch,RecipeResponse,Resources,resources,resources,update_by_team,update,$.recipe,Update recipe in team +private_registry.yaml,/team/{team_name}/resources/{recipe_name},deleteResourceInTeam,delete_resource_in_team,delete,Response,Resources,resources,resources,delete_by_team,delete,,Delete resource in org/team private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions,listRecipeVersionsInTeam_1,list_recipe_versions_in_team_1,get,RecipeVersionListResponse,Resource Versions,resource versions,resource_versions,list_by_team,select,$.recipeVersions,List recipe versions in team private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions,createRecipeVersionInTeam_1,create_recipe_version_in_team_1,post,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,create_by_team,insert,$.recipeVersion,Create recipe version in team private_registry.yaml,/team/{team_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInTeam_1,get_recipe_version_in_team_1,get,RecipeVersionResponse,Resource Versions,resource versions,resource_versions,get_by_team,select,$.recipeVersion,Get recipe version in team diff --git a/provider-dev/config/clean_report.json b/provider-dev/config/clean_report.json index b031f9f..78dfa2e 100644 --- a/provider-dev/config/clean_report.json +++ b/provider-dev/config/clean_report.json @@ -43,10 +43,6 @@ ], "paths": 232, "fixes": [ - { - "rule": "inject-sdk-responses", - "note": "27 SDK data classes added to components.schemas (ngcsdk 4.36.6); 200 responses injected on 0 response-less operations (0 of them declared an untyped 2xx; 0 on the bare Response envelope): " - }, { "rule": "gateway-v2-path-prefix", "note": "229 path(s) rewritten /v1/ -> /v2/; servers [{\"description\":\"Generated server url - production\",\"url\":\"https://models.ngc.nvidia.com\",\"x-internal\":true}] -> https://api.ngc.nvidia.com (the public gateway serving the definition)" @@ -54,6 +50,14 @@ { "rule": "snake-case-path-params", "note": "209 path key(s) and 986 path parameter name(s) converted to snake_case" + }, + { + "rule": "inject-sdk-operations", + "note": "4 SDK-documented operation(s) injected: DELETE /v2/org/{org_name}/models/{model_name} (deleteModelInOrg); DELETE /v2/org/{org_name}/team/{team_name}/models/{model_name} (deleteModelInTeam); DELETE /v2/org/{org_name}/resources/{recipe_name} (deleteResourceInOrg); DELETE /v2/org/{org_name}/team/{team_name}/resources/{recipe_name} (deleteResourceInTeam)" + }, + { + "rule": "inject-sdk-responses", + "note": "27 SDK data classes added to components.schemas (ngcsdk 4.36.6); 200 responses injected on 0 response-less operations (0 of them declared an untyped 2xx; 0 on the bare Response envelope): " } ], "notes": [ diff --git a/provider-dev/config/endpoint_inventory.csv b/provider-dev/config/endpoint_inventory.csv index 7ed1a92..c8693d0 100644 --- a/provider-dev/config/endpoint_inventory.csv +++ b/provider-dev/config/endpoint_inventory.csv @@ -260,6 +260,7 @@ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/mode ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInOrg,Model Version,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{artifact_name}/versions/{version_id}/stash,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,stash,exec,,action on a version ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models/{model_name},getModelInOrg,Models,y,n,n,ssa,,,kebab,n,object{model;requestStatus},$.model,,/v2/org/{org_name},/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,get,select,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/models/{model_name},updateModelInOrg,Models,y,n,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name},deleteModelInOrg,Models,y,n,n,none-declared,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,delete,delete,,injected from SDK evidence (clean_specs inject-sdk-operations) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/org/{org_name},/models/{model_name}/encryption-key,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_encryption_keys,delete,delete,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/models/{model_name}/shares/org,shareModelInOrgWithOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_org,insert,,grants-as-data ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_org,delete,,grants-as-data @@ -285,6 +286,7 @@ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resou ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/resources,createRecipeInOrg_1,Resources,y,n,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/resources,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,create,insert,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources/{recipe_name},getRecipeInOrg_1,Resources,y,n,n,ssa,,,kebab,n,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,get,select,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/resources/{recipe_name},updateRecipeInOrg_1,Resources,y,n,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,update,update,, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/resources/{recipe_name},deleteResourceInOrg,Resources,y,n,n,none-declared,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,delete,delete,,injected from SDK evidence (clean_specs inject-sdk-operations) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources/{recipe_name}/versions,listRecipeVersionsInOrg_1,Resource Versions,y,n,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,/v2/org/{org_name},/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,list,select,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/resources/{recipe_name}/versions,createRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,camel,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,create,insert,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInOrg_1,Resource Versions,y,n,n,ssa,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/resources/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,get,select,, @@ -319,6 +321,7 @@ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash,stashArtifactVersionInTeam,Model Version,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,stash_by_team,exec,,action on a version; team-scoped twin of /v2/org/{org_name}/models/{artifact_name}/versions/{version_id}/stash (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models/{model_name},getModelInTeam,Models,y,y,n,ssa,,,kebab,n,object{model;requestStatus},$.model,,/v2/org/{org_name},/team/{team_name}/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/models/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/models/{model_name},updateModelInTeam,Models,y,y,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/team/{team_name}/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/models/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name},deleteModelInTeam,Models,y,y,n,none-declared,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,delete_by_team,delete,,injected from SDK evidence (clean_specs inject-sdk-operations); team-scoped twin of /v2/org/{org_name}/models/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInTeam,Models,y,y,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/encryption-key,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_encryption_keys,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/encryption-key (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org,shareModelInTeamWithOrg,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_org_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/org (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org,revokeShareModelInTeamWithOrg,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_org_by_team,delete,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/org (Private Registry team scoping is exempt from the 2026-09-30 schedule) @@ -346,6 +349,7 @@ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/resources,createRecipeInTeam_1,Resources,y,y,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/resources,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/resources (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name},getRecipeInTeam_1,Resources,y,y,n,ssa,,,kebab,n,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name},updateRecipeInTeam_1,Resources,y,y,n,ssa,,,camel,y,object{recipe;requestStatus},$.recipe,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name},deleteResourceInTeam,Resources,y,y,n,none-declared,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resources,delete_by_team,delete,,injected from SDK evidence (clean_specs inject-sdk-operations); team-scoped twin of /v2/org/{org_name}/resources/{recipe_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions,listRecipeVersionsInTeam_1,Resource Versions,y,y,n,ssa,,page-size+page-number,kebab,n,object{paginationInfo;recipe;recipeVersions;requestStatus},$.recipeVersions,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions,createRecipeVersionInTeam_1,Resource Versions,y,y,n,ssa,,,camel,y,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions/{version_id},getRecipeVersionInTeam_1,Resource Versions,y,y,n,ssa,,,camel,n,object{recipe;recipeVersion;requestStatus},$.recipeVersion,,/v2/org/{org_name},/team/{team_name}/resources/{recipe_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,resource_versions,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/resources/{recipe_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) diff --git a/provider-dev/config/service_names.json b/provider-dev/config/service_names.json index e217a66..da8622d 100644 --- a/provider-dev/config/service_names.json +++ b/provider-dev/config/service_names.json @@ -5,7 +5,7 @@ }, "private_registry": { "title": "NVIDIA NGC Private Registry", - "description": "Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes)." + "description": "Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (helm charts, endpoints, blueprints, agents, playbooks, APIs, skills), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes)." }, "catalog": { "title": "NVIDIA NGC Catalog", diff --git a/provider-dev/docgen/provider-data/headerContent1.txt b/provider-dev/docgen/provider-data/headerContent1.txt index 50a928a..85261b7 100644 --- a/provider-dev/docgen/provider-data/headerContent1.txt +++ b/provider-dev/docgen/provider-data/headerContent1.txt @@ -21,4 +21,4 @@ id: 'provider-intro' import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -Query, provision and operate the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (NVCF: functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, function sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, containers and helm charts as metadata, collections, shares, encryption keys), the public NGC catalog (artifact metadata, the GPU and cloud service provider catalogs - readable without an account) and NGC organizations, teams, users, roles and invitations. GPU capacity by cluster group, NVCF function fleet state by deployment specification, function sharing audits and registry estate reports are the queries this provider exists for. +Query, provision and operate the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (NVCF: functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, function sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, helm charts and other artifacts as metadata, collections, shares, encryption keys), the public NGC catalog (artifact metadata, the GPU and cloud service provider catalogs - readable without an account) and NGC organizations, teams, users, roles and invitations. GPU capacity by cluster group, NVCF function fleet state by deployment specification, function sharing audits and registry estate reports are the queries this provider exists for. diff --git a/provider-dev/docgen/provider-data/headerContent2.txt b/provider-dev/docgen/provider-data/headerContent2.txt index 8df89a1..4ffe9dc 100644 --- a/provider-dev/docgen/provider-data/headerContent2.txt +++ b/provider-dev/docgen/provider-data/headerContent2.txt @@ -13,7 +13,7 @@ REGISTRY PULL nvidia; ## Scope -This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (338 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. +This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (342 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. ## Authentication @@ -134,12 +134,12 @@ FROM nvidia.private_registry.models ORDER BY updated_date DESC; ``` -Containers, helm charts and resources through the generic artifacts resource: +Helm charts, endpoints, blueprints, agents, playbooks, APIs and skills through the generic artifacts resource (`artifact_type` takes the plural path segment: `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks`, `skills`; models, resources and recipes have their own resources; container images are served by the separate container registry API and are not in this provider): ```sql SELECT name, display_name, latest_version_id_str, updated_date FROM nvidia.private_registry.artifacts -WHERE artifact_type = 'containers'; +WHERE artifact_type = 'helm-charts'; ``` ### Public catalog, no account needed @@ -211,8 +211,8 @@ UPDATE nvidia.private_registry.models SET display_name = 'ResNet-50 fine-tuned v2' WHERE model_name = 'resnet50-finetuned'; -DELETE FROM nvidia.private_registry.artifacts -WHERE artifact_type = 'models' AND artifact_name = 'resnet50-finetuned'; +DELETE FROM nvidia.private_registry.models +WHERE model_name = 'resnet50-finetuned'; ``` ### The whole GPU estate in one statement diff --git a/provider-dev/downloaded/cleaned/ngc_models.json b/provider-dev/downloaded/cleaned/ngc_models.json index a8dd8c8..d3a2214 100644 --- a/provider-dev/downloaded/cleaned/ngc_models.json +++ b/provider-dev/downloaded/cleaned/ngc_models.json @@ -18113,6 +18113,53 @@ "updateModel", "kas" ] + }, + "delete": { + "tags": [ + "Models" + ], + "summary": "Delete model in org", + "description": "This operation deletes a model in the org (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).", + "operationId": "deleteModelInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-stackql-sdk-evidence": "ngcsdk registry/api" } }, "/v2/org/{org_name}/models/{model_name}/encryption-key": { @@ -21537,6 +21584,53 @@ "updateRecipe", "kas" ] + }, + "delete": { + "tags": [ + "Resources" + ], + "summary": "Delete resource in org", + "description": "This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).", + "operationId": "deleteResourceInOrg", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-stackql-sdk-evidence": "ngcsdk registry/api" } }, "/v2/org/{org_name}/resources/{recipe_name}/versions": { @@ -26550,6 +26644,65 @@ "updateModel", "kas" ] + }, + "delete": { + "tags": [ + "Models" + ], + "summary": "Delete model in org/team", + "description": "This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).", + "operationId": "deleteModelInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Model name", + "in": "path", + "name": "model_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-stackql-sdk-evidence": "ngcsdk registry/api" } }, "/v2/org/{org_name}/team/{team_name}/models/{model_name}/encryption-key": { @@ -30562,6 +30715,65 @@ "updateRecipe", "kas" ] + }, + "delete": { + "tags": [ + "Resources" + ], + "summary": "Delete resource in org/team", + "description": "This operation deletes a resource in the org/team (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).", + "operationId": "deleteResourceInTeam", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Team name", + "in": "path", + "name": "team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-stackql-sdk-evidence": "ngcsdk registry/api" } }, "/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}/versions": { diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/provider.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/provider.yaml index 9f84314..04c8e43 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/provider.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/provider.yaml @@ -84,11 +84,11 @@ providerServices: version: v00.00.00000 description: >- Org-scoped artifact metadata in the NGC private registry: models, - resources, recipes, generic artifacts (containers, helm charts), versions - and files, collections, shares, deployment parameters, encryption keys and - workflows. Team-scoped twins are mapped as *_by_team methods (source: the - Private Artifacts (Models) API definition, responses from the ngcsdk data - classes). + resources, recipes, generic artifacts (helm charts, endpoints, blueprints, + agents, playbooks, APIs, skills), versions and files, collections, shares, + deployment parameters, encryption keys and workflows. Team-scoped twins + are mapped as *_by_team methods (source: the Private Artifacts (Models) + API definition, responses from the ngcsdk data classes). config: auth: type: bearer diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml index 62e523d..ccfcae7 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: NVIDIA NGC Private Registry - description: 'Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes).' + description: 'Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (helm charts, endpoints, blueprints, agents, playbooks, APIs, skills), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes).' version: 0.0.1-SNAPSHOT paths: /encryption-keys: @@ -2321,6 +2321,30 @@ paths: summary: Update model in org tags: - Models + delete: + tags: + - Models + summary: Delete model in org + description: 'This operation deletes a model in the org (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' + operationId: deleteModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api servers: - url: https://api.ngc.nvidia.com/v2/org/{org_name} variables: @@ -4264,6 +4288,30 @@ paths: summary: Update recipe in org tags: - Resources + delete: + tags: + - Resources + summary: Delete resource in org + description: 'This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).' + operationId: deleteResourceInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api servers: - url: https://api.ngc.nvidia.com/v2/org/{org_name} variables: @@ -6701,6 +6749,39 @@ paths: summary: Update model in team tags: - Models + delete: + tags: + - Models + summary: Delete model in org/team + description: 'This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' + operationId: deleteModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api servers: - url: https://api.ngc.nvidia.com/v2/org/{org_name} variables: @@ -8869,6 +8950,39 @@ paths: summary: Update recipe in team tags: - Resources + delete: + tags: + - Resources + summary: Delete resource in org/team + description: 'This operation deletes a resource in the org/team (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).' + operationId: deleteResourceInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api servers: - url: https://api.ngc.nvidia.com/v2/org/{org_name} variables: @@ -18883,6 +18997,14 @@ components: openAPIDocKey: '200' request: nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1models~1{model_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel list_by_team: operation: $ref: '#/paths/~1team~1{team_name}~1models/get' @@ -18938,6 +19060,14 @@ components: openAPIDocKey: '200' request: nativeCasing: camel + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel sqlVerbs: select: - $ref: '#/components/x-stackQL-resources/models/methods/get_by_team' @@ -18950,7 +19080,9 @@ components: update: - $ref: '#/components/x-stackQL-resources/models/methods/update_by_team' - $ref: '#/components/x-stackQL-resources/models/methods/update' - delete: [] + delete: + - $ref: '#/components/x-stackQL-resources/models/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/models/methods/delete' replace: [] model_versions: id: nvidia.private_registry.model_versions @@ -19760,6 +19892,14 @@ components: openAPIDocKey: '200' request: nativeCasing: camel + delete: + operation: + $ref: '#/paths/~1resources~1{recipe_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel list_by_team: operation: $ref: '#/paths/~1team~1{team_name}~1resources/get' @@ -19815,6 +19955,14 @@ components: openAPIDocKey: '200' request: nativeCasing: camel + delete_by_team: + operation: + $ref: '#/paths/~1team~1{team_name}~1resources~1{recipe_name}/delete' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + nativeCasing: camel sqlVerbs: select: - $ref: '#/components/x-stackQL-resources/resources/methods/get_by_team' @@ -19827,7 +19975,9 @@ components: update: - $ref: '#/components/x-stackQL-resources/resources/methods/update_by_team' - $ref: '#/components/x-stackQL-resources/resources/methods/update' - delete: [] + delete: + - $ref: '#/components/x-stackQL-resources/resources/methods/delete_by_team' + - $ref: '#/components/x-stackQL-resources/resources/methods/delete' replace: [] resource_versions: id: nvidia.private_registry.resource_versions diff --git a/provider-dev/scripts/build_inventory.mjs b/provider-dev/scripts/build_inventory.mjs index b344b59..7f3dfbf 100644 --- a/provider-dev/scripts/build_inventory.mjs +++ b/provider-dev/scripts/build_inventory.mjs @@ -519,6 +519,7 @@ function classifyModelsCore(p, verb, op) { if (p === '/v2/org/{org_name}/models/{model_name}') { if (verb === 'get') return r('private_registry', 'models', 'get', 'select'); if (verb === 'patch') return r('private_registry', 'models', 'update', 'update'); + if (verb === 'delete') return r('private_registry', 'models', 'delete', 'delete', 'injected from SDK evidence (clean_specs inject-sdk-operations)'); } if (p === '/v2/org/{org_name}/models/{model_name}/encryption-key') return r('private_registry', 'model_encryption_keys', 'delete', 'delete'); if (p.includes('/models/{model_name}/shares/')) { @@ -542,6 +543,7 @@ function classifyModelsCore(p, verb, op) { if (p === `${base}/{recipe_name}`) { if (verb === 'get') return r('private_registry', `${resBase}s`, 'get', 'select'); if (verb === 'patch') return r('private_registry', `${resBase}s`, 'update', 'update'); + if (verb === 'delete') return r('private_registry', `${resBase}s`, 'delete', 'delete', 'injected from SDK evidence (clean_specs inject-sdk-operations)'); } if (p === `${base}/{recipe_name}/versions` && verb === 'get') return r('private_registry', `${resBase}_versions`, 'list', 'select'); if (p === `${base}/{recipe_name}/versions` && verb === 'post') return r('private_registry', `${resBase}_versions`, 'create', 'insert'); diff --git a/provider-dev/scripts/clean_specs.mjs b/provider-dev/scripts/clean_specs.mjs index 53e7cc2..1ea0560 100644 --- a/provider-dev/scripts/clean_specs.mjs +++ b/provider-dev/scripts/clean_specs.mjs @@ -144,6 +144,19 @@ const SDK_RESPONSE_CLASSES = { status: 'HealthResponse', statusDetails: 'HealthResponse' }; +// Operations the definition omits but the SDK's API layer proves +// (registry/api/models.py remove_model and resources.py remove issue DELETE +// on the entity path the definition only declares GET/PATCH for). Each +// entry names the path (cleaned form), the sibling verb whose parameters +// are copied, and the operationId to inject; the response is the bare +// Response envelope. +const SDK_DOCUMENTED_OPERATIONS = [ + { path: '/v2/org/{org_name}/models/{model_name}', verb: 'delete', copyFrom: 'get', operationId: 'deleteModelInOrg', tags: ['Models'], summary: 'Delete model in org', description: 'This operation deletes a model in the org (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' }, + { path: '/v2/org/{org_name}/team/{team_name}/models/{model_name}', verb: 'delete', copyFrom: 'get', operationId: 'deleteModelInTeam', tags: ['Models'], summary: 'Delete model in org/team', description: 'This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' }, + { path: '/v2/org/{org_name}/resources/{recipe_name}', verb: 'delete', copyFrom: 'get', operationId: 'deleteResourceInOrg', tags: ['Resources'], summary: 'Delete resource in org', description: 'This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).' }, + { path: '/v2/org/{org_name}/team/{team_name}/resources/{recipe_name}', verb: 'delete', copyFrom: 'get', operationId: 'deleteResourceInTeam', tags: ['Resources'], summary: 'Delete resource in org/team', description: 'This operation deletes a resource in the org/team (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).' } +]; + function sdkResponseClass(operationId) { const base = String(operationId || '').replace(/(InOrg|InTeam|ForTeam|AsGuest|FromAnotherOrg|_\d+)+$/, ''); return SDK_RESPONSE_CLASSES[base] || 'Response'; @@ -155,70 +168,6 @@ function sdkResponseClass(operationId) { // --------------------------------------------------------------------------- const RULES = [ - { - name: 'inject-sdk-responses', - applies: (file) => file === SDK_RESPONSE_FILE, - fix: (spec) => { - if (!fs.existsSync(SDK_SCHEMAS_PATH)) throw new Error(`${SDK_SCHEMAS_PATH} not found - run harvest_ngc_sdk_schemas.mjs first`); - const sdk = JSON.parse(fs.readFileSync(SDK_SCHEMAS_PATH, 'utf8')); - spec.components = spec.components || {}; - spec.components.schemas = spec.components.schemas || {}; - let added = 0; - for (const [name, schema] of Object.entries(sdk.schemas)) { - if (spec.components.schemas[name]) continue; // the definition's own schema wins - spec.components.schemas[name] = schema; - added++; - } - const counts = {}; - let injected = 0, generic = 0, untyped = 0; - // a 2xx whose schema resolves to nothing projectable (no properties, - // no items, not a scalar or array) is as good as absent - const resolve = (s) => { - let cur = s; - for (let i = 0; i < 10 && cur && cur.$ref; i++) cur = spec.components.schemas[cur.$ref.split('/').pop()]; - return cur; - }; - const projectable = (op) => { - const codes = Object.keys(op.responses || {}).filter((c) => c.startsWith('2')).sort(); - if (codes.length === 0) return false; - const content = op.responses[codes[0]].content || {}; - const media = content['application/json'] || Object.values(content)[0]; - if (!media) return codes.length > 0 && Object.keys(content).length > 0; // non-json content is left alone - const s = resolve(media.schema); - if (!s) return false; - if (s.properties || s.items || ['array', 'string', 'integer', 'number', 'boolean'].includes(s.type)) return true; - return false; - }; - forEachOperation(spec, (pathKey, item, verb, op) => { - if (!HTTP_VERBS.slice(0, 5).includes(verb)) return; - op.responses = op.responses || {}; - const had2xx = Object.keys(op.responses).some((c) => c.startsWith('2')); - if (had2xx && projectable(op)) return; - if (had2xx) { - untyped++; - for (const c of Object.keys(op.responses)) if (c.startsWith('2')) delete op.responses[c]; - } - let cls = sdkResponseClass(op.operationId); - let schema; - if (cls.startsWith('[]')) { - cls = cls.slice(2); - schema = { type: 'array', items: { $ref: `#/components/schemas/${cls}` } }; - } else { - schema = { $ref: `#/components/schemas/${cls}` }; - } - if (!spec.components.schemas[cls]) throw new Error(`response class ${cls} for ${op.operationId} is not in the definition or the SDK harvest`); - op.responses['200'] = { - description: `OK (response schema from the ngcsdk ${sdk.version} data class ${cls})`, - content: { 'application/json': { schema } } - }; - counts[cls] = (counts[cls] || 0) + 1; - injected++; - if (cls === 'Response') generic++; - }); - const top = Object.entries(counts).sort((a, b) => b[1] - a[1]).slice(0, 8).map(([k, v]) => `${k} x${v}`).join(', '); - return `${added} SDK data classes added to components.schemas (ngcsdk ${sdk.version}); 200 responses injected on ${injected} response-less operations (${untyped} of them declared an untyped 2xx; ${generic} on the bare Response envelope): ${top}`; - } - }, { name: 'stamp-missing-version-field', applies: (file, spec) => !spec.info || !spec.info.version, @@ -392,6 +341,95 @@ const RULES = [ } return `${dropped.length} query parameter(s) with prose names dropped (wire names unknown): ${[...new Set(dropped)].slice(0, 6).join('; ')}${dropped.length > 6 ? '; ...' : ''}`; } + }, + { + name: 'inject-sdk-operations', + applies: (file) => file === SDK_RESPONSE_FILE, + fix: (spec) => { + const notes = []; + for (const entry of SDK_DOCUMENTED_OPERATIONS) { + const item = spec.paths[entry.path]; + if (!item) throw new Error(`SDK-documented operation path ${entry.path} is not in the definition (path cleaning must run first)`); + if (item[entry.verb]) { notes.push(`${entry.verb.toUpperCase()} ${entry.path} now declared upstream - rule entry can be retired`); continue; } + const sibling = item[entry.copyFrom]; + if (!sibling) throw new Error(`no ${entry.copyFrom} sibling on ${entry.path} to copy parameters from`); + item[entry.verb] = { + tags: entry.tags, + summary: entry.summary, + description: entry.description, + operationId: entry.operationId, + parameters: JSON.parse(JSON.stringify((sibling.parameters || []).filter((p) => p.in === 'path'))), + responses: { '200': { description: 'OK', content: { 'application/json': { schema: { $ref: '#/components/schemas/Response' } } } } }, + 'x-stackql-sdk-evidence': 'ngcsdk registry/api' + }; + notes.push(`${entry.verb.toUpperCase()} ${entry.path} (${entry.operationId})`); + } + return `${notes.filter((n) => !n.includes('retired')).length} SDK-documented operation(s) injected: ${notes.join('; ')}`; + } + }, + { + name: 'inject-sdk-responses', + applies: (file) => file === SDK_RESPONSE_FILE, + fix: (spec) => { + if (!fs.existsSync(SDK_SCHEMAS_PATH)) throw new Error(`${SDK_SCHEMAS_PATH} not found - run harvest_ngc_sdk_schemas.mjs first`); + const sdk = JSON.parse(fs.readFileSync(SDK_SCHEMAS_PATH, 'utf8')); + spec.components = spec.components || {}; + spec.components.schemas = spec.components.schemas || {}; + let added = 0; + for (const [name, schema] of Object.entries(sdk.schemas)) { + if (spec.components.schemas[name]) continue; // the definition's own schema wins + spec.components.schemas[name] = schema; + added++; + } + const counts = {}; + let injected = 0, generic = 0, untyped = 0; + // a 2xx whose schema resolves to nothing projectable (no properties, + // no items, not a scalar or array) is as good as absent + const resolve = (s) => { + let cur = s; + for (let i = 0; i < 10 && cur && cur.$ref; i++) cur = spec.components.schemas[cur.$ref.split('/').pop()]; + return cur; + }; + const projectable = (op) => { + const codes = Object.keys(op.responses || {}).filter((c) => c.startsWith('2')).sort(); + if (codes.length === 0) return false; + const content = op.responses[codes[0]].content || {}; + const media = content['application/json'] || Object.values(content)[0]; + if (!media) return codes.length > 0 && Object.keys(content).length > 0; // non-json content is left alone + const s = resolve(media.schema); + if (!s) return false; + if (s.properties || s.items || ['array', 'string', 'integer', 'number', 'boolean'].includes(s.type)) return true; + return false; + }; + forEachOperation(spec, (pathKey, item, verb, op) => { + if (!HTTP_VERBS.slice(0, 5).includes(verb)) return; + op.responses = op.responses || {}; + const had2xx = Object.keys(op.responses).some((c) => c.startsWith('2')); + if (had2xx && projectable(op)) return; + if (had2xx) { + untyped++; + for (const c of Object.keys(op.responses)) if (c.startsWith('2')) delete op.responses[c]; + } + let cls = sdkResponseClass(op.operationId); + let schema; + if (cls.startsWith('[]')) { + cls = cls.slice(2); + schema = { type: 'array', items: { $ref: `#/components/schemas/${cls}` } }; + } else { + schema = { $ref: `#/components/schemas/${cls}` }; + } + if (!spec.components.schemas[cls]) throw new Error(`response class ${cls} for ${op.operationId} is not in the definition or the SDK harvest`); + op.responses['200'] = { + description: `OK (response schema from the ngcsdk ${sdk.version} data class ${cls})`, + content: { 'application/json': { schema } } + }; + counts[cls] = (counts[cls] || 0) + 1; + injected++; + if (cls === 'Response') generic++; + }); + const top = Object.entries(counts).sort((a, b) => b[1] - a[1]).slice(0, 8).map(([k, v]) => `${k} x${v}`).join(', '); + return `${added} SDK data classes added to components.schemas (ngcsdk ${sdk.version}); 200 responses injected on ${injected} response-less operations (${untyped} of them declared an untyped 2xx; ${generic} on the bare Response envelope): ${top}`; + } } ]; diff --git a/provider-dev/source/private_registry.yaml b/provider-dev/source/private_registry.yaml index 35d5ef6..52d6f04 100644 --- a/provider-dev/source/private_registry.yaml +++ b/provider-dev/source/private_registry.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: NVIDIA NGC Private Registry - description: 'Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (containers, helm charts), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes).' + description: 'Org-scoped artifact metadata in the NGC private registry: models, resources, recipes, generic artifacts (helm charts, endpoints, blueprints, agents, playbooks, APIs, skills), versions and files, collections, shares, deployment parameters, encryption keys and workflows. Team-scoped twins are mapped as *_by_team methods (source: the Private Artifacts (Models) API definition, responses from the ngcsdk data classes).' version: 0.0.1-SNAPSHOT paths: /encryption-keys: @@ -2213,6 +2213,30 @@ paths: summary: Update model in org tags: - Models + delete: + tags: + - Models + summary: Delete model in org + description: 'This operation deletes a model in the org (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' + operationId: deleteModelInOrg + parameters: + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api /models/{model_name}/encryption-key: delete: description: Disassociate encryption key from model in org and mark it for offline deletion @@ -4066,6 +4090,30 @@ paths: summary: Update recipe in org tags: - Resources + delete: + tags: + - Resources + summary: Delete resource in org + description: 'This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).' + operationId: deleteResourceInOrg + parameters: + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api /resources/{recipe_name}/versions: get: description: List recipe versions in org @@ -6407,6 +6455,39 @@ paths: summary: Update model in team tags: - Models + delete: + tags: + - Models + summary: Delete model in org/team + description: 'This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' + operationId: deleteModelInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Model name + in: path + name: model_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api /team/{team_name}/models/{model_name}/encryption-key: delete: description: Disassociate encryption key from model in team and mark it for offline deletion @@ -8485,6 +8566,39 @@ paths: summary: Update recipe in team tags: - Resources + delete: + tags: + - Resources + summary: Delete resource in org/team + description: 'This operation deletes a resource in the org/team (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).' + operationId: deleteResourceInTeam + parameters: + - description: Team name + in: path + name: team_name + required: true + schema: + format: UTF-8 + maxLength: 255 + minLength: 0 + type: string + - description: Recipe name + in: path + name: recipe_name + required: true + schema: + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Response' + x-stackql-sdk-evidence: ngcsdk registry/api /team/{team_name}/resources/{recipe_name}/versions: get: description: List recipe versions in team diff --git a/tests/integration/run_integration_tests.mjs b/tests/integration/run_integration_tests.mjs index 36b6d77..b884342 100644 --- a/tests/integration/run_integration_tests.mjs +++ b/tests/integration/run_integration_tests.mjs @@ -15,8 +15,7 @@ // - snake_case surface: kebab query parameters (resolve_labels -> // resolve-labels) and camelCase body properties (display_name -> // displayName) via request.nativeCasing -// - the registry model INSERT / UPDATE / DELETE lifecycle (delete via the -// generic artifacts resource) +// - the registry model INSERT / UPDATE / DELETE lifecycle // - the NVCF function INSERT (function + first version), version get, // authorization grants INSERT / SELECT / DELETE, deployment INSERT / // SELECT / DELETE, queue details on the second host, the polling @@ -154,8 +153,8 @@ try { r = await runSql("SELECT display_name FROM nvidia.private_registry.models WHERE model_name = 'it-model'"); check('model reflects UPDATE', r.rows && r.rows[0]?.display_name === 'IT Model v2', r.err || JSON.stringify(r.rows)); mark = log.length; - r = await runSql("DELETE FROM nvidia.private_registry.artifacts WHERE artifact_type = 'models' AND artifact_name = 'it-model'"); - check('model DELETE via artifacts (artifact_type = models) -> DELETE /v2/org/ORG_A/models/it-model', !r.err && calls(mark, 'DELETE', `/v2/org/${ORG_A}/models/it-model`).length === 1, r.err || JSON.stringify(log.slice(mark).map((e) => `${e.method} ${e.path}`))); + r = await runSql("DELETE FROM nvidia.private_registry.models WHERE model_name = 'it-model'"); + check('model DELETE (SDK-evidenced operation) -> DELETE /v2/org/ORG_A/models/it-model', !r.err && calls(mark, 'DELETE', `/v2/org/${ORG_A}/models/it-model`).length === 1, r.err || JSON.stringify(log.slice(mark).map((e) => `${e.method} ${e.path}`))); r = await runSql('SELECT name FROM nvidia.private_registry.models'); check('model gone after DELETE', r.rows && !has(r.rows, 'name', 'it-model'), r.err || JSON.stringify(r.rows)); diff --git a/tests/offline_validation.mjs b/tests/offline_validation.mjs index eadc344..c3963c5 100644 --- a/tests/offline_validation.mjs +++ b/tests/offline_validation.mjs @@ -82,7 +82,8 @@ check('83 resources in total', resourceTotal === 83, String(resourceTotal)); // org_name server variable: required only when NGC_ORG is unset r = await runSql('SHOW METHODS IN nvidia.private_registry.models', NO_ENV); let m = Object.fromEntries(r.rows.map((x) => [x.MethodName, x])); -check('private_registry.models methods (8: list/get/create/update + _by_team twins)', r.rows.length === 8 && ['list', 'get', 'create', 'update', 'list_by_team', 'get_by_team', 'create_by_team', 'update_by_team'].every((k) => m[k]), JSON.stringify(Object.keys(m))); +check('private_registry.models methods (10: list/get/create/update/delete + _by_team twins; delete is SDK-evidenced)', r.rows.length === 10 && ['list', 'get', 'create', 'update', 'delete', 'list_by_team', 'get_by_team', 'create_by_team', 'update_by_team', 'delete_by_team'].every((k) => m[k]), JSON.stringify(Object.keys(m))); +check('models.delete is DELETE requiring model_name (+ org_name when NGC_ORG is unset)', m.delete?.SQLVerb === 'DELETE' && /model_name/.test(m.delete?.RequiredParams) && /org_name/.test(m.delete?.RequiredParams), JSON.stringify(m.delete)); check('models.list requires org_name when NGC_ORG is unset; get requires model_name + org_name; list_by_team adds team_name', m.list?.RequiredParams === 'org_name' && /model_name/.test(m.get?.RequiredParams) && /org_name/.test(m.get?.RequiredParams) && /team_name/.test(m.list_by_team?.RequiredParams) && /org_name/.test(m.list_by_team?.RequiredParams), JSON.stringify([m.list, m.get, m.list_by_team])); check('models verbs (list/get SELECT, create INSERT, update UPDATE)', m.list?.SQLVerb === 'SELECT' && m.get?.SQLVerb === 'SELECT' && m.create?.SQLVerb === 'INSERT' && m.update?.SQLVerb === 'UPDATE', JSON.stringify(m)); diff --git a/tests/smoke_test.py b/tests/smoke_test.py index c342b0d..7132659 100644 --- a/tests/smoke_test.py +++ b/tests/smoke_test.py @@ -135,6 +135,14 @@ def q(self, sql: str): try: if sql.lstrip().upper().startswith(("SELECT", "SHOW", "DESCRIBE")) or "RETURNING" in sql.upper(): out = self.sq.execute(sql) + # pystackql's execute() swallows an HTTP error on a SELECT into + # an empty result set (3.8.4); executeStmt() surfaces it as + # [{"error": ...}] - re-run an empty SELECT that way so a 403 + # can never pass as "no rows" + if not out: + probe = self.sq.executeStmt(sql) + if isinstance(probe, list) and probe and isinstance(probe[0], dict) and "error" in probe[0]: + out = probe else: out = self.sq.executeStmt(sql) except Exception as exc: # noqa: BLE001 @@ -200,7 +208,7 @@ def cleanup_breadcrumbs(self) -> None: for r in rows: if str(r.get("name", "")).startswith(SMOKE_PREFIX): print(f" sweeping registry model {r['name']}") - self.q(f"DELETE FROM nvidia.private_registry.artifacts WHERE artifact_type = 'models' AND artifact_name = '{r['name']}'") + self.q(f"DELETE FROM nvidia.private_registry.models WHERE model_name = '{r['name']}'") rows, err = self.q("SELECT id, version_id, name, status FROM nvidia.nvcf_functions.functions") if err: print(f" WARN nvcf sweep list failed (NVCF may not be enabled): {err[:120]}") @@ -216,8 +224,11 @@ def cleanup_breadcrumbs(self) -> None: def read_smokes(self) -> None: print("== tier 1: public catalog ==") self.step("show services", "SHOW SERVICES IN nvidia", expect_rows=True, contains="nvcf_functions") - self.step("catalog models (public, paginated, LIMIT pushdown)", "SELECT name, org_name, display_name FROM nvidia.catalog.models LIMIT 5", expect_rows=True) - self.step("catalog model get (nvidia org)", "SELECT name, display_name, latest_version_id_str FROM nvidia.catalog.models WHERE org_name = 'nvidia' AND model_name = 'llama-3.1-8b-instruct'") + models = self.step("catalog models (public, paginated, LIMIT pushdown)", "SELECT name, org_name, display_name FROM nvidia.catalog.models LIMIT 5", expect_rows=True) + if models: + first = models[0] + self.step("catalog model get ($.model, by org_name + model_name)", f"SELECT name, display_name, latest_version_id_str FROM nvidia.catalog.models WHERE org_name = '{first['org_name']}' AND model_name = '{first['name']}'", expect_rows=True, contains=str(first["name"])) + self.step("catalog model versions ($.modelVersions)", f"SELECT version_id, status FROM nvidia.catalog.model_versions WHERE org_name = '{first['org_name']}' AND model_name = '{first['name']}'") self.step("catalog GPU catalog (bare array)", "SELECT display_name, pci_device_id, memory_size_gb FROM nvidia.catalog.gpus", expect_rows=True) self.step("catalog collections", "SELECT name, org_name, display_name FROM nvidia.catalog.collections LIMIT 5") @@ -228,7 +239,7 @@ def read_smokes(self) -> None: self.step("org users (NGC_ORG resolved, paginated)", "SELECT email, name, is_active FROM nvidia.orgs.users", expect_rows=True) self.step("org teams", "SELECT name, description FROM nvidia.orgs.teams") self.step("registry models (NGC_ORG resolved)", "SELECT name, framework, latest_version_id_str, updated_date FROM nvidia.private_registry.models") - self.step("registry artifacts (containers, generic resource)", "SELECT name, display_name, updated_date FROM nvidia.private_registry.artifacts WHERE artifact_type = 'containers'") + self.step("registry artifacts (helm-charts, generic resource)", "SELECT name, display_name, updated_date FROM nvidia.private_registry.artifacts WHERE artifact_type = 'helm-charts'") self.step("registry collections", "SELECT name, display_name FROM nvidia.private_registry.collections") if self.team: self.step("registry models by team (*_by_team twin)", f"SELECT name FROM nvidia.private_registry.models WHERE team_name = '{self.team}'") @@ -264,7 +275,7 @@ def registry_model_lifecycle(self) -> None: self.step("model UPDATE (display_name)", f"UPDATE nvidia.private_registry.models SET display_name = 'StackQL smoke v2' WHERE model_name = '{name}'") self.step("model reflects UPDATE", f"SELECT display_name FROM nvidia.private_registry.models WHERE model_name = '{name}'", expect_rows=True, contains="v2") self.step("model versions (empty for a new model)", f"SELECT id, status FROM nvidia.private_registry.model_versions WHERE model_name = '{name}'") - self.step("model DELETE (via artifacts, artifact_type = models)", f"DELETE FROM nvidia.private_registry.artifacts WHERE artifact_type = 'models' AND artifact_name = '{name}'") + self.step("model DELETE", f"DELETE FROM nvidia.private_registry.models WHERE model_name = '{name}'") rows, err = self.q("SELECT name FROM nvidia.private_registry.models") self.note("model gone after DELETE", not err and all(r.get("name") != name for r in rows), err or "") diff --git a/website/docs/index.md b/website/docs/index.md index 9aed1b4..8e5be0c 100644 --- a/website/docs/index.md +++ b/website/docs/index.md @@ -21,7 +21,7 @@ id: 'provider-intro' import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -Query, provision and operate the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (NVCF: functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, function sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, containers and helm charts as metadata, collections, shares, encryption keys), the public NGC catalog (artifact metadata, the GPU and cloud service provider catalogs - readable without an account) and NGC organizations, teams, users, roles and invitations. GPU capacity by cluster group, NVCF function fleet state by deployment specification, function sharing audits and registry estate reports are the queries this provider exists for. +Query, provision and operate the NVIDIA NGC control plane using SQL - NVIDIA Cloud Functions (NVCF: functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, function sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, helm charts and other artifacts as metadata, collections, shares, encryption keys), the public NGC catalog (artifact metadata, the GPU and cloud service provider catalogs - readable without an account) and NGC organizations, teams, users, roles and invitations. GPU capacity by cluster group, NVCF function fleet state by deployment specification, function sharing audits and registry estate reports are the queries this provider exists for. :::info[Provider Summary] @@ -167,12 +167,12 @@ FROM nvidia.private_registry.models ORDER BY updated_date DESC; ``` -Containers, helm charts and resources through the generic artifacts resource: +Helm charts, endpoints, blueprints, agents, playbooks, APIs and skills through the generic artifacts resource (`artifact_type` takes the plural path segment: `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks`, `skills`; models, resources and recipes have their own resources; container images are served by the separate container registry API and are not in this provider): ```sql SELECT name, display_name, latest_version_id_str, updated_date FROM nvidia.private_registry.artifacts -WHERE artifact_type = 'containers'; +WHERE artifact_type = 'helm-charts'; ``` ### Public catalog, no account needed @@ -244,8 +244,8 @@ UPDATE nvidia.private_registry.models SET display_name = 'ResNet-50 fine-tuned v2' WHERE model_name = 'resnet50-finetuned'; -DELETE FROM nvidia.private_registry.artifacts -WHERE artifact_type = 'models' AND artifact_name = 'resnet50-finetuned'; +DELETE FROM nvidia.private_registry.models +WHERE model_name = 'resnet50-finetuned'; ``` ### The whole GPU estate in one statement diff --git a/website/docs/services/private_registry/models/index.md b/website/docs/services/private_registry/models/index.md index 031693d..e45f14f 100644 --- a/website/docs/services/private_registry/models/index.md +++ b/website/docs/services/private_registry/models/index.md @@ -950,6 +950,20 @@ The following methods are available for this resource: This operation updates details of a model in the org. + + + + team_name, model_name + + This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition). + + + + + model_name + + This operation deletes a model in the org (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition). + @@ -1581,3 +1595,36 @@ request_status; ``` + + +## `DELETE` examples + + + + +This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition). + +```sql +DELETE FROM nvidia.private_registry.models +WHERE team_name = '{{ team_name }}' --required +AND model_name = '{{ model_name }}' --required +; +``` + + + +This operation deletes a model in the org (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition). + +```sql +DELETE FROM nvidia.private_registry.models +WHERE model_name = '{{ model_name }}' --required +; +``` + + diff --git a/website/docs/services/private_registry/resources/index.md b/website/docs/services/private_registry/resources/index.md index 71aa94b..994d166 100644 --- a/website/docs/services/private_registry/resources/index.md +++ b/website/docs/services/private_registry/resources/index.md @@ -850,6 +850,20 @@ The following methods are available for this resource: Update recipe details in org + + + + team_name, recipe_name + + This operation deletes a resource in the org/team (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition). + + + + + recipe_name + + This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition). + @@ -1412,3 +1426,36 @@ request_status; ``` + + +## `DELETE` examples + + + + +This operation deletes a resource in the org/team (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition). + +```sql +DELETE FROM nvidia.private_registry.resources +WHERE team_name = '{{ team_name }}' --required +AND recipe_name = '{{ recipe_name }}' --required +; +``` + + + +This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition). + +```sql +DELETE FROM nvidia.private_registry.resources +WHERE recipe_name = '{{ recipe_name }}' --required +; +``` + + From ef6b5ffd62836ede093fa2db97367fe72aece60d Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 6 Oct 2026 16:17:13 +1100 Subject: [PATCH 11/17] docs: regenerate with @stackql/provider-utils 0.7.11 and the source repo link Bumps @stackql/provider-utils to 0.7.11, passes --source-project to the doc generation target and regenerates the markdown docs, so the provider summary links to the source repository. Co-Authored-By: Claude Fable 5.1 --- Makefile | 4 +++- package-lock.json | 8 ++++---- package.json | 2 +- website/docs/index.md | 3 ++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index a12b41e..5a4606f 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ SHELL := bash .DEFAULT_GOAL := help PROVIDER := nvidia +SOURCE_PROJECT ?= https://github.com/stackql-registry/stackql-provider-$(PROVIDER) SERVICES_DIR := provider-dev/openapi/src/$(PROVIDER) # Bearer auth from NGC_API_KEY; snake_case_aliases presents the camelCase # wire properties (displayName, createdDate, ...) as snake_case columns, @@ -143,7 +144,8 @@ docs: ## generate the website docs (snake_case surface), then sanitize for MDX v --provider-dir ./$(SERVICES_DIR)/v00.00.00000 \ --output-dir ./website \ --provider-data-dir ./provider-dev/docgen/provider-data \ - --snake-case-aliases + --snake-case-aliases \ + --source-project $(SOURCE_PROJECT) npm run sanitize-docs website: ## build the docusaurus microsite (vendors shared config first) diff --git a/package-lock.json b/package-lock.json index 2a6a25a..286aeac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@apidevtools/swagger-parser": "^12.1.0", "@stackql/pgwire-lite": "^1.0.2", - "@stackql/provider-utils": "^0.7.10", + "@stackql/provider-utils": "^0.7.11", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" }, @@ -145,9 +145,9 @@ } }, "node_modules/@stackql/provider-utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.10.tgz", - "integrity": "sha512-3hlaKT2ce8IaFx0E99ksW0uvmBcQgtfzWAAJz24oSM7bX++6ZrLe87j6CAUyRszowP4FLaO6UMOlHNQzibnViw==", + "version": "0.7.11", + "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.11.tgz", + "integrity": "sha512-yRy0nbWzI8IkAZlN2WCMxz/9pdD11EXTx85U+e6pQzIq61CtUpVLklW70Z4fMTTGwLa9nzLqWCNPS5+LBBY0+g==", "license": "MIT", "dependencies": { "@apidevtools/swagger-parser": "^10.1.1", diff --git a/package.json b/package.json index 7c76929..bd78126 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dependencies": { "@apidevtools/swagger-parser": "^12.1.0", "@stackql/pgwire-lite": "^1.0.2", - "@stackql/provider-utils": "^0.7.10", + "@stackql/provider-utils": "^0.7.11", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" }, diff --git a/website/docs/index.md b/website/docs/index.md index 8e5be0c..9367530 100644 --- a/website/docs/index.md +++ b/website/docs/index.md @@ -28,6 +28,7 @@ Query, provision and operate the NVIDIA NGC control plane using SQL - NVIDIA Clo total services: __7__ total resources: __83__ +source project: __[stackql-provider-nvidia](https://github.com/stackql-registry/stackql-provider-nvidia)__ ::: @@ -46,7 +47,7 @@ REGISTRY PULL nvidia; ## Scope -This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (338 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. +This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (342 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. ## Authentication From cdcae4139c1577023629991a691fb8b423dcdfc5 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 6 Oct 2026 16:17:15 +1100 Subject: [PATCH 12/17] website: add the Back to StackQL Docs sidebar link Opens the docs sidebar with a link to /stackqldocs, the redirect to the main stackql.io docs, matching the query library site and the provider template. Styled by the new .sidebar-back-link rules in the site stylesheet. No generated docs or dependencies change. Co-Authored-By: Claude Fable 5.1 --- website/sidebars.js | 13 +++++++++++++ website/src/css/global.css | 22 +++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/website/sidebars.js b/website/sidebars.js index f719984..fe6cbb3 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -2,6 +2,19 @@ import { providerTitle } from './provider.js'; const sidebars = { mainSidebar: [ + // Way back to the main stackql.io docs, as on the query library site. + // '/stackqldocs' is a shared-config redirect route (registered on this + // site by the vendored redirects plugin) that forwards to + // https://stackql.io/, so the link renders as internal - no external-link + // icon - and the broken-link checker validates it. The arrow and the + // divider come from the .sidebar-back-link rules in src/css/global.css. + { + type: 'link', + label: 'Back to StackQL Docs', + href: '/stackqldocs', + className: 'sidebar-back-link', + }, + // '/providers' is likewise a shared redirect, to https://stackql.io/providers. { type: 'link', label: 'All Providers', href: '/providers' }, { type: 'category', diff --git a/website/src/css/global.css b/website/src/css/global.css index 3e50218..0b80357 100644 --- a/website/src/css/global.css +++ b/website/src/css/global.css @@ -284,4 +284,24 @@ div:has(> .vhsImage) { .navbar__logo img[src$='stackql-registry-logo-white.svg'] { content: url('/img/stackql-registry-logo-white-mobile.svg'); } -} \ No newline at end of file +} + +/* +* sidebar: back link to the main stackql.io docs (the first item in +* sidebars.js). Same treatment as the query library site: bold label, +* leading arrow drawn here so the label stays plain text, divider below. +*/ +.sidebar-back-link { + border-bottom: 1px solid var(--ifm-color-emphasis-300); + padding-bottom: 0.5rem; + margin-bottom: 0.5rem !important; +} + +.sidebar-back-link .menu__link { + font-weight: 600; +} + +.sidebar-back-link .menu__link::before { + content: '\2190'; + margin-right: 0.5rem; +} From f7a378bc85aa8e7626a1924cbecb904376b590bf Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 6 Oct 2026 17:08:06 +1100 Subject: [PATCH 13/17] ci: keep clean_report.json stable across rebuild days clean_specs.mjs stamped the report with the run date on every build, so the generation-drift check failed on any day after the report was committed. The date now records the last run whose findings changed: when the per-source results are identical, the previous date is kept. Co-Authored-By: Claude Fable 5.1 --- provider-dev/scripts/clean_specs.mjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/provider-dev/scripts/clean_specs.mjs b/provider-dev/scripts/clean_specs.mjs index 1ea0560..89ec436 100644 --- a/provider-dev/scripts/clean_specs.mjs +++ b/provider-dev/scripts/clean_specs.mjs @@ -503,6 +503,19 @@ fs.mkdirSync(path.dirname(reportPath), { recursive: true }); for (const [file, spec] of cleaned) { fs.writeFileSync(path.join(cleanedDir, file), JSON.stringify(spec, null, 2) + '\n'); } +// Keep the committed report byte-identical when nothing but the run date +// would change: `generated` records the last run that changed the findings, +// so a rebuild on a later day does not trip CI's generation-drift check. +if (fs.existsSync(reportPath)) { + try { + const previous = JSON.parse(fs.readFileSync(reportPath, 'utf8')); + if (previous.generated && JSON.stringify(previous.sources) === JSON.stringify(report.sources)) { + report.generated = previous.generated; + } + } catch { + // unreadable previous report: write the fresh one + } +} fs.writeFileSync(reportPath, JSON.stringify(report, null, 2) + '\n'); console.log(`Cleaned ${cleaned.size} spec(s) -> ${cleanedDir}`); console.log(`Fix report -> ${reportPath}`); From fbac6b37af6ff0f0415bf93fb0f04f41160f5baa Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 6 Oct 2026 18:45:38 +1100 Subject: [PATCH 14/17] docs: bump @stackql/provider-utils to 0.7.12 Keeps the doc generation dependency on the current release. 0.7.12 only changes the generate-docs-v2 index page (Markdown hard breaks in the Provider Summary); this provider uses the v1 generator, whose output is unchanged, so the regenerated docs are identical. Co-Authored-By: Claude Fable 5.1 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 286aeac..b227e0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@apidevtools/swagger-parser": "^12.1.0", "@stackql/pgwire-lite": "^1.0.2", - "@stackql/provider-utils": "^0.7.11", + "@stackql/provider-utils": "^0.7.12", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" }, @@ -145,9 +145,9 @@ } }, "node_modules/@stackql/provider-utils": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.11.tgz", - "integrity": "sha512-yRy0nbWzI8IkAZlN2WCMxz/9pdD11EXTx85U+e6pQzIq61CtUpVLklW70Z4fMTTGwLa9nzLqWCNPS5+LBBY0+g==", + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.12.tgz", + "integrity": "sha512-cwlnLkW/AZ86YVthU/HmVDVlwLHsuJtiCx+w0peqO7t/NpsgLsUneH5vG2PPt+yPv3euZeQg1HeO7NOAgDQdBw==", "license": "MIT", "dependencies": { "@apidevtools/swagger-parser": "^10.1.1", diff --git a/package.json b/package.json index bd78126..8ef288f 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dependencies": { "@apidevtools/swagger-parser": "^12.1.0", "@stackql/pgwire-lite": "^1.0.2", - "@stackql/provider-utils": "^0.7.11", + "@stackql/provider-utils": "^0.7.12", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" }, From e5e126dc6743595358ea6b4596716b441e66ed35 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 6 Oct 2026 20:06:07 +1100 Subject: [PATCH 15/17] ci: build the website on Node 22 (mermaid@12 requires >= 22.12) The GitHub Pages test and deploy workflows pinned Node 20, but the website lockfile resolves the shared mermaid theme to mermaid 12, whose engine range starts at 22.12, so yarn install --frozen-lockfile fails on the PR build. The site's own engines field already asks for 22.19. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/prod-web-deploy.yml | 2 +- .github/workflows/test-web-deploy.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prod-web-deploy.yml b/.github/workflows/prod-web-deploy.yml index 7b950ed..870ca87 100644 --- a/.github/workflows/prod-web-deploy.yml +++ b/.github/workflows/prod-web-deploy.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/setup-node@v7 with: - node-version: 20 + node-version: 22 cache: yarn cache-dependency-path: website/yarn.lock diff --git a/.github/workflows/test-web-deploy.yml b/.github/workflows/test-web-deploy.yml index 64df0d3..17422e2 100644 --- a/.github/workflows/test-web-deploy.yml +++ b/.github/workflows/test-web-deploy.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/setup-node@v7 with: - node-version: 20 + node-version: 22 cache: yarn cache-dependency-path: website/yarn.lock From 5f8131fb130cfbdf48e3224aec5822823cbea2da Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Fri, 16 Oct 2026 17:57:46 +1100 Subject: [PATCH 16/17] Add workflow_dispatch to the Pages deploy workflow Lets the site be redeployed on demand (gh workflow run) by the menu-sync workflow in stackql/docusaurus-config, which keeps the Providers menu in step with the catalog. The deploy only fires on pushes under website/**, so this commit does not trigger a build. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/prod-web-deploy.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/prod-web-deploy.yml b/.github/workflows/prod-web-deploy.yml index 870ca87..3beaa76 100644 --- a/.github/workflows/prod-web-deploy.yml +++ b/.github/workflows/prod-web-deploy.yml @@ -6,6 +6,11 @@ on: - main paths: - 'website/**' + # path filters cannot be evaluated on a branch-creation push (no `before` + # commit to diff against), so the initial push never triggers the deploy - + # workflow_dispatch covers that case, ad-hoc redeploys, and the menu-sync + # fan-out in stackql/docusaurus-config (gh workflow run) + workflow_dispatch: jobs: build: From 312f57f8550c7ad5c48a33c0bf8ccfef03f8f334 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Sat, 17 Oct 2026 18:34:41 +1100 Subject: [PATCH 17/17] refresh --- .../stackql-provider-development/SKILL.md | 57 + .../references/derived-spec-pipeline.md | 44 + .../references/direct-spec-fetch-and-pin.md | 14 + .../references/docs-and-ci.md | 23 + .../references/graphql-merge.md | 60 + .../references/handover.md | 13 + .../references/inventory-and-mapping.md | 45 + .../references/normalize-and-generate.md | 45 + .../references/pagination-and-pushdown.md | 45 + .../references/provider-views.md | 33 + .../references/reference-repos.md | 20 + .../references/repo-layout-and-makefile.md | 28 + .../references/request-response-shaping.md | 46 + .../references/scoping-and-auth.md | 53 + .../references/testing.md | 11 + .../references/uplift-checklist.md | 10 + .../scripts/find_extension_examples.sh | 58 + .../scripts/spec_diff.mjs | 77 + .env.example | 5 +- .github/ISSUE_TEMPLATE/bug_report.md | 38 + .github/ISSUE_TEMPLATE/feature_request.md | 20 + .github/ISSUE_TEMPLATE/question.md | 15 + .github/PULL_REQUEST_TEMPLATE.md | 14 + .github/copilot-instructions.md | 3 + .github/workflows/build-and-test.yml | 99 +- .gitignore | 197 +- AGENTS.md | 68 + CLAUDE.md | 93 +- Makefile | 152 +- NOTES.md | 6 + README.md | 211 +- SECURITY.md | 46 + bin/server-status.sh | 4 +- bin/start-server.sh | 76 +- bin/test-meta-routes.cjs | 917 +-- package-lock.json | 72 +- package.json | 11 +- provider-dev/config/all_services.csv | 11 +- provider-dev/config/clean_report.json | 12 +- provider-dev/config/endpoint_inventory.csv | 53 +- provider-dev/config/provider_config.json | 7 + provider-dev/config/spec_pin.json | 22 +- .../docgen/provider-data/headerContent2.txt | 81 +- provider-dev/downloaded/cleaned/ngc_kas.json | 42 +- .../downloaded/cleaned/ngc_models.json | 4725 +++++++-------- .../downloaded/cleaned/nvcf_openapi.json | 54 +- .../downloaded/download_manifest.json | 8 +- provider-dev/downloaded/ngc_kas.json | 42 +- provider-dev/downloaded/ngc_models.json | 5119 +++++++---------- provider-dev/downloaded/nvcf_openapi.json | 54 +- .../nvidia/v00.00.00000/services/catalog.yaml | 4 + .../services/nvcf_deployments.yaml | 66 +- .../v00.00.00000/services/nvcf_functions.yaml | 68 +- .../services/nvcf_invocation.yaml | 2 +- .../v00.00.00000/services/nvcf_queues.yaml | 2 +- .../services/private_registry.yaml | 766 +-- provider-dev/scripts/build_inventory.mjs | 4 + provider-dev/scripts/graphql_merge.mjs | 262 + provider-dev/scripts/harvest_ngc_spec.mjs | 23 + provider-dev/scripts/lib/spec_helpers.mjs | 108 + provider-dev/scripts/map_operations.mjs | 23 +- provider-dev/source-graphql/manifest.yaml | 32 + provider-dev/source-graphql/ops/.gitkeep | 0 provider-dev/source/catalog.yaml | 4 + provider-dev/source/nvcf_deployments.yaml | 4 +- provider-dev/source/nvcf_functions.yaml | 58 +- provider-dev/source/nvcf_invocation.yaml | 2 +- provider-dev/source/nvcf_queues.yaml | 2 +- provider-dev/source/private_registry.yaml | 507 +- tests/integration/harness.mjs | 106 + tests/integration/mock_nvidia_server.mjs | 4 + tests/integration/probe.mjs | 44 +- tests/integration/registry.mjs | 58 - tests/integration/run_integration_tests.mjs | 55 +- tests/offline_validation.mjs | 10 +- tests/smoke_test.py | 11 +- views/README.md | 11 + views/nvcf_deployments/views.yaml | 51 + website/.gitignore | 6 +- website/README.md | 41 - website/docs/index.md | 81 +- .../docs/services/nvcf_deployments/index.md | 5 +- .../nvcf_deployments/vw_gpu_capacity/index.md | 145 + .../nvcf_functions/authorizations/index.md | 65 +- .../private_registry/artifacts/index.md | 12 +- .../docs/services/private_registry/index.md | 7 +- .../private_registry/model_shares/index.md | 298 - website/docusaurus.config.js | 19 +- website/package.json | 2 +- website/provider.js | 15 + website/scripts/sanitize-docs.mjs | 189 +- .../src/components/HomepageFeatures/index.js | 64 - .../HomepageFeatures/styles.module.css | 11 - website/static/img/docusaurus-social-card.jpg | Bin 55746 -> 0 bytes website/static/img/docusaurus.png | Bin 5142 -> 0 bytes website/static/img/logo.svg | 1 - ...stackql-nvidia-provider-featured-image.png | Bin 29955 -> 34168 bytes .../static/img/undraw_docusaurus_mountain.svg | 171 - .../static/img/undraw_docusaurus_react.svg | 170 - website/static/img/undraw_docusaurus_tree.svg | 40 - website/static/site.webmanifest | 4 +- 101 files changed, 7450 insertions(+), 9142 deletions(-) create mode 100644 .claude/skills/stackql-provider-development/SKILL.md create mode 100644 .claude/skills/stackql-provider-development/references/derived-spec-pipeline.md create mode 100644 .claude/skills/stackql-provider-development/references/direct-spec-fetch-and-pin.md create mode 100644 .claude/skills/stackql-provider-development/references/docs-and-ci.md create mode 100644 .claude/skills/stackql-provider-development/references/graphql-merge.md create mode 100644 .claude/skills/stackql-provider-development/references/handover.md create mode 100644 .claude/skills/stackql-provider-development/references/inventory-and-mapping.md create mode 100644 .claude/skills/stackql-provider-development/references/normalize-and-generate.md create mode 100644 .claude/skills/stackql-provider-development/references/pagination-and-pushdown.md create mode 100644 .claude/skills/stackql-provider-development/references/provider-views.md create mode 100644 .claude/skills/stackql-provider-development/references/reference-repos.md create mode 100644 .claude/skills/stackql-provider-development/references/repo-layout-and-makefile.md create mode 100644 .claude/skills/stackql-provider-development/references/request-response-shaping.md create mode 100644 .claude/skills/stackql-provider-development/references/scoping-and-auth.md create mode 100644 .claude/skills/stackql-provider-development/references/testing.md create mode 100644 .claude/skills/stackql-provider-development/references/uplift-checklist.md create mode 100644 .claude/skills/stackql-provider-development/scripts/find_extension_examples.sh create mode 100644 .claude/skills/stackql-provider-development/scripts/spec_diff.mjs create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/question.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/copilot-instructions.md create mode 100644 AGENTS.md create mode 100644 SECURITY.md create mode 100644 provider-dev/config/provider_config.json create mode 100644 provider-dev/scripts/graphql_merge.mjs create mode 100644 provider-dev/scripts/lib/spec_helpers.mjs create mode 100644 provider-dev/source-graphql/manifest.yaml create mode 100644 provider-dev/source-graphql/ops/.gitkeep create mode 100644 tests/integration/harness.mjs delete mode 100644 tests/integration/registry.mjs create mode 100644 views/README.md create mode 100644 views/nvcf_deployments/views.yaml delete mode 100644 website/README.md create mode 100644 website/docs/services/nvcf_deployments/vw_gpu_capacity/index.md delete mode 100644 website/docs/services/private_registry/model_shares/index.md delete mode 100644 website/src/components/HomepageFeatures/index.js delete mode 100644 website/src/components/HomepageFeatures/styles.module.css delete mode 100644 website/static/img/docusaurus-social-card.jpg delete mode 100644 website/static/img/docusaurus.png delete mode 100644 website/static/img/logo.svg delete mode 100644 website/static/img/undraw_docusaurus_mountain.svg delete mode 100644 website/static/img/undraw_docusaurus_react.svg delete mode 100644 website/static/img/undraw_docusaurus_tree.svg diff --git a/.claude/skills/stackql-provider-development/SKILL.md b/.claude/skills/stackql-provider-development/SKILL.md new file mode 100644 index 0000000..10c57c8 --- /dev/null +++ b/.claude/skills/stackql-provider-development/SKILL.md @@ -0,0 +1,57 @@ +--- +name: stackql-provider-development +description: Build a new StackQL provider or uplift an existing one to the current standard - from a published OpenAPI spec (direct archetype) or a spec derived from a vendor SDK fork (derived archetype) - using @stackql/provider-utils and every any-sdk primitive (snake_case surface, request/response transforms, pagination, query-param pushdown incl. OData, x-stackQL-envVar scoping, objectKey, lifecycle EXEC methods, GraphQL merge, provider views), with a make-driven pipeline, mock integration tests, meta-route tests and a budgeted live smoke suite. Use whenever asked to create, refresh, regenerate, uplift or fix a stackql provider repo, or to add one of those primitives to an existing provider. Publishing to the public registry is out of scope (a separate, human-in-the-loop skill). +--- + +# StackQL provider development + +A StackQL provider is a versioned set of OpenAPI documents plus `x-stackQL-resources` extensions that the `any-sdk` engine turns into SQL tables. This skill produces one - new or refreshed - that meets the current bar: latest toolchain, every engine primitive used where the API warrants it, a deterministic `make` pipeline, three credential-free test layers passing, and a live smoke suite a human can run against a dev account. + +The detail lives in `references/`; `scripts/` holds two generic helpers: + +- `scripts/spec_diff.mjs ` - operations added/removed/renamed, schemas changed, and the JSON Schema constructs that need a fix class. Run it before accepting any spec refresh. +- `scripts/find_extension_examples.sh [n]` - prints shipped YAML for an extension key (`objectKey`, `nativeCasing`, `x-stackQL-graphQL`, `queryParamPushdown`, `transform:`, ...) with context. Run it before writing any extension block by hand. + +## Ground rules + +- **Read before inventing.** Clone the reference repos ([references/reference-repos.md](references/reference-repos.md)) beside the provider repo and use `find_extension_examples.sh` to see a primitive shipped for real before authoring it. Sibling build repos carry NOTES.md findings - reuse them, do not re-derive. +- **Latest toolchain, always.** `npm view @stackql/provider-utils version`, `npm view @stackql/pgwire-lite version`, `npm view @apidevtools/swagger-parser version`, `npm view @docusaurus/core version` before starting; pin `^latest` in package.json. Node >= 22.19 (Node 20 reached end of life in April 2026; swagger-parser 13 needs 22.19), `"type": "module"`. `js-yaml` stays on 4.x: provider-utils emits with js-yaml 4, and v5 drops the default export, removes the `quotingType` dump option and changes scalar quoting, so that bump is a coordinated change with provider-utils. The lockfile pins what CI installs, so generation stays byte-for-byte reproducible; a toolchain bump is an explicit commit that regenerates the artifacts. +- **Deterministic pipeline.** Every step is a script that validates and fails without writing. Manual decisions are rules in scripts (mapping tables, skip codes, fix classes), never hand-edits to generated YAML or CSV. A regeneration reproduces the committed artifacts byte-for-byte (CI checks this). +- **`all_services.csv` is the contract.** Committed and diffed on every regeneration; a method moving resource or a resource renamed is a breaking change to review, not noise. +- **Environment.** Linux, macOS or WSL (on Windows prefer WSL and the latest `stackql` release on its PATH). GNU make + bash. `stackql` resolves as `$STACKQL`, `./stackql`, then PATH. +- **Never touch production accounts.** Live tests run against a dedicated dev tenant, pace under the vendor's rate limit, name everything `stackql-smoke-`, sweep breadcrumbs first, restore anything toggled. +- **Writing.** Applies to every piece of text the build generates, whoever or whatever reads it: README, docs headers and examples, NOTES, CLAUDE.md, code comments, commit messages, console output, inventory and CSV columns, mock fixtures, hand-over notes. No em dashes (use `-`), no `--` as a dash, no characters that are not on a QWERTY keyboard (no emoji, no typographic quotes, no arrows other than `->`), no stacked headings, measured copy, no hyperbole. Text the vendor owns - operation summaries, schema and parameter descriptions, examples carried from the upstream spec into the snapshot, `provider-dev/source`, the generated provider and `website/docs` - is passed through as the vendor wrote it; the only alteration is the MDX/JSX escaping `sanitize-docs` applies so the docs site builds. + +## Workflow + +Work the steps in order. **Do not execute a step without having read its reference file in this session** - the summary below is a map, not the procedure. Every later problem traces back to the inventory and the mapping rules (steps 3-4). + +1. **Decide the archetype.** Direct (vendor publishes OpenAPI/Swagger/discovery) or derived (the SDK is the truth). Check for a hidden spec first: `/openapi.json` on the API host, `swagger.json` in the docs repo, the SDK generator's spec (Stainless `.stats.yml`), an `openapi.yaml` in the vendor's Terraform provider. Everything after the spec exists is identical for both. +2. **Get the spec.** Direct: fetch, apply counted deterministic fix classes, validate with swagger-parser, redact, pin (url, hashes, counts, date), commit the snapshot - [references/direct-spec-fetch-and-pin.md](references/direct-spec-fetch-and-pin.md). Derived: fork the SDK repo, track `upstream`, parse the SDK (AST, botocore models, typed clients) and synthesise a spec with numbered passes - [references/derived-spec-pipeline.md](references/derived-spec-pipeline.md). On a refresh, run `scripts/spec_diff.mjs` first and record the summary in NOTES.md. +3. **Inventory and split** - [references/inventory-and-mapping.md](references/inventory-and-mapping.md). One CSV row per operation (scope, pagination params, body kind, update-semantics presumption, vendor labels, response shape, proposed mapping, skip reason code). Ordered path rules -> 8-20 user-facing services; a service whose every operation is skip-coded is `excluded`. If most paths share one scoping prefix, rebase them onto a server template with `x-stackQL-envVar` - [references/scoping-and-auth.md](references/scoping-and-auth.md). +4. **Map** - [references/inventory-and-mapping.md](references/inventory-and-mapping.md). Regenerate `all_services.csv` from scratch, fill the `stackql_*` columns from rules (`RESOURCE_RULES`, `METHOD_RULES`, skip codes), validate method uniqueness and required-parameter signatures. Plural snake_case resources, one shape per resource, `_configs` for singletons, lifecycle actions as EXEC on the resource they act on, envelope reads with `objectKey`. Use the `--report` flag to design rules before writing them. +5. **Pre-normalize, normalize, generate, post-process** - [references/normalize-and-generate.md](references/normalize-and-generate.md). Provider-specific spec surgery, the provider-utils normalize pass (bare-array wrap), `generate` with `--servers`, `--provider-config`, `--naive-req-body-translate`, then `post_process.mjs` for everything the generator cannot express. The primitives it applies are specified in [references/request-response-shaping.md](references/request-response-shaping.md) (objectKey, transforms, naive bodies, snake_case), [references/pagination-and-pushdown.md](references/pagination-and-pushdown.md) and [references/scoping-and-auth.md](references/scoping-and-auth.md) (auth types, retry, config inheritance). Look each one up with `find_extension_examples.sh` before authoring it. +6. **Add the non-REST surfaces.** GraphQL-backed resources where REST lacks the data - [references/graphql-merge.md](references/graphql-merge.md); provider views for json_extract-heavy posture queries - [references/provider-views.md](references/provider-views.md). +7. **Wrap it in the Makefile** - [references/repo-layout-and-makefile.md](references/repo-layout-and-makefile.md). `make help` lists every step; `make build`, `make test`, `make all` need no credentials; `make smoke*` sources `.env`. +8. **Test in three credential-free layers, then live** - [references/testing.md](references/testing.md). Offline `SHOW`/`DESCRIBE`, a mock API with row-level and wire-level assertions, the meta-route walk; then the pystackql smoke suite with `--live` and a budget. +9. **Docs and CI** - [references/docs-and-ci.md](references/docs-and-ci.md). Docusaurus 3.10 microsite on the shared config with `showLastUpdateTime`, a getting-started page that leads with the queries the provider exists for, `sanitize-docs`, and the build-and-test / spec-drift workflows. +10. **Record and hand over** - [references/handover.md](references/handover.md). CLAUDE.md (settled decisions), NOTES.md (findings with evidence, plus the open questions the first live run must answer), README.md (numbered build guide with counts that match the artifacts), `.env.example`. + +For an existing provider, start from [references/uplift-checklist.md](references/uplift-checklist.md) instead of step 1; it routes back into the steps above. + +## Engine facts that shape every build + +Verified against stackql v0.10.605 / any-sdk v0.5.4-alpha01 (2026-08). These change with engine releases: when the version moves, re-verify them against the mock with the `probe.mjs` tool described in [references/testing.md](references/testing.md) before relying on them. + +- `x-stackQL-envVar` lives only on a server variable; a WHERE value beats the env var beats `default`; joins cannot fan out on a server variable. +- `stackql_object_key` from the CSV applies to GET only - POST-backed reads get their objectKey in post-process. +- EXEC is the fallback verb bin: a method omitted from every `sqlVerbs` list is EXEC. +- INSERT and EXEC send typed JSON; UPDATE marshals every value as a string; EXEC cannot carry a boolean. Document it, make the smoke test the coercion probe. +- Naive body translation cannot address a bare-array body - rewrite to a single-item object plus a request transform. +- A resource with no columns, or a service with no resources, fails the meta-route walk - fix the mapping, never the test. +- `sqlVerbs` refs are tried in the order written; first parameter match wins, no selectivity sort (inventory-and-mapping.md). +- Keys that parse but are inert or unread at this engine version - never author them, and treat any-sdk `docs/provider_spec.md` as overstating where it lists them: provider-level `responseKeys` (`selectItemsKey` is hard-coded to `items`), operation-level `x-stackQL-resource` / `x-stackQL-method` / `x-stackQL-verb` / `x-stackQL-objectKey` (generator breadcrumbs only), info-level `x-stackql-provider`, `x-alwaysRequired`, method-level `apiMethod`, pagination token `algorithm`/`args`, pushdown `filter`/`orderBy` syntaxes other than `odata`, and view predicates on `sqlDialect == "stackql"` (the names are `sqlite3` and `postgres`). + +## Definition of done + +`make all` green from a clean checkout (deps, pipeline, offline + integration + meta-route tests, docs, site build); `all_services.csv`, `provider-dev/source`, `provider-dev/openapi` and `website/docs` committed; CLAUDE.md, NOTES.md, README.md and `.env.example` current; the smoke suite runnable with `make smoke` / `make smoke-live` by someone with credentials, with its open questions listed. Publishing is the next skill. diff --git a/.claude/skills/stackql-provider-development/references/derived-spec-pipeline.md b/.claude/skills/stackql-provider-development/references/derived-spec-pipeline.md new file mode 100644 index 0000000..43ed897 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/derived-spec-pipeline.md @@ -0,0 +1,44 @@ +# Derived archetype: synthesise a spec from an SDK fork + +When the vendor publishes no usable spec, the SDK is the truth. The shipped pattern (cloudflare from `cloudflare/cloudflare-python`, aws from `boto/botocore`) is a **fork of the SDK repository itself**, with the whole provider build in one subdirectory of the fork (`stackql_cloudflare/`, `stackql_aws_provider/`) - no submodule, no vendored copy. + +**Tracking and pinning** + +- Two remotes: `origin` (the fork) and `upstream` (the vendor). `main` tracks upstream cleanly (`git fetch upstream && git merge --ff-only upstream/main`); the provider lives on a long-lived branch (`stackql-provider`) that merges `main` in on a feature branch. Never push or PR back to upstream. A `make upstream-sync` target wraps it. +- The pin is the merged upstream commit plus whatever version the SDK carries (`botocore/__init__.py __version__`, or a Stainless `.stats.yml` with `openapi_spec_url` + `openapi_spec_hash` - some SDK generators ship the spec they were built from, which turns the build back into a type 1 with extra parsing for service grouping). +- Guard inherited upstream CI: every workflow the fork inherits gets `if: github.repository == '/'` so it skips on the fork; re-add the guard after each sync. +- Refresh cadence is a decision (quarterly for cloudflare); every sync is `make upstream-sync && make build && make test` with the mapping CSV diff reviewed. + +**What to parse, per SDK style** + +| SDK style | Source of truth | How | +|---|---|---| +| Stainless/Fern-generated Python or TS | the generator's spec URL in `.stats.yml` / config, plus the SDK source tree for service/resource grouping | download the spec; walk the SDK AST (`self._get/_post/_put/_patch/_delete` calls and `path_template(...)` f-strings) to build a `(verb, path) -> (service, resource_chain, sdk_method)` index | +| botocore-style JSON models | `data///service-2.json` + `paginators-1.json` (+ `waiters`) | iterate services, read operations/shapes/protocol metadata; synthesise paths per protocol | +| Hand-written Python/TS client | the client classes and typed models (Pydantic/dataclasses/TS interfaces) | walk the AST for HTTP calls and their request/response types; generate schemas from the type definitions | +| gRPC/proto | `.proto` files with HTTP annotations (`google.api.http`) | transcode annotations to paths, messages to schemas | + +**Synthesising the spec** (`provider-dev/scripts/generate_specs.py` or equivalent; `make specs`, `make specs-refresh` to re-download): one ordered, numbered pass list, each pass counted in the log. The passes the two shipped builds needed, in the order they run: + +1. fan out polymorphic path templates (`/{accounts_or_zones}/{id}/...` -> one path per concrete parent) +2. inline shared `components/parameters|responses|requestBodies` into each operation +3. snake_case path parameters; PascalCase/camelCase schema names +4. flatten multi-line descriptions (docgen turns newlines into `
    `) +5. collapse `allOf`/`oneOf`/`anyOf` into a flat property union; strip `additionalProperties`/`discriminator` +6. fix `required` lists that name absent properties; strip `readOnly` properties from write-body `required` (the API rejects `unknown field "id"` otherwise) +7. force `required: true` on path parameters; hoist inline `result.items` into named schemas +8. canonicalise scoping parameter names (`account_id`, `zone_id`) +9. assign services: exact `(verb, path)` match against the SDK index, then a static capability map, then longest SDK prefix, then a URL-prefix fallback - every path must land somewhere +10. write `provider-dev/source/.yaml` + +For protocol families without REST paths (aws query/ec2, aws-json, rpc), **invent stable path keys** the any-sdk router can match: `/?Action=&Version=` for query protocols, `/#` with an `X-Amz-Target` header for aws-json, `/graphql?resource=` for GraphQL (graphql-merge.md). Stamp each synthesised operation with breadcrumbs (`x-stackql-resource`, `x-stackql-method`, `x-stackql-verb`, `x-stackql-objectKey`, pagination hints) so the next stage does not have to re-derive them. + +**Mapping and breaking-change control** - the same `all_services.csv` contract as inventory-and-mapping.md (identical 13 columns), but the identity key is `(filename, path, verb)` or `filename::operationId` and **existing rows win over freshly derived breadcrumbs**: a regeneration maps a known operation to exactly the resource/method/verb/objectKey it shipped with; new operations are appended and a `--strict` run fails until they are curated; rows are never rewritten silently. Deleting the CSV forfeits every pin. Keep sidecars for forced decisions (`param_promotions.json` for `required: true` overrides) and write a `build-report.json` each run (promotions, demotions, zero-column resources). + +**Surface-drift guard** - a committed `benchmarks.json` (`services`, `resources`, `methods`, `selectableResources`, `nonSelectableRatioPct`, `ratioTolerancePct`) that fails the build when any count falls or the non-selectable ratio spikes; re-baseline only with an explicit flag. A spike means a generator change started stranding readers. + +**Provider generation** - either `providerdev.generate` with the usual flags (cloudflare) or a purpose-built emitter that reproduces the CSV contract and writes the service YAMLs directly (aws, because per-protocol request translation, XML transforms and sigv4 config are easier to emit than to post-process). Post-passes that recur in derived builds: non-JSON responses -> `{contents}` + text transform; request-body JSON transforms where naive translation string-wraps array/object SET values; octet-stream write bodies exposed as one `value` column via `request.schema_override` + `body: '{{ .value }}'`; families of near-identical per-model endpoints collapsed into one resource with a discriminating parameter; per-method `nativeCasing: pascal` for PascalCase wire APIs with `snake_case_aliases: true` on the provider. + +**Derived-build pitfalls recorded by the shipped builds**: SDK-vs-API drift (sunset REST endpoints still present in the SDK - strip them; models declaring one protocol in `metadata.protocol` and another in `protocols`); global-endpoint metadata that is really a regional alias; YAML 1.1 boolean keywords in `required` lists must be quoted; NOCASE column collisions abort `CREATE TABLE` with exit code 0 (defend with a collision check at build time and fatal-pattern greps in the smoke harness); pagination schemes any-sdk cannot express (`page >= total_pages`) are parked, documented, and left off rather than looping forever; docgen sanitizers are needed for hostile description text; a CSV open in Excel is file-locked on Windows. + +Everything from the inventory step onward applies unchanged: inventory-and-mapping.md, then normalize-and-generate.md (a derived build may replace provider-utils `generate` with a purpose-built emitter, as aws does, but the CSV contract, the post-process responsibilities and the test layers are the same). diff --git a/.claude/skills/stackql-provider-development/references/direct-spec-fetch-and-pin.md b/.claude/skills/stackql-provider-development/references/direct-spec-fetch-and-pin.md new file mode 100644 index 0000000..fe32d32 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/direct-spec-fetch-and-pin.md @@ -0,0 +1,14 @@ +# Direct archetype: fetch, fix, validate, pin the spec + +`bin/fetch-spec.sh` -> `provider-dev/scripts/record_spec_pin.mjs`: + +1. Download to a temp dir (`curl -fsSL`). Never write into `provider-dev/downloaded/` before validation passes. +2. Apply **deterministic fix classes** to the parsed document before validating, each counted: the typical NestJS/JSON-Schema-2020-12 leaks are `"type": "null"` -> `nullable: true`, `propertyNames` removed, numeric `exclusiveMinimum`/`exclusiveMaximum` -> `minimum`/`maximum` + boolean flag, `$schema` keys removed, `const` -> `enum`, vendor artifact keys (`hideDefinitions`) removed, OpenAPI 3.1 `type: [string, "null"]` arrays lowered to a single type + `nullable`, `openapi: 3.1.2` -> `3.1.1` (swagger-parser rejects 3.1.2 by string). Add a class when a refresh introduces a new construct; a class absent from a snapshot counts 0. +3. Validate with `@apidevtools/swagger-parser` (`SwaggerParser.validate(structuredClone(spec))`). Fail without writing on error. +4. **Redact** credential-shaped example values deterministically (Slack webhooks, tokens in examples trip GitHub push protection); record counts. +5. Pin in `provider-dev/config/spec_pin.json`: url, filename, stated version, openapi version, path and operation counts, upstream sha256 (of the raw bytes - drift always compares upstream), sanitized sha256, fix counts, redaction counts, bytes, fetched date. Pin mismatch fails unless `--update` (a reviewed refresh). Commit the snapshot so every refresh is a reviewable diff. +6. On a refresh, diff before accepting: added/removed/renamed operations, added/removed/changed schemas. A node one-liner over the two JSON files is enough; record the summary in NOTES.md. + +A multi-spec vendor (several documents, or one per API family) pins each under `specs.` with the same fields. + +Next: inventory-and-mapping.md (shared with the derived archetype from here on). diff --git a/.claude/skills/stackql-provider-development/references/docs-and-ci.md b/.claude/skills/stackql-provider-development/references/docs-and-ci.md new file mode 100644 index 0000000..1679363 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/docs-and-ci.md @@ -0,0 +1,23 @@ +# Docs microsite and CI + +## Docs microsite + +Docusaurus `^3.10.x` on the shared `stackql/docusaurus-config` (vendored to `.shared-config/` by `yarn vendor-config` in `prebuild`/`prestart`). Site-local files only: `provider.js` (`providerName`, `providerTitle`), `docusaurus.config.js` (createConfig + registry logos + `config.presets[0][1].docs.showLastUpdateTime = true;`), `sidebars.js`, `scripts/sanitize-docs.mjs`, `src/` (CopyableCode, SchemaTable, StackqlDeployDropdown, theme overrides), `static/` (CNAME `-provider.stackql.io`, favicons, manifest, registry logos, `stackql-featured-image.png`, `stackql--provider-featured-image.png`). No Docusaurus boilerplate (no undraw images, HomepageFeatures, stock README). + +The sidebar (`sidebars.js`) has one shape on every provider site: a `Back to StackQL Docs` link first (`type: 'link'`, `href: '/stackqldocs'`, `className: 'sidebar-back-link'`), then `All Providers` (`href: '/providers'`), then the ` Provider` category linked to `provider-intro` with the autogenerated `services` tree. Both hrefs are shared-config redirect routes that the vendored redirects plugin registers on the site (they forward to `https://stackql.io/` and `https://stackql.io/providers`), so they render as internal links and pass the broken-link checker; the `.sidebar-back-link` rules in `src/css/global.css` draw the arrow and the divider, matching the query library site. Copy both from the template rather than re-deriving them. + +`headerContent1.txt` is the front matter + one-paragraph pitch; `headerContent2.txt` is the getting-started page: See also / Installation (`REGISTRY PULL`) / Scope / Authentication (env vars, bash and PowerShell) / the scoping variable / Rate limit / Beta labelling / Example Queries - lead with the queries the provider exists for (estate inventory, posture set, the flagship, provisioning with INSERT/UPDATE/EXEC/DELETE, a cross-provider UNION). Examples must be runnable against the generated surface (snake names, quoted keywords). + +The example section has one shape on every provider site, so the table of contents reads the same everywhere: + +- The H2 is exactly `## Example Queries` and it is the last section of `headerContent2.txt` (docgen appends `## Services` after it). +- The H2 is followed by one intro sentence, `Try the following queries using \`stackql shell\`, or run them from a script or CI pipeline with \`stackql exec\`.`, so the H2 never sits directly on an H3. No two headings anywhere in the file are back to back. +- Each example is an H3 named for what it answers (`### Estate inventory`), with a one-sentence lead-in ending in a colon and one ` ```sql ` block (two at most). Setup material (scope, auth, casing, rate limits, pagination) stays in its own H2 sections above, never inside the examples. +- Plain prose, `-` rather than em dashes, no ASCII arrows; SQL with uppercase keywords, single-quoted strings, semicolon terminated; placeholders in the same style the generated resource pages use. +- Favicons live at the `static/` root (`favicon.ico`, `favicon-16x16.png`, `favicon-32x32.png`, `apple-touch-icon.png`, `safari-pinned-tab.svg`, `site.webmanifest`); the shared config links them root-relative, so copies under `static/img/` are never served as the site icon. + +`make docs` = `generate-docs --snake-case-aliases --source-project $(SOURCE_PROJECT)` + `sanitize-docs.mjs` (escapes MDX-hostile description text, annotates env-var-defaulted parameters "required unless X is set", corrects docgen's landing-page resource count which includes each service index). `--source-project` (provider-utils >= 0.7.11) adds a `source project` row to the Provider Summary admonition on the landing page, linking the repository name (the URL's last path segment) to the URL; `sanitize-docs` leaves the row alone. The Makefile carries the URL as `SOURCE_PROJECT ?= https://github.com/stackql-registry/stackql-provider-<slug>` (rewritten by `bin/init-provider.sh`), always the consuming repository's own URL, never the template's; a repository hosted elsewhere sets it there. `make website` = `yarn install && yarn build`. Commit `website/docs` after every regeneration so pages stamp with their regeneration date. + +## CI + +`build-and-test.yml`: on push/PR - `actions/setup-node@v7` on Node 22, `npm ci`, `stackql/setup-stackql@v2`, `make fetch-spec` (warn on drift, build from the pin), build steps, **fail on uncommitted generation drift** (`git add -N . && git diff --quiet -- provider-dev/openapi provider-dev/config provider-dev/source`), `make test-offline test-integration test-meta`, `make docs`. A `smoke` job skipped at the job level (no runner consumed) on pull requests, on the schedule, until a spec is pinned and until the secrets are configured: build-and-test exports `pinned` and `smoke_creds` outputs because a job-level `if` cannot read secrets, and raises a notice naming the missing secret where the smoke job would otherwise have run; never the expensive lifecycle. A weekly `spec-drift` job that fetches, compares with the pin, and opens a labelled issue with the diff stat. Web deploy workflows build the site from `main` with `yarn install --frozen-lockfile`, cached on `website/yarn.lock`; the first `make website` writes that lockfile, so commit it before enabling them. diff --git a/.claude/skills/stackql-provider-development/references/graphql-merge.md b/.claude/skills/stackql-provider-development/references/graphql-merge.md new file mode 100644 index 0000000..9450d28 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/graphql-merge.md @@ -0,0 +1,60 @@ +# GraphQL operations + +Merge GraphQL-backed resources when the REST API lacks the data (GitHub Discussions, star history with `starred_at`, contribution calendars, SAML identities, Cloudflare's GraphQL Analytics replacing sunset REST analytics). They are SELECT-only resources declared through the operation-level extension `x-stackQL-graphQL`: + +```yaml + /graphql?resource=star_history: # synthetic unique path key; the reader clears the query string + post: + operationId: graphql/activity/star_history/list + x-stackQL-graphQL: + url: https://api.github.com/graphql # informational - routing is servers + path key + httpVerb: POST + responseSelection: + jsonPath: $.data.repository.stargazers.edges[*] + cursor: + strategy: page_info # cursor_after (default) | page_info | keyset | offset + jsonPath: $.data.repository.stargazers.pageInfo.endCursor + terminateOnJsonPath: $.data.repository.stargazers.pageInfo.hasNextPage + query: | + query { + repository(owner: "{{ .owner }}", name: "{{ .repo }}") { + stargazers(first: 100, orderBy: {field: STARRED_AT, direction: ASC}{{ .cursor }}) { + pageInfo { endCursor hasNextPage } + edges { starred_at: starredAt user: node { login id url } } + } + } + } + x-stackql-protocol: graphql + parameters: + - {name: owner, in: query, required: true, schema: {type: string}} + - {name: repo, in: query, required: true, schema: {type: string}} + responses: + '200': {description: Response, content: {application/json: {schema: {...nested envelope down to edges: array of row objects...}}}} +``` + +```yaml + star_history: + id: github.activity.star_history + name: star_history + methods: + list: + operation: {$ref: '#/paths/~1graphql?resource=star_history/post'} + response: {mediaType: application/json, openAPIDocKey: '200', objectKey: $.data.repository.stargazers.edges} + x-stackql-protocol: graphql + sqlVerbs: + select: [{$ref: '#/components/x-stackQL-resources/star_history/methods/list'}] + insert: [] + update: [] + delete: [] + replace: [] +``` + +Semantics: every declared parameter supplied in WHERE becomes a Go-template variable of the same name (`{{ .owner }}`); a pushed-down `LIMIT` arrives as `{{ .limit }}` (guard optional ones with `{{ if .x }}...{{ end }}`); `{{ .cursor }}` is spliced by the cursor strategy (`, after: "..."` for `cursor_after`/`page_info`, a `format` template rendered from the last row's key for `keyset`, `, offset: N` for `offset` with `pageSize`); `responseSelection.jsonPath` must select an array of objects (a `response.transform` on the method runs first, so a JSON template can flatten `dimensions`/`sum` groups into flat rows); any non-empty top-level `errors` aborts the read; GraphQL string literals must not contain newlines or backslashes (the query is newline-stripped and only `"` is escaped). + +Process (github's `provider-dev/source-graphql/` + `graphql_merge.mjs`, run as the last step of `make provider`): + +1. Author one fragment per op: `service`, `resource`, `title`, `description`, `parameters` (plain OpenAPI parameter objects), `selection` (a plain dotted path, no `[*]`), optional `cursor`, `query`, `rowSchema` (so `DESCRIBE` and the docs show real columns). A `manifest.yaml` lists the `graphql_url`, any GraphQL-only services, and the ops. +2. The merge script builds the operation (`responseSelection` = selection + `[*]`), reconstructs the nested response schema down to `items: rowSchema` (plus a `pageInfo` sibling for `page_info`), builds the select-only resource (`objectKey` = the bare selection), appends `providerServices` entries for GraphQL-only services, and re-sorts keys. +3. Idempotency: the merge first strips every path operation and resource whose methods all carry `x-stackql-protocol: graphql`, so regeneration is safe and the fragments are the single source of truth. It throws on a path-key POST collision or a resource name that already exists as REST. + +Pitfalls: an op **must** carry a `cursor` block even when single-page (any-sdk gates the response JSONPath on it - emit a dummy `cursor: {jsonPath: $.data.__no_cursor}` and let `cursor_after` treat the failed lookup as EOF); `page_info` without `terminateOnJsonPath` and `keyset` without `format` are fatal; the static analyzer skips GraphQL methods, so the integration mock must cover them; nested objects arrive as JSON columns (`json_extract(user, '$.login')`); note token-permission caveats in the description. diff --git a/.claude/skills/stackql-provider-development/references/handover.md b/.claude/skills/stackql-provider-development/references/handover.md new file mode 100644 index 0000000..7f03aa0 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/handover.md @@ -0,0 +1,13 @@ +# Recording decisions and handing over + +## What to record where + +- **CLAUDE.md** - the settled decisions (archetype, scoping variable, auth, the flagship mapping, skip codes, casing policy), the toolchain rules, where the findings live, the non-negotiables. Short; it is read every session. +- **NOTES.md** - numbered findings with evidence (what was measured, against what, what was decided and why), a Blockers list of what only a live run can establish, and the testing requirements. It is the memory of the build; a future refresh reads it before touching a rule. +- **README.md** - the numbered build guide (steps 0-8: pin, inventory, split, mappings, normalize, generate, test, publish, docs) with counts that match the committed artifacts, the Makefile targets, credentials, and the CI description. +- **.env.example** - every live-test variable with a one-line comment; never a real value. +- **SECURITY.md** and **LICENSE** - carried from the template, placeholders rewritten by `bin/init-provider.sh`: the repository's private advisory form, the scope split between the provider and the engine, MIT. Not a build artifact; update only when the policy changes. + +## Hand-over + +Publishing to the registry is a separate, human-in-the-loop skill. Hand over: a clean `make all`, the live-run open questions listed in NOTES.md "Blockers" (what the first smoke run establishes), `.env.example`, and a short note on how to run `make smoke` / `make smoke-live` and raise a PR for fixes (rules in scripts, `make build && make test`). diff --git a/.claude/skills/stackql-provider-development/references/inventory-and-mapping.md b/.claude/skills/stackql-provider-development/references/inventory-and-mapping.md new file mode 100644 index 0000000..bd779b4 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/inventory-and-mapping.md @@ -0,0 +1,45 @@ +# Inventory, service split and mappings + +The most consequential step of the build: every later problem traces back to the inventory columns and the mapping rules. Applies to both archetypes (a derived build stamps breadcrumbs in its synthesised spec, then runs the same inventory and mapping). + +## Inventory and service split + +`provider-dev/scripts/build_inventory.mjs` writes `provider-dev/config/endpoint_inventory.csv`, one row per operation, from the pinned spec. Columns that decide everything downstream: + +- scope (which path parameter addresses the row: org, project, account, none), path params +- pagination-looking query params (`limit`, `offset`, `page`, `cursor`, `page_token`, `next_token`, ...) - a per-endpoint **confirmation**, not an assumption +- request body presence, media types (json / form / multipart / octet / vendor types), and whether the body is a bare array +- update verb semantics presumption (`patch-partial-presumed`, `put-replace-unverified`) - the keycloak finding: PUT is not REPLACE until proven live +- vendor labels (`[Beta]`, `[Alpha]`, `deprecated`) - carried into docs, never hidden +- response shape: `bare-array`, `object` (with the names of its top-level array properties - envelope candidates), `scalar`, `untyped-json`, `non-json`, `none` +- proposed service, resource, verb, and a **skip reason code** where an operation will not be mapped + +Standard skip codes (reason-coded in the CSV, listed in the README): `multipart_upload`/`multipart_eszip_deploy` (binary bodies - the CLI is the path), `non_json_text_response` (text/plain, Prometheus exposition, PDFs unless a transform makes them useful), `untyped_json_response` (empty schema and marginal value), `bare_array_bulk_body` (bulk endpoints with no per-statement form when a single-item endpoint exists), `head_count_endpoint`, `oauth_user_agent_flow` (browser redirect flows), `websocket`/`sse_stream`. Every skipped operation stays visible in the CSV. + +**Service split** is recorded as ordered path rules in `provider-dev/config/service_names.json` (first match wins; an unmatched path fails the build) and applied by `bin/split.mjs` via `providerdev.split({svcDiscriminator: 'function', svcDiscriminatorFn})`. Use `--svc-discriminator tag` only when the vendor's tags are already a good service split (github). Aim for 8-20 services named for what a user would look for (`projects`, `config`, `network`, `secrets`, ...), not the vendor's controller names. A rule may carry `"excluded": true` for a service whose every operation is skip-coded (the split classifies it for the inventory but does not emit it - an empty service fails the meta-route walk). + +Split writes `provider-dev/source/<service>.yaml` (committed build artifacts). If the API scopes most paths under one parent (`/v1/projects/{ref}/...`, `/organizations/{orgId}/...`, `/accounts/{account_id}/...`), rebase them here onto a server template - see scoping-and-auth.md. + +## Mappings: the operation -> resource.method table + +`npm run generate-mappings -- --provider-name X --input-dir provider-dev/source --output-dir provider-dev/config` (provider-utils `analyze`) writes `all_services.csv` with one row per operation and blank `stackql_resource_name`, `stackql_method_name`, `stackql_verb`, `stackql_object_key` columns. **Delete the CSV first and regenerate from scratch** so retired operations disappear, then `provider-dev/scripts/map_operations.mjs` fills the columns from rules and validates: + +- every row mapped or `skip_this_resource` with a reason; every spec operation present in the CSV +- `(service, resource, method)` unique +- for non-EXEC verbs, unique required-parameter signature per `(resource, sqlVerb)` - two SELECT methods on one resource that both need only `id` cannot be routed; split the resource or make one EXEC + +How the engine routes a statement (any-sdk `methodSet.go`, `resource.go`): the refs under a `sqlVerbs` key are tried **in the order written** and the first method whose required parameters are satisfied by the statement wins - there is no sorting by selectivity, so list the less selective method (`list`) before the more selective one (`get`) and confirm an overload with `probe.mjs`. If a verb key is absent from `sqlVerbs` entirely, the engine falls back to method names (`select` -> `select|list|aggregatedList|get`, `insert` -> `insert|create`, `delete` -> `delete`); the generator always writes the lists, so this only matters for hand-authored fragments. + +Mechanical derivation (then `RESOURCE_RULES` / `METHOD_RULES` for the exceptions): strip the scoping pairs (`projects/{ref}`), take the static segments, pluralize the last as the resource in snake_case; GET collection -> `list`, GET single -> `get`, POST -> `create`, PATCH/PUT -> `update`, DELETE -> `delete`, POST on an action segment (`pause`, `restart`, `apply`, `merge`, `activate`, `retrieve`, ...) -> EXEC `<action>` on the parent resource, PATCH/PUT on `status`/`password`/`state` -> EXEC `update_<segment>`. + +Naming rules that hold across builds: + +- resources are plural snake_case; singleton config surfaces are `<thing>_configs` (`auth_configs`, `ssl_enforcement_configs`) +- a resource projects **one shape**: if a detail read returns a different schema from the list, it is a separate resource (`branches` vs `branch_configs`) +- lifecycle operations live on the resource they act on (`projects.pause`, `services.update_state`, `instances.start`) - the aim is to minimise non-selectable resources; an EXEC-only resource is acceptable only when there is genuinely no read +- envelope list reads set `stackql_object_key` (`$.items`, `$.data`, `$.result`, `$.backups`); bare-array lists leave it blank (request-response-shaping.md) +- a POST that is really a read (`.../retrieve`, `.../search`, `.../query` with no side effects) maps as SELECT `list` - remember the generator applies the CSV objectKey to GET only, so set it in post-process +- deprecated operations stay mapped when no replacement exists; the deprecation flows into the docs +- `stackql_verb`: `select | insert | update | delete | exec` (there is also `replace`, used only with proven full-replacement PUT semantics) + +Add a `--report` flag to the mapping script that prints every derived mapping without writing; it is the fastest way to design rules for a new service. diff --git a/.claude/skills/stackql-provider-development/references/normalize-and-generate.md b/.claude/skills/stackql-provider-development/references/normalize-and-generate.md new file mode 100644 index 0000000..4710009 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/normalize-and-generate.md @@ -0,0 +1,45 @@ +# Pre-normalize, normalize, generate, post-process + +Shared by both archetypes once `provider-dev/source/<service>.yaml` and `all_services.csv` exist. + +## Pre-normalize, normalize + +`provider-dev/scripts/pre_normalize.mjs` holds the provider-specific spec surgery that must happen on `provider-dev/source` before the generic pass. Typical jobs (each validated, counted, idempotent): + +- remove a non-JSON request media type declared before `application/json` (any-sdk binds the body to the first declared type) +- remove deprecated query parameters that duplicate body properties (any-sdk binds an INSERT column to the query parameter first and the body arrives empty) +- inject a response schema where the vendor declares none (a `201` with no content on a query endpoint) so a binding exists +- rewrite a bare-array request body to its single-item object form (paired with a request transform in post-process, see request-response-shaping.md) +- drop a camelCase duplicate of a snake_case property that would collide under `snake_case_aliases` +- lower OpenAPI 3.1 constructs the kin-openapi loader cannot read (type arrays, numeric exclusive bounds) + +Then `npm run normalize -- --api-dir provider-dev/source`: flattens `allOf`, lowers `oneOf`/`anyOf` unions, strips misplaced keywords, converts opaque objects to strings, lifts path-item parameters onto operations, strips non-root `servers`, and **wraps bare-array responses** (marks the operation `x-stackql-bare-array-wrap` with a wrapper key derived from the operationId; `--bare-array-overrides '{"<operationId>": {"wrapperKey": "...", "columnName": "..."}}'` renames one). Some providers need a `post_normalize.mjs` to undo a wrap the vendor's own envelope makes wrong (github). + +## Generate + +```bash +rm -rf provider-dev/openapi/* +npm run generate-provider -- \ + --provider-name <name> \ + --input-dir provider-dev/source \ + --output-dir provider-dev/openapi/src/<name> \ + --config-path provider-dev/config/all_services.csv \ + --servers provider-dev/config/servers.json \ + --provider-config provider-dev/config/provider_config.json \ + [--service-config provider-dev/config/service_config.json] \ + [--skip-files '["internal.yaml"]'] \ + --naive-req-body-translate \ + --overwrite +node provider-dev/scripts/post_process.mjs +``` + +- `--servers` replaces `servers` on every service (inline JSON or a file). Server variables with `x-stackQL-envVar` are authored here. +- `--provider-config` becomes `config:` in `provider.yaml`: `auth`, `snake_case_aliases`, provider-wide `pagination`/`retry`. +- `--service-config` becomes the document-level `x-stackQL-config` on every service (document-level `pagination`, `variations`, `queryParamPushdown`). +- `--naive-req-body-translate` emits `config.requestBodyTranslate.algorithm: naive` on every POST/PUT/PATCH with a body, so body properties are plain columns (`INSERT INTO t (name, value)`) rather than `data__name`. It is not emitted for DELETE bodies - add it in post-process. It cannot address a bare-array body (request-response-shaping.md). +- `--views-dir` defaults to `./views` when the directory exists (provider-views.md). +- `--update-path-param-names` snake_cases path parameter names in the paths and parameters (use when the vendor's are camelCase and you want `WHERE instance_id`). + +Output: `provider-dev/openapi/src/<name>/v00.00.00000/provider.yaml` + `services/*.yaml`. Each service carries `components.x-stackQL-resources.<resource>` with `methods.<name>` (`operation.$ref`, `request`, `response`, `config`) and `sqlVerbs` (`select`/`insert`/`update`/`delete`/`replace` lists of method refs). **EXEC is the fallback bin**: a method omitted from every `sqlVerbs` list is EXEC. + +`post_process.mjs` re-applies everything the generator cannot express (idempotent, validates, fails without writing): path-level `servers` overrides, method-level `pagination`, `request.nativeCasing`, response transforms and `schema_override`, objectKeys on non-GET reads, request transforms, `queryParamPushdown`, DELETE-body naive translation, `x-stackQL-alias` on parameters. Everything in it is a numbered, commented rule. diff --git a/.claude/skills/stackql-provider-development/references/pagination-and-pushdown.md b/.claude/skills/stackql-provider-development/references/pagination-and-pushdown.md new file mode 100644 index 0000000..7d7a93e --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/pagination-and-pushdown.md @@ -0,0 +1,45 @@ +# Pagination and query-parameter pushdown + +Configure pagination **per the vendor's documented scheme**, confirmed per endpoint in the inventory - never assume. Place the block at the narrowest level that is true: method `config.pagination` (post-process) when one collection paginates, document-level `x-stackQL-config.pagination` (`--service-config`) when a whole service does, provider config when the whole API does. Prove every scheme against a two-page mock fixture. + +```yaml +pagination: + algorithm: <absent = token | page_number | odata_next_link> + requestToken: {key: <name>, location: query|path|header|body|request} + responseToken: {key: <JSONPath or header name>, location: body|header|query|path} + responseTerminator: {key: <JSONPath>, location: body} # page_number only +``` + +| Vendor scheme | Config | +|---|---| +| Cursor / next-token in the body (`{data, cursor}`, `{items, next_page_token}`) | `requestToken: {key: cursor, location: query}`, `responseToken: {key: $.cursor, location: body}` - stops when the token is absent or empty | +| Next-page URL in the body (`$.next`, OData `@odata.nextLink`) | `requestToken: {key: '', location: request}`, `responseToken: {key: $.next, location: body}` (the value is the whole next request URL); `algorithm: odata_next_link` for OData | +| RFC 5988 `Link: <url>; rel="next"` header (github) | `requestToken: {key: '', location: request}`, `responseToken: {key: Link, location: header}` | +| Page number with a page count in the body | `algorithm: page_number`, `requestToken: {key: page, location: query}`, `responseToken: {key: $.page, location: body}`, `responseTerminator: {key: $.pages, location: body}` - stops when page >= pages | +| Offset/limit with no next marker | not expressible - expose `offset`/`limit` as WHERE parameters (parameter-driven windowing) and document it; do not fake a loop that never terminates | +| GraphQL cursors | graphql-merge.md | + +`--http.response.pageLimit` bounds traversal; the vendor's page size parameter is a pushdown (`top`), not a pagination key. + +Token blocks also accept `algorithm` and `args` keys; they are inert (any-sdk `pagination.go`): the only algorithm-sensitive path is `location: header`, where an empty `algorithm` with `key: Link` selects the RFC 5988 transformer and any other header key has the same `rel="next"` regex applied. Do not author them. Pagination blocks resolve method -> resource -> service -> providerService (`providerServices.<name>.config` in `provider.yaml`) -> provider. + +**Predicate pushdown** needs no configuration for plain parameters: WHERE keys are matched against the operation's `parameters` by name in the order path -> query -> header -> cookie; `in: header` parameters are set as request headers; **any leftover WHERE key with no matching parameter is appended as a query parameter**. So `WHERE reveal = 'true'`, `WHERE services = 'db'`, `WHERE iso_timestamp_start = '...'` push down as soon as the parameter is declared (declare undocumented-but-real query params in pre-normalize when the vendor omits them). `x-stackQL-alias` on a parameter/property accepts an alternative WHERE name. + +**Clause pushdown** (`queryParamPushdown`, inheriting method -> resource -> service -> providerService -> provider as whole-block replacement) rewrites SELECT columns, WHERE, ORDER BY, LIMIT, OFFSET and COUNT into API parameters: + +```yaml +queryParamPushdown: + select: {dialect: odata|custom, paramName: $select, delimiter: ',', supportedColumns: [...]} + filter: {dialect: odata, paramName: $filter, syntax: odata, supportedOperators: [eq, ne, gt, ge, lt, le, startswith, endswith, contains, and], supportedColumns: [...]} + orderBy: {dialect: odata, paramName: $orderby, supportedColumns: [...]} + top: {dialect: custom, paramName: limit, maxValue: 1000} + skip: {dialect: custom, paramName: offset, maxValue: ...} + count: {dialect: odata, paramName: $count, paramValue: 'true', responseKey: '@odata.count'} +``` + +- `dialect: odata` fills the `$select/$filter/$orderby/$top/$skip/$count` defaults (entra_id/msgraph/azure style); `custom` (the default) uses `paramName` verbatim - the common case is `top: {paramName: limit, maxValue: N}` so `LIMIT n` becomes `?limit=n` (clamped). +- Only OData rendering of `filter`/`orderBy` is implemented today (`query_param_pushdown_apply.go`): the `key_value`, `simple`, `prefix` and `suffix` syntaxes in any-sdk's `docs/provider_spec.md` parse into config but are never rendered; non-OData predicates are evaluated client-side as residuals, which is still correct, just not pushed. +- Empty `supportedColumns`/`supportedOperators` means all; `select` and `orderBy` are all-or-nothing (one unsupported column suppresses the parameter); list `and` in `supportedOperators` to push more than one predicate. +- A method-level block masks the whole service-level block (no per-field merge) - restate everything when overriding. + +Header-bound predicates (an `X-Org-Id` or `Accept-Version` header the API filters on) are plain `in: header` parameters; give them a `schema.default` when the API needs them always. diff --git a/.claude/skills/stackql-provider-development/references/provider-views.md b/.claude/skills/stackql-provider-development/references/provider-views.md new file mode 100644 index 0000000..b60b7f1 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/provider-views.md @@ -0,0 +1,33 @@ +# Provider views + +Views are virtual resources injected at generate time from `views/<service>/views.yaml` (`--views-dir`, defaulting to `./views`), documented like any resource. A file is a top-level YAML mapping of view name -> resource body; API-derived resources win on a name collision, so prefix views `vw_`: + +```yaml +vw_ssl_posture: + name: vw_ssl_posture + id: <provider>.config.vw_ssl_posture + config: + docs: + fields: + - {name: applied_successfully, type: boolean, description: Whether the current config was applied.} + - {name: ssl_enforced, type: boolean, description: Whether SSL is enforced on database connections.} + requiredParams: # optional; templated as '{{ name }}' in the ddl + - {name: ref, type: string, description: Project ref.} + views: + select: + predicate: sqlDialect == "sqlite3" + ddl: |- + SELECT applied_successfully, + JSON_EXTRACT(current_config, '$.database') AS ssl_enforced + FROM <provider>.config.ssl_enforcement_configs + WHERE ref = '{{ ref }}' + fallback: + predicate: sqlDialect == "postgres" + ddl: |- + SELECT applied_successfully, + (current_config->>'database')::boolean AS ssl_enforced + FROM <provider>.config.ssl_enforcement_configs + WHERE ref = '{{ ref }}' +``` + +`docs.fields` is what the doc page renders; `views.select.ddl` is what the engine runs, with the `sqlite3` form first and a `postgres` `fallback` for server mode (the predicate is matched against stackql's SQL system name - `sqlite3` or `postgres`; an empty predicate matches every dialect). provider-utils splices the fragment verbatim, so the engine learns a view's required parameters **only** from a `requiredParams == ["ref"]` clause in the predicate (any-sdk `view.go`, passed to `CreateView` by stackql); `docs.requiredParams` is docs-only. When the DDL templates `'{{ ref }}'`, write `predicate: sqlDialect == "sqlite3" && requiredParams == ["ref"]` (and the same on the fallback) and confirm in the offline layer that `SHOW METHODS` lists the parameter. Good candidates: json_extract-heavy posture queries, multi-resource UNIONs, the "estate inventory" of a provider. Test each with `SELECT * FROM <provider>.<service>.<view>` in the offline layer. diff --git a/.claude/skills/stackql-provider-development/references/reference-repos.md b/.claude/skills/stackql-provider-development/references/reference-repos.md new file mode 100644 index 0000000..3458c0d --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/reference-repos.md @@ -0,0 +1,20 @@ +# Reference repositories + +Clone these next to the provider repo (shallow clones are fine) and grep them for any extension key to find a real, shipped example. Sibling build repos carry a NOTES.md (or CLAUDE.md) of findings - reuse them, do not re-derive. + +| Repo | What to read | +|---|---| +| https://github.com/stackql/any-sdk | the engine: `docs/provider_spec.md` is the extension contract; `cicd/schema-definitions/stackql-config.schema.json` the allowed config keys; `internal/anysdk/*.go` struct yaml tags are the source of truth for key names | +| https://github.com/stackql/stackql | the CLI: robot tests under `test/` show working SQL for every feature; `test/registry` holds fixture providers | +| https://github.com/stackql/stackql-provider-registry | every shipped provider under `providers/src/<provider>/v00.00.00000/` - grep for a key (`objectKey`, `nativeCasing`, `x-stackQL-graphQL`, `queryParamPushdown`, `transform`) to see it used for real | +| https://github.com/stackql-registry/stackql-provider-utils | `@stackql/provider-utils` source: `src/providerdev/{split,normalize,analyze,generate}.js`, `src/docgen/` | +| https://github.com/stackql-registry/stackql-provider-clickhouse | the lean direct-archetype mould: fixed host, org-scoped server variable, mock integration suite, Makefile, smoke suite | +| https://github.com/stackql-registry/stackql-provider-supabase | direct archetype with a project-scoped server variable, query-endpoint `INSERT ... RETURNING`, request transforms, views-ready | +| https://github.com/stackql-registry/stackql-provider-github | direct archetype split by tag, Link-header pagination, the GraphQL merge (`provider-dev/source-graphql/`, `graphql_merge.mjs`) | +| https://github.com/stackql-registry/stackql-provider-openai | direct archetype with predecessor-inventory and residual-variant lowering scripts | +| https://github.com/stackql-registry/stackql-provider-confluent | provider views (`views/<service>/views.yaml`) | +| https://github.com/stackql-registry/stackql-provider-cloudflare | derived archetype: fork of the Stainless-generated Python SDK, build under `stackql_cloudflare/` | +| https://github.com/stackql-registry/stackql-provider-aws | derived archetype: fork of botocore, build under `stackql_aws_provider/`, purpose-built emitter, XML transforms, sigv4 | +| https://github.com/stackql/docusaurus-config | the shared Docusaurus configuration every microsite vendors at build time | + +`scripts/find_extension_examples.sh <key> [registry-clone-dir]` greps a registry clone for an extension key and prints the first shipped examples with context. diff --git a/.claude/skills/stackql-provider-development/references/repo-layout-and-makefile.md b/.claude/skills/stackql-provider-development/references/repo-layout-and-makefile.md new file mode 100644 index 0000000..3cfc9af --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/repo-layout-and-makefile.md @@ -0,0 +1,28 @@ +# Repository layout and Makefile + +``` +Makefile # make help / build / test / smoke* / docs / website / all +bin/ # fetch-spec.sh, split.mjs, start-server.sh, stop-server.sh, server-status.sh, test-meta-routes.cjs +provider-dev/ + downloaded/ # pinned spec snapshot (or the SDK-derived spec) + config/ # spec_pin.json, service_names.json, servers.json, provider_config.json, + # endpoint_inventory.csv, all_services.csv + scripts/ # record_spec_pin, build_inventory, map_operations, pre_normalize, post_process, lib/spec_helpers + source/ # split + normalized service specs (committed) + openapi/src/<provider>/ # generated provider (committed) + docgen/provider-data/ # headerContent1.txt, headerContent2.txt +views/<service>/views.yaml # optional provider views +tests/ + offline_validation.mjs + integration/ # mock_<provider>_server.mjs, run_integration_tests.mjs, probe.mjs + smoke_test.py +website/ # Docusaurus microsite +.github/workflows/ # build-and-test.yml, prod-web-deploy.yml, test-web-deploy.yml +CLAUDE.md NOTES.md README.md SECURITY.md LICENSE .env.example +``` + +Makefile targets (bash shell, `.DEFAULT_GOAL := help`, `##` help comments): `deps`, `fetch-spec` (verify pin), `refresh-spec` (`--update`), `inventory`, `split`, `mappings` (rm CSV + analyze + map), `pre-normalize`, `normalize`, `generate` (rm output + generate + post-process), `post-process`, `build` (the chain), `test-offline`, `test-integration`, `test-meta` (start server; run; stop; preserve exit status), `test`, `venv`, `smoke`, `smoke-live`, `smoke-read-only`, `smoke-<gated-lifecycle>`, `smoke-cleanup`, `docs` (passes `--snake-case-aliases` and `--source-project $(SOURCE_PROJECT)`, the provider repository URL, `?=` so it can be overridden), `website`, `website-start`, `clean`, `all` = `deps build test docs website`. `make all` never needs credentials and never bills. The smoke targets source `.env` when present (`set -a; source <(tr -d '\r' < .env); set +a`). + +package.json scripts wrap the two CLI entry points through `node ./node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs <cmd>` and `docgen-utils.mjs generate-docs` (never `.bin` shims); pass flags after `--`. + +CLAUDE.md records the settled decisions and where the findings live; NOTES.md records the findings with evidence; README.md is the numbered build guide (steps 0-8) with counts that match the artifacts. diff --git a/.claude/skills/stackql-provider-development/references/request-response-shaping.md b/.claude/skills/stackql-provider-development/references/request-response-shaping.md new file mode 100644 index 0000000..ef1ab1e --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/request-response-shaping.md @@ -0,0 +1,46 @@ +# Request and response shaping + +## Response shaping: objectKey, media types, transforms + +`response` block on a method: + +```yaml +response: + mediaType: application/json # content entry to type against + openAPIDocKey: '200' # which response code supplies the schema + objectKey: $.items # JSONPath to the row-bearing node ($.data.results, $.result.costs, $[*], XPath for XML) + overrideMediaType: application/json + schema_override: {$ref: '#/components/schemas/Wrapped'} + transform: {type: golang_template_text_v0.3.0, body: '...'} +``` + +- **Envelope arrays**: set `objectKey` (from the CSV for GET; in post-process for POST reads). +- **Bare arrays**: normalize + generate emit the wrap trio automatically (`objectKey: $.<wrapperKey>`, `overrideMediaType`, `schema_override`, and a text transform `{{- $wrapped := printf "{\"<key>\":%s}" . -}}{{- $wrapped -}}`). +- **Query-dependent rows** (a SQL/NRQL/log query endpoint whose keys depend on the statement): the newrelic posture - one row whose single column carries the array. Inject `{rows: array of object}` as the response schema in pre-normalize and attach the same wrap trio in post-process with `{"rows": ...}`; users address values with `json_extract(rows, '$[0].col')`. Proven to flow through `INSERT ... RETURNING rows`. +- **Non-JSON responses** (octet-stream, PDF, text): `mediaType: <wire type>`, `overrideMediaType: application/json`, `transform: {type: golang_template_text_v0.3.0, body: '[{"contents": {{ toJson . }}}]'}` and a matching `schema_override`. Without `overrideMediaType` + `schema_override` the transform never fires. +- **XML** (AWS-style): `transform.type: schema_driven_xml_v0.1.0` (objectKey is the list property; it reads the info-level `x-protocol: query|ec2|rest-xml` hint to skip the right envelope), or the `golang_template_mxj_*` family; `request.xmlTransform` controls escaping and `request.xmlDeclaration` / `xmlRootAnnotation` wrap the body. +- Transform families: `golang_template_text_*` (raw payload string as `.`), `golang_template_json_*` (parsed first), `golang_template_mxj_*` (XML parsed), `schema_driven_xml_*`. Versions `v0.1.0`/`v0.3.0`; use `v0.3.0` for new work. There is no jsonnet transform. Template functions (`pkg/stream_transform`): `separator`, `jsonMapFromString`, `getXPath`, `getXPathAllOuter`, `getRegexpFirstMatch`, `getRegexpAllMatches`, `safeIndex`, `toBool`, `toInt`, and from `v0.2.0` `toJson`, `kindOf`, `plus1`; `printf "%q"` and the rest of Go's text/template are available. +- **String-typed fields**: `x-stackQL-stringOnly: true` on a schema property keeps a string value verbatim on the way in (a JSON-looking string such as a policy document or serialized config is not parsed into an object, `shims.go`) and marks the path as stringified on the way out. Set it in pre-normalize. + +Skip a non-JSON endpoint unless the transform yields a genuinely useful row (a download URL, a rendered document as one text column). + +## Request shaping: naive bodies, nativeCasing, request transforms + +- `config.requestBodyTranslate.algorithm: naive` (from `--naive-req-body-translate`): body properties are bare columns. Without it, columns are `data__<name>`. `naive_<path>` takes the suffix as a path into the request-body schema (`FindByPath`, `operation_store.go`) and exposes the properties of the object at that path as the columns (with `nativeCasing` their snake forms too); nothing in the body assembly re-nests them under `<path>` on the wire, so for a `{parent: {...}}` body prove the wire shape against the mock and pair it with a request transform if the API needs the nesting. +- **Bare-array bodies** (`POST /secrets` taking `[{name, value}]`, `DELETE` taking `["name"]`): rewrite the body schema to the single-item object in pre-normalize and attach `request.transform` in post-process. The transform input is the marshalled JSON body string: text template `'[{{ . }}]'` wraps an object into an array; JSON template `'[{{ toJson .name }}]'` extracts a field. One item per statement - say so in the docs. +- **DELETE with a body**: add the naive config in post-process; the attributes are then WHERE keys (`DELETE FROM t WHERE ref = ... AND ipv4_addresses = '[...]'`). +- **Dual-declared parameters** (the same attribute as a deprecated query param and a body property): remove the query copies in pre-normalize or the body arrives empty. +- `request.mediaType` selects the request content type when several are declared. `request.base` is a JSON object merged **under** the statement's body attributes (the columns overwrite its keys) and sent alone when the statement supplies none; `request.default` is the body sent only when the statement supplies no body attributes at all (`request.go`). `request.required: [attr, ...]` marks body attributes required at the method level without editing the schema (`operation_store.go`) - the engine-native way to force INSERT columns. `request.projection_map` / `response.projection_map` (`alias: wireName`) feed the address-space aliasing; prefer `x-stackQL-alias` on the parameter or property. + +Engine typing facts (stackql v0.10.6xx): INSERT marshals typed JSON (booleans, numbers); EXEC parses JSON-shaped strings into arrays/objects but cannot carry a boolean at all; **UPDATE marshals every SET value as a string** (`SET enabled = 'true'` -> `"enabled": "true"`; bare `true` is a parser error, `json('true')` serialises the AST). Document it and make the live smoke test the coercion probe. Parser keywords to quote as columns: `"database"`. + +## snake_case surface + +Two halves, both needed when the wire is camelCase (or mixed): + +1. `snake_case_aliases: true` in the provider config - output columns display as `casing.ToSnake(wireKey)` while extraction uses the wire key. Nested JSON keeps wire casing (`json_extract(config, '$.dbAllowedCidrs')`). +2. `request.nativeCasing: camel` (also `pascal`, `kebab`, `snake`) on each method whose **parameters or body properties** are camelCase - snake SQL keys are converted back and re-resolved. Set it per method in post-process (provider-utils has no flag for it). Do not set it on methods whose wire is snake_case; do set it on body-less GETs with camelCase query parameters. + +Then `generate-docs --snake-case-aliases` so the docs show the same surface. Renaming a column between provider versions (`instanceId` -> `instance_id`) is an accepted breaking change; renaming a resource or moving a method is not. + +Watch for collisions: a schema carrying both `connection_string` and `connectionString` produces two identical snake columns and a DDL error at query time - drop the camel duplicate in pre-normalize. diff --git a/.claude/skills/stackql-provider-development/references/scoping-and-auth.md b/.claude/skills/stackql-provider-development/references/scoping-and-auth.md new file mode 100644 index 0000000..6f2e828 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/scoping-and-auth.md @@ -0,0 +1,53 @@ +# Scoping, authentication and provider config + +## Scoping: server variables and x-stackQL-envVar + +`x-stackQL-envVar` is valid **only on an OpenAPI server variable** (`servers[].variables.<name>`). Semantics: when the named env var resolves, the variable is not required (it disappears from `SHOW METHODS`); a WHERE value beats the env var beats `default`. Use it for the tenant/deployment/org/project parameter that scopes most of the API: + +```json +[{"url": "https://api.example.com/v1/projects/{ref}", + "variables": {"ref": {"description": "...", "x-stackQL-envVar": "EXAMPLE_PROJECT_ID"}}}] +``` + +Procedure (the clickhouse/supabase mould): the split strips the prefix (`/v1/projects/{ref}`) from every path under it and drops the path parameter; paths outside the prefix keep their full key and `post_process.mjs` pins them back to the bare base with a path-level `servers: [{url: https://api.example.com}]` (any-sdk resolves servers operation -> path item -> document; normalize strips path-level servers, hence post-process). Name the variable what users write in WHERE (`ref`, `organization_id`); name the env var to match the vendor's Terraform provider or CLI (`DATABRICKS_DEPLOYMENT_NAME`, `OKTA_ORG_NAME`, `CLICKHOUSE_ORG_ID`, `SUPABASE_PROJECT_ID`) - never a `TF_VAR_` name. + +Known consequence: rows of the scoped resources do not echo the variable, so a JOIN cannot fan out on it (`ON a.ref = p.ref` matches nothing; the inner read runs once for the environment's value). Teach list-then-per-key reads composed with `UNION ALL`. + +Authentication env vars follow the same parity rule: use the Terraform provider's variable names (`SUPABASE_ACCESS_TOKEN`, `CLOUDFLARE_API_TOKEN`, `GITHUB_TOKEN`, `DIGITALOCEAN_TOKEN`), unless Terraform only offers `TF_VAR_*`, in which case use the vendor CLI's names. + +## Authentication and other provider config + +`config` in `provider.yaml` (from `--provider-config`) and `x-stackQL-config` at service/resource/method level share one schema with `additionalProperties: false` - a typo fails validation. Allowed keys: `auth`, `queryParamTranspose`, `requestTranslate`, `requestBodyTranslate`, `pagination`, `variations`, `views`, `sqlExternalTables`, `queryParamPushdown`, `retry`, `minStackQLVersion`, `snake_case_aliases`. + +**`auth.type`** and the fields each takes (env var names follow the vendor's Terraform provider unless it only offers `TF_VAR_*`, then the vendor CLI): + +| type | fields | example | +|---|---|---| +| `bearer` | `credentialsenvvar` | `{type: bearer, credentialsenvvar: CLOUDFLARE_API_TOKEN}` | +| `api_key` | `credentialsenvvar`, `valuePrefix` (the scheme word, with its trailing space), optional `location: header|query`, `name` | `{type: api_key, credentialsenvvar: OKTA_API_TOKEN, valuePrefix: 'SSWS '}` | +| `basic` | `username_var`, `password_var` (or `username`/`password` literals; `api_key_var`/`api_secret_var` for key-pair APIs) | `{type: basic, username_var: CLICKHOUSE_CLOUD_API_KEY, password_var: CLICKHOUSE_CLOUD_API_SECRET}` | +| `custom` | `location: header|query`, `name`, `credentialsenvvar`, optional `valuePrefix`; chain a second credential with `successor: {type: custom, ...}` | datadog: `DD-API-KEY` + successor `DD-APPLICATION-KEY` | +| `oauth2` (client credentials only) | `client_id_env_var`, `client_secret_env_var`, `grant_type: client_credentials`, `token_url` (may template `{{ .__env__VAR }}`), `scopes`, `auth_style` | databricks_account | +| `service_account` | `credentialsenvvar` (JSON key contents) or `credentialsfilepath` / `credentialsfilepathenvvar`, `scopes`, `sub` | google, firebase | +| `aws_signing_v4` / `aws_assume_role` | `credentialsenvvar` (secret), `keyIDenvvar` (key id) | aws | +| `azure_default` | none | azure | +| `oci_signing_v1` | `tenancy_ocid_envvar`, `user_ocid_envvar`, `oci_fingerprint_envvar`, `oci_private_key_envvar` / `oci_private_key_path_envvar`, `oci_passphrase_envvar`, `oci_region_envvar` | oci | +| `null_auth` | none (the literal is `null_auth`) | k8s (auth handled by the runtime) | +| `interactive` | none (`gcloud auth login` style) | google | + +A user can override at runtime with `--auth='{"<provider>": {...}}'`; document that once. + +Two structs, two key sets (any-sdk): the provider document's `auth:` block is `internal/anysdk/auth_dto.go`; the runtime `--auth` JSON is `pkg/dto/auth_ctx.go`. They overlap on everything in the table above, but the AWS assume-role keys (`aws_role_arn`, `aws_role_arn_env_var`, `aws_role_session_name`, `aws_role_external_id`, `aws_role_external_id_env_var`, `aws_sts_region`, `aws_sts_endpoint`, `aws_role_duration_seconds`) exist **only** on the runtime struct - a provider cannot pin them in its document. Trap: the AWS account-id env var key is `account_id_var` in YAML (the JSON tag is `account_id_env_var`). The doc-level OCI keys are `tenancy_ocid_envvar`, `user_ocid_envvar`, `oci_fingerprint_envvar`, `oci_private_key_envvar`, `oci_private_key_path_envvar`, `oci_passphrase_envvar`, `oci_region_envvar` (the runtime struct uses `_env_var` suffixes without the `oci_` prefix). + +**Other provider-level keys** + +- `snake_case_aliases: true` - request-response-shaping.md. +- `retry` - `{algorithm: exponential, max_attempts: 3, initial_delay_ms: 500, max_delay_ms: 10000, multiplier: 2.0, jitter_fraction: 0, retryable_methods: [GET, HEAD], retryable_conditions: {status_codes: [408, 429, 502, 503, 504]}}` are the defaults (five-level inheritance, whole-block). Set it only when the vendor's rate-limit contract calls for it; the test harnesses still treat a 429 as a harness bug. +- `minStackQLVersion` - set when the provider relies on an engine feature with a known landing version (e.g. `x-stackQL-envVar` needs >= v0.10.601); record the reason in NOTES.md. +- `variations.isObjectSchemaImplicitlyUnioned: true` (service or provider level only) - flattens `properties` + `allOf` unions for autorest/NestJS-composed DTOs that would otherwise surface empty column sets. +- `queryParamTranspose.algorithm: AWSCanonical` and `requestTranslate.algorithm: get_query_to_post_form_utf_8` - the AWS query-protocol pair (typed GET form translated to a signed POST form); `drop_double_underscore_params` for providers that still use `data__` columns on some methods. +- `sqlExternalTables` - external table declarations (`catalogName`, `schemaName`, `name`, `columns: [{name, type, oid, width, precision}]`) registered by stackql at load; rarely needed. +- Method-level keys that exist but a generated provider almost never needs: `serviceName` (overrides the service a method reports), `inverse` (`sqlVerb: {$ref: <method>}` plus `tokens: {<param>: {key, location}}` extracted from the response - the rollback hook stackql's HTTP stream consumes), and `protocolType: local_templated` on a provider or providerService (an OpenAPI document plus a `resources` block of templated local commands, `cicd/schema-definitions/local-templated.service-resources.schema.json` - the shape for CLI-backed providers, out of scope here). +- Async/long-running operations: any-sdk has no polling; `response.async_schema_override` / `asyncOverrideMediaType` only select the operation-handle schema. Model LROs as an EXEC that returns the handle plus a `get` on the status resource, and let the smoke test poll (`wait_for` with a timeout). + +Vendor labels and rate limits belong in the docs header (Rate limit, Beta endpoints sections) and in the harness pacing constant, not in config. diff --git a/.claude/skills/stackql-provider-development/references/testing.md b/.claude/skills/stackql-provider-development/references/testing.md new file mode 100644 index 0000000..6359d5b --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/testing.md @@ -0,0 +1,11 @@ +# Tests: three credential-free layers, then live + +Run in this order after every regeneration; all must pass before commit. + +**Offline validation** (`tests/offline_validation.mjs`): spawns `stackql exec` against the local file registry `{"url": "file://<abs>/provider-dev/openapi", "localDocRoot": "<abs>/provider-dev/openapi", "verifyConfig": {"nopVerify": true}}` with `--output json`. Assert: `SHOW SERVICES` count and names; `SHOW RESOURCES` per service (exact sorted lists); `SHOW METHODS` verbs and required params on representative resources; env-var behaviour (required param present with the variable unset, absent with it set); `DESCRIBE EXTENDED` columns (snake aliases present, camel names absent, wide flat configs, wrapped arrays, objectKey projections); that the flagship binding exists. Note `--output json` renders scalars as strings. + +**Integration** (`tests/integration/`): an in-process `http` mock of the API serving the wire shapes the spec declares (bare arrays, envelopes, empty 2xx, the vendor's error body), enforcing the auth header (401 otherwise), echoing rate-limit headers, with mutable in-memory stores so lifecycles round-trip, and a request log (method, path, query, headers, body). The runner copies `provider-dev/openapi` to a gitignored `.registry-tmp`, rewrites every `servers[].url` (document and path-level) to the mock, preserves variables and `x-stackQL-envVar`, and spawns stackql **asynchronously** (a synchronous wait deadlocks the mock on the same event loop). Assert row-level results and wire calls per archetype: list wrap + single read, auth header + wrong-token 401, env-var resolution vs WHERE override vs unset failure, root-path overrides, INSERT/UPDATE/DELETE lifecycles with their exact bodies, every EXEC action, every transform (bare-array bodies, non-JSON responses), snake keys resolving to camel wire names, pagination over a two-page fixture, query-param pushdown, objectKey projections, the flagship, a 404. Keep `probe.mjs` (start mock, run ad-hoc SQL, print stdout/stderr and wire calls) - it is how bindings get debugged. + +**Meta-route** (`bin/test-meta-routes.cjs` over `bin/start-server.sh` / `stop-server.sh`, pgwire-lite on port 5444, host `127.0.0.1`): walks every service, resource and method with `SHOW`/`DESCRIBE`. A resource with no columns or a service with no resources fails it - fix the mapping (skip-code, or inject a schema), never the test. + +**Smoke** (`tests/smoke_test.py`, pystackql): `--live` switches from the local file registry to the published provider (post-publish verification); `--read-only`, `--cleanup-only`, and a flag for any gated expensive lifecycle. Design it from the vendor's Terraform provider examples - the resources and mutations people actually use - with a budget under $5 (aim under $1): read smokes across the surface, cheap self-cleaning write lifecycles (INSERT / SELECT / UPDATE / DELETE of a secret, key, small object), a config toggle-and-restore (which doubles as the UPDATE string-coercion probe), the flagship round trip, and the expensive create/delete only behind its flag. Serial pacing under the vendor's limit (`INTER_REQUEST_DELAY_S`); a 429 fails the run. Sweep `stackql-smoke-*` breadcrumbs first. Credentials from the environment exactly as the provider reads them; the harness upgrades pystackql's managed binary when older than the minimum the provider needs. Print a PASS/FAIL summary and exit non-zero on any failure. diff --git a/.claude/skills/stackql-provider-development/references/uplift-checklist.md b/.claude/skills/stackql-provider-development/references/uplift-checklist.md new file mode 100644 index 0000000..4b2c109 --- /dev/null +++ b/.claude/skills/stackql-provider-development/references/uplift-checklist.md @@ -0,0 +1,10 @@ +# Uplifting an existing provider + +1. Bump `@stackql/provider-utils` / `@stackql/pgwire-lite` / `@apidevtools/swagger-parser` / Docusaurus to latest (`js-yaml` stays on 4.x - see the SKILL.md ground rules); Node >= 22.19 in `engines`, the Makefile header, the README prerequisites and every `setup-node` step; `npm install`. provider-utils >= 0.7.11: add `SOURCE_PROJECT ?= <the repository URL>` and `--source-project $(SOURCE_PROJECT)` to the `docs` target (docs-and-ci.md). Add `SECURITY.md` and `LICENSE` from the template when absent. +2. `make fetch-spec`; if drift, review the diff, extend fix classes, `make refresh-spec`, record in NOTES.md. +3. Re-run the pipeline; diff `all_services.csv` - every moved method or renamed resource is a decision to make explicitly (keep the old name via a rule unless the rename is worth the break). +4. Add what is missing against this list: env-var scoping, naive bodies, snake surface, pagination, pushdown, transforms, objectKeys, lifecycle EXECs attached to their resources, views, GraphQL merge, skip codes for what is not mappable. +5. Convert ad-hoc scripts into Makefile targets; add `make all`. +6. Write or extend the three test layers until they cover every archetype present; add the smoke suite with `--live`. +7. Refresh CLAUDE.md, NOTES.md, README.md, `.env.example`, the docs headers; bring `website/sidebars.js` and the `.sidebar-back-link` rules in `website/src/css/global.css` in line with the template (the `Back to StackQL Docs` link, see docs-and-ci.md); `make docs && make website`. +8. `make all` green from a clean checkout before handing over. diff --git a/.claude/skills/stackql-provider-development/scripts/find_extension_examples.sh b/.claude/skills/stackql-provider-development/scripts/find_extension_examples.sh new file mode 100644 index 0000000..2154f0b --- /dev/null +++ b/.claude/skills/stackql-provider-development/scripts/find_extension_examples.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +# Find shipped examples of a StackQL/any-sdk extension key in a clone of +# https://github.com/stackql/stackql-provider-registry (or any directory of +# provider YAMLs). Prints, per provider, the first few matches with context +# so the exact YAML shape can be copied rather than guessed. +# +# Usage: find_extension_examples.sh <key> [registry-dir] [max-per-provider] +# find_extension_examples.sh nativeCasing ../stackql-provider-registry +# find_extension_examples.sh 'x-stackQL-graphQL' ../stackql-provider-registry 2 +# find_extension_examples.sh 'queryParamPushdown' . 5 +# +# Keys worth searching: objectKey, nativeCasing, snake_case_aliases, +# x-stackQL-envVar, x-stackQL-graphQL, x-stackQL-config, pagination, +# requestToken, queryParamPushdown, 'transform:', schema_override, +# overrideMediaType, requestBodyTranslate, 'views:', 'auth:', retry. + +set -euo pipefail + +KEY="${1:-}" +DIR="${2:-.}" +MAX="${3:-3}" +if [ -z "$KEY" ]; then + sed -n '3,20p' "$0" + exit 2 +fi +if [ ! -d "$DIR" ]; then + echo "not a directory: $DIR" >&2 + exit 2 +fi + +# providers/src/<provider>/... in a registry clone; otherwise group by top-level dir +if [ -d "$DIR/providers/src" ]; then + BASE="$DIR/providers/src" +else + BASE="$DIR" +fi + +found=0 +for pdir in "$BASE"/*/; do + provider="$(basename "$pdir")" + matches="$(grep -rn --include='*.yaml' --include='*.yml' -F -- "$KEY" "$pdir" 2>/dev/null | head -n "$MAX" || true)" + [ -z "$matches" ] && continue + total="$(grep -rl --include='*.yaml' --include='*.yml' -F -- "$KEY" "$pdir" 2>/dev/null | wc -l | tr -d ' ')" + echo "== $provider ($total file(s))" + while IFS= read -r line; do + file="${line%%:*}" + rest="${line#*:}" + lineno="${rest%%:*}" + echo "-- ${file#"$BASE"/}:$lineno" + sed -n "$((lineno > 3 ? lineno - 3 : 1)),$((lineno + 8))p" "$file" | sed 's/^/ /' + done <<< "$matches" + found=$((found + 1)) +done +if [ "$found" -eq 0 ]; then + echo "no matches for '$KEY' under $BASE" + exit 1 +fi diff --git a/.claude/skills/stackql-provider-development/scripts/spec_diff.mjs b/.claude/skills/stackql-provider-development/scripts/spec_diff.mjs new file mode 100644 index 0000000..6dea6ca --- /dev/null +++ b/.claude/skills/stackql-provider-development/scripts/spec_diff.mjs @@ -0,0 +1,77 @@ +#!/usr/bin/env node + +// Diff two OpenAPI documents (JSON or YAML) at the level that matters for a +// provider refresh: operations added / removed / renamed (operationId), +// schemas added / removed / changed, and a scan for the JSON Schema +// 2019-09/2020-12 constructs that need a deterministic fix class before +// swagger-parser validates a 3.0 document. Read-only; prints a summary to +// paste into NOTES.md. +// +// Usage: node spec_diff.mjs <pinned-spec> <fetched-spec> +// e.g. node spec_diff.mjs provider-dev/downloaded/api.json /tmp/api.json + +import fs from 'fs'; + +const [oldPath, newPath] = process.argv.slice(2); +if (!oldPath || !newPath) { + console.error('usage: node spec_diff.mjs <pinned-spec> <fetched-spec>'); + process.exit(2); +} + +async function load(p) { + const text = fs.readFileSync(p, 'utf8'); + if (/\.ya?ml$/i.test(p)) { + const yaml = await import('js-yaml').catch(() => null); + if (!yaml) throw new Error('js-yaml is needed to read YAML specs (npm i js-yaml)'); + return yaml.load(text); + } + return JSON.parse(text); +} + +const VERBS = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options']; +const ops = (s) => { + const m = new Map(); + for (const [p, item] of Object.entries(s.paths || {})) { + for (const v of VERBS) if (item?.[v]) m.set(`${v.toUpperCase()} ${p}`, item[v].operationId || ''); + } + return m; +}; + +const a = await load(oldPath); +const b = await load(newPath); +const A = ops(a), B = ops(b); +console.log(`operations: ${A.size} -> ${B.size}; openapi ${a.openapi || a.swagger} -> ${b.openapi || b.swagger}; version ${a.info?.version} -> ${b.info?.version}`); +const added = [...B].filter(([k]) => !A.has(k)); +const removed = [...A].filter(([k]) => !B.has(k)); +const renamed = [...B].filter(([k, id]) => A.has(k) && A.get(k) !== id); +const list = (title, rows, fmt) => { console.log(`${title} (${rows.length})`); for (const r of rows) console.log(` ${fmt(r)}`); }; +list('ADDED', added, ([k, id]) => `${k} ${id}`); +list('REMOVED', removed, ([k, id]) => `${k} ${id}`); +list('RENAMED operationId', renamed, ([k, id]) => `${k} ${A.get(k)} -> ${id}`); + +const sa = a.components?.schemas || {}, sb = b.components?.schemas || {}; +const ka = new Set(Object.keys(sa)), kb = new Set(Object.keys(sb)); +const changed = [...kb].filter((k) => ka.has(k) && JSON.stringify(sa[k]) !== JSON.stringify(sb[k])); +console.log(`schemas: ${ka.size} -> ${kb.size}; added ${[...kb].filter((k) => !ka.has(k)).join(', ') || '-'}; removed ${[...ka].filter((k) => !kb.has(k)).join(', ') || '-'}`); +console.log(`changed schemas (${changed.length}): ${changed.join(', ') || '-'}`); + +// constructs that OpenAPI 3.0 validation rejects - each needs a fix class +const counts = {}; +const bump = (k) => { counts[k] = (counts[k] || 0) + 1; }; +const walk = (n) => { + if (Array.isArray(n)) { n.forEach(walk); return; } + if (!n || typeof n !== 'object') return; + if (n.type === 'null') bump('type: null (-> nullable: true)'); + if (Array.isArray(n.type)) bump('type array (3.1 -> single type + nullable)'); + if (typeof n.exclusiveMinimum === 'number' || typeof n.exclusiveMaximum === 'number') bump('numeric exclusiveMinimum/Maximum (-> minimum/maximum + boolean)'); + if ('propertyNames' in n) bump('propertyNames (remove)'); + if ('const' in n) bump('const (-> enum)'); + if (typeof n.$schema === 'string') bump('$schema key (remove)'); + if ('hideDefinitions' in n) bump('hideDefinitions (vendor artifact, remove)'); + if ('unevaluatedProperties' in n || 'prefixItems' in n || 'dependentRequired' in n) bump('2020-12 keyword (unevaluatedProperties/prefixItems/dependentRequired)'); + for (const v of Object.values(n)) walk(v); +}; +walk(b); +console.log('fix-class candidates in the fetched spec:'); +if (Object.keys(counts).length === 0) console.log(' none'); +for (const [k, v] of Object.entries(counts)) console.log(` ${String(v).padStart(4)} ${k}`); diff --git a/.env.example b/.env.example index 930a1c6..cf90a27 100644 --- a/.env.example +++ b/.env.example @@ -10,7 +10,10 @@ # Cloud Functions at the ORGANIZATION level for the nvcf_* services (a key # with a team-level Cloud Functions role does not work with NVCF - NVIDIA's # own documentation warns about this). The provider sends it as -# `Authorization: Bearer`. +# `Authorization: Bearer`. To check a key before a run (the same call the +# NGC CLI makes; a valid key answers 200 with its orgName and products): +# curl -s -X POST --data-urlencode "credentials=$NGC_API_KEY" \ +# https://api.ngc.nvidia.com/v3/keys/get-caller-info NGC_API_KEY=nvapi-... # NGC organization name (the org id shown under Organization -> Setup, e.g. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..0d88430 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '[BUG]' +labels: 'bug' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..9d33cbe --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "[FEATURE]" +labels: enhancement +assignees: '' + +--- + +**Feature Description** +A clear and concise description of what you want to happen. + +**Example(s)** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Possible Approaches or Libraries to Consider** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000..b72dd78 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,15 @@ +--- +name: Question +about: Pose a question to the StackQL team +title: "[QUESTION]" +labels: question +assignees: '' + +--- + + +## Question + +This channel is an opportunity to ask ad-hoc questions to the `stackql` team. This channel is in lieu of an official platform for ongoing discussions and questions. Please ask your question :) + +**Note**: Questions over github issues will be deprecated and retired once we settle on a platform / process ongoing. \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..8fd35fd --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,14 @@ +## Description + +Please include a summary of the changes and the related issue(s). Please also include relevant motivation and context. + +## Checklist + +Please make sure that the following criteria are met: + +- [ ] The PR title is descriptive. +- [ ] I have starred the [stackql](https://github.com/stackql/stackql) repo and this repo. + +## Additional Notes + +Add any additional information or context that might help the reviewers. diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..84f6bac --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,3 @@ +# GitHub Copilot entry point + +Read and follow the repository's canonical guidance in [AGENTS.md](../AGENTS.md) for all work in this repository. diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index f6f8a50..338c4ee 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -4,9 +4,11 @@ name: build-and-test # credential-free test layer on each push / PR; the live smoke suite runs # only where the NGC secrets are configured (never the NVCF deploy # lifecycle - that is `make smoke-nvcf`, run deliberately); a scheduled -# drift job re-downloads the upstream inputs (the NVCF spec, the NGC API -# explorer definitions, the ngcsdk wheel) and diffs them against the pins, -# and checks the NGC deprecation schedule page for changes. +# upstream-drift job re-downloads the three upstream inputs (the NVCF spec, +# the NGC API definitions, the ngcsdk wheel), diffs them against the pins, +# checks the NGC deprecation schedule page for changes, and opens an issue +# when anything moves (NVIDIA serves unversioned definitions, so drift is +# expected and must be reviewed, never silent). on: push: @@ -23,12 +25,18 @@ jobs: build-and-test: if: github.event_name != 'schedule' runs-on: ubuntu-latest + # Consumed by the smoke job's `if`: a job-level condition cannot read + # secrets or another job's step outputs directly, so both gates are + # computed here and exported. + outputs: + pinned: ${{ steps.pin.outputs.pinned }} + smoke_creds: ${{ steps.creds.outputs.present }} steps: - uses: actions/checkout@v7 - uses: actions/setup-node@v7 with: - node-version: 20 + node-version: 22 cache: npm - name: Install dependencies @@ -42,38 +50,91 @@ jobs: - name: stackql version run: stackql --version + # The pins are written by `make refresh-spec`; without them there is + # nothing to build or test. + - name: Detect whether the specs are pinned + id: pin + run: | + if [ -f provider-dev/config/spec_pin.json ]; then + echo "pinned=true" >> "$GITHUB_OUTPUT" + else + echo "pinned=false" >> "$GITHUB_OUTPUT" + echo "::notice title=No pinned specs::provider-dev/config/spec_pin.json does not exist - the build, drift check, tests and docs steps were skipped. Run 'make refresh-spec' to pin the upstream inputs." + fi + + # Only presence is recorded, never the value. The notice is raised only + # where the smoke job would otherwise have run (not a pull request), so + # PRs from forks stay quiet. + - name: Detect whether the smoke credentials are configured + id: creds + env: + NGC_API_KEY: ${{ secrets.NGC_API_KEY }} + run: | + if [ -n "$NGC_API_KEY" ]; then + echo "present=true" >> "$GITHUB_OUTPUT" + else + echo "present=false" >> "$GITHUB_OUTPUT" + if [ "${{ steps.pin.outputs.pinned }}" = "true" ] && [ "$GITHUB_EVENT_NAME" != "pull_request" ]; then + echo "::notice title=Live smoke suite skipped::NGC_API_KEY / NGC_ORG are not configured - the smoke job was skipped. Credential-free coverage still ran via the mock-server integration suite." + fi + fi + + # Drift is reported, not fatal, here: the committed pins are what gets + # built and tested (fetch-spec refreshes provider-dev/downloaded in + # place, so the pinned inputs are restored after a failure). The + # upstream-drift job below opens the review issue. + - name: Verify the pinned inputs against upstream (warns on drift) + if: steps.pin.outputs.pinned == 'true' + run: | + if ! make fetch-spec; then + echo "::warning title=Upstream drift::One or more upstream inputs no longer match provider-dev/config/spec_pin.json - run 'make upgrade' and review the diff. Building from the committed pins." + git checkout -- provider-dev/downloaded + fi + - name: Build provider from the committed pins (pin check, clean, inventory, split, mappings, normalize, generate, post-process) + if: steps.pin.outputs.pinned == 'true' run: make build - name: Fail on uncommitted generation drift + if: steps.pin.outputs.pinned == 'true' run: | git add -N . - if ! git diff --quiet -- provider-dev/openapi provider-dev/config provider-dev/source; then + if ! git diff --quiet -- provider-dev/openapi provider-dev/config provider-dev/source provider-dev/downloaded; then echo "Generated output differs from the committed artifacts - run 'make build' and commit (a diff in provider-dev/config/all_services.csv is a mapping change: review it as a breaking-change candidate)." - git diff --stat -- provider-dev/openapi provider-dev/config provider-dev/source + git diff --stat -- provider-dev/openapi provider-dev/config provider-dev/source provider-dev/downloaded exit 1 fi - name: Offline validation + if: steps.pin.outputs.pinned == 'true' run: make test-offline - name: Integration tests (mock NGC + NVCF) + if: steps.pin.outputs.pinned == 'true' run: make test-integration - name: Meta-route tests + if: steps.pin.outputs.pinned == 'true' run: make test-meta - name: Generate docs (sanity - the site build runs on the web workflows) + if: steps.pin.outputs.pinned == 'true' run: make docs smoke: - # secret-gated live smoke suite against a test organization; skipped - # with a notice when the secrets are not configured (forks, PRs from - # outside). The NVCF deploy lifecycle is NOT run here - trigger it + # Live smoke suite against the dedicated test organization. Skipped at + # the job level, so no runner is consumed, on pull requests (secrets are + # not available to forks), on the schedule, until the specs are pinned + # and until the secrets are configured; the last two arrive as + # build-and-test outputs. Never the NVCF deploy lifecycle - trigger that # deliberately with `make smoke-nvcf`. runs-on: ubuntu-latest needs: build-and-test - if: github.event_name != 'pull_request' && github.event_name != 'schedule' + if: >- + github.event_name != 'pull_request' && + github.event_name != 'schedule' && + needs.build-and-test.outputs.pinned == 'true' && + needs.build-and-test.outputs.smoke_creds == 'true' env: NGC_API_KEY: ${{ secrets.NGC_API_KEY }} NGC_ORG: ${{ secrets.NGC_ORG }} @@ -83,7 +144,7 @@ jobs: - uses: actions/setup-node@v7 with: - node-version: 20 + node-version: 22 cache: npm - uses: actions/setup-python@v7 @@ -94,19 +155,12 @@ jobs: run: npm ci - name: Live smoke suite (catalog + org/registry reads, cheap write lifecycles, NVCF reads where enabled) - if: env.NGC_API_KEY != '' run: make smoke - - name: Live smoke skipped (no credentials) - if: env.NGC_API_KEY == '' - run: | - echo "::notice title=Live smoke suite skipped::NGC_API_KEY / NGC_ORG secrets are not configured - the live smoke suite did not run. Credential-free coverage still ran via the mock-server integration suite." - upstream-drift: # Re-download every upstream input and diff against the pins on a # schedule and on demand; check the NGC deprecation schedule page for - # changes; open an issue when anything moves. NVIDIA serves unversioned - # definitions, so drift is expected and must be reviewed, never silent. + # changes; open a labelled issue when anything moves. runs-on: ubuntu-latest if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' permissions: @@ -117,7 +171,7 @@ jobs: - uses: actions/setup-node@v7 with: - node-version: 20 + node-version: 22 cache: npm - name: Install dependencies @@ -127,7 +181,7 @@ jobs: id: drift run: | set +e - make fetch-specs > fetch.log 2>&1 + make fetch-spec > fetch.log 2>&1 rc=$? set -e cat fetch.log @@ -135,6 +189,7 @@ jobs: echo "drift=false" >> "$GITHUB_OUTPUT" else echo "drift=true" >> "$GITHUB_OUTPUT" + # the refreshed downloads are in the working tree; materialise the diff for the issue body git diff --stat -- provider-dev/downloaded > drift.txt || true cat drift.txt fi @@ -154,7 +209,7 @@ jobs: const stat = fs.existsSync('drift.txt') ? fs.readFileSync('drift.txt', 'utf8') : ''; const dep = fs.existsSync('deprecation.log') ? fs.readFileSync('deprecation.log', 'utf8') : ''; const title = 'NVIDIA NGC / NVCF upstream drift detected'; - const body = 'One or more upstream inputs no longer match the pins in provider-dev/config/spec_pin.json, or the NGC deprecation schedule page changed.\n\nSpec drift:\n```\n' + (stat || '(none)') + '\n```\nDeprecation page:\n```\n' + dep + '\n```\nRun `make upgrade` (refresh-specs, build, test, docs, website), review the generated diff - new or removed operations, mapping changes in all_services.csv, new deprecation families in build_inventory.mjs - update NOTES.md, and commit.'; + const body = 'One or more upstream inputs no longer match the pins in provider-dev/config/spec_pin.json, or the NGC deprecation schedule page changed.\n\nSpec drift:\n```\n' + (stat || '(none)') + '\n```\nDeprecation page:\n```\n' + dep + '\n```\nRun `make upgrade` (refresh-spec, build, test, docs, website), review the generated diff - new or removed operations, mapping changes in all_services.csv, new deprecation families in build_inventory.mjs - update NOTES.md, and commit.'; await core.summary.addHeading(title).addCodeBlock(stat + '\n' + dep).write(); const { data: issues } = await github.rest.issues.listForRepo({ owner: context.repo.owner, repo: context.repo.repo, state: 'open', labels: 'upstream-drift' diff --git a/.gitignore b/.gitignore index c5345d0..0c296f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,168 +1,57 @@ -# Logs -logs +# stackql binary and server artifacts +stackql +stackql.exe +stackql-deploy +stackql-deploy.exe +stackql-zip +stackql*.zip +nohup.out *.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output +/.stackql -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories +# node node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity +# python +__pycache__/ +*.py[cod] +.venv/ +venv/ -# dotenv environment variable files +# env / secrets .env .env.* !.env.example -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist -.output - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp directory -.temp - -# Sveltekit cache directory -.svelte-kit/ +# IDE / editor +.vscode/ +.idea/ +*.swp +*.swo -# vitepress build output -**/.vitepress/dist - -# vitepress cache directory -**/.vitepress/cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# Firebase cache directory -.firebase/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# pnpm -.pnpm-store - -# yarn v3 -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/sdks -!.yarn/versions - -# Vite files -vite.config.js.timestamp-* -vite.config.ts.timestamp-* -.vite/ - -# StackQL binary and server logs -stackql -stackql.exe -stackql-server.log -meta-routes*.log -.stackql/ - -# python (smoke suite venv, bytecode) -.venv/ -venv/ -__pycache__/ -*.py[cod] - -# pinned PyPI wheel cached by harvest_ngc_sdk_schemas.mjs (the derived +# docs site build output and the vendored shared config +website/build/ +website/.docusaurus/ +website/.shared-config/ +website/.cache-loader/ + +# misc +.DS_Store +*.tmp +*.bak + +# The pinned upstream inputs in provider-dev/downloaded/ ARE committed (the +# NVCF spec, the harvested NGC definitions, the ngcsdk-derived schemas and +# the download manifest): every refresh is then a reviewable diff against +# the hash pins in provider-dev/config/spec_pin.json. So are +# provider-dev/source (split and normalized service specs), +# provider-dev/openapi (the generated provider), +# provider-dev/config/all_services.csv (the mapping contract) and +# website/docs (so pages stamp with their regeneration date). + +# the pinned PyPI wheel cached by harvest_ngc_sdk_schemas.mjs (the derived # ngc_sdk_schemas.json IS committed) *.whl -# integration test registry copy (recreated each run) +# integration test registry copy (rebuilt every run) tests/integration/.registry-tmp/ - -# website build artifacts and the vendored shared config -website/build/ -website/.docusaurus/ -website/.shared-config/ diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..df48c1d --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,68 @@ +# Project guidance + +This file is the canonical, tool-neutral guidance for work in this repository. Claude Code ([CLAUDE.md](CLAUDE.md)) and GitHub Copilot ([.github/copilot-instructions.md](.github/copilot-instructions.md)) entry points refer here; Codex should use this file directly. Keep project rules here rather than duplicating them in tool-specific files. + +## Project scope and architecture + +- This repository builds and documents the `nvidia` provider for [StackQL](https://github.com/stackql/stackql): SQL query and provisioning operations against the NVIDIA NGC control plane - NVIDIA Cloud Functions (NVCF: functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, generic artifacts such as helm charts, endpoints and blueprints, versions and files, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. +- Scope notes, recorded so they are never relitigated: Run:ai and DGX Cloud Lepton have their own control planes and are reserved future siblings. The NIM / API-catalog inference endpoints (`integrate.api.nvidia.com`) are a data-plane LLM surface, out of scope. Artifact binary push/pull is the registry data plane, skipped (`data-plane-file-transfer`). Streaming and gRPC invocation forms are not in the published spec; the HTTP-polling form is mapped (`nvcf_invocation`). Fleet Command, Base Command batch, subscription/billing and notification definitions are out of scope (recorded in `download_manifest.json`). Container images live under the container registry API, whose definition is not published (NOTES.md, Open 5). +- Archetype: DIRECT, a hybrid of three pinned inputs. Paths, parameters and request bodies come from the vendor's published definitions; response schemas for the registry surface fall back to the pinned `ngcsdk` Python wheel's data classes (response side only). The procedure is the `stackql-provider-development` skill in `.claude/skills/stackql-provider-development/` (`SKILL.md` is the map, `references/*.md` the step procedures, `references/uplift-checklist.md` the entry point for a refresh); read the reference file for a step before executing it. The finished reference repositories are [`stackql-provider-supabase`](../../S/stackql-provider-supabase) and [`stackql-provider-clickhouse`](../../C/stackql-provider-clickhouse); sibling-build NOTES.md findings are reused, not re-derived. nvidia-specific findings live in [NOTES.md](NOTES.md) - read it before changing a mapping. +- NVIDIA publishes a Go Terraform provider ([`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc)) covering NVCF functions and telemetry endpoints (one resource and one data source each). State that once, factually. This provider's counter is mechanical completeness from the published definitions (335 operations, 7 services, 82 resources plus the `vw_gpu_capacity` view) and the query surfaces that matter: GPU and cluster-group inventory, NVCF fleet state by deployment specification, function sharing audits, registry estate reports, org membership. Capability statements and runnable examples, never editorializing. + +## Spec sources (three, all pinned) + +1. **NVCF** - `https://api.nvcf.nvidia.com/v3/openapi` (openapi 3.1.0, linked from the NVCF API docs). Management operations are served from `api.ngc.nvidia.com`, queue details and invocation from `api.nvcf.nvidia.com`; the host is carried per service (`nvcf_queues`, `nvcf_invocation` on the nvcf host). +2. **NGC core** - two definitions behind the API explorer at `docs.ngc.nvidia.com/api/`, fetched from pinned URLs by `harvest_ngc_spec.mjs`: `ngc_kas.json` (orgs, teams, users; served publicly at `api.ngc.nvidia.com/v3/api-docs`) and `ngc_models.json` (the Private Artifacts (Models) API: registry and catalog artifact metadata; declared on `models.ngc.nvidia.com/v1/...`, served publicly at `api.ngc.nvidia.com/v2/...` - the clean step rewrites the prefix). +3. **ngcsdk** - `harvest_ngc_sdk_schemas.mjs` downloads the `ngcsdk` wheel from PyPI (pinned version + sha256), parses `registry/data/model/*.py` into JSON Schema (`ngc_sdk_schemas.json`, committed), and `clean_specs.mjs` attaches them as 200 responses to any operation that declares none, by an operationId rule table (`SDK_RESPONSE_CLASSES`). The current models definition ships responses on every operation, so the rule injects nothing today; it stays as the recorded fallback, and a SELECT method left on the bare `Response` envelope fails the inventory. + +Pins (URL, date, sha256 of the canonical JSON) are in `provider-dev/config/spec_pin.json`; the downloads are committed (NVIDIA versions none of these URLs). `make fetch-spec` re-downloads and fails on drift; `make refresh-spec` accepts it (review the diff with `node .claude/skills/stackql-provider-development/scripts/spec_diff.mjs <pinned> <fetched>` and record the summary in NOTES.md). The weekly CI job also snapshots the NGC deprecation schedule page (`check_deprecation_page.mjs`, `deprecation_schedule.json`). + +## Design decisions (settled - see NOTES.md for the evidence) + +- **Authentication** - `bearer` from `NGC_API_KEY` (an NGC Personal API Key, `nvapi-...`), the NVIDIA Terraform provider's and the NGC CLI's variable; `provider-dev/config/provider_config.json` becomes `config:` in `provider.yaml`. Two fixed hosts. A personal key is sent as `Authorization: Bearer` directly; the legacy `$oauthtoken` JWT exchange is not involved (NOTES.md 19, 21a). +- **Scoping** - org scope is a path-level server variable. `bin/split.mjs` rebases every org-scoped operation (leading `/v2/org/{org_name}`, `/v3/orgs/{org_name}`, `/v2/artifact-registry/org/{org_name}`) onto the remainder path; `post_process.mjs` attaches a path-item `servers` template carrying `org_name` with `x-stackQL-envVar: NGC_ORG`. A `WHERE org_name` value beats the environment; unset, `org_name` is required. NVCF paths carry no org (the key implies it). A JOIN cannot fan out on the server variable; the docs teach the two-statement / `UNION ALL` pattern. `orgs.orgs.get` keeps `org_name` as a plain path parameter. +- **The flagship mapping** - the GPU estate: `nvcf_deployments.cluster_groups` (cluster groups with their GPU types and instance types) flattened by the `vw_gpu_capacity` view, and the NVCF fleet state joined to deployment specifications. +- **Deprecation schedule as a build input** - NVIDIA's NGC deprecated API reference ends `/teams/{team}` scoping for NVCF, NVCT, FNDS, Skyway, SIS, SI, PYM, Infinity Manager and GDN on 2026-09-30; `SCHEDULED_DEPRECATIONS` in `build_inventory.mjs` skips those families (`deprecated-schedule-2026-09-30`). Private Registry (and Data Services) team scoping is explicitly exempt, so registry/org team-scoped paths are mapped: `*_by_team` methods on the same resources (they add `team_name` to the signature) and `team_members` / `team_member_roles` / `team_invitations` resources in `orgs`. +- **The service is `private_registry`, not `registry`** - `registry` is a reserved word in the StackQL grammar (`REGISTRY PULL`). +- **Casing** - `snake_case_aliases: true` on the provider plus `request.nativeCasing` on every method: `camel` (NVCF, JSON bodies) or `kebab` (NGC core query parameters such as `page-size`), decided per method by the inventory column `native_casing`. The column rename from the wire spelling is the accepted break; `sanitize-docs` renders kebab parameters as snake_case on the resource pages. +- **Pagination** - NGC core collections page with zero-based `page-number` + `page-size` and echo `paginationInfo {index, totalPages}`; `post_process` configures any-sdk's `page_number` algorithm per list method and pushes `LIMIT` to `page-size` (`queryParamPushdown.top`). NVCF collections are unpaginated. The terminating-page behaviour on the live wire is still owed (NOTES.md 21). +- **objectKey** - list envelopes unwrap their array property, entity envelopes their object property; when several qualify the property named after the resource wins (`modelVersion` for `model_versions`). Entities with array fields (GPU catalog rows) get none. +- **Opaque bodies and scalar lists** - the pexec invocation body is a `{body}` wrapper plus request transform; `function_ids` and the invocation status body are re-shaped by response transforms. +- **Update semantics** - GET list/get `SELECT`, POST create `INSERT`, PATCH/PUT `UPDATE` (PUT is not `REPLACE` without field-drop evidence - keycloak rule; the one PUT with a PATCH twin, `artifacts.replace`, is `REPLACE`), DELETE `DELETE`, actions `EXEC`; grants-as-data for authorizations, shares, roles and team membership (add = `INSERT`, remove = `DELETE`). +- **Skip codes** (160 operations): `service-infra`, `internal-admin`, `deprecated-inline`, `superseded-by-v3-twin`, `non-generator-http-verb`, `data-plane-file-transfer`, `non-json-response`, `non-projectable-response`, `legacy-twin`, `duplicate-endpoint-family`, `inbound-webhook-not-client-api`, `deprecated-schedule-2026-09-30`. Counts are in NOTES.md 11 and the README. +- **Rate limit** - NVIDIA publishes no request limit for these APIs; the smoke harness paces every statement at `INTER_REQUEST_DELAY_S` (0.5 s) and a 429 fails the run as a harness bug, not a retry case. +- **Labels** - vendor `deprecated` markers and summaries flow into the docs as written; inline-deprecated operations with a replacement are skipped (`deprecated-inline`). +- **Engine typing** - `UPDATE` marshals every `SET` value as a string; `INSERT` and `EXEC` send typed JSON; `EXEC` cannot carry a boolean. Documented in the docs header, probed by the smoke suite, not worked around in the provider. +- **Views** - `views/nvcf_deployments/views.yaml` ships `vw_gpu_capacity` (one row per cluster group x GPU x instance type), spliced at generate time and documented like a resource. + +## Toolchain and validation + +- Latest `@stackql/provider-utils`, `@stackql/pgwire-lite` and `@apidevtools/swagger-parser` (check npm before starting: `npm view @stackql/provider-utils version`); Docusaurus `^3.10.x`. Node >= 22.19 (Node 20 reached end of life in April 2026; swagger-parser 13 needs 22.19), `type: module`. `js-yaml` stays on 4.x (provider-utils emits with js-yaml 4; v5 drops the default export and changes scalar quoting, so that bump is coordinated with provider-utils). `package-lock.json` pins what CI installs; a toolchain bump is an explicit commit that regenerates the artifacts. +- Linux, macOS or WSL (WSL is the execution environment on the maintainer's machine: GNU make, bash, the latest `stackql` release on PATH, Python 3, yarn; keep the smoke venv off the DrvFs mount with `make smoke VENV=$HOME/.venvs/stackql-nvidia`). The Makefile is the operator surface (`make help`); the two provider-utils CLI entry points are npm scripts invoked through `node`, never `.bin` shims, flags after `--`. +- `make all` = `deps fetch-spec build test docs website`: pin verify (network, fails on drift) -> pin-check -> clean-specs -> inventory -> split -> mappings -> pre-normalize -> normalize -> generate (+ post-process, views, GraphQL merge) -> test-offline -> test-integration -> test-meta -> docs -> website. It never needs credentials and never bills. `build` deliberately verifies the committed downloads offline (`pin-check`) rather than re-downloading (three documents plus a 2.4 MB wheel). Every step is deterministic and re-runnable; manual decisions are rules in scripts (the classify functions and `SCHEDULED_DEPRECATIONS` in `build_inventory.mjs`, response-class rules and fix classes in `clean_specs.mjs`, passes in `pre_normalize.mjs`, numbered rules in `post_process.mjs`), never hand-edits to CSVs, specs or generated output. `endpoint_inventory.csv` is the single source of truth every later step reads; `all_services.csv` is the committed operation -> resource.method contract and a diff there is a breaking-change review, not noise. Validate-and-fail-without-writing is the standard for every script. +- Tests, in order after every regeneration: `make test-offline` (`SHOW`/`DESCRIBE` against the local file registry: services, resources, verbs, the `NGC_ORG` behaviour, snake aliases, transforms, the view), `make test-integration` (the mock NGC + NVCF API in `tests/integration/mock_nvidia_server.mjs`, both hosts, bearer enforced, row-level and wire-level assertions per archetype; `npm run probe -- "<sql>"` for ad-hoc binding checks), `make test-meta` (the meta-route walk; a resource with no columns fails it - fix the mapping, never the test). Then `make smoke` / `smoke-live` / `smoke-read-only` / `smoke-nvcf` / `smoke-cleanup` from `.env` (`NGC_API_KEY`, `NGC_ORG`, optional `NGC_TEAM`, `NVCF_SMOKE_CONTAINER_IMAGE`): tiered by what the key can reach, everything named `stackql-smoke-<stamp>`, breadcrumbs swept first; only the gated `smoke-nvcf` target deploys anything (smallest instance, always torn down). +- Never run tests against a production organization. The live run still owed with an entitled key is listed in NOTES.md 21; the key last tried is recorded as invalid by NVIDIA's own validator (NOTES.md 21b). + +## Documentation and publishing + +- `make docs` (generate with `--snake-case-aliases` and `--source-project $(SOURCE_PROJECT)`, then `sanitize-docs`) and `make website`; `website/docs` is committed after every regeneration so pages stamp with their regeneration date. `headerContent1.txt` is the landing-page front matter and pitch; `headerContent2.txt` the getting-started page, closing with `## Example Queries` in the shape every provider site shares. +- Publishing is a separate, human-in-the-loop step: push the generated `provider-dev/openapi/src/nvidia` directory to `providers/src` in a feature branch of [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry), follow the registry release flow, verify with `REGISTRY PULL nvidia` from the dev registry and `make smoke-live`. The microsite deploys to GitHub Pages (`nvidia-provider.stackql.io` CNAME -> `stackql.github.io.`); the provider is listed in the Providers menu by adding it to `src/configs/providers.json` in the `stackql.io` repository. + +## Writing conventions + +These apply to every piece of text the build generates: README, docs headers and examples, NOTES, this file, code comments, commit messages, console output, inventory and CSV columns, mock fixtures. Text the vendor owns (operation summaries, schema and parameter descriptions, the pinned snapshots, `provider-dev/source`, the generated provider and `website/docs`) is passed through as the vendor wrote it; the only alteration is the MDX escaping `sanitize-docs` applies. + +- Measured, precise copy, no hyperbole; third-person or passive framing for descriptive copy. The Terraform provider is mentioned once, factually. +- No em dashes and no `--` as a dash; use `-`. No characters that are not on a QWERTY keyboard: no emoji, no typographic quotes, `->` for arrows. No stacked headings. +- Sample queries follow the k8s README style: realistic, runnable against the generated surface, snake_case names, `json_extract` for nested fields, parser keywords double-quoted. + +## Non-negotiables + +1. Latest `@stackql/provider-utils`, always +2. The skill is the procedure; the supabase / clickhouse repos are the reference pattern; sibling-build NOTES.md findings are reused, not re-derived - deviate only with a documented reason in NOTES.md +3. The three upstream inputs are pinned with evidence; the response-side SDK derivation is a recorded decision in `spec_pin.json` and `download_manifest.json`, never a silent switch +4. The deprecation schedule is a build input: scheduled families are never mapped, exempt families are never blanket-skipped +5. Deterministic scripts, never hand-edits to derived artifacts +6. Every regeneration is followed by `make test` before commit +7. Test harnesses pace under the rate limit - a 429 in CI is a harness bug +8. Smoke tests clean up everything they create and never leave a deployed function running - a failed run must not leave GPU-billing resources behind diff --git a/CLAUDE.md b/CLAUDE.md index 4ff214f..386fff3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,92 +1,3 @@ -# CLAUDE.md +# Claude Code entry point -## Project - -This repository builds and documents the `nvidia` provider for [StackQL](https://github.com/stackql/stackql), enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, generic artifacts such as helm charts, endpoints and blueprints, versions and files, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. - -**Scope notes, recorded so they are never relitigated**: Run:ai and DGX Cloud Lepton have their own control planes and are reserved future siblings. The NIM / API-catalog inference endpoints (`integrate.api.nvidia.com`) are a data-plane LLM surface, out of scope. Artifact binary push/pull is the registry data plane, skipped (`data-plane-file-transfer`). Streaming and gRPC invocation forms are not in the published spec; the HTTP-polling form is mapped (`nvcf_invocation`). Fleet Command, Base Command batch, subscription/billing and notification definitions are out of scope (recorded in `download_manifest.json`). - -The provider is a hybrid build: paths, parameters and request bodies come from the vendor's published definitions (archetype 1), response schemas for the registry surface come from the pinned `ngcsdk` Python wheel's data classes (archetype 2, response side only). The reference implementation for structure, scripts, tests and docs is [`stackql-provider-supabase`](../../S/stackql-provider-supabase) (which followed [`stackql-provider-k8s`](../../K/stackql-provider-k8s), branch `feature/provider-dev`); sibling-build NOTES.md findings are reused, not re-derived. nvidia-specific findings live in [NOTES.md](NOTES.md) - read it before changing a mapping. - -## Positioning context - -NVIDIA publishes a Go Terraform provider ([`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc)) covering NVCF functions and telemetry endpoints (one resource and one data source each). State that once, factually. This provider's counter is mechanical completeness from the published definitions (342 operations, 7 services, 83 resources) and the query surfaces that matter: GPU and cluster-group inventory, NVCF fleet state by deployment specification, function sharing audits, registry estate reports, org membership - the AI infrastructure control plane as data. Capability statements and runnable examples, never editorializing. - -## Spec sources (three, all pinned) - -1. **NVCF** - `https://api.nvcf.nvidia.com/v3/openapi` (openapi 3.1.0, linked from the NVCF API docs). Management operations are served from `api.ngc.nvidia.com`, queue details and invocation from `api.nvcf.nvidia.com`; the host is carried per service (`nvcf_queues`, `nvcf_invocation` on the nvcf host). -2. **NGC core** - two definitions harvested from the API explorer at `docs.ngc.nvidia.com/api/` (`harvest_ngc_spec.mjs` extracts the definition list from the explorer's JS bundle): `ngc_kas.json` (orgs, teams, users; served relative to `api.ngc.nvidia.com`) and `ngc_models.json` (the Private Artifacts (Models) API: registry and catalog artifact metadata; declared on `models.ngc.nvidia.com/v1/...`, served publicly at `api.ngc.nvidia.com/v2/...` - the clean step rewrites the prefix). -3. **ngcsdk** - the models definition declares no 2xx response on 303 of 333 operations. `harvest_ngc_sdk_schemas.mjs` downloads the `ngcsdk` wheel from PyPI (pinned version + sha256), parses `registry/data/model/*.py` into JSON Schema (`ngc_sdk_schemas.json`, committed), and `clean_specs.mjs` attaches them as 200 responses by an operationId rule table (`SDK_RESPONSE_CLASSES`). A SELECT method left on the bare `Response` envelope fails the inventory, so a new read endpoint must be added to the table deliberately. - -Pins (URL, date, sha256) are in `provider-dev/config/spec_pin.json`; the downloads are committed (NVIDIA versions none of these URLs). `make fetch-specs` re-downloads and fails on drift; `make refresh-specs` accepts it (review the diff). The weekly CI job also snapshots the NGC deprecation schedule page (`check_deprecation_page.mjs`, `deprecation_schedule.json`). - -## Design decisions (settled - see NOTES.md for the evidence) - -- **Bearer auth from `NGC_API_KEY`** (an NGC Personal API Key) - the NVIDIA Terraform provider's and the NGC CLI's variable. Two fixed hosts. -- **Org scope is a path-level server variable** - `bin/split.mjs` rebases every org-scoped operation (leading `/v2/org/{org_name}`, `/v3/orgs/{org_name}`, `/v2/artifact-registry/org/{org_name}`) onto the remainder path; `post_process.mjs` attaches a path-item `servers` template carrying `org_name` with `x-stackQL-envVar: NGC_ORG` (the Terraform variable; the clickhouse / supabase / godaddy precedent). A `WHERE org_name` value beats the environment; unset, `org_name` is required. NVCF paths carry no org (the key implies it). -- **Deprecation schedule as a build input** - NVIDIA's NGC deprecated API reference ends `/teams/{team}` scoping for NVCF, NVCT, FNDS, Skyway, SIS, SI, PYM, Infinity Manager and GDN on 2026-09-30; `SCHEDULED_DEPRECATIONS` in `build_inventory.mjs` skips those families (`deprecated-schedule-2026-09-30`). Private Registry (and Data Services) team scoping is explicitly exempt, so registry/org team-scoped paths are mapped: `*_by_team` methods on the same resources (they add `team_name` to the signature), and `team_members` / `team_member_roles` / `team_invitations` resources in `orgs`. -- **The service is `private_registry`, not `registry`** - `registry` is a reserved word in the StackQL grammar (`REGISTRY PULL`). -- **snake_case surface** - `snake_case_aliases: true` on the provider config plus `request.nativeCasing` on every method: `camel` (NVCF, JSON bodies) or `kebab` (NGC core query parameters such as `page-size`), decided per method by the inventory column `native_casing`. -- **Pagination** - NGC core collections page with zero-based `page-number` + `page-size` and echo `paginationInfo {index, totalPages}`; `post_process` configures any-sdk's `page_number` algorithm per list method and pushes `LIMIT` to `page-size`. NVCF collections are unpaginated. -- **objectKey** - list envelopes unwrap their array property, entity envelopes their object property; when several qualify the property named after the resource wins (`modelVersion` for `model_versions`). Entities with array fields (GPU catalog rows) get none. -- **Opaque bodies and scalar lists** - the pexec invocation body is a `{body}` wrapper plus request transform; `function_ids` and the invocation status body are re-shaped by response transforms. -- **Verbs** - GET list/get `SELECT`, POST create `INSERT`, PATCH/PUT `UPDATE` (PUT is not `REPLACE` without field-drop evidence - keycloak rule; the one PUT with a PATCH twin, `artifacts.replace`, is `REPLACE`), DELETE `DELETE`, actions `EXEC`; grants-as-data for authorizations, shares, roles and team membership (add = `INSERT`, remove = `DELETE`). -- **Skip codes** (160 operations): `service-infra`, `internal-admin`, `deprecated-inline`, `superseded-by-v3-twin`, `non-generator-http-verb`, `data-plane-file-transfer`, `non-json-response`, `non-projectable-response`, `legacy-twin`, `duplicate-endpoint-family`, `inbound-webhook-not-client-api`, `deprecated-schedule-2026-09-30`. - -## Toolchain rules - -- Use the **latest** `@stackql/provider-utils` and `@stackql/pgwire-lite` (check npm before starting work; do not pin to an old minor). Node.js >= 20, `type: module`. -- Docusaurus 3.10.x for the microsite; `showLastUpdateTime` is flipped on in `website/docusaurus.config.js`. -- WSL is the execution environment on this machine (GNU make, bash, a `stackql` binary on PATH, Python 3, yarn). Node steps also run from Windows. -- The two CLI entry points (`provider-dev-utils.mjs`, `docgen-utils.mjs`) are npm scripts invoked through `node`; the Makefile is the operator surface (`make help`). - -## Repository layout - - Makefile # the pipeline: make all / make upgrade / make test / make smoke ... - bin/ # fetch-specs.sh, split.mjs, server lifecycle, test-meta-routes.cjs - provider-dev/ - downloaded/ # pinned NVCF spec, harvested NGC definitions, ngc_sdk_schemas.json (all committed), cleaned/ - config/ # spec_pin.json, servers.json, service_names.json, endpoint_inventory.csv, all_services.csv, clean_report.json, deprecation_schedule.json - scripts/ # fetch_nvcf_spec, harvest_ngc_spec, harvest_ngc_sdk_schemas, pin_specs, clean_specs, build_inventory, service_rules, map_operations, pre_normalize, post_process, check_deprecation_page, lib/inventory - source/ # split + normalized per-service specs (build artifacts, committed) - openapi/src/nvidia # generated provider output (committed) - docgen/provider-data # headerContent1.txt / headerContent2.txt (landing page) - tests/ - offline_validation.mjs - integration/ # mock_nvidia_server.mjs (both hosts), run_integration_tests.mjs, registry.mjs, probe.mjs - smoke_test.py # pystackql live suite (--live, --read-only, --with-nvcf-deploy, --cleanup-only) - website/ # Docusaurus microsite (shared stackql/docusaurus-config vendored at build) - .github/workflows/ # build-and-test.yml (pin check, build, drift gate, 3 test layers, gated smoke, weekly upstream drift), web deploys - -## Build pipeline - -`make all` runs deps -> fetch-specs (drift check) -> pin-check -> clean-specs -> inventory -> split -> mappings -> pre-normalize -> normalize -> generate (+ post-process) -> test-offline -> test-integration -> test-meta -> docs -> website. Every step is deterministic and re-runnable; manual mapping decisions are rules in `build_inventory.mjs` (the classify functions), response-class rules in `clean_specs.mjs`, and fixes in `pre_normalize.mjs` / `post_process.mjs` - never hand-edits to CSVs, specs or generated output. `endpoint_inventory.csv` is the single source of truth every later step reads (service, resource, method, verb, objectKey, host, org rebase, casing, pagination). `all_services.csv` is committed as the durable record of every operation -> resource.method mapping; `map_operations.mjs` prints the diff against the committed file, and a diff there is a breaking-change review, not noise. Validate-and-fail-without-writing is the standard for every script. - -## Tests - -1. `make test-offline` - `SHOW`/`DESCRIBE` against the local file registry (services, resources, verbs, the `NGC_ORG` behaviour, snake aliases, transforms). -2. `make test-integration` - the mock NGC + NVCF API (`tests/integration/mock_nvidia_server.mjs`, real wire shapes, bearer enforced, both hosts) with row-level assertions per archetype. `tests/integration/probe.mjs "<sql>"` prints stackql output and the wire calls for ad-hoc binding checks. -3. `make test-meta` - the meta-route walk over a local server. -4. `make smoke` / `make smoke-live` / `make smoke-read-only` / `make smoke-nvcf` / `make smoke-cleanup` - live, from `.env` (`NGC_API_KEY`, `NGC_ORG`, optional `NGC_TEAM`). Tiered: public catalog, org/registry reads plus a free registry model lifecycle, NVCF reads plus an undeployed function lifecycle where Cloud Functions is enabled (auto-detected, skip-with-notice otherwise). Only the gated `smoke-nvcf` target deploys anything (smallest instance, always torn down). - -Never run tests against a production organization. - -## Publish and docs - -Push the `nvidia` dir to `providers/src` in a feature branch of [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry) and follow the registry release flow; verify with `registry pull nvidia` from the dev registry and `make smoke-live`. Docs: `make docs` (generate + sanitize) then `make website`; GitHub Pages with `nvidia-provider.stackql.io` CNAME -> `stackql.github.io.`. - -## Writing conventions - -- README and docs copy: measured, precise, no hyperbole. Third-person or passive framing for descriptive copy. The Terraform provider is mentioned once, factually. -- No em dashes; use `-`. No characters not on a QWERTY keyboard; use `->` for arrows. -- Sample queries follow the k8s README style: realistic, runnable, `json_extract` for nested fields. - -## Non-negotiables - -1. Latest `@stackql/provider-utils`, always -2. The supabase / k8s repos are the reference pattern; sibling-build NOTES.md findings are reused, not re-derived - deviate only with a documented reason in NOTES.md -3. The three upstream inputs are pinned with evidence; the response-side SDK derivation is a recorded decision in `spec_pin.json` and `download_manifest.json`, never a silent switch -4. The deprecation schedule is a build input: scheduled families are never mapped, exempt families are never blanket-skipped -5. Deterministic scripts, never hand-edits to derived artifacts -6. Every regeneration is followed by `make test` before commit -7. Smoke tests never leave a deployed function running - a failed run must not leave GPU-billing resources behind +Read and follow the repository's canonical guidance in [AGENTS.md](AGENTS.md) for all work in this repository. diff --git a/Makefile b/Makefile index 5a4606f..35e7ed0 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,31 @@ -# StackQL nvidia (NVIDIA NGC + NVIDIA Cloud Functions) provider build pipeline. +# StackQL nvidia (NVIDIA NGC + NVIDIA Cloud Functions) provider - build, +# test and docs pipeline. # # Every step is deterministic and re-runnable; manual mapping decisions live -# in provider-dev/scripts, never in hand-edited artifacts. `make all` runs -# the full chain: fetch upstream specs (fails on drift against the pin) -> -# clean -> inventory -> split -> mappings -> pre-normalize -> normalize -> -# generate -> post-process -> offline + integration + meta-route tests -> -# docs -> website build. `make upgrade` is the same chain but accepts -# upstream changes (re-pins the specs) - review the resulting diff. -# `make smoke*` (live, needs credentials) is separate so `all` never -# touches a real account. +# in provider-dev/scripts (classification rules and skip codes in +# build_inventory.mjs, response-class rules and fix classes in +# clean_specs.mjs, passes in pre_normalize.mjs, numbered rules in +# post_process.mjs), never in hand-edited artifacts. `make all` runs the +# full chain: +# fetch/pin the three upstream inputs -> clean -> inventory -> split +# service specs -> mappings -> pre-normalize -> normalize -> generate +# (+ post-process, views, GraphQL merge) -> offline + integration + +# meta-route tests -> docs -> website. +# `make all` never needs credentials and never bills; the live smoke targets +# (`make smoke*`) are separate and source .env when present. `make upgrade` +# is `all` with the upstream change ACCEPTED (re-pins the inputs - review +# the resulting diff). # -# Requirements: Node >= 20, GNU make, a stackql binary ($STACKQL, ./stackql -# or on PATH), Python 3 (a venv with pystackql is created on demand for the -# smoke suite), yarn for the website. Runs under Linux / WSL / macOS. +# One deliberate difference from the template: `build` verifies the +# committed downloads against the pins offline (`pin-check`) instead of +# re-downloading, because the inputs are three documents plus a 2.4 MB PyPI +# wheel; `all` and CI run `fetch-spec` (network, fails on drift) first. +# +# Requirements: Node >= 22.19, GNU make + bash, a stackql binary ($STACKQL, +# ./stackql or on PATH - bin/start-server.sh downloads one if none is found), +# Python 3 (a venv with pystackql is created on demand for the smoke suite), +# yarn for the website. Runs on Linux, macOS or WSL (under WSL keep the venv +# off the DrvFs mount: `make smoke VENV=$HOME/.venvs/stackql-nvidia`). # # Live credentials for the smoke suite (never committed - .env is # gitignored; the smoke targets source it if present; see .env.example): @@ -24,36 +37,38 @@ SHELL := bash .DEFAULT_GOAL := help PROVIDER := nvidia +VERSION := v00.00.00000 +OPENAPI_DIR := provider-dev/openapi +SERVICES_DIR := $(OPENAPI_DIR)/src/$(PROVIDER) +PROVIDER_DIR := $(SERVICES_DIR)/$(VERSION) +SOURCE_DIR := provider-dev/source +CONFIG_DIR := provider-dev/config +GRAPHQL_DIR := provider-dev/source-graphql +# The repository docgen links from the Provider Summary on the docs landing +# page (the label is the URL's last path segment). Always this repository's +# URL; override on the command line for a fork hosted elsewhere. SOURCE_PROJECT ?= https://github.com/stackql-registry/stackql-provider-$(PROVIDER) -SERVICES_DIR := provider-dev/openapi/src/$(PROVIDER) -# Bearer auth from NGC_API_KEY; snake_case_aliases presents the camelCase -# wire properties (displayName, createdDate, ...) as snake_case columns, -# paired with request.nativeCasing (camel / kebab per method, set in -# post_process) so snake_case WHERE keys and body columns resolve. -PROVIDER_CONFIG := {"auth": {"type": "bearer", "credentialsenvvar": "NGC_API_KEY"}, "snake_case_aliases": true} -# NOTE: servers are per service (two hosts) and org-scoped paths ride a -# path-level server template - both come from the endpoint inventory (split -# + post_process), so no --servers / --service-config is passed here. +PORT ?= 5444 VENV := .venv PY := $(VENV)/bin/python ENV_FILE := .env -.PHONY: help deps fetch-specs refresh-specs pin-check clean-specs inventory split mappings pre-normalize normalize generate post-process build \ +.PHONY: help deps fetch-spec refresh-spec pin-check clean-specs inventory split mappings mappings-report pre-normalize normalize generate post-process graphql-merge build \ test-offline test-integration test-meta test venv smoke smoke-live smoke-read-only smoke-nvcf smoke-cleanup \ - docs website website-start clean all upgrade + docs website website-start start-server stop-server server-status clean all upgrade help: ## show this help - @grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-18s %s\n", $$1, $$2}' + @grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-24s %s\n", $$1, $$2}' -deps: ## install node dependencies (latest @stackql/provider-utils + @stackql/pgwire-lite per package.json ranges) +deps: ## install node dependencies (latest @stackql/provider-utils, @stackql/pgwire-lite and swagger-parser per package.json ranges) npm install # ---------------------------------------------------------------- pipeline -fetch-specs: ## download the NVCF spec, harvest the NGC definitions + ngcsdk schemas, and verify against the pins (fails on drift) +fetch-spec: ## download the NVCF spec, harvest the NGC definitions + ngcsdk schemas, and verify against the pins (fails on drift) npm run fetch-specs -- --check -refresh-specs: ## download everything and ACCEPT the upstream change (rewrites the pins - review the diff) +refresh-spec: ## download everything and ACCEPT the upstream change (rewrites the pins - review the diff) npm run fetch-specs pin-check: ## verify the committed downloads against provider-dev/config/spec_pin.json (no network) @@ -69,47 +84,70 @@ split: ## split the cleaned specs into per-service specs on their hosts, org-sco npm run split -- --provider-name $(PROVIDER) --overwrite mappings: ## regenerate all_services.csv from scratch and apply the inventory mappings (fails on unmapped ops; prints the mapping diff) - rm -f provider-dev/config/all_services.csv - npm run generate-mappings -- --provider-name $(PROVIDER) --input-dir provider-dev/source --output-dir provider-dev/config + rm -f $(CONFIG_DIR)/all_services.csv + npm run generate-mappings -- --provider-name $(PROVIDER) --input-dir $(SOURCE_DIR) --output-dir $(CONFIG_DIR) npm run map-operations -pre-normalize: ## nvidia-specific spec adjustments before the generic normalize pass +mappings-report: ## print every derived mapping without writing (design the inventory rules) + npm run map-operations -- --report + +pre-normalize: ## nvidia-specific spec surgery on provider-dev/source before the generic normalize pass npm run pre-normalize -normalize: ## generic provider-utils normalize pass (allOf flatten, opaque objects, param lifting, bare-array wrap) - npm run normalize -- --api-dir provider-dev/source +normalize: ## generic provider-utils normalize pass (allOf flatten, oneOf/anyOf lowering, opaque objects, bare-array wrap) + npm run normalize -- --api-dir $(SOURCE_DIR) -generate: ## generate the provider (bearer auth, snake_case aliases, naive request body translate) - rm -rf provider-dev/openapi/* +# No --servers / --service-config: servers are per service (two hosts) and +# the org-scoped paths ride a path-level server template - both come from +# the endpoint inventory (split + post-process). Views under +# ./views/<service>/views.yaml are spliced automatically. +generate: ## generate the provider (bearer auth, snake_case aliases, naive request bodies, views), then post-process and GraphQL merge + rm -rf $(OPENAPI_DIR)/* npm run generate-provider -- \ --provider-name $(PROVIDER) \ - --input-dir provider-dev/source \ + --input-dir $(SOURCE_DIR) \ --output-dir $(SERVICES_DIR) \ - --config-path provider-dev/config/all_services.csv \ - --provider-config '$(PROVIDER_CONFIG)' \ + --config-path $(CONFIG_DIR)/all_services.csv \ + --provider-config $(CONFIG_DIR)/provider_config.json \ --naive-req-body-translate \ --overwrite $(MAKE) post-process + $(MAKE) graphql-merge -post-process: ## re-apply generated-provider fixes (org server templates + NGC_ORG, casing, pagination, LIMIT pushdown, objectKeys) +post-process: ## re-apply everything the generator cannot express (org server templates + NGC_ORG, casing, pagination, LIMIT pushdown, objectKeys, transforms) npm run post-process +graphql-merge: ## merge GraphQL-backed resources from provider-dev/source-graphql (no-op: NVIDIA publishes no GraphQL API) + npm run graphql-merge -- --provider-dir $(PROVIDER_DIR) --source-dir $(GRAPHQL_DIR) + build: pin-check clean-specs inventory split mappings pre-normalize normalize generate ## full spec -> provider pipeline from the committed pins # ------------------------------------------------------------------- tests -test-offline: ## quick offline validation against the local file registry (SHOW / DESCRIBE, NGC_ORG behaviour) +test-offline: ## offline validation against the local file registry (SHOW / DESCRIBE, NGC_ORG behaviour, views, no network) npm run test-offline -test-integration: ## row-level integration tests against the mock NGC + NVCF servers (no account required) +test-integration: ## row-level and wire-level assertions against the mock NGC + NVCF API (no account required) npm run test-integration -test-meta: ## meta-route suite against a local stackql server (walks every service/resource/method) - npm run start-server -- --provider $(PROVIDER) --registry "$$(pwd)/provider-dev/openapi" - npm run test-meta-routes -- $(PROVIDER) || (npm run stop-server; exit 1) - npm run stop-server +# The server is always torn down and the meta-route walk's exit status is +# preserved so a failure stops `make all`. +test-meta: ## meta-route walk (every service, resource, method) against a local stackql server + bash bin/start-server.sh --provider $(PROVIDER) --registry "$(CURDIR)/$(OPENAPI_DIR)" --port $(PORT) + node bin/test-meta-routes.cjs $(PROVIDER) --port $(PORT); status=$$?; bash bin/stop-server.sh --port $(PORT); exit $$status + +test: test-offline test-integration test-meta ## all credential-free test layers -test: test-offline test-integration test-meta ## all non-live test layers +start-server: ## start a local stackql server on PORT (default 5444) over provider-dev/openapi + bash bin/start-server.sh --provider $(PROVIDER) --registry "$(CURDIR)/$(OPENAPI_DIR)" --port $(PORT) + +stop-server: ## stop the local stackql server + bash bin/stop-server.sh --port $(PORT) + +server-status: ## status of the local stackql server + bash bin/server-status.sh --port $(PORT) + +# ------------------------------------------------------------------- smoke $(VENV)/bin/activate: python3 -m venv $(VENV) @@ -117,11 +155,11 @@ $(VENV)/bin/activate: venv: $(VENV)/bin/activate ## create the python venv with pystackql for the smoke suite -# smoke targets source .env when present so a developer checkout works -# without exporting anything; CI sets variables from secrets. +# The smoke targets source .env when present so a developer checkout works +# without exporting anything; CI sets the variables from secrets. with_env = set -a; [ -f $(ENV_FILE) ] && source <(tr -d '\r' < $(ENV_FILE)); set +a; -smoke: venv ## live smoke suite with the locally generated provider - catalog + org/registry reads, cheap write lifecycles (needs NGC_API_KEY, NGC_ORG) +smoke: venv ## live smoke suite with the locally generated provider - catalog + org/registry reads, cheap self-cleaning write lifecycles (needs .env) @$(with_env) $(PY) tests/smoke_test.py smoke-live: venv ## live smoke suite against the PUBLISHED provider in the stackql registry (post-publish verification) @@ -133,30 +171,32 @@ smoke-read-only: venv ## live read smokes only, no writes smoke-nvcf: venv ## live suite INCLUDING the gated NVCF function deploy lifecycle (billable GPU minutes, smallest instance, always torn down) @$(with_env) $(PY) tests/smoke_test.py --with-nvcf-deploy -smoke-cleanup: venv ## sweep stackql-smoke-* breadcrumbs (functions, registry artifacts) and exit +smoke-cleanup: venv ## sweep stackql-smoke-* breadcrumbs (registry models, NVCF functions and deployments) and exit @$(with_env) $(PY) tests/smoke_test.py --cleanup-only # -------------------------------------------------------------------- docs -docs: ## generate the website docs (snake_case surface), then sanitize for MDX v3 +docs: ## generate the website docs (snake_case surface, source project link), then sanitize for MDX npm run generate-docs -- \ --provider-name $(PROVIDER) \ - --provider-dir ./$(SERVICES_DIR)/v00.00.00000 \ + --provider-dir ./$(PROVIDER_DIR) \ --output-dir ./website \ --provider-data-dir ./provider-dev/docgen/provider-data \ --snake-case-aliases \ --source-project $(SOURCE_PROJECT) npm run sanitize-docs -website: ## build the docusaurus microsite (vendors shared config first) +website: ## build the docusaurus microsite (vendors the shared stackql config first) cd website && yarn install && yarn build website-start: ## run the docusaurus dev server cd website && yarn install && yarn start -clean: ## remove regenerable artifacts (provider output, docs, website build, test registry copy) - rm -rf provider-dev/openapi/* website/build website/.docusaurus website/docs tests/integration/.registry-tmp +# ------------------------------------------------------------------- misc + +clean: ## remove generated artifacts (provider output, docs, website build, test registry copy) + rm -rf $(OPENAPI_DIR)/* website/build website/.docusaurus website/docs/services tests/integration/.registry-tmp stackql-server.log -all: deps fetch-specs build test docs website ## everything non-live: deps, upstream drift check, pipeline, tests, docs, site build +all: deps fetch-spec build test docs website ## everything non-live: deps, upstream drift check, pipeline, tests, docs, site build -upgrade: deps refresh-specs build test docs website ## accept upstream spec changes (re-pin), then the full pipeline, tests, docs and site build +upgrade: deps refresh-spec build test docs website ## accept upstream changes (re-pin), then the full pipeline, tests, docs and site build diff --git a/NOTES.md b/NOTES.md index 583fe65..fd9499d 100644 --- a/NOTES.md +++ b/NOTES.md @@ -46,10 +46,16 @@ Sibling findings reused, not re-derived: supabase (the project-scope server temp 20. **The definition servers are not byte-stable.** Two fetches of the models definition seconds apart were canonically identical but differed in bytes (the `securitySchemes` scopes map, a Java map, serialises in a different key order each time), so a raw-byte pin drifted on the very next `make all`. The fetchers now write every download as canonical JSON (keys sorted recursively, arrays untouched - `lib/canonical.mjs`) and the pins hash those bytes; a pin drift therefore means real upstream change. NVCF 2.245.1 -> 2.256.0 and the models definition's new NIM endpoint were real changes accepted on 2026-09-25. +22. **Template uplift (2026-10-16) - aligned with `stackql-provider-TEMPLATE` and the bundled `stackql-provider-development` skill.** Toolchain: `@apidevtools/swagger-parser` 12 -> 13.1.0 (clean_specs validation unchanged), Node >= 22.19 in `engines`, the Makefile header, the README and every `setup-node` step, `license: MIT`, `npm run probe`; `@stackql/provider-utils` 0.7.12 and `@stackql/pgwire-lite` 1.0.2 were already current. Repository shape: `AGENTS.md` is the canonical guidance with `CLAUDE.md` and `.github/copilot-instructions.md` as pointers (the supabase pattern); `SECURITY.md`, the issue and PR templates, `provider-dev/config/provider_config.json` (replacing the inline `--provider-config` JSON), `provider-dev/scripts/lib/spec_helpers.mjs` (the provider constants the harnesses and `graphql_merge.mjs` read), `provider-dev/source-graphql` with an empty manifest (NVIDIA publishes no GraphQL API, so the merge is a no-op kept for the standard `make generate` shape), `tests/integration/harness.mjs` (the template's shared plumbing, carrying this build's two-host rewrite and org-template check from the former `registry.mjs`), the template's server scripts and meta-route runner, `website/scripts/sanitize-docs.mjs` (the template version plus the kebab-parameter rule, recounting the landing-page resources; its scope annotation is switched off through `website/provider.js` because docgen 0.7.12 does not render the path-level server variable into the scoped pages' examples at all, and the `org_name` that does appear - on the public catalog's `/v2/models/{org_name}/...` pages and `orgs.orgs` (`/v2/orgs/{org_name}`) - is a plain path parameter `NGC_ORG` never resolves, so the template rule marked exactly the wrong pages), the chrome components re-copied, the Docusaurus boilerplate (HomepageFeatures, undraw images, stock README) removed, `website/package.json` engines and the web manifest corrected. Makefile targets renamed to the standard (`fetch-spec` / `refresh-spec`, `mappings-report`, `graphql-merge`, `start-server` / `stop-server` / `server-status`, `test-meta` preserving the walk's exit status); `build` keeps verifying the committed downloads offline (`pin-check`) rather than re-downloading three documents plus a 2.4 MB wheel on every run - `all` and CI run `fetch-spec` first, and CI restores `provider-dev/downloaded` from git after a drift warning so the committed pins are what gets built. CI gained the template's job-level smoke gate (`pinned` and `smoke_creds` outputs) and the drift gate now covers `provider-dev/downloaded`. One view added, `nvcf_deployments.vw_gpu_capacity` (cluster group x GPU x instance type, sqlite3 `json_each` with a postgres `jsonb_array_elements` fallback), asserted offline and against the mock. `make fetch-spec` on the day reported drift on all three inputs; the refresh is item 23. Working-tree CRLF line endings on 23 tracked files were normalized to LF (the index already held LF under `.gitattributes`, so no content changed). + +23. **Upstream refresh (2026-10-16) - all three inputs drifted; accepted with `make refresh-spec`, one breaking change.** `spec_diff.mjs` pinned vs fetched: NVCF 2.256.0 -> 2.261.2 adds one operation, `GET /v2/nvcf/authorizations/functions` (`getAuthorizedPartiesForAllFunctions`, `{functions: [AuthorizedPartiesByFunctionDto]}` - the same row shape as the per-function read), and changes `LlmConfigDto` / `LlmConfigUpdateDto`; the models definition (still 0.0.1-SNAPSHOT) removes the eight model-share operations (`shareModelInOrgWithOrg`, `revokeShareModelInOrgWithOrg`, the team-target and in-team forms) and replaces `HealthComponent` with `KaizenHealthStatus`, changing `ArtifactCreateRequest` and `LicenseMetadata`; the NGC definition (v3.249.17) only renumbered the operationIds of the `/swagger-resources` infra endpoints, which are `service-infra` skips. Mapping diff: `+1 -8 0 changed`. The removal retires the `private_registry.model_shares` resource (add_org / remove_org / add_team / remove_team and their `_by_team` twins) - a breaking change accepted because the published definition no longer declares those operations and a stale snapshot would be fabricating them; model sharing through the generic artifact family (`artifact_shares`, `artifact_product_shares`, `collection_product_shares`) is unaffected. The new read maps as `nvcf_functions.authorizations.list_all` (SELECT, objectKey `$.functions`, no parameters; it sits last in the select list after `list_version` and `list`, so it only routes a statement with no `function_id` - verified against the mock, which now serves the path). Counts moved from 502 / 342 / 83 to 495 inventoried, 335 mapped (select 157, insert 60, update 42, delete 48, replace 4, exec 24), 160 skipped (unchanged), 82 resources (private_registry 30), 119 team twins (was 121), 200 org-scoped rebases (was 204), `nativeCasing` camel x222 (was 229). The docs lost the `model_shares` page and gained `authorizations.list_all`, and the sharing-audit example now leads with the fleet-wide read. A second nondeterminism in the NGC definition surfaced on the same day (the first was the map ordering of item 20): springdoc numbers the seven same-named handlers of each `/swagger-resources` path with `_N` suffixes in reflection order, which differs between server instances - the morning fetch carried `swaggerResources` on OPTIONS and `swaggerResources_3` on POST, the two later fetches the reverse - so `harvest_ngc_spec.mjs` now applies a counted fix class before writing (`stable-swagger-resources-operation-ids`: 21 operations renamed to verb-keyed ids such as `swaggerResources_get`, recorded per file in `download_manifest.json`); the family is a `service-infra` skip, so no mapping is affected and the pin no longer flips on it. The other `_N` suffixes in the definition (`listOrganizations_1`, `addUserRole_3`, ...) have been stable across every fetch since the September pin and are left alone; the weekly drift job is the detector if that changes. + ## Blocked on a key 21a. **First live run (2026-09-26, INDIVIDUAL org `0783126463337528`, a 70-character `nvapi-` personal key).** The public catalog reads work with the key on the wire (`catalog.models` with `LIMIT` pushdown, the model get, the bare-array GPU catalog, collections). Every authenticated NGC core call answers 403 `FORBIDDEN` / "Access Denied" (`/v2/users/me`, `/v2/orgs`, `/v2/org/{org}/users|teams|models`, `/v2/csps`), `api.ngc.nvidia.com/v2/nvcf/*` answers 401 "Authentication Failed", and `api.nvcf.nvidia.com/v2/nvcf/functions` answers 403 "Authorization failed" (the NVCF problem-details body) - the bearer is recognised as a credential and refused authorization, which is the signature of a key without the Private Registry / Cloud Functions service scopes (or an org without those services: an INDIVIDUAL org has no private registry and NVCF needs enablement). The legacy token exchange (`$oauthtoken:<key>` at `authn.nvidia.com/token`) answers 401 for a personal key, `Authorization: ApiKey` answers 401, basic auth 401 "Not Authenticated", and `POST /v3/keys/get-caller-info` says "Invalid API key." for it - so none of those is the missing step; direct bearer is the right mechanism, and the key or org entitlements are the blocker. Harness finding: pystackql 3.8.4 `execute()` swallows an HTTP error on a SELECT into an empty result (the first run showed 17 false PASSes); `q()` now re-probes an empty SELECT through `executeStmt()`, which surfaces the error. +21b. **Second live run (2026-10-16, the same key and org) - the key is invalid, not under-scoped.** `make smoke-read-only` reproduced 21a exactly (4 passed, 10 failed, 2 skipped; the public catalog on the wire, every org / registry / NVCF call refused). Direct probes settled the cause: NVIDIA's own key validator, `POST https://api.ngc.nvidia.com/v3/keys/get-caller-info` with the form body `credentials=<key>` and no Authorization header - the exact request the pinned ngcsdk makes in `ngcbase/api/authentication.py` `get_sak_key_details()` for every `nvapi-` key before anything else - answers 401 `"Invalid API key."`, and a freshly generated random `nvapi-` string gets byte-identical responses on every endpoint (403 `Access Denied` on `api.ngc.nvidia.com`, 403 `Authorization failed` on `api.nvcf.nvidia.com`, 401 `Invalid API key.` from the validator), while no header at all answers 401 `Not Authenticated`. A valid but under-scoped key would pass the validator (its response carries `orgName`, `keyType` and `products`). The key in `.env` is therefore expired, revoked or mistyped and must be regenerated (NGC console -> Setup -> Generate Personal API Key, with the Private Registry and Cloud Functions services ticked) before item 21 can be closed; the provider's auth design (direct bearer, no JWT exchange) is unchanged. The two catalog 404s in the run are a harness defect, not a provider one: the catalog `models.list` row's `name` is the model's short name but the public catalog `get` path for a model published under a team (`nvidia/nemo/...`) needs `team_name` as well, so the smoke now takes its get target from a row whose `team_name` is empty. + 21. **Live verification - still owed with an entitled key.** `make smoke` covers: bearer acceptance on `orgs`, `current_user`, `users`, `teams`, registry models; the `page_number` pagination against a real multi-page collection (terminating request behaviour, `paginationInfo` present on registry lists); the kebab query parameters; a registry model INSERT / UPDATE / DELETE; NVCF enablement (cluster groups), fleet reads and an undeployed function INSERT / version get / authorizations / DELETE. `make smoke-nvcf` adds the deploy lifecycle (billable, gated, needs `NVCF_SMOKE_CONTAINER_IMAGE`). Also to confirm: whether `/v2/nvcf/...` or the gateway's `/v2/orgs/{org}/nvcf/...` form is right for a personal key (item 7), PUT field-drop semantics on `function_versions.update` and `artifacts.replace` (keycloak rule), and whether `GET /v2/csps` needs the Private Registry scope (phase-1 probe: 401). ## Open diff --git a/README.md b/README.md index dcd77b8..ccf3b8d 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,15 @@ This repository generates and documents the `nvidia` provider for StackQL, enabling SQL-based query and provisioning operations against the NVIDIA NGC control plane: NVIDIA Cloud Functions (NVCF - functions and versions, deployments and GPU specifications, cluster groups and GPU inventory, request queues, sharing grants, HTTP-polling invocation), the NGC private registry (models, resources, recipes, helm charts and other artifacts as metadata, collections, shares, encryption keys), the public NGC catalog, and NGC organizations, teams, users, roles and invitations. The provider is built using the `@stackql/provider-utils` package. +The build procedure is the bundled Claude Code skill, [`.claude/skills/stackql-provider-development`](.claude/skills/stackql-provider-development/SKILL.md); the settled decisions are in [AGENTS.md](AGENTS.md) and the findings with their evidence in [NOTES.md](NOTES.md). + ## Positioning -NVIDIA publishes a Go Terraform provider, [`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc), covering NVCF functions and telemetry endpoints (one resource and one data source each); it reads `NGC_API_KEY`, `NGC_ORG` and `NGC_TEAM`, and this provider uses the same variables. The surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer: 342 operations across 7 services and 83 resources, with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. The query surfaces that matter: GPU and cluster-group inventory, NVCF function fleet state by deployment specification, function sharing audits, registry and model estate reports, and org membership - the AI infrastructure control plane as data. +NVIDIA publishes a Go Terraform provider, [`NVIDIA/terraform-provider-ngc`](https://github.com/NVIDIA/terraform-provider-ngc), covering NVCF functions and telemetry endpoints (one resource and one data source each); it reads `NGC_API_KEY`, `NGC_ORG` and `NGC_TEAM`, and this provider uses the same variables. The surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer: 335 operations across 7 services and 82 resources, plus the `vw_gpu_capacity` view, with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. The query surfaces that matter: GPU and cluster-group inventory, NVCF function fleet state by deployment specification, function sharing audits, registry and model estate reports, and org membership - the AI infrastructure control plane as data. ## Design Principles -- **Bearer auth with an NGC Personal API Key** - `Authorization: Bearer` with the key in `NGC_API_KEY`. Keys need the Private Registry service scope for the registry service and, for NVCF, Cloud Functions at the organization level (NVIDIA's own docs warn that team-level roles break NVCF keys). +- **Bearer auth with an NGC Personal API Key** - `Authorization: Bearer` with the key in `NGC_API_KEY` (`provider-dev/config/provider_config.json`). Keys need the Private Registry service scope for the registry service and, for NVCF, Cloud Functions at the organization level (NVIDIA's own docs warn that team-level roles break NVCF keys). - **Org scope is a server variable** - registry and organization resources are scoped by `org_name`, resolved from `NGC_ORG` via `x-stackQL-envVar`; a `WHERE org_name` value always wins. NVCF paths carry no org (the key implies it). - **Two hosts, one provider** - NVCF management, the registry, the catalog and organizations are served from `api.ngc.nvidia.com`; queue details and invocation from `api.nvcf.nvidia.com`, carried per service. - **Deprecation-aware mapping** - NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those families are excluded by rule. Private Registry team scoping is exempt from that schedule and stays mapped as `*_by_team` methods on the same resources. @@ -20,86 +22,86 @@ Sibling-build findings are reused, not re-derived: supabase (the project-scope s ## Prerequisites -To build or test the provider you will need: - -1. Node.js 20+ and GNU make (for the build pipeline) -2. StackQL CLI installed (see [StackQL](https://github.com/stackql/stackql)) - `$STACKQL`, `./stackql`, or on `PATH` -3. Python 3 (a venv with `pystackql` is created on demand for the smoke suite) -4. yarn (for the docs microsite) -5. For live tests only: an NGC account with a Personal API Key in `NGC_API_KEY` and an organization name in `NGC_ORG` (see `.env.example`); the public catalog, the mock-backed integration suite and every other layer run without one +- Node.js >= 22.19 and GNU make with bash (Linux, macOS or WSL) +- A `stackql` binary (`$STACKQL`, `./stackql`, or on `PATH`; `bin/start-server.sh` downloads one if none is found) +- Python 3 for the smoke suite (a venv with `pystackql` is created on demand); yarn for the docs microsite +- For live tests only: an NGC organization that is not a production one, with a Personal API Key in `NGC_API_KEY` and the organization name in `NGC_ORG` (see `.env.example`); the public catalog, the mock-backed integration suite and every other layer run without one -## Build with make +## Makefile -Every pipeline stage below is wrapped as a `make` target ([Makefile](Makefile)); `make all` runs the full chain - upstream drift check, clean, inventory, split, mappings, normalize, generate, post-process, all credential-free tests, docs and the website build - and can be used at any stage to produce and test a new provider and docs. `make upgrade` is the same chain but accepts upstream changes (re-pins the specs): +Every step is a `make` target (`make help` lists them). The composites: ```bash -make all # deps -> fetch-specs (drift check) -> build -> test -> docs -> website -make upgrade # deps -> refresh-specs (accept upstream) -> build -> test -> docs -> website -make help # list all targets +make all # deps, upstream drift check, full pipeline (pin check, clean, inventory, split, mappings, + # pre-normalize, normalize, generate, post-process, views, GraphQL merge), offline + + # integration + meta-route tests, docs generation, website build - no credentials needed +make upgrade # the same chain, but ACCEPTING upstream changes (re-pins the inputs - review the diff) +make build # the spec -> provider pipeline only (offline, from the committed pins) +make test # the three credential-free test layers +make smoke # live smoke suite against the test organization (sources .env if present) ``` -Individual stages (each corresponds to a numbered section below): +`make all` never touches a real account. The live suites are `smoke`, `smoke-live` (the published provider, post-publish verification), `smoke-read-only`, `smoke-nvcf` (the gated NVCF deploy lifecycle, billable minutes) and `smoke-cleanup` (sweep `stackql-smoke-*` breadcrumbs). Under WSL keep the venv off the DrvFs mount: `make smoke VENV=$HOME/.venvs/stackql-nvidia`. | Target | Purpose | |---|---| | `make deps` | install node dependencies | -| `make fetch-specs` / `make refresh-specs` | download the NVCF spec, harvest the NGC definitions and the ngcsdk schemas; verify against the pins / accept the change | -| `make clean-specs` | deterministic spec repairs and validation | +| `make fetch-spec` / `make refresh-spec` | download the NVCF spec, harvest the NGC definitions and the ngcsdk schemas; verify against the pins / accept the change | +| `make pin-check` | verify the committed downloads against the pins (no network) | +| `make clean-specs` | deterministic spec repairs and swagger-parser validation | | `make inventory` | classify every operation into `endpoint_inventory.csv` | | `make split` | per-service specs on their hosts, org-scoped paths rebased | -| `make mappings` | regenerate and validate `all_services.csv` | +| `make mappings` / `make mappings-report` | regenerate and validate `all_services.csv` / print every derived mapping without writing | | `make pre-normalize normalize` | lower polymorphism in the service specs | -| `make generate` | generate the provider (runs `post-process` automatically) | -| `make test` | offline + integration + meta-route test layers (no account required) | -| `make smoke` | live smoke suite against the locally generated provider (needs `NGC_API_KEY`, `NGC_ORG`) | -| `make smoke-live` | live smoke suite against the published provider in the public registry | +| `make generate` | generate the provider (runs `post-process` and `graphql-merge` automatically; views spliced) | +| `make test-offline test-integration test-meta` | the three credential-free test layers | +| `make start-server` / `stop-server` / `server-status` | a local stackql server over `provider-dev/openapi` (`PORT`, default 5444) | | `make docs website` | generate the doc pages and build the microsite | -The smoke targets source a gitignored `.env` file if present (`NGC_API_KEY`, `NGC_ORG`, optional `NGC_TEAM`; see `.env.example`). +## 0. Acquire, pin and clean the upstream specs -## 1. Acquire, Pin, Clean the Upstream Specs (`make fetch-specs`, `make clean-specs`) +```bash +make fetch-spec # download the three inputs and verify against the recorded pins (fails on drift) +make refresh-spec # accept an upstream change (rewrites the pins - review the diff) +make clean-specs # deterministic repairs + swagger-parser validation, report in provider-dev/config/clean_report.json +``` -Three pinned inputs (`provider-dev/config/spec_pin.json`: URL, date, sha256; the downloads are committed since NVIDIA versions none of these URLs): +Three pinned inputs (`provider-dev/config/spec_pin.json`: URL, date, sha256 of the canonical JSON; the downloads are committed since NVIDIA versions none of these URLs): -1. **NVCF** - the published OpenAPI spec served by the NVCF API itself (`https://api.nvcf.nvidia.com/v3/openapi`, linked from the NVCF API docs). -2. **NGC core** - `provider-dev/scripts/harvest_ngc_spec.mjs` downloads the per-service definitions behind the NGC API explorer (`docs.ngc.nvidia.com/api/`) from their pinned URLs: the NGC API definition (orgs, teams, users - served by the public gateway at `api.ngc.nvidia.com/v3/api-docs`) and the Private Artifacts (Models) API (registry and catalog artifact metadata, from `models.ngc.nvidia.com`). The definitions that refuse public connections are recorded in `download_manifest.json`. +1. **NVCF** - the published OpenAPI spec served by the NVCF API itself (`https://api.nvcf.nvidia.com/v3/openapi`, linked from the NVCF API docs; openapi 3.1.0, version 2.261.2, 36 paths, 56 operations). +2. **NGC core** - `provider-dev/scripts/harvest_ngc_spec.mjs` downloads the definitions behind the NGC API explorer (`docs.ngc.nvidia.com/api/`) from their pinned URLs: the NGC API definition (orgs, teams, users - served by the public gateway at `api.ngc.nvidia.com/v3/api-docs`) and the Private Artifacts (Models) API (registry and catalog artifact metadata, from `models.ngc.nvidia.com`). The definitions that refuse public connections are recorded in `download_manifest.json`. 3. **ngcsdk** - the July 2026 models definition declared no 2xx response on 303 of its 333 operations. `harvest_ngc_sdk_schemas.mjs` downloads the `ngcsdk` wheel from PyPI (pinned version and sha256), converts its auto-generated data classes (`registry/data/model/*.py`) to JSON Schema, and the clean step attaches them as 200 responses to any operation that lacks one. The current definition ships responses on every operation, so the rule injects nothing today; it stays as the recorded fallback. -```bash -npm run fetch-specs -- --check # download + verify against the pins (fails on drift) -npm run fetch-specs # download + re-pin (accept upstream changes) -npm run clean-specs # repairs + swagger-parser validation, fix report in provider-dev/config/clean_report.json -``` +`clean_specs.mjs` applies deterministic repair rules with a per-source report: the relative server on the NGC definition, the `/v1` -> `/v2` public-gateway prefix on the models definition, snake_case path parameters throughout, path parameters whose declared name does not match their template token, cookie parameters (unsupported by the engine), query parameters with prose names, and the SDK response injection. It fails without writing on anything unfixable. Before accepting a refresh: `node .claude/skills/stackql-provider-development/scripts/spec_diff.mjs <pinned> <fetched>` and record the summary in `NOTES.md`. -`clean_specs.mjs` applies deterministic repair rules with a per-source report: the relative server on the NGC definition, the `/v1` -> `/v2` public-gateway prefix on the models definition, snake_case path parameters throughout, path parameters whose declared name does not match their template token, cookie parameters (unsupported by the engine), query parameters with prose names, and the SDK response injection. It fails without writing on anything unfixable. +## 1. Endpoint inventory and service split -## 2. Inventory and Split (`make inventory`, `make split`) +```bash +make inventory +make split +``` `build_inventory.mjs` classifies every operation of the cleaned specs into `provider-dev/config/endpoint_inventory.csv` - host, org and team scoping, the org-scope rebase (`org_prefix`, `rebased_path`, `server_url`), declared auth and wire-observed public reads, pagination parameters, wire casing, response shape and objectKey candidate, the proposed service / resource / method / SQL verb, and a skip reason where applicable. The deprecation schedule is applied here as a rule (`SCHEDULED_DEPRECATIONS`). The CSV is the single source of truth every later step reads; it fails without writing on an unclassified operation, a duplicate method, a rebase collision, a service spanning two hosts, or a SELECT method without a projectable response. -```bash -npm run build-inventory -npm run split -- --provider-name nvidia --overwrite -``` +The split assigns operations to services from the inventory, sets each service's root server (host) and title (`provider-dev/config/service_names.json`), and rebases org-scoped operations: the leading org prefix (`/v2/org/{org_name}`, `/v3/orgs/{org_name}`, `/v2/artifact-registry/org/{org_name}`) is removed from the path and the org path parameter dropped, to be re-attached as a server template in post-processing. Output: `provider-dev/source/<service>.yaml` (committed build artifacts). -The split assigns operations to services from the inventory, sets each service's root server (host) and title (`provider-dev/config/service_names.json`), and rebases org-scoped operations: the leading org prefix (`/v2/org/{org_name}`, `/v3/orgs/{org_name}`, `/v2/artifact-registry/org/{org_name}`) is removed from the path and the org path parameter dropped, to be re-attached as a server template in post-processing. +495 operations inventoried, 335 mapped (select 157, insert 60, update 42, delete 48, replace 4, exec 24), 160 skipped with reason codes (service-infra 24, internal-admin 34, deprecated-inline 44, superseded-by-v3-twin 4, non-generator-http-verb 7, data-plane-file-transfer 22, non-json-response 4, non-projectable-response 2, legacy-twin 3, duplicate-endpoint-family 15, inbound-webhook-not-client-api 1), 82 resources across 7 services: | Service | Resources | Contents | |---|---|---| | `orgs` | 11 | organizations, teams, users, team members and member roles, role grants, invitations, current user | -| `private_registry` | 31 | org-scoped artifact metadata: models, resources, recipes, generic artifacts (helm charts, endpoints, blueprints, agents, playbooks, APIs, skills), versions and files, collections, shares, deployment parameters, encryption keys, workflows; `*_by_team` twins | +| `private_registry` | 30 | org-scoped artifact metadata: models, resources, recipes, generic artifacts (helm charts, endpoints, blueprints, agents, playbooks, APIs, skills), versions and files, collections, shares, deployment parameters, encryption keys, workflows; `*_by_team` twins | | `catalog` | 21 | public artifact metadata reads plus the GPU and cloud service provider catalogs, NIM metadata publishing | | `nvcf_functions` | 7 | functions, versions, function ids, metadata, authorizations (sharing grants), secrets, rate limits | -| `nvcf_deployments` | 7 | deployments and GPU specifications, cluster groups and GPUs, registry credentials, telemetries | +| `nvcf_deployments` | 7 (+ 1 view) | deployments and GPU specifications, cluster groups and GPUs, registry credentials, telemetries; `vw_gpu_capacity` | | `nvcf_queues` | 2 | queue details, queue position | | `nvcf_invocation` | 4 | HTTP-polling invocation (pexec + status), assets, assertion tokens | -## 3. Generate Mappings (`make mappings`) +## 2. Mappings ```bash -rm -f provider-dev/config/all_services.csv -npm run generate-mappings -- --provider-name nvidia --input-dir provider-dev/source --output-dir provider-dev/config -npm run map-operations +make mappings-report # print every derived mapping without writing +make mappings # regenerate all_services.csv from scratch and apply the inventory mappings ``` `map_operations.mjs` fills the `stackql_resource_name`, `stackql_method_name`, `stackql_verb` and `stackql_object_key` columns from the inventory (joined by service and operationId), validates that every operation is mapped, that method names are unique per resource and that overloaded SQL verbs have unique path-parameter signatures, prints the mapping diff against the committed `all_services.csv` (a diff there is a breaking-change review, not noise), and fails without writing on any violation. @@ -118,37 +120,30 @@ npm run map-operations | actions (purge, stash, malware scan, resend, api-key mint, ...) | `EXEC` | on the owning resource | | streaming / gRPC invocation, artifact binary transfer, admin and infra endpoints, scheduled team-scoped families | skipped | reason-coded in the inventory | -## 4. Normalize the Service Specs (`make pre-normalize normalize`) +## 3. Normalize ```bash -npm run pre-normalize -npm run normalize -- --api-dir provider-dev/source +make pre-normalize # nvidia-specific passes in provider-dev/scripts/pre_normalize.mjs +make normalize # provider-utils: allOf flatten, opaque objects, param lifting, bare-array wrap ``` -`pre_normalize.mjs` lowers OpenAPI 3.1 constructs (type arrays, numeric exclusive bounds) and strips the models definition's per-operation `x-ssa-scopes` security hints. `npm run normalize` (provider-utils) then flattens composition, converts opaque objects to JSON-blob strings, lifts path-item parameters onto operations and wraps bare-array responses (the GPU catalog). +`pre_normalize.mjs` lowers OpenAPI 3.1 constructs (type arrays, numeric exclusive bounds) and strips the models definition's per-operation `x-ssa-scopes` security hints. `normalize` (provider-utils) then flattens composition, converts opaque objects to JSON-blob strings, lifts path-item parameters onto operations and wraps bare-array responses (the GPU catalog). -## 5. Generate Provider (`make generate`) +## 4. Generate ```bash -rm -rf provider-dev/openapi/* -npm run generate-provider -- \ - --provider-name nvidia \ - --input-dir provider-dev/source \ - --output-dir provider-dev/openapi/src/nvidia \ - --config-path provider-dev/config/all_services.csv \ - --provider-config '{"auth": {"type": "bearer", "credentialsenvvar": "NGC_API_KEY"}, "snake_case_aliases": true}' \ - --naive-req-body-translate \ - --overwrite -npm run post-process +make generate # rm output, generate (bearer auth, snake_case aliases, naive bodies, views), post-process, GraphQL merge ``` -No `--servers` or `--service-config` is passed: servers are per service (two hosts) and the org templates, casing and pagination are per method, all driven by the inventory in `post_process.mjs`, which applies: +Output: `provider-dev/openapi/src/nvidia/v00.00.00000/provider.yaml` + `services/*.yaml` (committed). No `--servers` or `--service-config` is passed: servers are per service (two hosts) and the org templates, casing and pagination are per method, all driven by the inventory in `post_process.mjs`, which applies as numbered rules: - **Org server templates** - every rebased path item gets a path-level `servers` template (`https://api.ngc.nvidia.com/v2/org/{org_name}` and the v3 / artifact-registry forms) whose `org_name` variable carries `x-stackQL-envVar: NGC_ORG`. any-sdk resolves servers operation -> path item -> document, so the override applies to those operations only; it is applied after generation because normalize strips path-level servers. - **Casing** - `request.nativeCasing: camel` (NVCF and JSON bodies) or `kebab` (methods with kebab query parameters such as `page-size`, `resolve-labels`) on every method, paired with `snake_case_aliases` on the provider. - **Pagination and LIMIT pushdown** - NGC core collections page with zero-based `page-number` + `page-size` and echo `paginationInfo {index, totalPages}`; the `page_number` algorithm is configured per list method and `LIMIT n` is pushed to `page-size`. - **Opaque bodies and scalar lists** - the pexec invocation body becomes a `{body}` wrapper with a request transform; `function_ids` and the invocation status body are re-shaped by response transforms. +Views in `views/<service>/views.yaml` are spliced by the generator (`vw_gpu_capacity` in `nvcf_deployments`: one row per cluster group x GPU x instance type); `provider-dev/source-graphql/` is present for the standard `make generate` shape but lists no operations (NVIDIA publishes no GraphQL API). + ### Organization scope ```bash @@ -166,94 +161,86 @@ SELECT name FROM nvidia.private_registry.models WHERE team_name = 'ml-platform'; With `NGC_ORG` unset, `org_name` is a required parameter on every org-scoped method (visible in `SHOW METHODS`). -## 6. Test Provider (`make test`) - -### Validate offline (`make test-offline`) - -[tests/offline_validation.mjs](tests/offline_validation.mjs) runs `SHOW SERVICES` / `SHOW RESOURCES` / `SHOW METHODS` / `DESCRIBE EXTENDED` against the local file registry and asserts the service and resource lists, verbs and required parameters, the `NGC_ORG` behaviour (`org_name` required only when unset), snake aliases and the transforms - no network, no server. - -### Integration tests (`make test-integration` - mock NGC + NVCF, no account required) - -[tests/integration/mock_nvidia_server.mjs](tests/integration/mock_nvidia_server.mjs) plays both hosts with real wire shapes (the `{<entities>, paginationInfo, requestStatus}` envelopes, the bare-array GPU catalog, the NVCF `{functions}` / `{function}` envelopes, the 202 + `NVCF-REQID` invocation) and enforces the bearer token. [run_integration_tests.mjs](tests/integration/run_integration_tests.mjs) materialises a test copy of the provider pointed at the mock and asserts row-level results: envelope unwrapping, pagination over three pages and `LIMIT` pushdown, `NGC_ORG` resolution and override, the `*_by_team` routing, kebab and camel casing on the wire, a registry model lifecycle, the NVCF function / authorization / deployment lifecycles, queue details on the second host, the polling invocation and a 404. `tests/integration/probe.mjs "<sql>"` prints stackql's output and the wire calls for ad-hoc checks. +## 5. Test ```bash -npm run test-integration # add -- --verbose for per-query output +make test-offline # SHOW / DESCRIBE against the local file registry +make test-integration # mock NGC + NVCF API, row-level and wire-level assertions +make test-meta # meta-route walk over a local stackql server +make smoke # live (needs .env) ``` -### Meta-route test suite (`make test-meta`) +[tests/offline_validation.mjs](tests/offline_validation.mjs) runs `SHOW SERVICES` / `SHOW RESOURCES` / `SHOW METHODS` / `DESCRIBE EXTENDED` against the local file registry and asserts the service and resource lists, verbs and required parameters, the `NGC_ORG` behaviour (`org_name` required only when unset), snake aliases, the transforms and the view - no network, no server. -Starts a StackQL wire server against the local registry and walks every service, resource and method, asserting that every resource has methods, that no two methods on the same SQL verb share a required-parameter signature, and that every selectable resource yields a non-empty `DESCRIBE EXTENDED`. +[tests/integration/mock_nvidia_server.mjs](tests/integration/mock_nvidia_server.mjs) plays both hosts with real wire shapes (the `{<entities>, paginationInfo, requestStatus}` envelopes, the bare-array GPU catalog, the NVCF `{functions}` / `{function}` envelopes, the 202 + `NVCF-REQID` invocation) and enforces the bearer token. [run_integration_tests.mjs](tests/integration/run_integration_tests.mjs) materialises a test copy of the provider pointed at the mock (`harness.mjs`) and asserts row-level results and wire calls: envelope unwrapping, pagination over three pages and `LIMIT` pushdown, `NGC_ORG` resolution and override, the `*_by_team` routing, kebab and camel casing on the wire, a registry model lifecycle, the NVCF function / authorization / deployment lifecycles, queue details on the second host, the polling invocation, the view and a 404. `npm run probe -- "SELECT ..."` runs ad-hoc SQL against the mock and prints the wire calls. -### Smoke tests +The meta-route suite starts a StackQL wire server against the local registry and walks every service, resource and method, asserting that every resource has methods, that no two methods on the same SQL verb share a required-parameter signature, and that every selectable resource yields a non-empty `DESCRIBE EXTENDED`. -[tests/smoke_test.py](tests/smoke_test.py) (pystackql) runs against a real NGC organization, tiered by what the credentials can reach: the public catalog; organization and registry reads plus a free registry model `INSERT` / `UPDATE` / `DELETE`; NVCF reads (cluster groups and GPUs, fleet state) plus an undeployed function `INSERT` / version get / authorizations / `DELETE` where Cloud Functions is enabled (auto-detected, skipped with a notice otherwise). Everything it creates is named `stackql-smoke-<stamp>` and breadcrumbs are swept first. Only the gated deploy lifecycle costs anything: +[tests/smoke_test.py](tests/smoke_test.py) (pystackql) runs against a real NGC organization, tiered by what the credentials can reach: the public catalog; organization and registry reads plus a free registry model `INSERT` / `UPDATE` / `DELETE` (the `UPDATE` string-coercion probe); NVCF reads (cluster groups and GPUs, fleet state) plus an undeployed function `INSERT` / version get / authorizations / `DELETE` where Cloud Functions is enabled (auto-detected, skipped with a notice otherwise). Everything it creates is named `stackql-smoke-<stamp>`, breadcrumbs are swept first, every statement is paced, and a `429` fails the run. Only the gated deploy lifecycle costs anything (the smallest instance type of the first cluster group, waited to `ACTIVE`, always torn down; well under $1): ```bash make smoke # local provider (creates a pystackql venv on demand) make smoke-live # --live: the published provider in the stackql registry make smoke-read-only # reads only -make smoke-nvcf # + deploy the smoke function on the smallest instance type, wait, undeploy (billable minutes, well under $1; needs NVCF_SMOKE_CONTAINER_IMAGE) +make smoke-nvcf # + the gated deploy lifecycle (billable minutes; needs NVCF_SMOKE_CONTAINER_IMAGE) make smoke-cleanup # just sweep breadcrumbs ``` -Never run tests against a production organization. +Never run tests against a production organization. The live run still owed, and the result of the last attempt, are recorded in [NOTES.md](NOTES.md) (items 21, 21a, 21b). -### CI +## 6. Docs -[.github/workflows/build-and-test.yml](.github/workflows/build-and-test.yml) rebuilds the provider from the committed pins on every push and PR (`make build`), fails on uncommitted generation drift, and runs the offline, integration and meta-route layers plus the docs generation. On pushes it runs the live smoke suite where the `NGC_API_KEY` / `NGC_ORG` secrets exist (never the deploy lifecycle). A weekly job re-downloads every upstream input, diffs it against the pins, snapshots the NGC deprecation schedule page, and opens an issue when anything moves. The docs microsite deploys separately via the web workflows. +```bash +make docs # generate website/docs (snake_case surface, source project link) and sanitize for MDX +make website # yarn install && yarn build (vendors the shared stackql/docusaurus-config) +make website-start +``` + +The doc microsite (`website/`) is Docusaurus 3.10 on the shared [`stackql/docusaurus-config`](https://github.com/stackql/docusaurus-config), vendored into `.shared-config/` at build time. Site-local files are the provider identity (`website/provider.js`), thin wrappers (`docusaurus.config.js`, which flips `showLastUpdateTime` on, and `sidebars.js`), the shared components under `src/`, and static assets including `static/CNAME`. `provider-dev/docgen/provider-data/headerContent1.txt` is the landing-page front matter and pitch; `headerContent2.txt` the getting-started page (installation, scope, authentication, organization scope, pagination and casing, rate limit, deprecations, example queries). `make docs` passes `--source-project $(SOURCE_PROJECT)`, which adds a `source project` row to the Provider Summary linking to this repository. Commit `website/docs` after every regeneration. + +To publish the site, select GitHub Actions as the source under Pages -> Build and deployment in the repository settings (the deploy workflows build from `main` with `yarn install --frozen-lockfile`, cached on the committed `website/yarn.lock`) and create the DNS record (the served hostname is pinned by `website/static/CNAME`): -## 7. Publish the Provider +| Source domain | Record type | Target | +|---|---|---| +| `nvidia-provider.stackql.io` | CNAME | `stackql.github.io.` | + +The provider is listed in the Providers menu of every StackQL site by adding it to `src/configs/providers.json` in the `stackql.io` repository. -To publish, push the `nvidia` dir to `providers/src` in a feature branch of the [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry). Follow the [registry release flow](https://github.com/stackql/stackql-provider-registry/blob/dev/docs/build-and-deployment.md). +## 7. Publish -Pull and verify from the dev registry: +Push the generated `provider-dev/openapi/src/nvidia` directory to `providers/src` in a feature branch of [stackql-provider-registry](https://github.com/stackql/stackql-provider-registry) and follow the [registry release flow](https://github.com/stackql/stackql-provider-registry/blob/dev/docs/build-and-deployment.md). Verify from the dev registry, then `make smoke-live`: ```bash -export DEV_REG="{ \"url\": \"https://registry-dev.stackql.app/providers\" }" +export DEV_REG='{ "url": "https://registry-dev.stackql.app/providers" }' stackql --registry="${DEV_REG}" shell ``` ```sql -registry pull nvidia; +REGISTRY PULL nvidia; ``` -## 8. Generate Web Docs (`make docs website`) +## 8. CI -The doc microsite (`website/`) is Docusaurus 3.10 and follows the shared architecture used by the other provider microsites: all navbar/footer/theme/plugin configuration lives in [`stackql/docusaurus-config`](https://github.com/stackql/docusaurus-config), vendored into `.shared-config/` at build time. Site-local files are limited to the provider identity (`website/provider.js`), thin wrappers (`docusaurus.config.js` - which also flips `showLastUpdateTime` on so every page is date-stamped - and `sidebars.js`), the shared components under `src/`, and static assets including `static/CNAME`. +[.github/workflows/build-and-test.yml](.github/workflows/build-and-test.yml): on push / PR - `npm ci`, `stackql/setup-stackql`, pin verification against upstream (warns on drift and restores the committed inputs), `make build`, a hard failure on uncommitted generation drift, the three credential-free test layers, docs generation; a live smoke job that is skipped at the job level on pull requests, on the schedule and until the `NGC_API_KEY` / `NGC_ORG` secrets are configured (never the deploy lifecycle); a weekly `upstream-drift` job that re-downloads every input, diffs it against the pins, snapshots the NGC deprecation schedule page and opens a labelled issue when anything moves. The web deploy workflows build the site from `main`. -a. `headerContent1.txt` and `headerContent2.txt` in `provider-dev/docgen/provider-data/` are injected into the docs landing page (installation, authentication, organization scope, pagination, deprecations, example queries) +## Authentication reference -b. Generate the docs on the snake_case surface and sanitize them for MDX v3: +`provider-dev/config/provider_config.json` becomes `config:` in `provider.yaml`: -```bash -npm run generate-docs -- \ - --provider-name nvidia \ - --provider-dir ./provider-dev/openapi/src/nvidia/v00.00.00000 \ - --output-dir ./website \ - --provider-data-dir ./provider-dev/docgen/provider-data \ - --snake-case-aliases -npm run sanitize-docs +```json +{"auth": {"type": "bearer", "credentialsenvvar": "NGC_API_KEY"}, "snake_case_aliases": true} ``` -c. Build and test locally (yarn, Node 20+; the build vendors the shared config, so network access to GitHub is required): +A user can override at runtime with `stackql --auth='{"nvidia": {"type": "bearer", "credentialsenvvar": "MY_OTHER_VAR"}}'`. -```bash -cd website -yarn install -yarn build -yarn serve -``` +## Contributing -To publish, select __GitHub Actions__ as the __Source__ under __Pages -> Build and deployment__ in the repository settings, and create the following DNS record (the served hostname is pinned by `website/static/CNAME`): +Contributions are welcome - rules in scripts, `make build && make test`, then a pull request. -| Source Domain | Record Type | Target | -|---|---|---| -| nvidia-provider.stackql.io | CNAME | stackql.github.io. | +## Security -## License +Report vulnerabilities privately through the repository's advisory form, never in a public issue - see [SECURITY.md](SECURITY.md). -MIT - -## Contributing +## License -Contributions are welcome. Please submit a Pull Request. +MIT - see [LICENSE](LICENSE). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..7910526 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,46 @@ +# Security Policy + +The StackQL team takes the security of the `nvidia` StackQL provider seriously. We appreciate everyone who reports vulnerabilities responsibly, and we will do our best to acknowledge and address valid reports promptly. + +## Reporting a Vulnerability + +Please do not open a public GitHub issue for security reports. A public issue discloses the problem before a fix is available and puts users at risk. + +Instead, report privately using GitHub private vulnerability reporting: + +1. Open the [new advisory form](https://github.com/stackql-registry/stackql-provider-nvidia/security/advisories/new) (Security tab -> Advisories -> "Report a vulnerability"). +2. Provide as much detail as you can: the provider version (`SHOW PROVIDERS` in a `stackql shell`, or the version directory under `provider-dev/openapi/src/nvidia/`), the resource and method involved, reproduction steps (the SQL statement and the request it produced, with credentials redacted), impact, and any suggested remediation. +3. Submit. This opens a private advisory thread visible only to you and the maintainers. + +If you cannot use GitHub private vulnerability reporting, email us at [info@stackql.io](mailto:info@stackql.io). Please put "SECURITY" in the subject line and treat the contents as confidential. + +## Supported Versions + +Security fixes are applied to the latest version of the provider published to the [StackQL provider registry](https://github.com/stackql/stackql-provider-registry); `REGISTRY PULL nvidia` installs it. Earlier published versions are supported on a best-effort basis only; we recommend pulling the latest version. + +## Response Expectations + +These are targets, not contractual guarantees: + +- We aim to acknowledge a report within a few business days. +- We will keep you updated as we investigate and work on a fix. +- We will coordinate disclosure timing with you once a fix or mitigation is ready. + +## Disclosure Policy + +We follow coordinated (responsible) disclosure. Please give us a reasonable opportunity to release a fix before any public disclosure. We are happy to credit reporters in the advisory and release notes, unless you prefer to remain anonymous. + +## Scope + +This policy covers what this repository produces and runs: the generated provider definition under `provider-dev/openapi/`, the build scripts under `provider-dev/scripts/` and `bin/`, the test harnesses under `tests/` (including the mock API server), the documentation site under `website/`, and the CI workflows. Reports in scope include a credential or token leaking into a generated document, a log, a docs page or a test fixture; a server template or request transform that sends a credential to a host other than the NVIDIA NGC and NVCF APIs; and a test harness that reaches a live account when it should not. + +Issues in the following belong elsewhere: + +- The `stackql` engine (SQL parsing, authentication handling, the HTTP client): [stackql/stackql](https://github.com/stackql/stackql/security/policy). +- The request-execution library: [stackql/any-sdk](https://github.com/stackql/any-sdk). +- The provider build tooling: [stackql-registry/stackql-provider-utils](https://github.com/stackql-registry/stackql-provider-utils). +- The NVIDIA NGC and NVCF APIs themselves: NVIDIA's own security program. This provider describes that API; it does not operate it. + +## Credentials + +The provider reads credentials from environment variables at query time and does not store them. The live smoke suite reads them from `.env`, which is excluded from version control; never commit a real credential. If a credential is committed or published by mistake, rotate it first, then report the exposure as above. diff --git a/bin/server-status.sh b/bin/server-status.sh index a522337..ed92445 100644 --- a/bin/server-status.sh +++ b/bin/server-status.sh @@ -57,9 +57,9 @@ else echo "Testing connection..." if command -v psql &> /dev/null; then if PGPASSWORD=stackql psql -h localhost -p ${PORT} -U stackql -d stackql -c "SELECT 1 as test" &> /dev/null; then - echo "āœ… Server is accepting connections" + echo "OK: server is accepting connections" else - echo "āŒ Could not connect to server" + echo "FAILED: could not connect to server" fi else echo "Note: Install psql client to test connection" diff --git a/bin/start-server.sh b/bin/start-server.sh index 414dffa..ae23ad4 100644 --- a/bin/start-server.sh +++ b/bin/start-server.sh @@ -1,13 +1,10 @@ #!/bin/bash -# Start a stackql wire server (pgwire) against the local file registry for -# the meta-route suite. Binary resolution: $STACKQL, ./stackql, then -# `stackql` on PATH (the test runners resolve the same way); download into -# the repo only as a last resort. - +# Get current directory DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" BASE_DIR="$( cd "$DIR/.." && pwd )" +# Parse command line arguments PROVIDER="" REG_PATH="" PORT="5444" @@ -17,7 +14,7 @@ function display_help() { echo "Usage: start-server.sh [OPTIONS]" echo "Options:" echo " --provider NAME Provider name (default: use provider from package.json)" - echo " --registry PATH Path to local registry root (default: provider-dev/openapi)" + echo " --registry PATH Path to local registry (default: current directory)" echo " --port PORT Port to run server on (default: 5444)" echo " --verify Enable signature verification (default: false)" echo " --help Display this help message" @@ -25,18 +22,42 @@ function display_help() { while [[ $# -gt 0 ]]; do case $1 in - --provider) PROVIDER="$2"; shift 2 ;; - --registry) REG_PATH="$2"; shift 2 ;; - --port) PORT="$2"; shift 2 ;; - --verify) VERIFY="true"; shift ;; - --help) display_help; exit 0 ;; - *) echo "Unknown option: $1"; display_help; exit 1 ;; + --provider) + PROVIDER="$2" + shift 2 + ;; + --registry) + REG_PATH="$2" + shift 2 + ;; + --port) + PORT="$2" + shift 2 + ;; + --verify) + VERIFY="true" + shift + ;; + --help) + display_help + exit 0 + ;; + *) + echo "Unknown option: $1" + display_help + exit 1 + ;; esac done -if [ -z "$PROVIDER" ] && [ -f "$BASE_DIR/package.json" ]; then - PROVIDER=$(grep -o '"name": "stackql-provider-[^"]*"' "$BASE_DIR/package.json" | sed 's/"name": "stackql-provider-//' | sed 's/"//') +# If provider not specified, try to get from package.json +if [ -z "$PROVIDER" ]; then + if [ -f "$BASE_DIR/package.json" ]; then + PROVIDER=$(grep -o '"name": "stackql-provider-[^"]*"' "$BASE_DIR/package.json" | sed 's/"name": "stackql-provider-//' | sed 's/"//') + fi fi + +# If registry path not specified, use current directory if [ -z "$REG_PATH" ]; then REG_PATH="$BASE_DIR/provider-dev/openapi" fi @@ -46,26 +67,30 @@ echo "Registry path: $REG_PATH" echo "Port: $PORT" echo "Verify signatures: $VERIFY" -STACKQL_BIN="" +# Resolve the stackql binary: $STACKQL, ./stackql, `stackql` on PATH, else +# download the latest release into the repo root (gitignored). if [ -n "${STACKQL:-}" ] && [ -x "$STACKQL" ]; then STACKQL_BIN="$STACKQL" elif [ -x "$BASE_DIR/stackql" ]; then STACKQL_BIN="$BASE_DIR/stackql" -elif command -v stackql >/dev/null 2>&1; then +elif command -v stackql > /dev/null 2>&1; then STACKQL_BIN="$(command -v stackql)" -fi - -if [ -z "$STACKQL_BIN" ]; then +else echo "StackQL binary not found. Downloading..." OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) - if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then ARCH="arm64"; fi + if [ "$ARCH" = "x86_64" ]; then + ARCH="amd64" + elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then + ARCH="arm64" + fi if [ "$OS" = "darwin" ]; then DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_darwin_${ARCH}.zip" elif [ "$OS" = "linux" ]; then DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_linux_${ARCH}.zip" else - echo "Unsupported OS: $OS - download stackql manually from https://github.com/stackql/stackql/releases" + echo "Unsupported OS: $OS" + echo "Please download stackql manually from https://github.com/stackql/stackql/releases" exit 1 fi cd "$BASE_DIR" @@ -76,23 +101,28 @@ if [ -z "$STACKQL_BIN" ]; then STACKQL_BIN="$BASE_DIR/stackql" echo "StackQL binary downloaded successfully" fi +echo "StackQL binary: $STACKQL_BIN ($("$STACKQL_BIN" --version 2>/dev/null | head -1))" +# Set registry configuration if [ "$VERIFY" = "true" ]; then REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": false}}' else REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": true}}' fi +# Check if server is already running if pgrep -f "stackql.*--pgsrv.port=${PORT}" > /dev/null; then echo "StackQL server is already running on port ${PORT}" exit 0 fi -echo "Starting StackQL server ($STACKQL_BIN) with registry: $REG" +# Start the server +echo "Starting StackQL server with registry: $REG" cd "$BASE_DIR" nohup "$STACKQL_BIN" --registry="${REG}" --pgsrv.port="${PORT}" srv > stackql-server.log 2>&1 & SERVER_PID=$! +# Check if server started successfully sleep 2 if ps -p $SERVER_PID > /dev/null; then echo "StackQL server started successfully with PID: $SERVER_PID" @@ -100,4 +130,4 @@ if ps -p $SERVER_PID > /dev/null; then else echo "Failed to start StackQL server. Check log file: $BASE_DIR/stackql-server.log" exit 1 -fi +fi \ No newline at end of file diff --git a/bin/test-meta-routes.cjs b/bin/test-meta-routes.cjs index 99f7c5d..2d60f99 100644 --- a/bin/test-meta-routes.cjs +++ b/bin/test-meta-routes.cjs @@ -1,458 +1,461 @@ -#!/usr/bin/env node - -const { runQuery } = require('@stackql/pgwire-lite'); -const fs = require('fs'); -const path = require('path'); - -// Get current directory -const baseDir = path.resolve(path.dirname(process.argv[1]), '..'); - -// Default connection settings -const defaultOptions = { - user: 'stackql', - database: 'stackql', - // IPv4 loopback, not 'localhost': stackql srv binds 0.0.0.0 and Node - // resolves 'localhost' to ::1 first, which refuses the connection - host: '127.0.0.1', - port: 5444, - debug: false, -}; - -// Parse command line arguments -const args = process.argv.slice(2); -let provider = null; -let port = 5444; -let host = '127.0.0.1'; -let verbose = false; -let outputFormat = 'json'; -let timeoutMs = 60000; // Default timeout: 60 seconds - -for (let i = 0; i < args.length; i++) { - if (args[i].startsWith('--')) { - switch (args[i]) { - case '--port': - port = parseInt(args[++i], 10); - break; - case '--host': - host = args[++i]; - break; - case '--verbose': - verbose = true; - break; - case '--format': - outputFormat = args[++i]; - if (!['json', 'csv', 'markdown'].includes(outputFormat)) { - console.error(`Error: Invalid output format "${outputFormat}". Must be json, csv, or markdown.`); - process.exit(1); - } - break; - case '--timeout': - timeoutMs = parseInt(args[++i], 10); - break; - case '--help': - console.log(` -Usage: test-meta-routes.js <provider> [OPTIONS] - -Test all metadata routes for a StackQL provider. - -Arguments: - provider Name of the provider to test - -Options: - --port PORT Server port (default: 5444) - --verbose Enable verbose output - --format FORMAT Output format: json, csv, markdown (default: json) - --timeout MILLISECONDS Query timeout in milliseconds (default: 60000) - --help Display this help message - `); - process.exit(0); - break; - default: - console.error(`Error: Unknown option "${args[i]}"`); - process.exit(1); - } - } else if (!provider) { - provider = args[i]; - } -} - -// Check that provider was specified -if (!provider) { - console.error('Error: Provider name must be specified'); - console.error('Usage: test-meta-routes.js <provider> [OPTIONS]'); - process.exit(1); -} - -// Set up connection options -const connectionOptions = { - ...defaultOptions, - host, - port, - // Set query timeout - statement_timeout: timeoutMs, -}; - -// Get start time -const startTime = new Date(); - -// resources whose select response is a scalar (text) body - a single -// anonymous column at query time, so DESCRIBE EXTENDED is legitimately -// empty. Currently empty: pods_log gets a response transform (one row per -// log line) in post_process.mjs, so it has real columns. -const SCALAR_RESPONSE_RESOURCES = new Set([]); - -const results = { - provider, - totalServices: 0, - totalResources: 0, - totalMethods: 0, - selectableMethods: 0, - nonSelectableResourceCount: 0, - nonSelectableResources: [], - scalarResponseResources: [], - failures: [], -}; - -/** - * Run a query and handle errors - * @param {string} query - SQL query to run - * @param {string} description - Description for logging - * @returns {Promise<Array>} - Query results - */ -async function executeQuery(query, description) { - if (verbose) { - console.log(`Running: ${query}`); - } else { - process.stdout.write(`${description}... `); - } - - try { - const result = await runQuery(connectionOptions, query); - - if (!verbose) { - if (result.data && result.data.length) { - console.log(`āœ… (${result.data.length} rows)`); - } else { - console.log('āœ…'); - } - } else { - console.info(result.data); - } - - return result.data; - } catch (error) { - if (!verbose) { - console.log('āŒ'); - } - - results.errors.push({ - query, - description, - error: error.message, - timestamp: new Date().toISOString() - }); - - results.summary.errors++; - - if (error.message.includes('the last operation didn\'t produce a result')) { - return []; - } - - if (error.message.includes('SELECT not supported for this resource')) { - if (verbose) { - console.warn(` Warning: Resource is not selectable`); - } - return null; - } - - console.error(`Error executing ${description}: ${error.message}`); - return []; - } -} - -/** - * Test all provider meta routes - */ -async function testMetaRoutes() { - try { - console.log(`\nšŸ” Testing meta routes for provider: ${provider}\n`); - - // SHOW PROVIDERS to verify provider exists - const registryQuery = "SHOW PROVIDERS"; - const providers = await executeQuery(registryQuery, "Checking registry providers"); - - const providerExists = providers && providers.some(p => p.name === provider); - if (!providerExists) { - console.error(`Error: Provider '${provider}' not found in registry`); - if (providers && providers.length > 0) { - console.log("Available providers:"); - providers.forEach(p => console.log(` - ${p.name}`)); - } - process.exit(1); - } - - // SHOW SERVICES IN <provider> - const servicesQuery = `SHOW SERVICES IN ${provider}`; - const services = await executeQuery(servicesQuery, "Getting services"); - - if (!services || services.length === 0) { - console.error(`Error: No services found for provider '${provider}'`); - process.exit(1); - } - - console.log(`\nFound ${services.length} services in ${provider}`); - results.totalServices += services.length; - - // for each service - for (const service of services) { - const serviceName = service.name; - console.log(`\nšŸ“Š Processing service: ${serviceName}`); - - // SHOW RESOURCES IN <provider>.<service> - const resourcesQuery = `SHOW RESOURCES IN ${provider}.${serviceName}`; - const resources = await executeQuery(resourcesQuery, `Getting resources for ${serviceName}`); - - if (!resources || resources.length === 0) { - console.error(`Error: No resources found for ${provider}.${serviceName}`); - process.exit(1); - } - - console.log(`Found ${resources.length} resources in ${serviceName}`); - results.totalResources += resources.length; - - // for each resource - for (const resource of resources) { - const resourceName = resource.name; - console.log(`\n šŸ”¹ Testing resource: ${resourceName}`); - - const resourceFQRN = `${provider}.${serviceName}.${resourceName}`; - const resourceData = { - name: resourceName, - service: serviceName, - selectable: false, - sqlVerbs: {} - }; - - // SHOW EXTENDED METHODS IN <provider>.<service>.<resource> - const methodsQuery = `SHOW EXTENDED METHODS IN ${resourceFQRN}`; - const methods = await executeQuery(methodsQuery, ` Getting methods for ${resourceName}`); - if (!methods || methods.length === 0) { - console.error(`Error: Resource ${resourceName} has no methods`); - process.exit(1); - } else { - console.log(`Found ${methods.length} methods for ${resourceName}`); - } - - results.totalMethods += methods.length; - - for (const method of methods) { - const methodName = method.MethodName; - const sqlVerb = method.SQLVerb || 'exec'; - - if(sqlVerb.toLowerCase() === 'select') { - results.selectableMethods++; - resourceData.selectable = true; - } - - // Initialize the array if it doesn't exist yet - if(!resourceData.sqlVerbs[sqlVerb]) { - resourceData.sqlVerbs[sqlVerb] = []; - } - - // Convert comma-delimited list to an array of trimmed values - let requiredParamsArray = []; - if (method.RequiredParams) { - requiredParamsArray = method.RequiredParams - .split(',') - .map(param => param.trim()) - .filter(param => param.length > 0); - } - - // Push the method info to the array with the parsed required params - resourceData.sqlVerbs[sqlVerb].push({ - methodName, - requiredParams: requiredParamsArray - }); - } - - // non exec methods must have unique signatures within a resource - // in other words no two methods mapped to the same sqlVerb should have the exact same set of required params, order is not important - // if this condition is detected, log it and exit the program immediately - let hasSelect = false; - for (const [verb, methods] of Object.entries(resourceData.sqlVerbs)) { - if (verb.toLowerCase() === 'select') { - hasSelect = true; - } - if (verb.toLowerCase() === 'exec') { - continue; - } - const seenSignatures = new Set(); - for (const method of methods) { - const signature = JSON.stringify(method.requiredParams); - if (seenSignatures.has(signature)) { - console.error(`Error: Duplicate method signature found for ${verb} in ${resourceData.service}.${resourceName}:`, method); - process.exit(1); - } - seenSignatures.add(signature); - } - } - - if (!hasSelect) { - results.nonSelectableResourceCount++; - results.nonSelectableResources.push(`${resourceData.service}.${resourceName}`); - } - - // Try DESCRIBE EXTENDED if available - if(resourceData.selectable) { - try { - const describeExtendedQuery = `DESCRIBE EXTENDED ${resourceFQRN}`; - const extendedColumns = await executeQuery(describeExtendedQuery, ` Describing extended ${resourceName}`); - - if (extendedColumns !== null && extendedColumns.length > 0) { - console.log(`Found ${extendedColumns.length} extended columns for ${resourceName}`); - } else if (SCALAR_RESPONSE_RESOURCES.has(resourceName)) { - // scalar (text) response - a single anonymous column at query - // time, so DESCRIBE is legitimately empty - console.log(`WARN: no columns for ${resourceName} (known scalar response)`); - results.scalarResponseResources.push(`${resourceData.service}.${resourceName}`); - } else { - console.error(`ERROR: No columns found for ${resourceName}`); - results.failures.push(`${resourceData.service}.${resourceName}: DESCRIBE EXTENDED returned no columns`); - } - } catch (error) { - console.error(`Error describing extended ${resourceName}:`, error.message); - results.failures.push(`${resourceData.service}.${resourceName}: ${error.message}`); - } - } - - } - } - - // Calculate execution time - const endTime = new Date(); - const executionTime = (endTime - startTime) / 1000; // in seconds - results.executionTime = executionTime; - - // Output summary - console.log("\nšŸ“‹ Test Summary:"); - console.info(results); - - if (results.failures.length > 0) { - console.error(`\nāŒ ${results.failures.length} failure(s):`); - for (const f of results.failures) console.error(` - ${f}`); - process.exit(1); - } - console.log("\nāœ… All meta route tests passed"); - - // Save results to file - // const resultsDir = path.join(baseDir, 'test-results'); - // if (!fs.existsSync(resultsDir)) { - // fs.mkdirSync(resultsDir, { recursive: true }); - // } - - // const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); - - // if (outputFormat === 'json') { - // const resultsFile = path.join(resultsDir, `${provider}-meta-test-${timestamp}.json`); - // fs.writeFileSync(resultsFile, JSON.stringify(results, null, 2)); - // console.log(`\nDetailed results saved to: ${resultsFile}`); - // } - // else if (outputFormat === 'csv') { - // // Generate CSV files - - // // Main summary CSV - // const summaryFile = path.join(resultsDir, `${provider}-meta-test-summary-${timestamp}.csv`); - // const summaryCSV = [ - // 'Provider,Timestamp,Services,Resources,Methods,Selectable,Insertable,Updatable,Deletable,Executable,Errors,ExecutionTime', - // `${provider},${results.timestamp},${results.summary.totalServices},${results.summary.totalResources},${results.summary.totalMethods},${results.summary.selectableMethods},${results.summary.insertableMethods},${results.summary.updatableMethods},${results.summary.deletableMethods},${results.summary.executableMethods},${results.summary.errors},${results.executionTime}` - // ].join('\n'); - // fs.writeFileSync(summaryFile, summaryCSV); - - // // Services CSV - // const servicesFile = path.join(resultsDir, `${provider}-meta-test-services-${timestamp}.csv`); - // const servicesCSV = [ - // 'Service,Title,ResourceCount', - // ...results.services.map(s => `${s.name},${s.title || ''},${s.resourceCount || 0}`) - // ].join('\n'); - // fs.writeFileSync(servicesFile, servicesCSV); - - // // Resources CSV - // const resourcesFile = path.join(resultsDir, `${provider}-meta-test-resources-${timestamp}.csv`); - // const resourcesCSV = [ - // 'Service,Resource,FQRN,Selectable,ColumnCount,MethodCount', - // ...results.resources.map(r => `${r.service},${r.name},${r.fqrn},${r.selectable},${r.columnCount || 0},${r.methodCount || 0}`) - // ].join('\n'); - // fs.writeFileSync(resourcesFile, resourcesCSV); - - // // Methods CSV - // const methodsFile = path.join(resultsDir, `${provider}-meta-test-methods-${timestamp}.csv`); - // const methodsCSV = [ - // 'Service,Resource,Method,SQLVerb,FQRN', - // ...results.methods.map(m => `${m.service},${m.resource},${m.name},${m.sqlVerb},${m.fqrn}`) - // ].join('\n'); - // fs.writeFileSync(methodsFile, methodsCSV); - - // console.log(`\nDetailed results saved to CSV files in: ${resultsDir}`); - // } - // else if (outputFormat === 'markdown') { - // const mdFile = path.join(resultsDir, `${provider}-meta-test-${timestamp}.md`); - - // const markdownContent = [ - // `# StackQL Provider Test Results: ${provider}`, - // '', - // `Test run: ${results.timestamp}`, - // '', - // '## Summary', - // '', - // '| Metric | Count |', - // '|--------|-------|', - // `| Services | ${results.summary.totalServices} |`, - // `| Resources | ${results.summary.totalResources} |`, - // `| Methods | ${results.summary.totalMethods} |`, - // `| Errors | ${results.summary.errors} |`, - // `| Execution Time | ${results.executionTime.toFixed(2)} seconds |`, - // '', - // '### Methods by SQL Verb', - // '', - // '| Verb | Count |', - // '|------|-------|', - // ...Object.entries(results.verbs).map(([verb, count]) => `| ${verb.toUpperCase()} | ${count} |`), - // '', - // '## Services', - // '', - // '| Service | Resources |', - // '|---------|-----------|', - // ...results.services.map(s => `| ${s.name} | ${s.resourceCount || 0} |`), - // '', - // '## Resources with Most Methods', - // '', - // '| Resource | Service | Methods | Selectable |', - // '|----------|---------|---------|------------|', - // ...results.resources - // .sort((a, b) => (b.methodCount || 0) - (a.methodCount || 0)) - // .slice(0, 20) - // .map(r => `| ${r.name} | ${r.service} | ${r.methodCount || 0} | ${r.selectable ? 'āœ“' : 'āœ—'} |`), - // '', - // '## Errors', - // '', - // results.errors.length > 0 - // ? [ - // '| Query | Error |', - // '|-------|-------|', - // ...results.errors.map(e => `| \`${e.query}\` | ${e.error} |`) - // ].join('\n') - // : 'No errors encountered during testing.', - // ].join('\n'); - - // fs.writeFileSync(mdFile, markdownContent); - // console.log(`\nDetailed results saved to: ${mdFile}`); - // } - - } catch (error) { - console.error('Error in meta routes test:', error); - process.exit(1); - } -} - -// Run the tests +#!/usr/bin/env node + +const { runQuery } = require('@stackql/pgwire-lite'); +const fs = require('fs'); +const path = require('path'); + +// Get current directory +const baseDir = path.resolve(path.dirname(process.argv[1]), '..'); + +// Default connection settings +const defaultOptions = { + user: 'stackql', + database: 'stackql', + // IPv4 loopback, not 'localhost': stackql srv binds 0.0.0.0 and Node + // resolves 'localhost' to ::1 first, which refuses the connection + host: '127.0.0.1', + port: 5444, + debug: false, +}; + +// Parse command line arguments +const args = process.argv.slice(2); +let provider = null; +let port = 5444; +let host = '127.0.0.1'; +let verbose = false; +let outputFormat = 'json'; +let timeoutMs = 60000; // Default timeout: 60 seconds + +for (let i = 0; i < args.length; i++) { + if (args[i].startsWith('--')) { + switch (args[i]) { + case '--port': + port = parseInt(args[++i], 10); + break; + case '--host': + host = args[++i]; + break; + case '--verbose': + verbose = true; + break; + case '--format': + outputFormat = args[++i]; + if (!['json', 'csv', 'markdown'].includes(outputFormat)) { + console.error(`Error: Invalid output format "${outputFormat}". Must be json, csv, or markdown.`); + process.exit(1); + } + break; + case '--timeout': + timeoutMs = parseInt(args[++i], 10); + break; + case '--help': + console.log(` +Usage: test-meta-routes.js <provider> [OPTIONS] + +Test all metadata routes for a StackQL provider. + +Arguments: + provider Name of the provider to test + +Options: + --port PORT Server port (default: 5444) + --verbose Enable verbose output + --format FORMAT Output format: json, csv, markdown (default: json) + --timeout MILLISECONDS Query timeout in milliseconds (default: 60000) + --help Display this help message + `); + process.exit(0); + break; + default: + console.error(`Error: Unknown option "${args[i]}"`); + process.exit(1); + } + } else if (!provider) { + provider = args[i]; + } +} + +// Check that provider was specified +if (!provider) { + console.error('Error: Provider name must be specified'); + console.error('Usage: test-meta-routes.js <provider> [OPTIONS]'); + process.exit(1); +} + +// Set up connection options +const connectionOptions = { + ...defaultOptions, + host, + port, + // Set query timeout + statement_timeout: timeoutMs, +}; + +// Get start time +const startTime = new Date(); + +// resources whose select response is a scalar (text) body - a single +// anonymous column at query time, so DESCRIBE EXTENDED is legitimately +// empty. Keep it empty unless a resource genuinely returns a scalar; a +// response transform in post_process.mjs that yields real columns is the +// better fix. +const SCALAR_RESPONSE_RESOURCES = new Set([]); + +const results = { + provider, + totalServices: 0, + totalResources: 0, + totalMethods: 0, + selectableMethods: 0, + nonSelectableResourceCount: 0, + nonSelectableResources: [], + scalarResponseResources: [], + failures: [], + errors: [], + summary: { errors: 0 }, +}; + +/** + * Run a query and handle errors + * @param {string} query - SQL query to run + * @param {string} description - Description for logging + * @returns {Promise<Array>} - Query results + */ +async function executeQuery(query, description) { + if (verbose) { + console.log(`Running: ${query}`); + } else { + process.stdout.write(`${description}... `); + } + + try { + const result = await runQuery(connectionOptions, query); + + if (!verbose) { + if (result.data && result.data.length) { + console.log(`OK (${result.data.length} rows)`); + } else { + console.log('OK'); + } + } else { + console.info(result.data); + } + + return result.data; + } catch (error) { + if (!verbose) { + console.log('FAIL'); + } + + results.errors.push({ + query, + description, + error: error.message, + timestamp: new Date().toISOString() + }); + + results.summary.errors++; + + if (error.message.includes('the last operation didn\'t produce a result')) { + return []; + } + + if (error.message.includes('SELECT not supported for this resource')) { + if (verbose) { + console.warn(` Warning: Resource is not selectable`); + } + return null; + } + + console.error(`Error executing ${description}: ${error.message}`); + return []; + } +} + +/** + * Test all provider meta routes + */ +async function testMetaRoutes() { + try { + console.log(`\nTesting meta routes for provider: ${provider}\n`); + + // SHOW PROVIDERS to verify provider exists + const registryQuery = "SHOW PROVIDERS"; + const providers = await executeQuery(registryQuery, "Checking registry providers"); + + const providerExists = providers && providers.some(p => p.name === provider); + if (!providerExists) { + console.error(`Error: Provider '${provider}' not found in registry`); + if (providers && providers.length > 0) { + console.log("Available providers:"); + providers.forEach(p => console.log(` - ${p.name}`)); + } + process.exit(1); + } + + // SHOW SERVICES IN <provider> + const servicesQuery = `SHOW SERVICES IN ${provider}`; + const services = await executeQuery(servicesQuery, "Getting services"); + + if (!services || services.length === 0) { + console.error(`Error: No services found for provider '${provider}'`); + process.exit(1); + } + + console.log(`\nFound ${services.length} services in ${provider}`); + results.totalServices += services.length; + + // for each service + for (const service of services) { + const serviceName = service.name; + console.log(`\nProcessing service: ${serviceName}`); + + // SHOW RESOURCES IN <provider>.<service> + const resourcesQuery = `SHOW RESOURCES IN ${provider}.${serviceName}`; + const resources = await executeQuery(resourcesQuery, `Getting resources for ${serviceName}`); + + if (!resources || resources.length === 0) { + console.error(`Error: No resources found for ${provider}.${serviceName}`); + process.exit(1); + } + + console.log(`Found ${resources.length} resources in ${serviceName}`); + results.totalResources += resources.length; + + // for each resource + for (const resource of resources) { + const resourceName = resource.name; + console.log(`\n Testing resource: ${resourceName}`); + + const resourceFQRN = `${provider}.${serviceName}.${resourceName}`; + const resourceData = { + name: resourceName, + service: serviceName, + selectable: false, + sqlVerbs: {} + }; + + // SHOW EXTENDED METHODS IN <provider>.<service>.<resource> + const methodsQuery = `SHOW EXTENDED METHODS IN ${resourceFQRN}`; + const methods = await executeQuery(methodsQuery, ` Getting methods for ${resourceName}`); + if (!methods || methods.length === 0) { + console.error(`Error: Resource ${resourceName} has no methods`); + process.exit(1); + } else { + console.log(`Found ${methods.length} methods for ${resourceName}`); + } + + results.totalMethods += methods.length; + + for (const method of methods) { + const methodName = method.MethodName; + const sqlVerb = method.SQLVerb || 'exec'; + + if(sqlVerb.toLowerCase() === 'select') { + results.selectableMethods++; + resourceData.selectable = true; + } + + // Initialize the array if it doesn't exist yet + if(!resourceData.sqlVerbs[sqlVerb]) { + resourceData.sqlVerbs[sqlVerb] = []; + } + + // Convert comma-delimited list to an array of trimmed values + let requiredParamsArray = []; + if (method.RequiredParams) { + requiredParamsArray = method.RequiredParams + .split(',') + .map(param => param.trim()) + .filter(param => param.length > 0); + } + + // Push the method info to the array with the parsed required params + resourceData.sqlVerbs[sqlVerb].push({ + methodName, + requiredParams: requiredParamsArray + }); + } + + // non exec methods must have unique signatures within a resource + // in other words no two methods mapped to the same sqlVerb should have the exact same set of required params, order is not important + // if this condition is detected, log it and exit the program immediately + let hasSelect = false; + for (const [verb, methods] of Object.entries(resourceData.sqlVerbs)) { + if (verb.toLowerCase() === 'select') { + hasSelect = true; + } + if (verb.toLowerCase() === 'exec') { + continue; + } + const seenSignatures = new Set(); + for (const method of methods) { + const signature = JSON.stringify(method.requiredParams); + if (seenSignatures.has(signature)) { + console.error(`Error: Duplicate method signature found for ${verb} in ${resourceData.service}.${resourceName}:`, method); + process.exit(1); + } + seenSignatures.add(signature); + } + } + + if (!hasSelect) { + results.nonSelectableResourceCount++; + results.nonSelectableResources.push(`${resourceData.service}.${resourceName}`); + } + + // Try DESCRIBE EXTENDED if available + if(resourceData.selectable) { + try { + const describeExtendedQuery = `DESCRIBE EXTENDED ${resourceFQRN}`; + const extendedColumns = await executeQuery(describeExtendedQuery, ` Describing extended ${resourceName}`); + + if (extendedColumns !== null && extendedColumns.length > 0) { + console.log(`Found ${extendedColumns.length} extended columns for ${resourceName}`); + } else if (SCALAR_RESPONSE_RESOURCES.has(resourceName)) { + // scalar (text) response - a single anonymous column at query + // time, so DESCRIBE is legitimately empty + console.log(`WARN: no columns for ${resourceName} (known scalar response)`); + results.scalarResponseResources.push(`${resourceData.service}.${resourceName}`); + } else { + console.error(`ERROR: No columns found for ${resourceName}`); + results.failures.push(`${resourceData.service}.${resourceName}: DESCRIBE EXTENDED returned no columns`); + } + } catch (error) { + console.error(`Error describing extended ${resourceName}:`, error.message); + results.failures.push(`${resourceData.service}.${resourceName}: ${error.message}`); + } + } + + } + } + + // Calculate execution time + const endTime = new Date(); + const executionTime = (endTime - startTime) / 1000; // in seconds + results.executionTime = executionTime; + + // Output summary + console.log("\nTest Summary:"); + console.info(results); + + if (results.failures.length > 0) { + console.error(`\nFAIL ${results.failures.length} failure(s):`); + for (const f of results.failures) console.error(` - ${f}`); + process.exit(1); + } + console.log("\nOK All meta route tests passed"); + + // Save results to file + // const resultsDir = path.join(baseDir, 'test-results'); + // if (!fs.existsSync(resultsDir)) { + // fs.mkdirSync(resultsDir, { recursive: true }); + // } + + // const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + + // if (outputFormat === 'json') { + // const resultsFile = path.join(resultsDir, `${provider}-meta-test-${timestamp}.json`); + // fs.writeFileSync(resultsFile, JSON.stringify(results, null, 2)); + // console.log(`\nDetailed results saved to: ${resultsFile}`); + // } + // else if (outputFormat === 'csv') { + // // Generate CSV files + + // // Main summary CSV + // const summaryFile = path.join(resultsDir, `${provider}-meta-test-summary-${timestamp}.csv`); + // const summaryCSV = [ + // 'Provider,Timestamp,Services,Resources,Methods,Selectable,Insertable,Updatable,Deletable,Executable,Errors,ExecutionTime', + // `${provider},${results.timestamp},${results.summary.totalServices},${results.summary.totalResources},${results.summary.totalMethods},${results.summary.selectableMethods},${results.summary.insertableMethods},${results.summary.updatableMethods},${results.summary.deletableMethods},${results.summary.executableMethods},${results.summary.errors},${results.executionTime}` + // ].join('\n'); + // fs.writeFileSync(summaryFile, summaryCSV); + + // // Services CSV + // const servicesFile = path.join(resultsDir, `${provider}-meta-test-services-${timestamp}.csv`); + // const servicesCSV = [ + // 'Service,Title,ResourceCount', + // ...results.services.map(s => `${s.name},${s.title || ''},${s.resourceCount || 0}`) + // ].join('\n'); + // fs.writeFileSync(servicesFile, servicesCSV); + + // // Resources CSV + // const resourcesFile = path.join(resultsDir, `${provider}-meta-test-resources-${timestamp}.csv`); + // const resourcesCSV = [ + // 'Service,Resource,FQRN,Selectable,ColumnCount,MethodCount', + // ...results.resources.map(r => `${r.service},${r.name},${r.fqrn},${r.selectable},${r.columnCount || 0},${r.methodCount || 0}`) + // ].join('\n'); + // fs.writeFileSync(resourcesFile, resourcesCSV); + + // // Methods CSV + // const methodsFile = path.join(resultsDir, `${provider}-meta-test-methods-${timestamp}.csv`); + // const methodsCSV = [ + // 'Service,Resource,Method,SQLVerb,FQRN', + // ...results.methods.map(m => `${m.service},${m.resource},${m.name},${m.sqlVerb},${m.fqrn}`) + // ].join('\n'); + // fs.writeFileSync(methodsFile, methodsCSV); + + // console.log(`\nDetailed results saved to CSV files in: ${resultsDir}`); + // } + // else if (outputFormat === 'markdown') { + // const mdFile = path.join(resultsDir, `${provider}-meta-test-${timestamp}.md`); + + // const markdownContent = [ + // `# StackQL Provider Test Results: ${provider}`, + // '', + // `Test run: ${results.timestamp}`, + // '', + // '## Summary', + // '', + // '| Metric | Count |', + // '|--------|-------|', + // `| Services | ${results.summary.totalServices} |`, + // `| Resources | ${results.summary.totalResources} |`, + // `| Methods | ${results.summary.totalMethods} |`, + // `| Errors | ${results.summary.errors} |`, + // `| Execution Time | ${results.executionTime.toFixed(2)} seconds |`, + // '', + // '### Methods by SQL Verb', + // '', + // '| Verb | Count |', + // '|------|-------|', + // ...Object.entries(results.verbs).map(([verb, count]) => `| ${verb.toUpperCase()} | ${count} |`), + // '', + // '## Services', + // '', + // '| Service | Resources |', + // '|---------|-----------|', + // ...results.services.map(s => `| ${s.name} | ${s.resourceCount || 0} |`), + // '', + // '## Resources with Most Methods', + // '', + // '| Resource | Service | Methods | Selectable |', + // '|----------|---------|---------|------------|', + // ...results.resources + // .sort((a, b) => (b.methodCount || 0) - (a.methodCount || 0)) + // .slice(0, 20) + // .map(r => `| ${r.name} | ${r.service} | ${r.methodCount || 0} | ${r.selectable ? 'OK' : 'FAIL'} |`), + // '', + // '## Errors', + // '', + // results.errors.length > 0 + // ? [ + // '| Query | Error |', + // '|-------|-------|', + // ...results.errors.map(e => `| \`${e.query}\` | ${e.error} |`) + // ].join('\n') + // : 'No errors encountered during testing.', + // ].join('\n'); + + // fs.writeFileSync(mdFile, markdownContent); + // console.log(`\nDetailed results saved to: ${mdFile}`); + // } + + } catch (error) { + console.error('Error in meta routes test:', error); + process.exit(1); + } +} + +// Run the tests testMetaRoutes(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b227e0d..7c4a0f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,31 +7,69 @@ "": { "name": "stackql-provider-nvidia", "version": "0.1.0", + "license": "MIT", "dependencies": { - "@apidevtools/swagger-parser": "^12.1.0", + "@apidevtools/swagger-parser": "^13.1.0", "@stackql/pgwire-lite": "^1.0.2", "@stackql/provider-utils": "^0.7.12", "js-yaml": "^4.1.0", "pluralize": "^8.0.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.19.0" } }, "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.0.1.tgz", - "integrity": "sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-16.0.5.tgz", + "integrity": "sha512-z3LiEMqTP2FNu6u8bdUgBYErVuwMSZReOJy1MCEIB0BDHMoNgBtkciby32HOlcrfWwrOSzRU8YIsZ0CogYRuYQ==", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.15", - "js-yaml": "^4.1.0" + "js-yaml": "^5.4.2" }, "engines": { - "node": ">= 16" + "node": ">=22.19.0" }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" + "peerDependencies": { + "@types/json-schema": "^7.0.15" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser/node_modules/argparse": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.3.tgz", + "integrity": "sha512-Sn98ftV3KfsO8xfLPHG6oT8y+b0yvbrLgZjgPDXsharNY15tTAjqIsIju4S32nl6/iEUNNE4v+yL2Zhm8ooP3w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "PSF-2.0" + }, + "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.5.0.tgz", + "integrity": "sha512-paNr4LFIFPjeeSmwNYdrb8FafLLG/Cr2Af3GjbsHJ5CxIjH4r0c2emlmRdAtpPAieP1gRVzk6buBbVP5gBMGAg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^3.0.3" + }, + "bin": { + "js-yaml": "bin/js-yaml.mjs" } }, "node_modules/@apidevtools/openapi-schemas": { @@ -50,18 +88,22 @@ "license": "MIT" }, "node_modules/@apidevtools/swagger-parser": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-12.1.0.tgz", - "integrity": "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-13.1.0.tgz", + "integrity": "sha512-dkCuqCWh5U7u0aurmmc/qvel2KeKDxHTwVtUdYonndIpD7mXV6AVaWNdvaja2HAy628z7FT/Qdz8sCgzwhgwKg==", "license": "MIT", "dependencies": { - "@apidevtools/json-schema-ref-parser": "14.0.1", + "@apidevtools/json-schema-ref-parser": "^16.0.3", "@apidevtools/openapi-schemas": "^2.1.0", "@apidevtools/swagger-methods": "^3.0.2", - "ajv": "^8.17.1", + "@types/json-schema": "^7.0.15", + "ajv": "^8.20.0", "ajv-draft-04": "^1.0.0", "call-me-maybe": "^1.0.2" }, + "engines": { + "node": ">=22.19.0" + }, "peerDependencies": { "openapi-types": ">=7" } diff --git a/package.json b/package.json index 8ef288f..3f2dcc3 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "normalize": "node ./node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs normalize", "generate-provider": "node ./node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs generate", "post-process": "node ./provider-dev/scripts/post_process.mjs", + "graphql-merge": "node ./provider-dev/scripts/graphql_merge.mjs", "generate-docs": "node ./node_modules/@stackql/provider-utils/bin/docgen-utils.mjs generate-docs", "sanitize-docs": "node ./website/scripts/sanitize-docs.mjs", "start-server": "bash ./bin/start-server.sh", @@ -24,10 +25,11 @@ "server-status": "bash ./bin/server-status.sh", "test-meta-routes": "node ./bin/test-meta-routes.cjs", "test-offline": "node ./tests/offline_validation.mjs", - "test-integration": "node ./tests/integration/run_integration_tests.mjs" + "test-integration": "node ./tests/integration/run_integration_tests.mjs", + "probe": "node ./tests/integration/probe.mjs" }, "dependencies": { - "@apidevtools/swagger-parser": "^12.1.0", + "@apidevtools/swagger-parser": "^13.1.0", "@stackql/pgwire-lite": "^1.0.2", "@stackql/provider-utils": "^0.7.12", "js-yaml": "^4.1.0", @@ -41,6 +43,7 @@ "provider" ], "engines": { - "node": ">=20.0.0" - } + "node": ">=22.19.0" + }, + "license": "MIT" } diff --git a/provider-dev/config/all_services.csv b/provider-dev/config/all_services.csv index a2a476f..0930de6 100644 --- a/provider-dev/config/all_services.csv +++ b/provider-dev/config/all_services.csv @@ -88,7 +88,8 @@ nvcf_deployments.yaml,/v2/nvcf/telemetries,getTelemetriesByAccount,get_telemetri nvcf_deployments.yaml,/v2/nvcf/telemetries,createTelemetry,create_telemetry,post,TelemetryResponse,Telemetry Management,telemetry management,telemetries,create,insert,$.telemetry,Create Telemetry nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetry_id},getTelemetry,get_telemetry,get,TelemetryResponse,Telemetry Management,telemetry management,telemetries,get,select,$.telemetry,Get Telemetry Details nvcf_deployments.yaml,/v2/nvcf/telemetries/{telemetry_id},deleteTelemetry,delete_telemetry,delete,,Telemetry Management,telemetry management,telemetries,delete,delete,,Delete Telemetry -nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id},getAuthorizedPartiesForAllVersions,get_authorized_parties_for_all_versions,get,ListAuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list,select,$.functions,List Account Authorizations For Function +nvcf_functions.yaml,/v2/nvcf/authorizations/functions,getAuthorizedPartiesForAllFunctions,get_authorized_parties_for_all_functions,get,ListAuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list_all,select,$.functions,List Functions Authorized/Shared With Other Accounts +nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id},getAuthorizedPartiesForAllVersions,get_authorized_parties_for_all_versions,get,ListAuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,list,select,$.functions,List Function Versions with Authorized Accounts For Specified Function nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id},createAuthorizedPartiesForAllVersions,create_authorized_parties_for_all_versions,post,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,set,replace,$.function,Authorize Accounts To Invoke Function nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id},deleteAuthorizedPartiesForAllVersions,delete_authorized_parties_for_all_versions,delete,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,delete_all,exec,$.function,Delete All Authorizations At Function Level nvcf_functions.yaml,/v2/nvcf/authorizations/functions/{function_id}/add,addAuthorizedPartyForAllVersions,add_authorized_party_for_all_versions,patch,AuthorizedPartiesResponse,Function Sharing,function sharing,authorizations,add,insert,$.function,"Authorize Another Account To Invoke, List, and Check Queue Details of Function" @@ -193,10 +194,6 @@ private_registry.yaml,/models/{model_name},getModelInOrg,get_model_in_org,get,Mo private_registry.yaml,/models/{model_name},updateModelInOrg,update_model_in_org,patch,ModelResponse,Models,models,models,update,update,$.model,Update model in org private_registry.yaml,/models/{model_name},deleteModelInOrg,delete_model_in_org,delete,Response,Models,models,models,delete,delete,,Delete model in org private_registry.yaml,/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,disassociate_key_from_model_in_org,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete,delete,,Disassociate encryption key from model in org -private_registry.yaml,/models/{model_name}/shares/org,shareModelInOrgWithOrg,share_model_in_org_with_org,put,Response,Models,models,model_shares,add_org,insert,,Share org model with the org -private_registry.yaml,/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,revoke_share_model_in_org_with_org,delete,Response,Models,models,model_shares,remove_org,delete,,Revoke shared org model with the org -private_registry.yaml,/models/{model_name}/shares/team/{target_team},shareModelInOrgWithTeam,share_model_in_org_with_team,put,Response,Models,models,model_shares,add_team,insert,,Share org model with the specified team -private_registry.yaml,/models/{model_name}/shares/team/{target_team},revokeShareModelInOrgWithTeam,revoke_share_model_in_org_with_team,delete,Response,Models,models,model_shares,remove_team,delete,,Revoke shared org model with the specified team private_registry.yaml,/models/{model_name}/versions,listModelVersionsInOrg,list_model_versions_in_org,get,ModelVersionListResponse,Model Version,model version,model_versions,list,select,$.modelVersions,List model versions in org private_registry.yaml,/models/{model_name}/versions,createModelVersionInOrg,create_model_version_in_org,post,ModelVersionResponse,Model Version,model version,model_versions,create,insert,$.modelVersion,Create model version in org private_registry.yaml,/models/{model_name}/versions/{version_id},getModelVersionInOrg,get_model_version_in_org,get,ModelVersionResponse,Model Version,model version,model_versions,get,select,$.modelVersion,Get model version in org @@ -247,10 +244,6 @@ private_registry.yaml,/team/{team_name}/models/{model_name},getModelInTeam,get_m private_registry.yaml,/team/{team_name}/models/{model_name},updateModelInTeam,update_model_in_team,patch,ModelResponse,Models,models,models,update_by_team,update,$.model,Update model in team private_registry.yaml,/team/{team_name}/models/{model_name},deleteModelInTeam,delete_model_in_team,delete,Response,Models,models,models,delete_by_team,delete,,Delete model in org/team private_registry.yaml,/team/{team_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInTeam,disassociate_key_from_model_in_team,delete,WorkflowStatusUrlResponse,Models,models,model_encryption_keys,delete_by_team,delete,,Disassociate encryption key from model in team -private_registry.yaml,/team/{team_name}/models/{model_name}/shares/org,shareModelInTeamWithOrg,share_model_in_team_with_org,put,Response,Models,models,model_shares,add_org_by_team,insert,,Share team model with the org -private_registry.yaml,/team/{team_name}/models/{model_name}/shares/org,revokeShareModelInTeamWithOrg,revoke_share_model_in_team_with_org,delete,Response,Models,models,model_shares,remove_org_by_team,delete,,Revoke shared team model with the org -private_registry.yaml,/team/{team_name}/models/{model_name}/shares/team/{target_team},shareModelInTeamWithTeam,share_model_in_team_with_team,put,Response,Models,models,model_shares,add_team_by_team,insert,,Share team model with the specified team -private_registry.yaml,/team/{team_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInTeamWithTeam,revoke_share_model_in_team_with_team,delete,Response,Models,models,model_shares,remove_team_by_team,delete,,Revoke shared team model with the specified team private_registry.yaml,/team/{team_name}/models/{model_name}/versions,listModelVersionsInTeam,list_model_versions_in_team,get,ModelVersionListResponse,Model Version,model version,model_versions,list_by_team,select,$.modelVersions,List model versions in team private_registry.yaml,/team/{team_name}/models/{model_name}/versions,createModelVersionInTeam,create_model_version_in_team,post,ModelVersionResponse,Model Version,model version,model_versions,create_by_team,insert,$.modelVersion,Create model version in team. private_registry.yaml,/team/{team_name}/models/{model_name}/versions/{version_id},getModelVersionInTeam,get_model_version_in_team,get,ModelVersionResponse,Model Version,model version,model_versions,get_by_team,select,$.modelVersion,Get model version in team diff --git a/provider-dev/config/clean_report.json b/provider-dev/config/clean_report.json index 78dfa2e..55163e1 100644 --- a/provider-dev/config/clean_report.json +++ b/provider-dev/config/clean_report.json @@ -1,5 +1,5 @@ { - "generated": "2026-09-25", + "generated": "2026-10-16", "sources": { "ngc_kas.json": { "openapi": "3.0.1", @@ -41,15 +41,15 @@ "servers": [ "https://api.ngc.nvidia.com" ], - "paths": 232, + "paths": 228, "fixes": [ { "rule": "gateway-v2-path-prefix", - "note": "229 path(s) rewritten /v1/ -> /v2/; servers [{\"description\":\"Generated server url - production\",\"url\":\"https://models.ngc.nvidia.com\",\"x-internal\":true}] -> https://api.ngc.nvidia.com (the public gateway serving the definition)" + "note": "225 path(s) rewritten /v1/ -> /v2/; servers [{\"description\":\"Generated server url - production\",\"url\":\"https://models.ngc.nvidia.com\",\"x-internal\":true}] -> https://api.ngc.nvidia.com (the public gateway serving the definition)" }, { "rule": "snake-case-path-params", - "note": "209 path key(s) and 986 path parameter name(s) converted to snake_case" + "note": "205 path key(s) and 962 path parameter name(s) converted to snake_case" }, { "rule": "inject-sdk-operations", @@ -68,11 +68,11 @@ "nvcf_openapi.json": { "openapi": "3.1.0", "title": "Cloud Functions", - "version": "2.256.0", + "version": "2.261.2", "servers": [ "https://api.nvcf.nvidia.com" ], - "paths": 36, + "paths": 37, "fixes": [ { "rule": "snake-case-path-params", diff --git a/provider-dev/config/endpoint_inventory.csv b/provider-dev/config/endpoint_inventory.csv index c8693d0..2d99049 100644 --- a/provider-dev/config/endpoint_inventory.csv +++ b/provider-dev/config/endpoint_inventory.csv @@ -5,6 +5,7 @@ nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/assets,getAssets nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,post,/v2/nvcf/assets,createAsset,Asset Management,n,n,y,none-declared,,,camel,y,object{assetId;contentType;description;uploadUrl},,,,/v2/nvcf/assets,https://api.nvcf.nvidia.com,nvcf_invocation,assets,create,insert,, nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,get,/v2/nvcf/assets/{asset_id},getAsset,Asset Management,n,n,y,none-declared,,,camel,n,object{asset},$.asset,,,/v2/nvcf/assets/{asset_id},https://api.nvcf.nvidia.com,nvcf_invocation,assets,get,select,, nvcf,nvcf_openapi.json,https://api.nvcf.nvidia.com,delete,/v2/nvcf/assets/{asset_id},deleteAsset,Asset Management,n,n,y,none-declared,,,camel,n,none,,,,/v2/nvcf/assets/{asset_id},https://api.nvcf.nvidia.com,nvcf_invocation,assets,delete,delete,, +nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions,getAuthorizedPartiesForAllFunctions,Function Sharing,n,n,n,none-declared,,,camel,n,object{functions},$.functions,,,/v2/nvcf/authorizations/functions,https://api.ngc.nvidia.com,nvcf_functions,authorizations,list_all,select,,the sharing audit across the fleet: one row per function with its authorized parties nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,get,/v2/nvcf/authorizations/functions/{function_id},getAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,n,object{functions},$.functions,,,/v2/nvcf/authorizations/functions/{function_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,list,select,, nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,post,/v2/nvcf/authorizations/functions/{function_id},createAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,y,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,set,replace,,POST replaces the full authorized-party list - grants-as-data set operation nvcf,nvcf_openapi.json,https://api.ngc.nvidia.com,delete,/v2/nvcf/authorizations/functions/{function_id},deleteAuthorizedPartiesForAllVersions,Function Sharing,n,n,n,none-declared,,,camel,n,object{function},$.function,,,/v2/nvcf/authorizations/functions/{function_id},https://api.ngc.nvidia.com,nvcf_functions,authorizations,delete_all,exec,,delete-all kept off the DELETE verb: same path-param signature as the granular remove @@ -58,27 +59,27 @@ ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/health,status,Services,n,n ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/health/all,statusDetails,Services,n,n,n,api-key+bearer-token,,,camel,n,object{health;requestStatus},,,,/health/all,https://api.ngc.nvidia.com,,,,,service-infra, ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/public-keys,getPublicKey,Services,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/public-keys,https://api.ngc.nvidia.com,,,,,service-infra, ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/roles,getRoles,Services,n,n,n,api-key+bearer-token,,,kebab,n,object{requestStatus;roles},$.roles,,,/roles,https://api.ngc.nvidia.com,orgs,roles,list,select,, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources,swaggerResources_4,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources,swaggerResources_3,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources,swaggerResources_5,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources,swaggerResources_2,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources,swaggerResources_6,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources,swaggerResources_1,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources,swaggerResources,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources/configuration/security,securityConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources/configuration/security,securityConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources/configuration/security,securityConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources/configuration/security,securityConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources/configuration/security,securityConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources/configuration/security,securityConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources/configuration/security,securityConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources/configuration/ui,uiConfiguration_4,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources/configuration/ui,uiConfiguration_3,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources/configuration/ui,uiConfiguration_5,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources/configuration/ui,uiConfiguration_2,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources/configuration/ui,uiConfiguration_6,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources/configuration/ui,uiConfiguration_1,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, -ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources/configuration/ui,uiConfiguration,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources,swaggerResources_get,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources,swaggerResources_post,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources,swaggerResources_put,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources,swaggerResources_patch,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources,swaggerResources_delete,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources,swaggerResources_head,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources,swaggerResources_options,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,array,,,,/swagger-resources,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources/configuration/security,securityConfiguration_get,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources/configuration/security,securityConfiguration_post,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources/configuration/security,securityConfiguration_put,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources/configuration/security,securityConfiguration_patch,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources/configuration/security,securityConfiguration_delete,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources/configuration/security,securityConfiguration_head,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources/configuration/security,securityConfiguration_options,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{additionalQueryStringParams;apiKey;apiKeyName;apiKeyVehicle;appName;clientId;...},,,,/swagger-resources/configuration/security,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/swagger-resources/configuration/ui,uiConfiguration_get,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/swagger-resources/configuration/ui,uiConfiguration_post,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,put,/swagger-resources/configuration/ui,uiConfiguration_put,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/swagger-resources/configuration/ui,uiConfiguration_patch,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/swagger-resources/configuration/ui,uiConfiguration_delete,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,head,/swagger-resources/configuration/ui,uiConfiguration_head,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, +ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,options,/swagger-resources/configuration/ui,uiConfiguration_options,api-resource-controller,n,n,n,api-key+bearer-token,,,camel,n,object{apisSorter;deepLinking;defaultModelExpandDepth;defaultModelRendering;defaultModelsExpandDepth;displayOperationId;...},,,,/swagger-resources/configuration/ui,https://api.ngc.nvidia.com,,,,,non-generator-http-verb, ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,post,/v2/admin/backfill-orgs-to-kratos,backfillOrgsToKratos,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,camel,n,object{requestStatus},,,,/v2/admin/backfill-orgs-to-kratos,https://api.ngc.nvidia.com,,,,,internal-admin, ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/entitlements,listOrganizationsWithEntitlement_1,Super Admin Org Controller,n,n,n,api-key+bearer-token,,,kebab,n,object{entitlements;requestStatus},,,,/v2/admin/entitlements,https://api.ngc.nvidia.com,,,,,internal-admin, ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/v2/admin/org,listOrganizations_2,Super Admin Org Controller,n,n,n,api-key+bearer-token,,page-number+page-size,kebab,n,object{organizations;paginationInfo;requestStatus},,,,/v2/admin/org,https://api.ngc.nvidia.com,,,,,internal-admin, @@ -164,7 +165,7 @@ ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,patch,/v3/orgs/{org_name}/users ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,delete,/v3/orgs/{org_name}/users/{user_email_or_id}/remove-role,removeRoleOrInvitationInOrg,Users Management,y,n,n,api-key+bearer-token,,,camel,n,object{activationToken;ncaRole;requestStatus;user;userRoles},,,/v3/orgs/{org_name},/users/{user_email_or_id}/remove-role,https://api.ngc.nvidia.com/v3/orgs/{org_name},orgs,user_roles,remove,delete,,grants-as-data ngc-core,ngc_kas.json,https://api.ngc.nvidia.com,get,/version,getLatestPackageVersion,Services,n,n,n,api-key+bearer-token,,,camel,n,object{requestStatus;versions},,,,/version,https://api.ngc.nvidia.com,,,,,service-infra, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/health,status,Health,n,n,n,none-declared,,,camel,n,object{health},,,,/health,https://api.ngc.nvidia.com,,,,,service-infra, -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/health/**,getHealth,Health,n,n,n,none-declared,,,camel,n,object{description;status},,,,/health/**,https://api.ngc.nvidia.com,,,,,service-infra, +ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/health/**,getHealth,Health,n,n,n,none-declared,,,camel,n,object{status},,,,/health/**,https://api.ngc.nvidia.com,,,,,service-infra, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/health/all,statusDetails,Health,n,n,n,none-declared,,,camel,n,object{health},,,,/health/all,https://api.ngc.nvidia.com,,,,,service-infra, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org_name}/encryption-keys,listKeysInOrg,Encryption Keys,y,n,n,ssa,,,camel,n,object{encryptionKeys},$.encryptionKeys,,/v2/artifact-registry/org/{org_name},/encryption-keys,https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,list,select,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/artifact-registry/org/{org_name}/encryption-keys/{key_id},listArtifactsForKeyInOrg,Encryption Keys,y,n,n,ssa,,,kebab,n,object{artifacts;requestStatus},$.artifacts,,/v2/artifact-registry/org/{org_name},/encryption-keys/{key_id},https://api.ngc.nvidia.com/v2/artifact-registry/org/{org_name},private_registry,encryption_keys,get,select,, @@ -262,10 +263,6 @@ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/model ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/models/{model_name},updateModelInOrg,Models,y,n,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,update,update,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name},deleteModelInOrg,Models,y,n,n,none-declared,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,delete,delete,,injected from SDK evidence (clean_specs inject-sdk-operations) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/org/{org_name},/models/{model_name}/encryption-key,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_encryption_keys,delete,delete,, -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/models/{model_name}/shares/org,shareModelInOrgWithOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_org,insert,,grants-as-data -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/shares/org,revokeShareModelInOrgWithOrg,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_org,delete,,grants-as-data -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/models/{model_name}/shares/team/{target_team},shareModelInOrgWithTeam,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_team,insert,,grants-as-data -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInOrgWithTeam,Models,y,n,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_team,delete,,grants-as-data ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models/{model_name}/versions,listModelVersionsInOrg,Model Version,y,n,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,list,select,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/models/{model_name}/versions,createModelVersionInOrg,Model Version,y,n,n,ssa,,,camel,y,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,create,insert,, ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/models/{model_name}/versions/{version_id},getModelVersionInOrg,Model Version,y,n,n,ssa,,,camel,n,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/models/{model_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,get,select,, @@ -323,10 +320,6 @@ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/ ngc-core,ngc_models.json,https://api.ngc.nvidia.com,patch,/v2/org/{org_name}/team/{team_name}/models/{model_name},updateModelInTeam,Models,y,y,n,ssa,,,camel,y,object{model;requestStatus},$.model,,/v2/org/{org_name},/team/{team_name}/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,update_by_team,update,,team-scoped twin of /v2/org/{org_name}/models/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name},deleteModelInTeam,Models,y,y,n,none-declared,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,models,delete_by_team,delete,,injected from SDK evidence (clean_specs inject-sdk-operations); team-scoped twin of /v2/org/{org_name}/models/{model_name} (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/encryption-key,disassociateKeyFromModelInTeam,Models,y,y,n,ssa,,,camel,n,object{requestStatus;statusUrl;workflowId},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/encryption-key,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_encryption_keys,delete_by_team,delete,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/encryption-key (Private Registry team scoping is exempt from the 2026-09-30 schedule) -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org,shareModelInTeamWithOrg,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_org_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/org (Private Registry team scoping is exempt from the 2026-09-30 schedule) -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org,revokeShareModelInTeamWithOrg,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/org,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_org_by_team,delete,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/org (Private Registry team scoping is exempt from the 2026-09-30 schedule) -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,put,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/team/{target_team},shareModelInTeamWithTeam,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,add_team_by_team,insert,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/team/{target_team} (Private Registry team scoping is exempt from the 2026-09-30 schedule) -ngc-core,ngc_models.json,https://api.ngc.nvidia.com,delete,/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/team/{target_team},revokeShareModelInTeamWithTeam,Models,y,y,n,ssa,,,camel,n,object{requestStatus},,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/shares/team/{target_team},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_shares,remove_team_by_team,delete,,grants-as-data; team-scoped twin of /v2/org/{org_name}/models/{model_name}/shares/team/{target_team} (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions,listModelVersionsInTeam,Model Version,y,y,n,ssa,,page-size+page-number,kebab,n,object{model;modelVersions;paginationInfo;requestStatus},$.modelVersions,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,list_by_team,select,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,post,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions,createModelVersionInTeam,Model Version,y,y,n,ssa,,,camel,y,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions,https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,create_by_team,insert,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions (Private Registry team scoping is exempt from the 2026-09-30 schedule) ngc-core,ngc_models.json,https://api.ngc.nvidia.com,get,/v2/org/{org_name}/team/{team_name}/models/{model_name}/versions/{version_id},getModelVersionInTeam,Model Version,y,y,n,ssa,,,camel,n,object{model;modelVersion;requestStatus},$.modelVersion,,/v2/org/{org_name},/team/{team_name}/models/{model_name}/versions/{version_id},https://api.ngc.nvidia.com/v2/org/{org_name},private_registry,model_versions,get_by_team,select,,team-scoped twin of /v2/org/{org_name}/models/{model_name}/versions/{version_id} (Private Registry team scoping is exempt from the 2026-09-30 schedule) diff --git a/provider-dev/config/provider_config.json b/provider-dev/config/provider_config.json new file mode 100644 index 0000000..94a2611 --- /dev/null +++ b/provider-dev/config/provider_config.json @@ -0,0 +1,7 @@ +{ + "auth": { + "type": "bearer", + "credentialsenvvar": "NGC_API_KEY" + }, + "snake_case_aliases": true +} diff --git a/provider-dev/config/spec_pin.json b/provider-dev/config/spec_pin.json index d814204..6089a5e 100644 --- a/provider-dev/config/spec_pin.json +++ b/provider-dev/config/spec_pin.json @@ -8,13 +8,13 @@ "sources": { "nvcf_openapi.json": { "url": "https://api.nvcf.nvidia.com/v3/openapi", - "fetched": "2026-09-25", - "sha256": "53dd383860098a19d6ddb796988fd3d3d166f71f34f82f2f849aed8c725d9eea", - "bytes": 198423, + "fetched": "2026-10-16", + "sha256": "bee443b36cbc3a62fcc68c265a12795423d33aafcaba0a4c9855688cfb6002f6", + "bytes": 200367, "docsPage": "https://docs.nvidia.com/nvcf/api", "openapi": "3.1.0", "title": "Cloud Functions", - "specVersion": "2.256.0", + "specVersion": "2.261.2", "decision": { "canonicalSource": "The OpenAPI Spec link on the NVCF API documentation page (docsPage) resolves to this URL, served by the NVCF API itself. A companion Postman collection is referenced from the same documentation set.", "hostSplit": "The spec declares a single server (https://api.nvcf.nvidia.com) but the NVCF documentation (cloud-functions user guide, API page) states the primary domain for function management is api.ngc.nvidia.com and the NVCF domain for function invocation and queue details is api.nvcf.nvidia.com. Hosts are carried per operation group; the per-operation assignment with evidence is recorded in endpoint_inventory.csv.", @@ -23,9 +23,9 @@ }, "ngc_models.json": { "url": "https://models.ngc.nvidia.com/v3/openapi", - "fetched": "2026-09-25", - "sha256": "60e0eb9a9f7344e5f43ba3ede8dd5cab20ab41cc47bad9ae780031868e06b529", - "bytes": 1435979, + "fetched": "2026-10-16", + "sha256": "05d9a1daf1ce36a3373e1ec5da025d9d3b4c76f9d2d5473f044245b328195456", + "bytes": 1414466, "explorer": "https://docs.ngc.nvidia.com/api/", "explorerName": "Private Artifacts (Models) API", "openapi": "3.1.0", @@ -34,9 +34,9 @@ }, "ngc_kas.json": { "url": "https://api.ngc.nvidia.com/v3/api-docs", - "fetched": "2026-09-25", - "sha256": "9a4550a50fed4b4a7337c5bd67d71858d13fcdbe7c72505aa1b245382e9be53c", - "bytes": 618658, + "fetched": "2026-10-16", + "sha256": "c92dca697fb5c1057741afec41383bd9b6a21ed6fc313e9dd21a49e713b91f38", + "bytes": 618739, "explorer": "https://docs.ngc.nvidia.com/api/", "explorerName": "KASv1 API (Deprecated)", "openapi": "3.0.1", @@ -52,6 +52,6 @@ "derived": "ngc_sdk_schemas.json", "derivedSha256": "faa443aa2e6394370b18bab2a7368f8e85a72e56a4f9a87b5d1d41b5337ca3ea", "classes": 149, - "fetched": "2026-09-25" + "fetched": "2026-10-16" } } diff --git a/provider-dev/docgen/provider-data/headerContent2.txt b/provider-dev/docgen/provider-data/headerContent2.txt index 4ffe9dc..da95d18 100644 --- a/provider-dev/docgen/provider-data/headerContent2.txt +++ b/provider-dev/docgen/provider-data/headerContent2.txt @@ -13,7 +13,7 @@ REGISTRY PULL nvidia; ## Scope -This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (342 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. +This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. Container images are served by the separate container registry API, whose definition NVIDIA does not publish, and are not in this provider. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (335 operations across 7 services and 82 resources, plus the `vw_gpu_capacity` view), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. ## Authentication @@ -31,7 +31,26 @@ $env:NGC_API_KEY = 'nvapi-...' $env:NGC_ORG = '0123456789ab' ``` -The public catalog (`nvidia.catalog`) serves public artifact metadata and the GPU catalog without any credential; the variable still has to be set for the provider to run, but any value works for those reads. +The public catalog (`nvidia.catalog`) serves public artifact metadata and the GPU catalog without any credential; the variable still has to be set for the provider to run, but any value works for those reads. A key that NGC rejects answers `403 Access Denied` on organization and registry reads and `403 Authorization failed` on NVCF reads; the NGC CLI's `ngc config set` validates a key against the same service NVIDIA uses for both. + +<details> + +<summary>Using different environment variables</summary> + +To use different environment variables (instead of the defaults), use the `--auth` flag of the `stackql` program. For example: + +```bash +AUTH='{ "nvidia": { "type": "bearer", "credentialsenvvar": "MY_OTHER_VAR" }}' +stackql shell --auth="${AUTH}" +``` + +or using PowerShell: + +```powershell +$Auth = "{ 'nvidia': { 'type': 'bearer', 'credentialsenvvar': 'MY_OTHER_VAR' }}" +stackql.exe shell --auth=$Auth +``` +</details> ## Organization scope @@ -56,21 +75,35 @@ FROM nvidia.private_registry.models WHERE team_name = 'ml-platform'; ``` -NVCF resources carry no organization in their paths: the key determines the organization. +A `JOIN` cannot fan out across organizations on `org_name` (the rows do not echo the server variable); to report across several organizations compose one statement per organization with `UNION ALL`. NVCF resources carry no organization in their paths: the key determines the organization. ## Pagination and casing -NGC core collections (organizations, users, teams, registry artifacts and versions) page with `page-number` and `page-size`; StackQL follows `paginationInfo.index` / `totalPages` transparently, so a `SELECT` returns every row, and `SELECT ... LIMIT n` is pushed to the wire as `page-size`. Columns are snake_case aliases of the camelCase wire properties (`displayName` -> `display_name`); query parameters are addressed in snake_case too (`resolve_labels`, `page_size`) and translated to the kebab-case wire names. +NGC core collections (organizations, users, teams, registry artifacts and versions) page with `page-number` and `page-size`; StackQL follows `paginationInfo.index` / `totalPages` transparently, so a `SELECT` returns every row, and `SELECT ... LIMIT n` is pushed to the wire as `page-size`. Columns are snake_case aliases of the camelCase wire properties (`displayName` -> `display_name`); query parameters are addressed in snake_case too (`resolve_labels`, `page_size`) and translated to the kebab-case wire names. `UPDATE` marshals every `SET` value as a string; `INSERT` and `EXEC` send typed JSON, and `EXEC` cannot carry a boolean. + +## Rate limit + +NVIDIA publishes no request limit for the NGC and NVCF control-plane APIs. A `429` is surfaced as an error on the statement that received it; wide statements that fan out (a `JOIN` from a list to a per-row `get`, or `UNION ALL` across organizations) issue one request per row and are the ones to pace. ## Deprecations -NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those path families are excluded from the provider. Private Registry team scoping is exempt from that schedule and stays mapped (the `*_by_team` methods). Refreshes of the provider are reviewed spec diffs against content-hash pins. +NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those path families are excluded from the provider. Private Registry team scoping is exempt from that schedule and stays mapped (the `*_by_team` methods). Operations NVIDIA marks deprecated inline keep their marker in the method description; those with a published replacement are not mapped. Refreshes of the provider are reviewed spec diffs against content-hash pins. -## Example queries +## Example Queries + +Try the following queries using `stackql shell`, or run them from a script or CI pipeline with `stackql exec`. ### GPU capacity by cluster group -What GPU capacity exists, and where - the NVCF cluster groups the organization can deploy to, with their GPU types and instance types: +What GPU capacity exists, and where - one row per cluster group, GPU type and instance type the organization can deploy to, through the `vw_gpu_capacity` view: + +```sql +SELECT cluster_group, gpu, instance_type, is_default, cluster +FROM nvidia.nvcf_deployments.vw_gpu_capacity +ORDER BY cluster_group, gpu, instance_type; +``` + +The same estate straight from the `cluster_groups` resource, with `json_each` over the `gpus` column: ```sql SELECT cg.name AS cluster_group, @@ -99,7 +132,9 @@ LEFT JOIN nvidia.nvcf_deployments.deployments d WHERE f.status = 'ACTIVE'; ``` -Deployed functions with more than one minimum instance - the standing GPU spend: +### Standing GPU spend + +A deployed function's minimum instance count is the GPU capacity it holds whether or not it is invoked: ```sql SELECT function_name, function_status, @@ -112,9 +147,13 @@ WHERE function_id = 'fe97aa46-c8ea-4237-ba56-1212036f4d0f' ### Function sharing audit -Which NVIDIA Cloud Accounts may invoke a function - the authorization grants as data: +Which NVIDIA Cloud Accounts may invoke which function - the authorization grants as data, one row per function across the fleet, or for one function by id: ```sql +SELECT id AS function_id, version_id, nca_id AS owner, + json_extract(authorized_parties, '$[*].ncaId') AS authorized_accounts +FROM nvidia.nvcf_functions.authorizations; + SELECT id AS function_id, version_id, nca_id AS owner, json_extract(authorized_parties, '$[*].ncaId') AS authorized_accounts FROM nvidia.nvcf_functions.authorizations @@ -134,7 +173,9 @@ FROM nvidia.private_registry.models ORDER BY updated_date DESC; ``` -Helm charts, endpoints, blueprints, agents, playbooks, APIs and skills through the generic artifacts resource (`artifact_type` takes the plural path segment: `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks`, `skills`; models, resources and recipes have their own resources; container images are served by the separate container registry API and are not in this provider): +### Generic registry artifacts + +Helm charts, endpoints, blueprints, agents, playbooks, APIs and skills through the generic artifacts resource (`artifact_type` takes the plural path segment: `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks`, `skills`; models, resources and recipes have their own resources): ```sql SELECT name, display_name, latest_version_id_str, updated_date @@ -144,6 +185,8 @@ WHERE artifact_type = 'helm-charts'; ### Public catalog, no account needed +Public model metadata and the GPU catalog, readable with any value in `NGC_API_KEY`: + ```sql SELECT name, org_name, display_name, framework FROM nvidia.catalog.models @@ -163,9 +206,9 @@ SELECT email, name, is_active, last_login_date, FROM nvidia.orgs.users; ``` -### Provisioning +### Provisioning a function -Mutations use the same SQL grammar - `INSERT` creates, `UPDATE` patches, `DELETE` removes, and lifecycle actions are `EXEC` methods. Body columns are the snake_case spellings of the wire properties. A function with a first version, its deployment on the smallest instance, and the teardown: +Mutations use the same SQL grammar - `INSERT` creates, `UPDATE` patches, `DELETE` removes, and lifecycle actions are `EXEC` methods; body columns are the snake_case spellings of the wire properties. A function with a first version, its deployment on the smallest instance, a sharing grant and the teardown: ```sql -- create the function (and its first version) @@ -189,7 +232,9 @@ DELETE FROM nvidia.nvcf_functions.function_versions WHERE function_id = 'fe97aa46-...' AND function_version_id = '868d2192-...'; ``` -Invoke a function through the HTTP-polling form and read the result: +### Invoking a function + +The HTTP-polling invocation form is an `EXEC` whose opaque JSON body is the function's own request, and the result is read back by request id: ```sql EXEC nvidia.nvcf_invocation.invocations.invoke @@ -201,7 +246,9 @@ FROM nvidia.nvcf_invocation.invocation_status WHERE request_id = '<NVCF-REQID from the invoke>'; ``` -Registry metadata is provisioned the same way: +### Provisioning registry metadata + +A private registry model is created, patched and removed with the same verbs (`UPDATE` sends every `SET` value as a string): ```sql INSERT INTO nvidia.private_registry.models (name, display_name, framework, precision, application, short_description) @@ -217,11 +264,11 @@ WHERE model_name = 'resnet50-finetuned'; ### The whole GPU estate in one statement -NVCF cluster-group GPU types alongside the hyperscaler GPU instance inventory, using the `aws`, `google` and `azure` providers: +NVCF cluster-group GPU types alongside the hyperscaler GPU instance inventory, using the `aws` and `google` providers: ```sql -SELECT 'nvcf' AS platform, cg.name AS location, json_extract(g.value, '$.name') AS gpu -FROM nvidia.nvcf_deployments.cluster_groups cg, json_each(cg.gpus) g +SELECT 'nvcf' AS platform, cluster_group AS location, gpu +FROM nvidia.nvcf_deployments.vw_gpu_capacity UNION ALL SELECT 'aws', region, json_extract(gpu_info, '$.Gpus[0].Name') FROM aws.ec2.instance_types diff --git a/provider-dev/downloaded/cleaned/ngc_kas.json b/provider-dev/downloaded/cleaned/ngc_kas.json index f4884cd..e47224d 100644 --- a/provider-dev/downloaded/cleaned/ngc_kas.json +++ b/provider-dev/downloaded/cleaned/ngc_kas.json @@ -2841,7 +2841,7 @@ }, "/swagger-resources": { "delete": { - "operationId": "swaggerResources_6", + "operationId": "swaggerResources_delete", "responses": { "200": { "content": { @@ -3008,7 +3008,7 @@ ] }, "get": { - "operationId": "swaggerResources_4", + "operationId": "swaggerResources_get", "responses": { "200": { "content": { @@ -3175,7 +3175,7 @@ ] }, "head": { - "operationId": "swaggerResources_1", + "operationId": "swaggerResources_head", "responses": { "200": { "content": { @@ -3342,7 +3342,7 @@ ] }, "options": { - "operationId": "swaggerResources", + "operationId": "swaggerResources_options", "responses": { "200": { "content": { @@ -3509,7 +3509,7 @@ ] }, "patch": { - "operationId": "swaggerResources_2", + "operationId": "swaggerResources_patch", "responses": { "200": { "content": { @@ -3676,7 +3676,7 @@ ] }, "post": { - "operationId": "swaggerResources_3", + "operationId": "swaggerResources_post", "responses": { "200": { "content": { @@ -3843,7 +3843,7 @@ ] }, "put": { - "operationId": "swaggerResources_5", + "operationId": "swaggerResources_put", "responses": { "200": { "content": { @@ -4012,7 +4012,7 @@ }, "/swagger-resources/configuration/security": { "delete": { - "operationId": "securityConfiguration_6", + "operationId": "securityConfiguration_delete", "responses": { "200": { "content": { @@ -4176,7 +4176,7 @@ ] }, "get": { - "operationId": "securityConfiguration_4", + "operationId": "securityConfiguration_get", "responses": { "200": { "content": { @@ -4340,7 +4340,7 @@ ] }, "head": { - "operationId": "securityConfiguration_1", + "operationId": "securityConfiguration_head", "responses": { "200": { "content": { @@ -4504,7 +4504,7 @@ ] }, "options": { - "operationId": "securityConfiguration", + "operationId": "securityConfiguration_options", "responses": { "200": { "content": { @@ -4668,7 +4668,7 @@ ] }, "patch": { - "operationId": "securityConfiguration_2", + "operationId": "securityConfiguration_patch", "responses": { "200": { "content": { @@ -4832,7 +4832,7 @@ ] }, "post": { - "operationId": "securityConfiguration_3", + "operationId": "securityConfiguration_post", "responses": { "200": { "content": { @@ -4996,7 +4996,7 @@ ] }, "put": { - "operationId": "securityConfiguration_5", + "operationId": "securityConfiguration_put", "responses": { "200": { "content": { @@ -5162,7 +5162,7 @@ }, "/swagger-resources/configuration/ui": { "delete": { - "operationId": "uiConfiguration_6", + "operationId": "uiConfiguration_delete", "responses": { "200": { "content": { @@ -5326,7 +5326,7 @@ ] }, "get": { - "operationId": "uiConfiguration_4", + "operationId": "uiConfiguration_get", "responses": { "200": { "content": { @@ -5490,7 +5490,7 @@ ] }, "head": { - "operationId": "uiConfiguration_1", + "operationId": "uiConfiguration_head", "responses": { "200": { "content": { @@ -5654,7 +5654,7 @@ ] }, "options": { - "operationId": "uiConfiguration", + "operationId": "uiConfiguration_options", "responses": { "200": { "content": { @@ -5818,7 +5818,7 @@ ] }, "patch": { - "operationId": "uiConfiguration_2", + "operationId": "uiConfiguration_patch", "responses": { "200": { "content": { @@ -5982,7 +5982,7 @@ ] }, "post": { - "operationId": "uiConfiguration_3", + "operationId": "uiConfiguration_post", "responses": { "200": { "content": { @@ -6146,7 +6146,7 @@ ] }, "put": { - "operationId": "uiConfiguration_5", + "operationId": "uiConfiguration_put", "responses": { "200": { "content": { diff --git a/provider-dev/downloaded/cleaned/ngc_models.json b/provider-dev/downloaded/cleaned/ngc_models.json index d3a2214..3c3cd04 100644 --- a/provider-dev/downloaded/cleaned/ngc_models.json +++ b/provider-dev/downloaded/cleaned/ngc_models.json @@ -406,6 +406,10 @@ "type": "string" } }, + "required": [ + "name", + "shortDescription" + ], "type": "object" }, "ArtifactDownloadAllResponse": { @@ -2515,17 +2519,6 @@ }, "type": "object" }, - "HealthComponent": { - "properties": { - "description": { - "type": "string" - }, - "status": { - "type": "string" - } - }, - "type": "object" - }, "HealthResponse": { "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method", "properties": { @@ -2536,6 +2529,14 @@ }, "type": "object" }, + "KaizenHealthStatus": { + "properties": { + "status": { + "type": "string" + } + }, + "type": "object" + }, "KeyArtifactListResponse": { "description": "Response containing a list of artifacts associated with a key", "properties": { @@ -2626,6 +2627,11 @@ "type": "boolean" } }, + "required": [ + "governingTerms", + "licenseId", + "licenseVersion" + ], "type": "object" }, "LicenseTag": { @@ -5740,6 +5746,79 @@ }, "type": "oauth2" }, + "ngc-ssa": { + "flows": { + "clientCredentials": { + "scopes": { + "addArtifactToCollectionFromAnotherOrgOrTeam": "{scope}", + "cloneArtifact": "{scope}", + "createArtifact": "{scope}", + "createArtifactVersion": "{scope}", + "createCollection": "{scope}", + "createGpuByPci": "{scope}", + "createModel": "{scope}", + "createModelVersion": "{scope}", + "createNimMetadata": "{scope}", + "createRecipe": "{scope}", + "createRecipeVersion": "{scope}", + "deleteArtifact": "{scope}", + "deleteArtifactVersion": "{scope}", + "deleteArtifacts": "{scope}", + "deleteGpuByPci": "{scope}", + "downloadArtifactVersionFile": "{scope}", + "downloadArtifactVersionFileFilterByOrgEnablement": "{scope}", + "getArtifact": "{scope}", + "getArtifactVersion": "{scope}", + "getArtifactVersionOwners": "{scope}", + "getCollection": "{scope}", + "getModel": "{scope}", + "getModelVersion": "{scope}", + "getModelVersionFilterByOrgEnablement": "{scope}", + "getPublicFlags": "{scope}", + "getRecipe": "{scope}", + "getRecipeVersion": "{scope}", + "getRecipeVersionFilterByOrgEnablement": "{scope}", + "helmProxy": "{scope}", + "kas": "{scope}", + "listArtifactVersionFiles": "{scope}", + "listArtifactVersionFilesFilterByOrgEnablement": "{scope}", + "listArtifactVersions": "{scope}", + "listArtifacts": "{scope}", + "listCollectionArtifacts": "{scope}", + "listModelVersionFiles": "{scope}", + "listModelVersionFilesFilterByOrgEnablement": "{scope}", + "listModelVersions": "{scope}", + "listModels": "{scope}", + "listRecipeVersionFiles": "{scope}", + "listRecipeVersionFilesFilterByOrgEnablement": "{scope}", + "listRecipeVersions": "{scope}", + "listRecipes": "{scope}", + "notifyScanResult": "{scope}", + "patchCollectionArtifacts": "{scope}", + "publishArtifact": "{scope}", + "publishCollection": "{scope}", + "purgeArtifact": "{scope}", + "readGpuByPci": "{scope}", + "recreateArtifactVersionZip": "{scope}", + "signArtifactVersion": "{scope}", + "syncReleaseTypeLabels": "{scope}", + "undoPublishArtifact": "{scope}", + "undoPublishCollection": "{scope}", + "updateArtifact": "{scope}", + "updateArtifactVersion": "{scope}", + "updateCollection": "{scope}", + "updateGpuByPci": "{scope}", + "updateModel": "{scope}", + "updateModelVersion": "{scope}", + "updateRecipe": "{scope}", + "updateRecipeVersion": "{scope}", + "writeArtifacts": "{scope}" + }, + "tokenUrl": "https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token" + } + }, + "type": "oauth2" + }, "ssa": { "description": "A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725", "flows": { @@ -5855,7 +5934,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HealthComponent" + "$ref": "#/components/schemas/KaizenHealthStatus" } } }, @@ -18270,10 +18349,10 @@ ] } }, - "/v2/org/{org_name}/models/{model_name}/shares/org": { - "delete": { - "description": "This operation revokes a shared org model with the org.", - "operationId": "revokeShareModelInOrgWithOrg", + "/v2/org/{org_name}/models/{model_name}/versions": { + "get": { + "description": "List model versions in org", + "operationId": "listModelVersionsInOrg", "parameters": [ { "description": "Organization name", @@ -18298,6 +18377,84 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "responses": { @@ -18305,7 +18462,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionListResponse" } } }, @@ -18365,21 +18522,23 @@ "security": [ { "ssa": [ - "kas" + "kas", + "listModelVersions" ] } ], - "summary": "Revoke shared org model with the org", + "summary": "List model versions in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "listModelVersions", "kas" ] }, - "put": { - "description": "This operation shares an org model with the org.", - "operationId": "shareModelInOrgWithOrg", + "post": { + "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInOrg", "parameters": [ { "description": "Organization name", @@ -18406,12 +18565,22 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionResponse" } } }, @@ -18471,23 +18640,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "createModelVersion" ] } ], - "summary": "Share org model with the org", + "summary": "Create model version in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ - "kas" + "kas", + "createModelVersion" ] } }, - "/v2/org/{org_name}/models/{model_name}/shares/team/{target_team}": { - "delete": { - "description": "This operation revokes a shared org model with the team.", - "operationId": "revokeShareModelInOrgWithTeam", + "/v2/org/{org_name}/models/{model_name}/versions/{version_id}": { + "get": { + "description": "Get model version in org", + "operationId": "getModelVersionInOrg", "parameters": [ { "description": "Organization name", @@ -18514,13 +18685,13 @@ } }, { - "description": "Target team name", + "description": "Version ID", "in": "path", - "name": "target_team", + "name": "version_id", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 512, "minLength": 0, "type": "string" } @@ -18531,7 +18702,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionResponse" } } }, @@ -18591,21 +18762,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "getModelVersion", + "getModelVersionFilterByOrgEnablement" ] } ], - "summary": "Revoke shared org model with the specified team", + "summary": "Get model version in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "getModelVersionFilterByOrgEnablement", + "getModelVersion", "kas" ] }, - "put": { - "description": "This operation shares an org model with the team.", - "operationId": "shareModelInOrgWithTeam", + "patch": { + "description": "Update model version information in org e.g. upload status", + "operationId": "updateModelVersionInOrg", "parameters": [ { "description": "Organization name", @@ -18632,24 +18807,52 @@ } }, { - "description": "Target team name", + "description": "Version ID", "in": "path", - "name": "target_team", + "name": "version_id", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 512, "minLength": 0, "type": "string" } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionResponse" } } }, @@ -18709,23 +18912,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "updateModelVersion" ] } ], - "summary": "Share org model with the specified team", + "summary": "Update model version in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "updateModelVersion", "kas" ] } }, - "/v2/org/{org_name}/models/{model_name}/versions": { + "/v2/org/{org_name}/models/{model_name}/versions/{version_id}/files": { "get": { - "description": "List model versions in org", - "operationId": "listModelVersionsInOrg", + "description": "List files of the model version in org", + "operationId": "listModeFilesInOrg", "parameters": [ { "description": "Organization name", @@ -18746,25 +18951,17 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Release Type", - "in": "query", - "name": "release-type", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -18779,53 +18976,35 @@ "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, + "maximum": 5000, "minLength": 0, "minimum": 1, "type": "string" } }, { - "description": "Page number - zero based index", + "description": "Page reference", "in": "query", - "name": "page-number", + "name": "page-reference", "required": false, "schema": { "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 1024, "minLength": 0, - "minimum": 0, "type": "string" } }, { - "description": "Sort order", + "description": "Page number - zero based index", "in": "query", - "name": "sort-order", + "name": "page-number", "required": false, "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } } @@ -18835,7 +19014,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionListResponse" + "$ref": "#/components/schemas/ModelVersionFileListResponse" } } }, @@ -18895,23 +19074,35 @@ "security": [ { "ssa": [ - "kas", - "listModelVersions" + "kas" + ] + }, + { + "ssa": [ + "listModelVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "listModelVersionFiles" ] } ], - "summary": "List model versions in org", + "summary": "List model files in org", "tags": [ - "Model Version" + "Model Version Files" ], "x-ssa-scopes": [ - "listModelVersions", + "listModelVersionFiles", + "listModelVersionFilesFilterByOrgEnablement", "kas" ] - }, - "post": { - "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createModelVersionInOrg", + } + }, + "/v2/org/{org_name}/recipes": { + "get": { + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg", "parameters": [ { "description": "Organization name", @@ -18926,34 +19117,70 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model_name", - "required": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, "schema": { "format": "UTF-8", "maxLength": 255, "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionCreateRequest" - } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, - "required": true - }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionResponse" + "$ref": "#/components/schemas/RecipeListResponse" } } }, @@ -19014,24 +19241,22 @@ { "ssa": [ "kas", - "createModelVersion" + "listRecipes" ] } ], - "summary": "Create model version in org", + "summary": "List recipes in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "kas", - "createModelVersion" + "listRecipes", + "kas" ] - } - }, - "/v2/org/{org_name}/models/{model_name}/versions/{version_id}": { - "get": { - "description": "Get model version in org", - "operationId": "getModelVersionInOrg", + }, + "post": { + "description": "Create recipe in org", + "operationId": "createRecipeInOrg", "parameters": [ { "description": "Organization name", @@ -19044,38 +19269,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Model name", - "in": "path", - "name": "model_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", - "in": "path", - "name": "version_id", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 512, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -19136,24 +19347,24 @@ { "ssa": [ "kas", - "getModelVersion", - "getModelVersionFilterByOrgEnablement" + "createRecipe" ] } ], - "summary": "Get model version in org", + "summary": "Create recipe in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "getModelVersionFilterByOrgEnablement", - "getModelVersion", + "createRecipe", "kas" ] - }, - "patch": { - "description": "Update model version information in org e.g. upload status", - "operationId": "updateModelVersionInOrg", + } + }, + "/v2/org/{org_name}/recipes/{recipe_name}": { + "get": { + "description": "Get recipe in org", + "operationId": "getRecipeInOrg", "parameters": [ { "description": "Organization name", @@ -19168,64 +19379,42 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", + "description": "Recipe name", "in": "path", - "name": "version_id", + "name": "recipe_name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 512, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Create zip of version content", + "description": "Resolve labels", "in": "query", - "name": "create-zip", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "description": "Set version to latest", + "description": "Remove unresolved labels", "in": "query", - "name": "set-latest", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionUpdateRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -19286,24 +19475,22 @@ { "ssa": [ "kas", - "updateModelVersion" + "getRecipe" ] } ], - "summary": "Update model version in org", + "summary": "Get recipe in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "updateModelVersion", + "getRecipe", "kas" ] - } - }, - "/v2/org/{org_name}/models/{model_name}/versions/{version_id}/files": { - "get": { - "description": "List files of the model version in org", - "operationId": "listModeFilesInOrg", + }, + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg", "parameters": [ { "description": "Organization name", @@ -19318,21 +19505,9 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", + "description": "Recipe name", "in": "path", - "name": "version_id", + "name": "recipe_name", "required": true, "schema": { "format": "UTF-8", @@ -19340,54 +19515,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page reference", - "in": "query", - "name": "page-reference", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionFileListResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -19447,35 +19592,25 @@ "security": [ { "ssa": [ - "kas" - ] - }, - { - "ssa": [ - "listModelVersionFilesFilterByOrgEnablement" - ] - }, - { - "ssa": [ - "listModelVersionFiles" + "kas", + "updateRecipe" ] } ], - "summary": "List model files in org", + "summary": "Update recipe in org", "tags": [ - "Model Version Files" + "Resources" ], "x-ssa-scopes": [ - "listModelVersionFiles", - "listModelVersionFilesFilterByOrgEnablement", + "updateRecipe", "kas" ] } }, - "/v2/org/{org_name}/recipes": { + "/v2/org/{org_name}/recipes/{recipe_name}/versions": { "get": { - "description": "List recipes the user can access in the specified org", - "operationId": "listRecipesInOrg", + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg", "parameters": [ { "description": "Organization name", @@ -19490,13 +19625,13 @@ } }, { - "description": "Application name", - "in": "query", - "name": "app-name", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } @@ -19530,21 +19665,53 @@ } }, { - "description": "Resolve labels", + "description": "Sort order", "in": "query", - "name": "resolve-labels", + "name": "sort-order", "required": false, "schema": { - "type": "boolean" + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Remove unresolved labels", + "description": "Release Type", "in": "query", - "name": "remove-unresolved-labels", + "name": "release-type", "required": false, "schema": { - "type": "boolean" + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -19553,7 +19720,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeListResponse" + "$ref": "#/components/schemas/RecipeVersionListResponse" } } }, @@ -19614,22 +19781,22 @@ { "ssa": [ "kas", - "listRecipes" + "listRecipeVersions" ] } ], - "summary": "List recipes in org", + "summary": "List recipe versions in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "listRecipes", + "listRecipeVersions", "kas" ] }, "post": { - "description": "Create recipe in org", - "operationId": "createRecipeInOrg", + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg", "parameters": [ { "description": "Organization name", @@ -19642,13 +19809,25 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeCreateRequest" + "$ref": "#/components/schemas/RecipeVersionCreateRequest" } } }, @@ -19659,7 +19838,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -19720,24 +19899,24 @@ { "ssa": [ "kas", - "createRecipe" + "createRecipeVersion" ] } ], - "summary": "Create recipe in org", + "summary": "Create recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "createRecipe", + "createRecipeVersion", "kas" ] } }, - "/v2/org/{org_name}/recipes/{recipe_name}": { + "/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}": { "get": { - "description": "Get recipe in org", - "operationId": "getRecipeInOrg", + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg", "parameters": [ { "description": "Organization name", @@ -19764,21 +19943,15 @@ } }, { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -19787,7 +19960,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -19848,22 +20021,24 @@ { "ssa": [ "kas", - "getRecipe" + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" ] } ], - "summary": "Get recipe in org", + "summary": "Get recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "getRecipe", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", "kas" ] }, "patch": { - "description": "Update recipe details in org", - "operationId": "updateRecipeInOrg", + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg", "parameters": [ { "description": "Organization name", @@ -19888,24 +20063,54 @@ "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" - } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "required": true - }, - "responses": { + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -19966,24 +20171,24 @@ { "ssa": [ "kas", - "updateRecipe" + "updateRecipeVersion" ] } ], - "summary": "Update recipe in org", + "summary": "Update recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "updateRecipe", + "updateRecipeVersion", "kas" ] } }, - "/v2/org/{org_name}/recipes/{recipe_name}/versions": { + "/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files": { "get": { - "description": "List recipe versions in org", - "operationId": "listRecipeVersionsInOrg", + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg", "parameters": [ { "description": "Organization name", @@ -20010,80 +20215,54 @@ } }, { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1, "type": "string" } }, { - "description": "Page number - zero based index", + "description": "Page size", "in": "query", - "name": "page-number", + "name": "page-size", "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, + "maximum": 5000, "minLength": 0, - "minimum": 0, + "minimum": 1, "type": "string" } }, { - "description": "Sort order", + "description": "Page reference", "in": "query", - "name": "sort-order", + "name": "page-reference", "required": false, "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "format": "UTF-8", - "maxLength": 262144, + "maxLength": 1024, "minLength": 0, "type": "string" } }, { - "description": "Release Type", + "description": "Page number - zero based index", "in": "query", - "name": "release-type", + "name": "page-number", "required": false, "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } } @@ -20093,7 +20272,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionListResponse" + "$ref": "#/components/schemas/RecipeVersionFileListResponse" } } }, @@ -20153,23 +20332,35 @@ "security": [ { "ssa": [ - "kas", - "listRecipeVersions" + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" ] } ], - "summary": "List recipe versions in org", + "summary": "List recipe files in org", "tags": [ - "Resource Versions" + "Resource Version Files endpoints" ], "x-ssa-scopes": [ - "listRecipeVersions", + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", "kas" ] - }, - "post": { - "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createRecipeVersionInOrg", + } + }, + "/v2/org/{org_name}/repositories/{container_name}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer", "parameters": [ { "description": "Organization name", @@ -20184,34 +20375,82 @@ } }, { - "description": "Recipe name", + "description": "Container name", "in": "path", - "name": "recipe_name", + "name": "container_name", "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, + "maximum": 1000, "minLength": 0, + "minimum": 1, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionCreateRequest" - } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } }, - "required": true - }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/ModelVersionListResponse" } } }, @@ -20272,24 +20511,24 @@ { "ssa": [ "kas", - "createRecipeVersion" + "listModelVersions" ] } ], - "summary": "Create recipe version in org", + "summary": "List associated model versions by container", "tags": [ - "Resource Versions" + "Model Version" ], "x-ssa-scopes": [ - "createRecipeVersion", + "listModelVersions", "kas" ] } }, - "/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}": { + "/v2/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models": { "get": { - "description": "Get recipe version in org", - "operationId": "getRecipeVersionInOrg", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_2", "parameters": [ { "description": "Organization name", @@ -20304,186 +20543,94 @@ } }, { - "description": "Recipe name", + "description": "Container name", "in": "path", - "name": "recipe_name", + "name": "container_name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } }, { - "description": "Version ID", + "description": "Container tag", "in": "path", - "name": "version_id", + "name": "container_tag", "required": true, "schema": { "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" - ] - } - ], - "summary": "Get recipe version in org", - "tags": [ - "Resource Versions" - ], - "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", - "kas" - ] - }, - "patch": { - "description": "Update recipe version information in org e.g. upload status", - "operationId": "updateRecipeVersionInOrg", - "parameters": [ { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, + "maximum": 1000, "minLength": 0, + "minimum": 1, "type": "string" } }, { - "description": "Recipe name", - "in": "path", - "name": "recipe_name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } }, { - "description": "Version ID", - "in": "path", - "name": "version_id", - "required": true, + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, "minLength": 0, "type": "string" } - }, - { - "description": "Create zip of version content", - "in": "query", - "name": "create-zip", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Set version to latest", - "in": "query", - "name": "set-latest", - "required": false, - "schema": { - "type": "boolean" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/ModelVersionListResponse" } } }, @@ -20544,24 +20691,24 @@ { "ssa": [ "kas", - "updateRecipeVersion" + "listModelVersions" ] } ], - "summary": "Update recipe version in org", + "summary": "List associated model versions by container", "tags": [ - "Resource Versions" + "Model Version" ], "x-ssa-scopes": [ - "updateRecipeVersion", + "listModelVersions", "kas" ] } }, - "/v2/org/{org_name}/recipes/{recipe_name}/versions/{version_id}/files": { + "/v2/org/{org_name}/resources": { "get": { - "description": "List recipe files in org", - "operationId": "listRecipeFilesInOrg", + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg_1", "parameters": [ { "description": "Organization name", @@ -20576,942 +20723,70 @@ } }, { - "description": "Recipe name", - "in": "path", - "name": "recipe_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", - "in": "path", - "name": "version_id", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page reference", - "in": "query", - "name": "page-reference", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page number - zero based index", + "description": "Application name", "in": "query", - "name": "page-number", + "name": "app-name", "required": false, "schema": { "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 255, "minLength": 0, - "minimum": 0, "type": "string" } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionFileListResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "listRecipeVersionFilesFilterByOrgEnablement" - ] - }, - { - "ssa": [ - "kas" - ] - }, - { - "ssa": [ - "listRecipeVersionFiles" - ] - } - ], - "summary": "List recipe files in org", - "tags": [ - "Resource Version Files endpoints" - ], - "x-ssa-scopes": [ - "listRecipeVersionFiles", - "listRecipeVersionFilesFilterByOrgEnablement", - "kas" - ] - } - }, - "/v2/org/{org_name}/repositories/{container_name}/associated-models": { - "get": { - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Container name", - "in": "path", - "name": "container_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 1000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Sort order", - "in": "query", - "name": "sort-order", - "required": false, - "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionListResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "listModelVersions" - ] - } - ], - "summary": "List associated model versions by container", - "tags": [ - "Model Version" - ], - "x-ssa-scopes": [ - "listModelVersions", - "kas" - ] - } - }, - "/v2/org/{org_name}/repositories/{container_name}/tags/{container_tag}/associated-models": { - "get": { - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer_2", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Container name", - "in": "path", - "name": "container_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Container tag", - "in": "path", - "name": "container_tag", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 1000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Sort order", - "in": "query", - "name": "sort-order", - "required": false, - "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionListResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "listModelVersions" - ] - } - ], - "summary": "List associated model versions by container", - "tags": [ - "Model Version" - ], - "x-ssa-scopes": [ - "listModelVersions", - "kas" - ] - } - }, - "/v2/org/{org_name}/resources": { - "get": { - "description": "List recipes the user can access in the specified org", - "operationId": "listRecipesInOrg_1", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Application name", - "in": "query", - "name": "app-name", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeListResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "listRecipes" - ] - } - ], - "summary": "List recipes in org", - "tags": [ - "Resources" - ], - "x-ssa-scopes": [ - "listRecipes", - "kas" - ] - }, - "post": { - "description": "Create recipe in org", - "operationId": "createRecipeInOrg_1", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeCreateRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "createRecipe" - ] - } - ], - "summary": "Create recipe in org", - "tags": [ - "Resources" - ], - "x-ssa-scopes": [ - "createRecipe", - "kas" - ] - } - }, - "/v2/org/{org_name}/resources/{recipe_name}": { - "get": { - "description": "Get recipe in org", - "operationId": "getRecipeInOrg_1", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Recipe name", - "in": "path", - "name": "recipe_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "getRecipe" - ] - } - ], - "summary": "Get recipe in org", - "tags": [ - "Resources" - ], - "x-ssa-scopes": [ - "getRecipe", - "kas" - ] - }, - "patch": { - "description": "Update recipe details in org", - "operationId": "updateRecipeInOrg_1", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, + "maximum": 5000, "minLength": 0, + "minimum": 1, "type": "string" } }, { - "description": "Recipe name", - "in": "path", - "name": "recipe_name", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" - } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" } }, - "required": true - }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeListResponse" } } }, @@ -21572,26 +20847,22 @@ { "ssa": [ "kas", - "updateRecipe" + "listRecipes" ] } ], - "summary": "Update recipe in org", + "summary": "List recipes in org", "tags": [ "Resources" ], "x-ssa-scopes": [ - "updateRecipe", + "listRecipes", "kas" ] }, - "delete": { - "tags": [ - "Resources" - ], - "summary": "Delete resource in org", - "description": "This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).", - "operationId": "deleteResourceInOrg", + "post": { + "description": "Create recipe in org", + "operationId": "createRecipeInOrg_1", "parameters": [ { "description": "Organization name", @@ -21604,149 +20875,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Recipe name", - "in": "path", - "name": "recipe_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" } } - } - }, - "x-stackql-sdk-evidence": "ngcsdk registry/api" - } - }, - "/v2/org/{org_name}/resources/{recipe_name}/versions": { - "get": { - "description": "List recipe versions in org", - "operationId": "listRecipeVersionsInOrg_1", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Recipe name", - "in": "path", - "name": "recipe_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Sort order", - "in": "query", - "name": "sort-order", - "required": false, - "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } }, - { - "description": "Release Type", - "in": "query", - "name": "release-type", - "required": false, - "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionListResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -21807,22 +20953,24 @@ { "ssa": [ "kas", - "listRecipeVersions" + "createRecipe" ] } ], - "summary": "List recipe versions in org", + "summary": "Create recipe in org", "tags": [ - "Resource Versions" + "Resources" ], "x-ssa-scopes": [ - "listRecipeVersions", + "createRecipe", "kas" ] - }, - "post": { - "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createRecipeVersionInOrg_1", + } + }, + "/v2/org/{org_name}/resources/{recipe_name}": { + "get": { + "description": "Get recipe in org", + "operationId": "getRecipeInOrg_1", "parameters": [ { "description": "Organization name", @@ -21847,24 +20995,32 @@ "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionCreateRequest" - } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" } }, - "required": true - }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -21925,24 +21081,22 @@ { "ssa": [ "kas", - "createRecipeVersion" + "getRecipe" ] } ], - "summary": "Create recipe version in org", + "summary": "Get recipe in org", "tags": [ - "Resource Versions" + "Resources" ], "x-ssa-scopes": [ - "createRecipeVersion", + "getRecipe", "kas" ] - } - }, - "/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}": { - "get": { - "description": "Get recipe version in org", - "operationId": "getRecipeVersionInOrg_1", + }, + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg_1", "parameters": [ { "description": "Organization name", @@ -21967,26 +21121,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Version ID", - "in": "path", - "name": "version_id", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -22047,24 +21199,26 @@ { "ssa": [ "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" + "updateRecipe" ] } ], - "summary": "Get recipe version in org", + "summary": "Update recipe in org", "tags": [ - "Resource Versions" + "Resources" ], "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", + "updateRecipe", "kas" ] }, - "patch": { - "description": "Update recipe version information in org e.g. upload status", - "operationId": "updateRecipeVersionInOrg_1", + "delete": { + "tags": [ + "Resources" + ], + "summary": "Delete resource in org", + "description": "This operation deletes a resource in the org (SDK evidence: ngcsdk registry/api/resources.py remove; not declared in the published definition).", + "operationId": "deleteResourceInOrg", "parameters": [ { "description": "Organization name", @@ -22089,11 +21243,44 @@ "minLength": 0, "type": "string" } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + } + } + }, + "x-stackql-sdk-evidence": "ngcsdk registry/api" + } + }, + "/v2/org/{org_name}/resources/{recipe_name}/versions": { + "get": { + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg_1", + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } }, { - "description": "Version ID", + "description": "Recipe name", "in": "path", - "name": "version_id", + "name": "recipe_name", "required": true, "schema": { "format": "UTF-8", @@ -22103,40 +21290,90 @@ } }, { - "description": "Create zip of version content", + "description": "Page size", "in": "query", - "name": "create-zip", + "name": "page-size", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, { - "description": "Set version to latest", + "description": "Page number - zero based index", "in": "query", - "name": "set-latest", + "name": "page-number", "required": false, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" - } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "required": true - }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/RecipeVersionListResponse" } } }, @@ -22197,24 +21434,22 @@ { "ssa": [ "kas", - "updateRecipeVersion" + "listRecipeVersions" ] } ], - "summary": "Update recipe version in org", + "summary": "List recipe versions in org", "tags": [ "Resource Versions" ], "x-ssa-scopes": [ - "updateRecipeVersion", + "listRecipeVersions", "kas" ] - } - }, - "/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files": { - "get": { - "description": "List recipe files in org", - "operationId": "listRecipeFilesInOrg_1", + }, + "post": { + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg_1", "parameters": [ { "description": "Organization name", @@ -22239,66 +21474,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Version ID", - "in": "path", - "name": "version_id", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page reference", - "in": "query", - "name": "page-reference", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionCreateRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionFileListResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -22358,35 +21551,25 @@ "security": [ { "ssa": [ - "listRecipeVersionFilesFilterByOrgEnablement" - ] - }, - { - "ssa": [ - "kas" - ] - }, - { - "ssa": [ - "listRecipeVersionFiles" + "kas", + "createRecipeVersion" ] } ], - "summary": "List recipe files in org", + "summary": "Create recipe version in org", "tags": [ - "Resource Version Files endpoints" + "Resource Versions" ], "x-ssa-scopes": [ - "listRecipeVersionFiles", - "listRecipeVersionFilesFilterByOrgEnablement", + "createRecipeVersion", "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections": { + "/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}": { "get": { - "description": "List collections the user can access in the specified org and team", - "operationId": "listCollectionsInTeam", + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg_1", "parameters": [ { "description": "Organization name", @@ -22401,92 +21584,28 @@ } }, { - "description": "Team name", + "description": "Recipe name", "in": "path", - "name": "team_name", + "name": "recipe_name", "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0, "type": "string" } }, { - "description": "Order by", - "in": "query", - "name": "order-by", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "format": "UTF-8", "maxLength": 262144, "minLength": 0, "type": "string" } - }, - { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -22494,7 +21613,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CollectionListResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -22554,21 +21673,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" ] } ], - "summary": "List collections in team", + "summary": "Get recipe version in org", "tags": [ - "Collections" + "Resource Versions" ], "x-ssa-scopes": [ + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", "kas" ] }, - "post": { - "description": "Create collection in org and team", - "operationId": "createCollectionInTeam", + "patch": { + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg_1", "parameters": [ { "description": "Organization name", @@ -22583,23 +21706,53 @@ } }, { - "description": "Team name", + "description": "Recipe name", "in": "path", - "name": "team_name", + "name": "recipe_name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, "minLength": 0, "type": "string" } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CollectionCreateRequest" + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" } } }, @@ -22610,7 +21763,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CollectionResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -22671,24 +21824,24 @@ { "ssa": [ "kas", - "createCollection" + "updateRecipeVersion" ] } ], - "summary": "Create collection in org and team", + "summary": "Update recipe version in org", "tags": [ - "Collections" + "Resource Versions" ], "x-ssa-scopes": [ - "kas", - "createCollection" + "updateRecipeVersion", + "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}": { - "delete": { - "description": "Delete collection in the specified org and team", - "operationId": "deleteCollectionInTeam", + "/v2/org/{org_name}/resources/{recipe_name}/versions/{version_id}/files": { + "get": { + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg_1", "parameters": [ { "description": "Organization name", @@ -22703,21 +21856,21 @@ } }, { - "description": "Team name", + "description": "Recipe name", "in": "path", - "name": "team_name", + "name": "recipe_name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Collection name", + "description": "Version ID", "in": "path", - "name": "collection_name", + "name": "version_id", "required": true, "schema": { "format": "UTF-8", @@ -22725,6 +21878,46 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page reference", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } } ], "responses": { @@ -22732,7 +21925,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/RecipeVersionFileListResponse" } } }, @@ -22790,23 +21983,37 @@ } }, "security": [ + { + "ssa": [ + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, { "ssa": [ "kas" ] + }, + { + "ssa": [ + "listRecipeVersionFiles" + ] } ], - "summary": "Delete collection in org and team", + "summary": "List recipe files in org", "tags": [ - "Collections" + "Resource Version Files endpoints" ], "x-ssa-scopes": [ + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", "kas" ] - }, + } + }, + "/v2/org/{org_name}/team/{team_name}/collections": { "get": { - "description": "Get collection details in team", - "operationId": "getCollectionInTeam", + "description": "List collections the user can access in the specified org and team", + "operationId": "listCollectionsInTeam", "parameters": [ { "description": "Organization name", @@ -22833,11 +22040,57 @@ } }, { - "description": "Collection name", - "in": "path", - "name": "collection_name", - "required": true, + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -22868,7 +22121,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CollectionResponse" + "$ref": "#/components/schemas/CollectionListResponse" } } }, @@ -22928,23 +22181,21 @@ "security": [ { "ssa": [ - "kas", - "getCollection" + "kas" ] } ], - "summary": "Get collection in team", + "summary": "List collections in team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "getCollection", "kas" ] }, - "patch": { - "description": "Update collection details in team", - "operationId": "updateCollectionInTeam", + "post": { + "description": "Create collection in org and team", + "operationId": "createCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -22969,25 +22220,13 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CollectionUpdateRequest" + "$ref": "#/components/schemas/CollectionCreateRequest" } } }, @@ -23059,24 +22298,24 @@ { "ssa": [ "kas", - "updateCollection" + "createCollection" ] } ], - "summary": "Update collection in team", + "summary": "Create collection in org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "updateCollection", - "kas" + "kas", + "createCollection" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts": { - "patch": { - "description": "Patch collection in the specified org and team", - "operationId": "patchCollectionInTeam", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}": { + "delete": { + "description": "Delete collection in the specified org and team", + "operationId": "deleteCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -23115,16 +22354,6 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionPatchRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { @@ -23190,25 +22419,21 @@ "security": [ { "ssa": [ - "kas", - "patchCollectionArtifacts" + "kas" ] } ], - "summary": "Patch collection in org and team", + "summary": "Delete collection in org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "patchCollectionArtifacts", "kas" ] - } - }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}": { - "delete": { - "description": "Remove artifact from the specified collection in the specified org and team from another org and team", - "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", + }, + "get": { + "description": "Get collection details in team", + "operationId": "getCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -23247,64 +22472,21 @@ } }, { - "description": "Artifact organization name", - "in": "path", - "name": "artifact_org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact team name", - "in": "path", - "name": "artifact_team_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact_type", - "required": true, + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } }, { - "description": "Artifact name", - "in": "path", - "name": "artifact_name", - "required": true, + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } } ], @@ -23313,7 +22495,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/CollectionResponse" } } }, @@ -23373,111 +22555,52 @@ "security": [ { "ssa": [ - "kas" + "kas", + "getCollection" ] } ], - "summary": "Remove artifact from collection in org and team from another org and team", + "summary": "Get collection in team", "tags": [ "Collections" ], - "x-ssa-scopes": [ - "kas" - ] - }, - "put": { - "description": "Add artifact to the specified collection in the specified org and team from another org and team", - "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact organization name", - "in": "path", - "name": "artifact_org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, + "x-ssa-scopes": [ + "getCollection", + "kas" + ] + }, + "patch": { + "description": "Update collection details in team", + "operationId": "updateCollectionInTeam", + "parameters": [ { - "description": "Artifact team name", + "description": "Organization name", "in": "path", - "name": "artifact_team_name", + "name": "org_name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } }, { - "description": "Artifact type", + "description": "Team name", "in": "path", - "name": "artifact_type", + "name": "team_name", "required": true, "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } }, { - "description": "Artifact name", + "description": "Collection name", "in": "path", - "name": "artifact_name", + "name": "collection_name", "required": true, "schema": { "format": "UTF-8", @@ -23487,12 +22610,22 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/CollectionResponse" } } }, @@ -23553,24 +22686,24 @@ { "ssa": [ "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" + "updateCollection" ] } ], - "summary": "Add artifact to collection in org and team from another org and team", + "summary": "Update collection in team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", + "updateCollection", "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}": { - "delete": { - "description": "Remove artifact from the specified collection in the specified org and team from another org", - "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts": { + "patch": { + "description": "Patch collection in the specified org and team", + "operationId": "patchCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -23607,57 +22740,18 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Artifact organization name", - "in": "path", - "name": "artifact_org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact_type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", - "in": "path", - "name": "artifact_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPatchRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { @@ -23723,21 +22817,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "patchCollectionArtifacts" ] } ], - "summary": "Remove artifact from collection in org and team from another org", + "summary": "Patch collection in org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ + "patchCollectionArtifacts", "kas" ] - }, - "put": { - "description": "Add artifact to the specified collection in the specified org and team from another org", - "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/team/{artifact_team_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team from another org and team", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", "parameters": [ { "description": "Organization name", @@ -23787,6 +22885,18 @@ "type": "string" } }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact_team_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, { "description": "Artifact type", "in": "path", @@ -23890,25 +23000,21 @@ "security": [ { "ssa": [ - "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" + "kas" ] } ], - "summary": "Add artifact to collection in org and team from another org", + "summary": "Remove artifact from collection in org and team from another org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", "kas" ] - } - }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/{artifact_type}": { - "get": { - "description": "List collection artifacts the user can access in the specified org and team", - "operationId": "listCollectionArtifactsInTeam", + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team from another org and team", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", "parameters": [ { "description": "Organization name", @@ -23947,104 +23053,64 @@ } }, { - "description": "Artifact type", + "description": "Artifact organization name", "in": "path", - "name": "artifact_type", + "name": "artifact_org_name", "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1, "type": "string" } }, { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, + "description": "Artifact team name", + "in": "path", + "name": "artifact_team_name", + "required": true, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, "minLength": 0, - "minimum": 0, "type": "string" } }, { - "description": "Order by", - "in": "query", - "name": "order-by", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -24053,7 +23119,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactListResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -24114,24 +23180,24 @@ { "ssa": [ "kas", - "listCollectionArtifacts" + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], - "summary": "List collection artifacts in org and team", + "summary": "Add artifact to collection in org and team from another org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "kas", - "listCollectionArtifacts" + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share": { + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/org/{artifact_org_name}/{artifact_type}/{artifact_name}": { "delete": { - "description": "Undo publishing of collection to public", - "operationId": "undoPublishCollection", + "description": "Remove artifact from the specified collection in the specified org and team from another org", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", "parameters": [ { "description": "Organization name", @@ -24168,6 +23234,55 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact_org_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "responses": { @@ -24235,21 +23350,21 @@ "security": [ { "ssa": [ - "undoPublishCollection" + "kas" ] } ], - "summary": "Undo publishing of collection to public", + "summary": "Remove artifact from collection in org and team from another org", "tags": [ - "Publish" + "Collections" ], "x-ssa-scopes": [ - "undoPublishCollection" + "kas" ] }, "put": { - "description": "Publish collection to public", - "operationId": "publishCollection", + "description": "Add artifact to the specified collection in the specified org and team from another org", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", "parameters": [ { "description": "Organization name", @@ -24288,21 +23403,52 @@ } }, { - "description": "Indicates if guest users can download this collection", - "in": "query", - "name": "guest-can-download", + "description": "Artifact organization name", + "in": "path", + "name": "artifact_org_name", "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Indicates if collection is listed publicly", - "in": "query", - "name": "public-can-list", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { - "type": "boolean" + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -24371,23 +23517,25 @@ "security": [ { "ssa": [ - "publishCollection" + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], - "summary": "Publish collection to public", + "summary": "Add artifact to collection in org and team from another org", "tags": [ - "Publish" + "Collections" ], "x-ssa-scopes": [ - "publishCollection" + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share/product": { - "put": { - "description": "Publish collection to product", - "operationId": "publishCollectionFromRequest_1", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/artifacts/{artifact_type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org and team", + "operationId": "listCollectionArtifactsInTeam", "parameters": [ { "description": "Organization name", @@ -24408,40 +23556,131 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Collection name", - "in": "path", - "name": "collection_name", - "required": true, + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionPublishRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ArtifactListResponse" } } }, @@ -24501,24 +23740,25 @@ "security": [ { "ssa": [ - "publishCollection" + "kas", + "listCollectionArtifacts" ] } ], - "summary": "Publish collection to product", + "summary": "List collection artifacts in org and team", "tags": [ - "Publish" + "Collections" ], "x-ssa-scopes": [ - "publishCollection" + "kas", + "listCollectionArtifacts" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/org": { + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share": { "delete": { - "deprecated": true, - "description": "Revoke shared team collection with the org", - "operationId": "revokeShareCollectionInTeamWithOrg", + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection", "parameters": [ { "description": "Organization name", @@ -24622,22 +23862,21 @@ "security": [ { "ssa": [ - "kas" + "undoPublishCollection" ] } ], - "summary": "Revoke shared team collection with the org", + "summary": "Undo publishing of collection to public", "tags": [ - "Collections" + "Publish" ], "x-ssa-scopes": [ - "kas" + "undoPublishCollection" ] }, "put": { - "deprecated": true, - "description": "Share team collection with the org", - "operationId": "shareCollectionInTeamWithOrg", + "description": "Publish collection to public", + "operationId": "publishCollection", "parameters": [ { "description": "Organization name", @@ -24674,6 +23913,24 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Indicates if guest users can download this collection", + "in": "query", + "name": "guest-can-download", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "description": "Indicates if collection is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -24741,24 +23998,23 @@ "security": [ { "ssa": [ - "kas" + "publishCollection" ] } ], - "summary": "Share team collection with the org", + "summary": "Publish collection to public", "tags": [ - "Collections" + "Publish" ], "x-ssa-scopes": [ - "kas" + "publishCollection" ] } }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/team/{target_team}": { - "delete": { - "deprecated": true, - "description": "Revoke shared team collection with the specified team", - "operationId": "revokeShareCollectionInTeamWithTeam", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/share/product": { + "put": { + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest_1", "parameters": [ { "description": "Organization name", @@ -24795,20 +24051,18 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Target team name", - "in": "path", - "name": "target_team", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPublishRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { @@ -24874,22 +24128,24 @@ "security": [ { "ssa": [ - "kas" + "publishCollection" ] } ], - "summary": "Revoke shared team collection with the specified team", + "summary": "Publish collection to product", "tags": [ - "Collections" + "Publish" ], "x-ssa-scopes": [ - "kas" + "publishCollection" ] - }, - "put": { + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/org": { + "delete": { "deprecated": true, - "description": "Share team collection with the specified team", - "operationId": "shareCollectionInTeamWithTeam", + "description": "Revoke shared team collection with the org", + "operationId": "revokeShareCollectionInTeamWithOrg", "parameters": [ { "description": "Organization name", @@ -24926,18 +24182,6 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Target team name", - "in": "path", - "name": "target_team", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], "responses": { @@ -25009,19 +24253,18 @@ ] } ], - "summary": "Share team collection with the specified team", + "summary": "Revoke shared team collection with the org", "tags": [ "Collections" ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name}": { - "delete": { - "description": "Remove artifact from the specified collection in the specified org and team", - "operationId": "removeArtifactFromCollectionInTeam", + }, + "put": { + "deprecated": true, + "description": "Share team collection with the org", + "operationId": "shareCollectionInTeamWithOrg", "parameters": [ { "description": "Organization name", @@ -25058,43 +24301,6 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact_type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", - "in": "path", - "name": "artifact_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], "responses": { @@ -25166,17 +24372,20 @@ ] } ], - "summary": "Remove artifact from collection in org and team", + "summary": "Share team collection with the org", "tags": [ "Collections" ], "x-ssa-scopes": [ "kas" ] - }, - "put": { - "description": "Add artifact to the specified collection in the specified org and team", - "operationId": "addArtifactToCollectionInTeam", + } + }, + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/shares/team/{target_team}": { + "delete": { + "deprecated": true, + "description": "Revoke shared team collection with the specified team", + "operationId": "revokeShareCollectionInTeamWithTeam", "parameters": [ { "description": "Organization name", @@ -25215,34 +24424,9 @@ } }, { - "description": "Artifact type", - "in": "path", - "name": "artifact_type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", + "description": "Target team name", "in": "path", - "name": "artifact_name", + "name": "target_team", "required": true, "schema": { "format": "UTF-8", @@ -25321,22 +24505,21 @@ ] } ], - "summary": "Add artifact to collection in org and team", + "summary": "Revoke shared team collection with the specified team", "tags": [ "Collections" ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v2/org/{org_name}/team/{team_name}/files/commit": { - "post": { - "description": "Commit artifact files metadata to database given request", - "operationId": "commitArtifactFiles_1", + }, + "put": { + "deprecated": true, + "description": "Share team collection with the specified team", + "operationId": "shareCollectionInTeamWithTeam", "parameters": [ { - "description": "Org Name", + "description": "Organization name", "in": "path", "name": "org_name", "required": true, @@ -25348,7 +24531,7 @@ } }, { - "description": "Team Name", + "description": "Team name", "in": "path", "name": "team_name", "required": true, @@ -25360,34 +24543,30 @@ } }, { - "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", - "in": "query", - "name": "upload-pending", - "required": false, + "description": "Collection name", + "in": "path", + "name": "collection_name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Set version to latest", - "in": "query", - "name": "set-latest", - "required": false, + "description": "Target team name", + "in": "path", + "name": "target_team", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactFilesCommitRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { @@ -25457,19 +24636,19 @@ ] } ], - "summary": "Commit artifact files metadata to database", + "summary": "Share team collection with the specified team", "tags": [ - "ArtifactChecksum" + "Collections" ], "x-ssa-scopes": [ "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions": { - "get": { - "description": "List chart versions in team", - "operationId": "listHelmChartVersionsInTeam", + "/v2/org/{org_name}/team/{team_name}/collections/{collection_name}/{artifact_type}/{artifact_name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team", + "operationId": "removeArtifactFromCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -25496,9 +24675,9 @@ } }, { - "description": "Artifact name", + "description": "Collection name", "in": "path", - "name": "artifact_name", + "name": "collection_name", "required": true, "schema": { "format": "UTF-8", @@ -25508,56 +24687,23 @@ } }, { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Sort order", - "in": "query", - "name": "sort-order", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact_type", + "required": true, "schema": { "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" ], "format": "UTF-8", "maxLength": 262144, @@ -25566,19 +24712,11 @@ } }, { - "description": "Release Type", - "in": "query", - "name": "release-type", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -25591,7 +24729,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionListResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -25651,25 +24789,21 @@ "security": [ { "ssa": [ - "kas", - "listArtifactVersions" + "kas" ] } ], - "summary": "List chart versions in team", + "summary": "Remove artifact from collection in org and team", "tags": [ - "Helm Charts" + "Collections" ], "x-ssa-scopes": [ - "kas", - "listArtifactVersions" + "kas" ] - } - }, - "/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id}": { - "get": { - "description": "Get chart version in team", - "operationId": "getHelmChartVersionInTeam", + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team", + "operationId": "addArtifactToCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -25696,9 +24830,9 @@ } }, { - "description": "Artifact name", + "description": "Collection name", "in": "path", - "name": "artifact_name", + "name": "collection_name", "required": true, "schema": { "format": "UTF-8", @@ -25708,9 +24842,34 @@ } }, { - "description": "Version ID", + "description": "Artifact type", "in": "path", - "name": "version_id", + "name": "artifact_type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", "required": true, "schema": { "format": "UTF-8", @@ -25725,7 +24884,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -25785,26 +24944,26 @@ "security": [ { "ssa": [ - "kas", - "getArtifactVersion" + "kas" ] } ], - "summary": "Get chart version in team", + "summary": "Add artifact to collection in org and team", "tags": [ - "Helm Charts" + "Collections" ], "x-ssa-scopes": [ - "getArtifactVersion", "kas" ] - }, - "patch": { - "description": "Update chart version information in team e.g. upload status", - "operationId": "updateHelmChartVersionInTeam", + } + }, + "/v2/org/{org_name}/team/{team_name}/files/commit": { + "post": { + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles_1", "parameters": [ { - "description": "Organization name", + "description": "Org Name", "in": "path", "name": "org_name", "required": true, @@ -25816,7 +24975,7 @@ } }, { - "description": "Team name", + "description": "Team Name", "in": "path", "name": "team_name", "required": true, @@ -25828,27 +24987,21 @@ } }, { - "description": "Artifact name", - "in": "path", - "name": "artifact_name", - "required": true, + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", + "in": "query", + "name": "upload-pending", + "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } }, { - "description": "Version ID", - "in": "path", - "name": "version_id", - "required": true, + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } } ], @@ -25856,7 +25009,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" } } }, @@ -25867,7 +25020,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -25927,25 +25080,23 @@ "security": [ { "ssa": [ - "kas", - "updateArtifactVersion" + "kas" ] } ], - "summary": "Update chart version in team", + "summary": "Commit artifact files metadata to database", "tags": [ - "Helm Charts" + "ArtifactChecksum" ], "x-ssa-scopes": [ - "updateArtifactVersion", "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/models": { + "/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions": { "get": { - "description": "This operation lists models the user can access in the org/team.", - "operationId": "listModelsInTeam", + "description": "List chart versions in team", + "operationId": "listHelmChartVersionsInTeam", "parameters": [ { "description": "Organization name", @@ -25972,14 +25123,13 @@ } }, { - "deprecated": true, - "description": "Application name", - "in": "query", - "name": "app-name", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } @@ -25992,25 +25142,12 @@ "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, + "maximum": 5000, "minLength": 0, "minimum": 1, "type": "string" } }, - { - "deprecated": true, - "description": "[Deprecated] Page reference, Use page-number instead", - "in": "query", - "name": "page-reference", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, { "description": "Page number - zero based index", "in": "query", @@ -26026,21 +25163,53 @@ } }, { - "description": "Resolve labels", + "description": "Sort order", "in": "query", - "name": "resolve-labels", + "name": "sort-order", "required": false, "schema": { - "type": "boolean" + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Remove unresolved labels", + "description": "Release Type", "in": "query", - "name": "remove-unresolved-labels", + "name": "release-type", "required": false, "schema": { - "type": "boolean" + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -26049,7 +25218,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelListResponse" + "$ref": "#/components/schemas/ArtifactVersionListResponse" } } }, @@ -26110,22 +25279,24 @@ { "ssa": [ "kas", - "listModels" + "listArtifactVersions" ] } ], - "summary": "List models in team", + "summary": "List chart versions in team", "tags": [ - "Models" + "Helm Charts" ], "x-ssa-scopes": [ "kas", - "listModels" + "listArtifactVersions" ] - }, - "post": { - "description": "This operation creates a model in the org/team.", - "operationId": "createModelInTeam", + } + }, + "/v2/org/{org_name}/team/{team_name}/helm-charts/{artifact_name}/versions/{version_id}": { + "get": { + "description": "Get chart version in team", + "operationId": "getHelmChartVersionInTeam", "parameters": [ { "description": "Organization name", @@ -26150,24 +25321,38 @@ "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelCreateRequest" - } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact_name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "required": true - }, + { + "description": "Version ID", + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelResponse" + "$ref": "#/components/schemas/ArtifactVersionResponse" } } }, @@ -26228,24 +25413,22 @@ { "ssa": [ "kas", - "createModel" + "getArtifactVersion" ] } ], - "summary": "Create model in team", + "summary": "Get chart version in team", "tags": [ - "Models" + "Helm Charts" ], "x-ssa-scopes": [ - "createModel", + "getArtifactVersion", "kas" ] - } - }, - "/v2/org/{org_name}/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash": { + }, "patch": { - "description": "Stash artifact version information in team in model version upload paused state", - "operationId": "stashArtifactVersionInTeam", + "description": "Update chart version information in team e.g. upload status", + "operationId": "updateHelmChartVersionInTeam", "parameters": [ { "description": "Organization name", @@ -26278,7 +25461,7 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } @@ -26290,18 +25473,28 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 512, + "maxLength": 262144, "minLength": 0, "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ArtifactVersionResponse" } } }, @@ -26362,24 +25555,24 @@ { "ssa": [ "kas", - "updateModelVersion" + "updateArtifactVersion" ] } ], - "summary": "Stash artifact version in team", + "summary": "Update chart version in team", "tags": [ - "Model Version" + "Helm Charts" ], "x-ssa-scopes": [ - "updateModelVersion", + "updateArtifactVersion", "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/models/{model_name}": { + "/v2/org/{org_name}/team/{team_name}/models": { "get": { - "description": "This operation gets info of a model in the org/team.", - "operationId": "getModelInTeam", + "description": "This operation lists models the user can access in the org/team.", + "operationId": "listModelsInTeam", "parameters": [ { "description": "Organization name", @@ -26406,10 +25599,11 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model_name", - "required": true, + "deprecated": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, "schema": { "format": "UTF-8", "maxLength": 255, @@ -26417,6 +25611,47 @@ "type": "string" } }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "deprecated": true, + "description": "[Deprecated] Page reference, Use page-number instead", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, { "description": "Resolve labels", "in": "query", @@ -26441,7 +25676,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelResponse" + "$ref": "#/components/schemas/ModelListResponse" } } }, @@ -26502,22 +25737,22 @@ { "ssa": [ "kas", - "getModel" + "listModels" ] } ], - "summary": "Get model in team", + "summary": "List models in team", "tags": [ "Models" ], "x-ssa-scopes": [ - "getModel", - "kas" + "kas", + "listModels" ] }, - "patch": { - "description": "This operation updates details of a model in the org/team.", - "operationId": "updateModelInTeam", + "post": { + "description": "This operation creates a model in the org/team.", + "operationId": "createModelInTeam", "parameters": [ { "description": "Organization name", @@ -26542,25 +25777,13 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Model name", - "in": "path", - "name": "model_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelUpdateRequest" + "$ref": "#/components/schemas/ModelCreateRequest" } } }, @@ -26632,26 +25855,24 @@ { "ssa": [ "kas", - "updateModel" + "createModel" ] } ], - "summary": "Update model in team", + "summary": "Create model in team", "tags": [ "Models" ], "x-ssa-scopes": [ - "updateModel", + "createModel", "kas" ] - }, - "delete": { - "tags": [ - "Models" - ], - "summary": "Delete model in org/team", - "description": "This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).", - "operationId": "deleteModelInTeam", + } + }, + "/v2/org/{org_name}/team/{team_name}/models/{artifact_name}/versions/{version_id}/stash": { + "patch": { + "description": "Stash artifact version information in team in model version upload paused state", + "operationId": "stashArtifactVersionInTeam", "parameters": [ { "description": "Organization name", @@ -26678,54 +25899,9 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - } - } - }, - "x-stackql-sdk-evidence": "ngcsdk registry/api" - } - }, - "/v2/org/{org_name}/team/{team_name}/models/{model_name}/encryption-key": { - "delete": { - "description": "Disassociate encryption key from model in team and mark it for offline deletion", - "operationId": "disassociateKeyFromModelInTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org_name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", + "description": "Artifact name", "in": "path", - "name": "team_name", + "name": "artifact_name", "required": true, "schema": { "format": "UTF-8", @@ -26735,28 +25911,28 @@ } }, { - "description": "Model name", + "description": "Version ID", "in": "path", - "name": "model_name", + "name": "version_id", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 512, "minLength": 0, "type": "string" } } ], "responses": { - "202": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + "$ref": "#/components/schemas/Response" } } }, - "description": "Accepted" + "description": "OK" }, "401": { "content": { @@ -26812,23 +25988,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "updateModelVersion" ] } ], - "summary": "Disassociate encryption key from model in team", + "summary": "Stash artifact version in team", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "updateModelVersion", "kas" ] } }, - "/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/org": { - "delete": { - "description": "This operation revokes a shared team model with the org.", - "operationId": "revokeShareModelInTeamWithOrg", + "/v2/org/{org_name}/team/{team_name}/models/{model_name}": { + "get": { + "description": "This operation gets info of a model in the org/team.", + "operationId": "getModelInTeam", "parameters": [ { "description": "Organization name", @@ -26865,6 +26043,24 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -26872,7 +26068,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelResponse" } } }, @@ -26932,21 +26128,23 @@ "security": [ { "ssa": [ - "kas" + "kas", + "getModel" ] } ], - "summary": "Revoke shared team model with the org", + "summary": "Get model in team", "tags": [ "Models" ], "x-ssa-scopes": [ + "getModel", "kas" ] }, - "put": { - "description": "This operation shares a team model with the org.", - "operationId": "shareModelInTeamWithOrg", + "patch": { + "description": "This operation updates details of a model in the org/team.", + "operationId": "updateModelInTeam", "parameters": [ { "description": "Organization name", @@ -26985,12 +26183,22 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelResponse" } } }, @@ -27050,23 +26258,27 @@ "security": [ { "ssa": [ - "kas" + "kas", + "updateModel" ] } ], - "summary": "Share team model with the org", + "summary": "Update model in team", "tags": [ "Models" ], "x-ssa-scopes": [ + "updateModel", "kas" ] - } - }, - "/v2/org/{org_name}/team/{team_name}/models/{model_name}/shares/team/{target_team}": { + }, "delete": { - "description": "This operation revokes a shared team model with the team.", - "operationId": "revokeShareModelInTeamWithTeam", + "tags": [ + "Models" + ], + "summary": "Delete model in org/team", + "description": "This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).", + "operationId": "deleteModelInTeam", "parameters": [ { "description": "Organization name", @@ -27103,100 +26315,27 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Target team name", - "in": "path", - "name": "target_team", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } } ], "responses": { "200": { + "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response" } } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" + } } }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "summary": "Revoke shared team model with the specified team", - "tags": [ - "Models" - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "put": { - "description": "This operation shares a team model with the team.", - "operationId": "shareModelInTeamWithTeam", + "x-stackql-sdk-evidence": "ngcsdk registry/api" + } + }, + "/v2/org/{org_name}/team/{team_name}/models/{model_name}/encryption-key": { + "delete": { + "description": "Disassociate encryption key from model in team and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInTeam", "parameters": [ { "description": "Organization name", @@ -27233,30 +26372,18 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Target team name", - "in": "path", - "name": "target_team", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } } ], "responses": { - "200": { + "202": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" } } }, - "description": "OK" + "description": "Accepted" }, "401": { "content": { @@ -27316,7 +26443,7 @@ ] } ], - "summary": "Share team model with the specified team", + "summary": "Disassociate encryption key from model in team", "tags": [ "Models" ], diff --git a/provider-dev/downloaded/cleaned/nvcf_openapi.json b/provider-dev/downloaded/cleaned/nvcf_openapi.json index b275570..fb99db7 100644 --- a/provider-dev/downloaded/cleaned/nvcf_openapi.json +++ b/provider-dev/downloaded/cleaned/nvcf_openapi.json @@ -1857,7 +1857,7 @@ "description": "LLM-specific configuration for a model", "properties": { "routingMethod": { - "description": "Routing method for this model.", + "description": "Routing method for this model: a request router algorithm name, optionally followed by ';name=value' tuning parameters, for example pulsar;seed=stable-a. The API checks only the format. The request router checks the algorithm and parameters on each request.", "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -1905,7 +1905,7 @@ "description": "Partial update payload for LLM-specific model configuration fields.", "properties": { "routingMethod": { - "description": "Updated routing method for the model. When omitted, the existing value is preserved.", + "description": "Updated routing method for the model, in the same format as llmConfig.routingMethod on create. When omitted, the existing value is preserved.", "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -1923,6 +1923,28 @@ "string", "null" ] + }, + "tokenizer": { + "description": "Cannot be changed after creation. A request that sets it is rejected with 400.", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": [ + "string", + "null" + ] + }, + "uris": { + "description": "Cannot be changed after creation. A request that sets it is rejected with 400.", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": [ + "array", + "null" + ] } }, "type": "object" @@ -2849,7 +2871,7 @@ }, "termsOfService": "https://www.nvidia.com/en-us/legal_info", "title": "Cloud Functions", - "version": "2.256.0" + "version": "2.261.2" }, "openapi": "3.1.0", "paths": { @@ -3012,6 +3034,28 @@ ] } }, + "/v2/nvcf/authorizations/functions": { + "get": { + "description": "Lists all the function versions in an account that have been shared/authorized with/to other accounts. Response includes the nca-ids of the authorized accounts. If a function version is not shared/authorized, then it is not included in the response. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "getAuthorizedPartiesForAllFunctions", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListAuthorizedPartiesResponse" + } + } + }, + "description": "OK" + } + }, + "summary": "List Functions Authorized/Shared With Other Accounts", + "tags": [ + "Function Sharing" + ] + } + }, "/v2/nvcf/authorizations/functions/{function_id}": { "delete": { "description": "Deletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", @@ -3048,7 +3092,7 @@ ] }, "get": { - "description": "Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "description": "Lists function versions of the specified function and their corresponding authorized accounts allowed to invoke the function version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", "operationId": "getAuthorizedPartiesForAllVersions", "parameters": [ { @@ -3076,7 +3120,7 @@ "description": "OK" } }, - "summary": "List Account Authorizations For Function", + "summary": "List Function Versions with Authorized Accounts For Specified Function", "tags": [ "Function Sharing" ] diff --git a/provider-dev/downloaded/download_manifest.json b/provider-dev/downloaded/download_manifest.json index 91b41c6..f25a108 100644 --- a/provider-dev/downloaded/download_manifest.json +++ b/provider-dev/downloaded/download_manifest.json @@ -6,11 +6,14 @@ "docsPage": "https://docs.nvidia.com/nvcf/api", "openapi": "3.1.0", "title": "Cloud Functions", - "specVersion": "2.256.0" + "specVersion": "2.261.2" } }, "ngc_models.json": { "url": "https://models.ngc.nvidia.com/v3/openapi", + "fixes": { + "stable-swagger-resources-operation-ids": 0 + }, "info": { "explorer": "https://docs.ngc.nvidia.com/api/", "explorerName": "Private Artifacts (Models) API", @@ -21,6 +24,9 @@ }, "ngc_kas.json": { "url": "https://api.ngc.nvidia.com/v3/api-docs", + "fixes": { + "stable-swagger-resources-operation-ids": 21 + }, "info": { "explorer": "https://docs.ngc.nvidia.com/api/", "explorerName": "KASv1 API (Deprecated)", diff --git a/provider-dev/downloaded/ngc_kas.json b/provider-dev/downloaded/ngc_kas.json index 63277da..d34eba3 100644 --- a/provider-dev/downloaded/ngc_kas.json +++ b/provider-dev/downloaded/ngc_kas.json @@ -2841,7 +2841,7 @@ }, "/swagger-resources": { "delete": { - "operationId": "swaggerResources_6", + "operationId": "swaggerResources_delete", "responses": { "200": { "content": { @@ -3008,7 +3008,7 @@ ] }, "get": { - "operationId": "swaggerResources_4", + "operationId": "swaggerResources_get", "responses": { "200": { "content": { @@ -3175,7 +3175,7 @@ ] }, "head": { - "operationId": "swaggerResources_1", + "operationId": "swaggerResources_head", "responses": { "200": { "content": { @@ -3342,7 +3342,7 @@ ] }, "options": { - "operationId": "swaggerResources", + "operationId": "swaggerResources_options", "responses": { "200": { "content": { @@ -3509,7 +3509,7 @@ ] }, "patch": { - "operationId": "swaggerResources_2", + "operationId": "swaggerResources_patch", "responses": { "200": { "content": { @@ -3676,7 +3676,7 @@ ] }, "post": { - "operationId": "swaggerResources_3", + "operationId": "swaggerResources_post", "responses": { "200": { "content": { @@ -3843,7 +3843,7 @@ ] }, "put": { - "operationId": "swaggerResources_5", + "operationId": "swaggerResources_put", "responses": { "200": { "content": { @@ -4012,7 +4012,7 @@ }, "/swagger-resources/configuration/security": { "delete": { - "operationId": "securityConfiguration_6", + "operationId": "securityConfiguration_delete", "responses": { "200": { "content": { @@ -4176,7 +4176,7 @@ ] }, "get": { - "operationId": "securityConfiguration_4", + "operationId": "securityConfiguration_get", "responses": { "200": { "content": { @@ -4340,7 +4340,7 @@ ] }, "head": { - "operationId": "securityConfiguration_1", + "operationId": "securityConfiguration_head", "responses": { "200": { "content": { @@ -4504,7 +4504,7 @@ ] }, "options": { - "operationId": "securityConfiguration", + "operationId": "securityConfiguration_options", "responses": { "200": { "content": { @@ -4668,7 +4668,7 @@ ] }, "patch": { - "operationId": "securityConfiguration_2", + "operationId": "securityConfiguration_patch", "responses": { "200": { "content": { @@ -4832,7 +4832,7 @@ ] }, "post": { - "operationId": "securityConfiguration_3", + "operationId": "securityConfiguration_post", "responses": { "200": { "content": { @@ -4996,7 +4996,7 @@ ] }, "put": { - "operationId": "securityConfiguration_5", + "operationId": "securityConfiguration_put", "responses": { "200": { "content": { @@ -5162,7 +5162,7 @@ }, "/swagger-resources/configuration/ui": { "delete": { - "operationId": "uiConfiguration_6", + "operationId": "uiConfiguration_delete", "responses": { "200": { "content": { @@ -5326,7 +5326,7 @@ ] }, "get": { - "operationId": "uiConfiguration_4", + "operationId": "uiConfiguration_get", "responses": { "200": { "content": { @@ -5490,7 +5490,7 @@ ] }, "head": { - "operationId": "uiConfiguration_1", + "operationId": "uiConfiguration_head", "responses": { "200": { "content": { @@ -5654,7 +5654,7 @@ ] }, "options": { - "operationId": "uiConfiguration", + "operationId": "uiConfiguration_options", "responses": { "200": { "content": { @@ -5818,7 +5818,7 @@ ] }, "patch": { - "operationId": "uiConfiguration_2", + "operationId": "uiConfiguration_patch", "responses": { "200": { "content": { @@ -5982,7 +5982,7 @@ ] }, "post": { - "operationId": "uiConfiguration_3", + "operationId": "uiConfiguration_post", "responses": { "200": { "content": { @@ -6146,7 +6146,7 @@ ] }, "put": { - "operationId": "uiConfiguration_5", + "operationId": "uiConfiguration_put", "responses": { "200": { "content": { diff --git a/provider-dev/downloaded/ngc_models.json b/provider-dev/downloaded/ngc_models.json index 23c3585..08f7faa 100644 --- a/provider-dev/downloaded/ngc_models.json +++ b/provider-dev/downloaded/ngc_models.json @@ -406,6 +406,10 @@ "type": "string" } }, + "required": [ + "name", + "shortDescription" + ], "type": "object" }, "ArtifactDownloadAllResponse": { @@ -2515,17 +2519,6 @@ }, "type": "object" }, - "HealthComponent": { - "properties": { - "description": { - "type": "string" - }, - "status": { - "type": "string" - } - }, - "type": "object" - }, "HealthResponse": { "description": "This API is invoked by monitoring tools, other services and infrastructure to retrieve health status the targeted service, this is unprotected method", "properties": { @@ -2536,6 +2529,14 @@ }, "type": "object" }, + "KaizenHealthStatus": { + "properties": { + "status": { + "type": "string" + } + }, + "type": "object" + }, "KeyArtifactListResponse": { "description": "Response containing a list of artifacts associated with a key", "properties": { @@ -2626,6 +2627,11 @@ "type": "boolean" } }, + "required": [ + "governingTerms", + "licenseId", + "licenseVersion" + ], "type": "object" }, "LicenseTag": { @@ -5036,6 +5042,79 @@ }, "type": "oauth2" }, + "ngc-ssa": { + "flows": { + "clientCredentials": { + "scopes": { + "addArtifactToCollectionFromAnotherOrgOrTeam": "{scope}", + "cloneArtifact": "{scope}", + "createArtifact": "{scope}", + "createArtifactVersion": "{scope}", + "createCollection": "{scope}", + "createGpuByPci": "{scope}", + "createModel": "{scope}", + "createModelVersion": "{scope}", + "createNimMetadata": "{scope}", + "createRecipe": "{scope}", + "createRecipeVersion": "{scope}", + "deleteArtifact": "{scope}", + "deleteArtifactVersion": "{scope}", + "deleteArtifacts": "{scope}", + "deleteGpuByPci": "{scope}", + "downloadArtifactVersionFile": "{scope}", + "downloadArtifactVersionFileFilterByOrgEnablement": "{scope}", + "getArtifact": "{scope}", + "getArtifactVersion": "{scope}", + "getArtifactVersionOwners": "{scope}", + "getCollection": "{scope}", + "getModel": "{scope}", + "getModelVersion": "{scope}", + "getModelVersionFilterByOrgEnablement": "{scope}", + "getPublicFlags": "{scope}", + "getRecipe": "{scope}", + "getRecipeVersion": "{scope}", + "getRecipeVersionFilterByOrgEnablement": "{scope}", + "helmProxy": "{scope}", + "kas": "{scope}", + "listArtifactVersionFiles": "{scope}", + "listArtifactVersionFilesFilterByOrgEnablement": "{scope}", + "listArtifactVersions": "{scope}", + "listArtifacts": "{scope}", + "listCollectionArtifacts": "{scope}", + "listModelVersionFiles": "{scope}", + "listModelVersionFilesFilterByOrgEnablement": "{scope}", + "listModelVersions": "{scope}", + "listModels": "{scope}", + "listRecipeVersionFiles": "{scope}", + "listRecipeVersionFilesFilterByOrgEnablement": "{scope}", + "listRecipeVersions": "{scope}", + "listRecipes": "{scope}", + "notifyScanResult": "{scope}", + "patchCollectionArtifacts": "{scope}", + "publishArtifact": "{scope}", + "publishCollection": "{scope}", + "purgeArtifact": "{scope}", + "readGpuByPci": "{scope}", + "recreateArtifactVersionZip": "{scope}", + "signArtifactVersion": "{scope}", + "syncReleaseTypeLabels": "{scope}", + "undoPublishArtifact": "{scope}", + "undoPublishCollection": "{scope}", + "updateArtifact": "{scope}", + "updateArtifactVersion": "{scope}", + "updateCollection": "{scope}", + "updateGpuByPci": "{scope}", + "updateModel": "{scope}", + "updateModelVersion": "{scope}", + "updateRecipe": "{scope}", + "updateRecipeVersion": "{scope}", + "writeArtifacts": "{scope}" + }, + "tokenUrl": "https://osyjw74z3274aq96bfvexmu2fpcahruj9udchmlgqbs.ssa.nvidia.com/token" + } + }, + "type": "oauth2" + }, "ssa": { "description": "A bearer token in the format of a JWS and conforms to the specifications for JWT included in RFC7519. SSA attempts to support the applicable best current practices outlined in RFC8725", "flows": { @@ -5151,7 +5230,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HealthComponent" + "$ref": "#/components/schemas/KaizenHealthStatus" } } }, @@ -17519,10 +17598,10 @@ ] } }, - "/v1/org/{org-name}/models/{model-name}/shares/org": { - "delete": { - "description": "This operation revokes a shared org model with the org.", - "operationId": "revokeShareModelInOrgWithOrg", + "/v1/org/{org-name}/models/{model-name}/versions": { + "get": { + "description": "List model versions in org", + "operationId": "listModelVersionsInOrg", "parameters": [ { "description": "Organization name", @@ -17547,6 +17626,84 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "responses": { @@ -17554,7 +17711,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionListResponse" } } }, @@ -17614,21 +17771,23 @@ "security": [ { "ssa": [ - "kas" + "kas", + "listModelVersions" ] } ], - "summary": "Revoke shared org model with the org", + "summary": "List model versions in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "listModelVersions", "kas" ] }, - "put": { - "description": "This operation shares an org model with the org.", - "operationId": "shareModelInOrgWithOrg", + "post": { + "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createModelVersionInOrg", "parameters": [ { "description": "Organization name", @@ -17655,12 +17814,22 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionResponse" } } }, @@ -17720,23 +17889,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "createModelVersion" ] } ], - "summary": "Share org model with the org", + "summary": "Create model version in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ - "kas" + "kas", + "createModelVersion" ] } }, - "/v1/org/{org-name}/models/{model-name}/shares/team/{target-team}": { - "delete": { - "description": "This operation revokes a shared org model with the team.", - "operationId": "revokeShareModelInOrgWithTeam", + "/v1/org/{org-name}/models/{model-name}/versions/{version-id}": { + "get": { + "description": "Get model version in org", + "operationId": "getModelVersionInOrg", "parameters": [ { "description": "Organization name", @@ -17763,13 +17934,13 @@ } }, { - "description": "Target team name", + "description": "Version ID", "in": "path", - "name": "target-team", + "name": "version-id", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 512, "minLength": 0, "type": "string" } @@ -17780,7 +17951,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionResponse" } } }, @@ -17840,21 +18011,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "getModelVersion", + "getModelVersionFilterByOrgEnablement" ] } ], - "summary": "Revoke shared org model with the specified team", + "summary": "Get model version in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "getModelVersionFilterByOrgEnablement", + "getModelVersion", "kas" ] }, - "put": { - "description": "This operation shares an org model with the team.", - "operationId": "shareModelInOrgWithTeam", + "patch": { + "description": "Update model version information in org e.g. upload status", + "operationId": "updateModelVersionInOrg", "parameters": [ { "description": "Organization name", @@ -17881,24 +18056,52 @@ } }, { - "description": "Target team name", + "description": "Version ID", "in": "path", - "name": "target-team", + "name": "version-id", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 512, "minLength": 0, "type": "string" } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelVersionResponse" } } }, @@ -17958,23 +18161,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "updateModelVersion" ] } ], - "summary": "Share org model with the specified team", + "summary": "Update model version in org", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "updateModelVersion", "kas" ] } }, - "/v1/org/{org-name}/models/{model-name}/versions": { + "/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files": { "get": { - "description": "List model versions in org", - "operationId": "listModelVersionsInOrg", + "description": "List files of the model version in org", + "operationId": "listModeFilesInOrg", "parameters": [ { "description": "Organization name", @@ -17995,25 +18200,17 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Release Type", - "in": "query", - "name": "release-type", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -18028,53 +18225,35 @@ "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, + "maximum": 5000, "minLength": 0, "minimum": 1, "type": "string" } }, { - "description": "Page number - zero based index", + "description": "Page reference", "in": "query", - "name": "page-number", + "name": "page-reference", "required": false, "schema": { "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 1024, "minLength": 0, - "minimum": 0, "type": "string" } }, { - "description": "Sort order", + "description": "Page number - zero based index", "in": "query", - "name": "sort-order", + "name": "page-number", "required": false, "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } } @@ -18084,7 +18263,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionListResponse" + "$ref": "#/components/schemas/ModelVersionFileListResponse" } } }, @@ -18144,23 +18323,35 @@ "security": [ { "ssa": [ - "kas", - "listModelVersions" + "kas" + ] + }, + { + "ssa": [ + "listModelVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "listModelVersionFiles" ] } ], - "summary": "List model versions in org", + "summary": "List model files in org", "tags": [ - "Model Version" + "Model Version Files" ], "x-ssa-scopes": [ - "listModelVersions", + "listModelVersionFiles", + "listModelVersionFilesFilterByOrgEnablement", "kas" ] - }, - "post": { - "description": "Create a new and empty model version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createModelVersionInOrg", + } + }, + "/v1/org/{org-name}/recipes": { + "get": { + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg", "parameters": [ { "description": "Organization name", @@ -18175,34 +18366,70 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model-name", - "required": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, "schema": { "format": "UTF-8", "maxLength": 255, "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionCreateRequest" - } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, - "required": true - }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionResponse" + "$ref": "#/components/schemas/RecipeListResponse" } } }, @@ -18263,24 +18490,22 @@ { "ssa": [ "kas", - "createModelVersion" + "listRecipes" ] } ], - "summary": "Create model version in org", + "summary": "List recipes in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "kas", - "createModelVersion" + "listRecipes", + "kas" ] - } - }, - "/v1/org/{org-name}/models/{model-name}/versions/{version-id}": { - "get": { - "description": "Get model version in org", - "operationId": "getModelVersionInOrg", + }, + "post": { + "description": "Create recipe in org", + "operationId": "createRecipeInOrg", "parameters": [ { "description": "Organization name", @@ -18293,38 +18518,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Model name", - "in": "path", - "name": "model-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", - "in": "path", - "name": "version-id", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 512, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -18385,24 +18596,24 @@ { "ssa": [ "kas", - "getModelVersion", - "getModelVersionFilterByOrgEnablement" + "createRecipe" ] } ], - "summary": "Get model version in org", + "summary": "Create recipe in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "getModelVersionFilterByOrgEnablement", - "getModelVersion", + "createRecipe", "kas" ] - }, - "patch": { - "description": "Update model version information in org e.g. upload status", - "operationId": "updateModelVersionInOrg", + } + }, + "/v1/org/{org-name}/recipes/{recipe-name}": { + "get": { + "description": "Get recipe in org", + "operationId": "getRecipeInOrg", "parameters": [ { "description": "Organization name", @@ -18417,64 +18628,42 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", + "description": "Recipe name", "in": "path", - "name": "version-id", + "name": "recipe-name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 512, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Create zip of version content", + "description": "Resolve labels", "in": "query", - "name": "create-zip", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "description": "Set version to latest", + "description": "Remove unresolved labels", "in": "query", - "name": "set-latest", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelVersionUpdateRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -18535,24 +18724,22 @@ { "ssa": [ "kas", - "updateModelVersion" + "getRecipe" ] } ], - "summary": "Update model version in org", + "summary": "Get recipe in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "updateModelVersion", + "getRecipe", "kas" ] - } - }, - "/v1/org/{org-name}/models/{model-name}/versions/{version-id}/files": { - "get": { - "description": "List files of the model version in org", - "operationId": "listModeFilesInOrg", + }, + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg", "parameters": [ { "description": "Organization name", @@ -18567,21 +18754,9 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", + "description": "Recipe name", "in": "path", - "name": "version-id", + "name": "recipe-name", "required": true, "schema": { "format": "UTF-8", @@ -18589,54 +18764,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page reference", - "in": "query", - "name": "page-reference", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionFileListResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -18696,35 +18841,25 @@ "security": [ { "ssa": [ - "kas" - ] - }, - { - "ssa": [ - "listModelVersionFilesFilterByOrgEnablement" - ] - }, - { - "ssa": [ - "listModelVersionFiles" + "kas", + "updateRecipe" ] } ], - "summary": "List model files in org", + "summary": "Update recipe in org", "tags": [ - "Model Version Files" + "Resources" ], "x-ssa-scopes": [ - "listModelVersionFiles", - "listModelVersionFilesFilterByOrgEnablement", + "updateRecipe", "kas" ] } }, - "/v1/org/{org-name}/recipes": { + "/v1/org/{org-name}/recipes/{recipe-name}/versions": { "get": { - "description": "List recipes the user can access in the specified org", - "operationId": "listRecipesInOrg", + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg", "parameters": [ { "description": "Organization name", @@ -18739,13 +18874,13 @@ } }, { - "description": "Application name", - "in": "query", - "name": "app-name", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } @@ -18779,21 +18914,53 @@ } }, { - "description": "Resolve labels", + "description": "Sort order", "in": "query", - "name": "resolve-labels", + "name": "sort-order", "required": false, "schema": { - "type": "boolean" + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Remove unresolved labels", + "description": "Release Type", "in": "query", - "name": "remove-unresolved-labels", + "name": "release-type", "required": false, "schema": { - "type": "boolean" + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -18802,7 +18969,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeListResponse" + "$ref": "#/components/schemas/RecipeVersionListResponse" } } }, @@ -18863,22 +19030,22 @@ { "ssa": [ "kas", - "listRecipes" + "listRecipeVersions" ] } ], - "summary": "List recipes in org", + "summary": "List recipe versions in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "listRecipes", + "listRecipeVersions", "kas" ] }, "post": { - "description": "Create recipe in org", - "operationId": "createRecipeInOrg", + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg", "parameters": [ { "description": "Organization name", @@ -18891,13 +19058,25 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeCreateRequest" + "$ref": "#/components/schemas/RecipeVersionCreateRequest" } } }, @@ -18908,7 +19087,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -18969,24 +19148,24 @@ { "ssa": [ "kas", - "createRecipe" + "createRecipeVersion" ] } ], - "summary": "Create recipe in org", + "summary": "Create recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "createRecipe", + "createRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/recipes/{recipe-name}": { + "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}": { "get": { - "description": "Get recipe in org", - "operationId": "getRecipeInOrg", + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg", "parameters": [ { "description": "Organization name", @@ -19013,21 +19192,15 @@ } }, { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -19036,7 +19209,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -19097,22 +19270,24 @@ { "ssa": [ "kas", - "getRecipe" + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" ] } ], - "summary": "Get recipe in org", + "summary": "Get recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "getRecipe", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", "kas" ] }, "patch": { - "description": "Update recipe details in org", - "operationId": "updateRecipeInOrg", + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg", "parameters": [ { "description": "Organization name", @@ -19137,24 +19312,54 @@ "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" - } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "required": true - }, - "responses": { + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + } + } + }, + "required": true + }, + "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -19215,24 +19420,24 @@ { "ssa": [ "kas", - "updateRecipe" + "updateRecipeVersion" ] } ], - "summary": "Update recipe in org", + "summary": "Update recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "updateRecipe", + "updateRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/recipes/{recipe-name}/versions": { + "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files": { "get": { - "description": "List recipe versions in org", - "operationId": "listRecipeVersionsInOrg", + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg", "parameters": [ { "description": "Organization name", @@ -19259,80 +19464,54 @@ } }, { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1, "type": "string" } }, { - "description": "Page number - zero based index", + "description": "Page size", "in": "query", - "name": "page-number", + "name": "page-size", "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, + "maximum": 5000, "minLength": 0, - "minimum": 0, + "minimum": 1, "type": "string" } }, { - "description": "Sort order", + "description": "Page reference", "in": "query", - "name": "sort-order", + "name": "page-reference", "required": false, "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "format": "UTF-8", - "maxLength": 262144, + "maxLength": 1024, "minLength": 0, "type": "string" } }, { - "description": "Release Type", + "description": "Page number - zero based index", "in": "query", - "name": "release-type", + "name": "page-number", "required": false, "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } } @@ -19342,7 +19521,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionListResponse" + "$ref": "#/components/schemas/RecipeVersionFileListResponse" } } }, @@ -19402,23 +19581,35 @@ "security": [ { "ssa": [ - "kas", - "listRecipeVersions" + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" ] } ], - "summary": "List recipe versions in org", + "summary": "List recipe files in org", "tags": [ - "Resource Versions" + "Resource Version Files endpoints" ], "x-ssa-scopes": [ - "listRecipeVersions", + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", "kas" ] - }, - "post": { - "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createRecipeVersionInOrg", + } + }, + "/v1/org/{org-name}/repositories/{container-name}/associated-models": { + "get": { + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer", "parameters": [ { "description": "Organization name", @@ -19433,34 +19624,82 @@ } }, { - "description": "Recipe name", + "description": "Container name", "in": "path", - "name": "recipe-name", + "name": "container-name", "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, + "maximum": 1000, "minLength": 0, + "minimum": 1, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionCreateRequest" - } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } }, - "required": true - }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/ModelVersionListResponse" } } }, @@ -19521,24 +19760,24 @@ { "ssa": [ "kas", - "createRecipeVersion" + "listModelVersions" ] } ], - "summary": "Create recipe version in org", + "summary": "List associated model versions by container", "tags": [ - "Resource Versions" + "Model Version" ], "x-ssa-scopes": [ - "createRecipeVersion", + "listModelVersions", "kas" ] } }, - "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}": { + "/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { "get": { - "description": "Get recipe version in org", - "operationId": "getRecipeVersionInOrg", + "description": "List associated model versions by container", + "operationId": "listModelVersionsAssociatedByContainer_2", "parameters": [ { "description": "Organization name", @@ -19553,50 +19792,108 @@ } }, { - "description": "Recipe name", + "description": "Container name", "in": "path", - "name": "recipe-name", + "name": "container-name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } }, { - "description": "Version ID", + "description": "Container tag", "in": "path", - "name": "version-id", + "name": "container-tag", "required": true, "schema": { "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelVersionListResponse" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" }, "403": { "content": { @@ -19643,24 +19940,24 @@ { "ssa": [ "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" + "listModelVersions" ] } ], - "summary": "Get recipe version in org", + "summary": "List associated model versions by container", "tags": [ - "Resource Versions" + "Model Version" ], "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", + "listModelVersions", "kas" ] - }, - "patch": { - "description": "Update recipe version information in org e.g. upload status", - "operationId": "updateRecipeVersionInOrg", + } + }, + "/v1/org/{org-name}/resources": { + "get": { + "description": "List recipes the user can access in the specified org", + "operationId": "listRecipesInOrg_1", "parameters": [ { "description": "Organization name", @@ -19675,64 +19972,70 @@ } }, { - "description": "Recipe name", - "in": "path", - "name": "recipe-name", - "required": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, + "maximum": 5000, "minLength": 0, + "minimum": 1, "type": "string" } }, { - "description": "Version ID", - "in": "path", - "name": "version-id", - "required": true, + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } }, { - "description": "Create zip of version content", + "description": "Resolve labels", "in": "query", - "name": "create-zip", + "name": "resolve-labels", "required": false, "schema": { "type": "boolean" } }, { - "description": "Set version to latest", + "description": "Remove unresolved labels", "in": "query", - "name": "set-latest", + "name": "remove-unresolved-labels", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/RecipeListResponse" } } }, @@ -19793,24 +20096,22 @@ { "ssa": [ "kas", - "updateRecipeVersion" + "listRecipes" ] } ], - "summary": "Update recipe version in org", + "summary": "List recipes in org", "tags": [ - "Resource Versions" + "Resources" ], "x-ssa-scopes": [ - "updateRecipeVersion", + "listRecipes", "kas" ] - } - }, - "/v1/org/{org-name}/recipes/{recipe-name}/versions/{version-id}/files": { - "get": { - "description": "List recipe files in org", - "operationId": "listRecipeFilesInOrg", + }, + "post": { + "description": "Create recipe in org", + "operationId": "createRecipeInOrg_1", "parameters": [ { "description": "Organization name", @@ -19823,78 +20124,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Recipe name", - "in": "path", - "name": "recipe-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", - "in": "path", - "name": "version-id", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page reference", - "in": "query", - "name": "page-reference", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeCreateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionFileListResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -19954,35 +20201,25 @@ "security": [ { "ssa": [ - "listRecipeVersionFilesFilterByOrgEnablement" - ] - }, - { - "ssa": [ - "kas" - ] - }, - { - "ssa": [ - "listRecipeVersionFiles" + "kas", + "createRecipe" ] } ], - "summary": "List recipe files in org", + "summary": "Create recipe in org", "tags": [ - "Resource Version Files endpoints" + "Resources" ], "x-ssa-scopes": [ - "listRecipeVersionFiles", - "listRecipeVersionFilesFilterByOrgEnablement", + "createRecipe", "kas" ] } }, - "/v1/org/{org-name}/repositories/{container-name}/associated-models": { + "/v1/org/{org-name}/resources/{recipe-name}": { "get": { - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer", + "description": "Get recipe in org", + "operationId": "getRecipeInOrg_1", "parameters": [ { "description": "Organization name", @@ -19997,73 +20234,33 @@ } }, { - "description": "Container name", + "description": "Recipe name", "in": "path", - "name": "container-name", + "name": "recipe-name", "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1, "type": "string" } }, { - "description": "Page number - zero based index", + "description": "Resolve labels", "in": "query", - "name": "page-number", + "name": "resolve-labels", "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" + "type": "boolean" } }, { - "description": "Sort order", + "description": "Remove unresolved labels", "in": "query", - "name": "sort-order", + "name": "remove-unresolved-labels", "required": false, "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } } ], @@ -20072,7 +20269,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionListResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -20133,24 +20330,22 @@ { "ssa": [ "kas", - "listModelVersions" + "getRecipe" ] } ], - "summary": "List associated model versions by container", + "summary": "Get recipe in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "listModelVersions", + "getRecipe", "kas" ] - } - }, - "/v1/org/{org-name}/repositories/{container-name}/tags/{container-tag}/associated-models": { - "get": { - "description": "List associated model versions by container", - "operationId": "listModelVersionsAssociatedByContainer_2", + }, + "patch": { + "description": "Update recipe details in org", + "operationId": "updateRecipeInOrg_1", "parameters": [ { "description": "Organization name", @@ -20165,81 +20360,11 @@ } }, { - "description": "Container name", - "in": "path", - "name": "container-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Container tag", + "description": "Recipe name", "in": "path", - "name": "container-tag", + "name": "recipe-name", "required": true, "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 1000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Sort order", - "in": "query", - "name": "sort-order", - "required": false, - "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -20247,12 +20372,22 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecipeUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelVersionListResponse" + "$ref": "#/components/schemas/RecipeResponse" } } }, @@ -20313,24 +20448,24 @@ { "ssa": [ "kas", - "listModelVersions" + "updateRecipe" ] } ], - "summary": "List associated model versions by container", + "summary": "Update recipe in org", "tags": [ - "Model Version" + "Resources" ], "x-ssa-scopes": [ - "listModelVersions", + "updateRecipe", "kas" ] } }, - "/v1/org/{org-name}/resources": { + "/v1/org/{org-name}/resources/{recipe-name}/versions": { "get": { - "description": "List recipes the user can access in the specified org", - "operationId": "listRecipesInOrg_1", + "description": "List recipe versions in org", + "operationId": "listRecipeVersionsInOrg_1", "parameters": [ { "description": "Organization name", @@ -20345,13 +20480,13 @@ } }, { - "description": "Application name", - "in": "query", - "name": "app-name", - "required": false, + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } @@ -20385,21 +20520,53 @@ } }, { - "description": "Resolve labels", + "description": "Sort order", "in": "query", - "name": "resolve-labels", + "name": "sort-order", "required": false, "schema": { - "type": "boolean" + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Remove unresolved labels", + "description": "Release Type", "in": "query", - "name": "remove-unresolved-labels", + "name": "release-type", "required": false, "schema": { - "type": "boolean" + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -20408,7 +20575,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeListResponse" + "$ref": "#/components/schemas/RecipeVersionListResponse" } } }, @@ -20469,22 +20636,22 @@ { "ssa": [ "kas", - "listRecipes" + "listRecipeVersions" ] } ], - "summary": "List recipes in org", + "summary": "List recipe versions in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "listRecipes", + "listRecipeVersions", "kas" ] }, "post": { - "description": "Create recipe in org", - "operationId": "createRecipeInOrg_1", + "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", + "operationId": "createRecipeVersionInOrg_1", "parameters": [ { "description": "Organization name", @@ -20497,13 +20664,25 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Recipe name", + "in": "path", + "name": "recipe-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeCreateRequest" + "$ref": "#/components/schemas/RecipeVersionCreateRequest" } } }, @@ -20514,7 +20693,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -20575,24 +20754,24 @@ { "ssa": [ "kas", - "createRecipe" + "createRecipeVersion" ] } ], - "summary": "Create recipe in org", + "summary": "Create recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "createRecipe", + "createRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/resources/{recipe-name}": { + "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}": { "get": { - "description": "Get recipe in org", - "operationId": "getRecipeInOrg_1", + "description": "Get recipe version in org", + "operationId": "getRecipeVersionInOrg_1", "parameters": [ { "description": "Organization name", @@ -20619,21 +20798,15 @@ } }, { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -20642,7 +20815,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -20703,22 +20876,24 @@ { "ssa": [ "kas", - "getRecipe" + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement" ] } ], - "summary": "Get recipe in org", + "summary": "Get recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "getRecipe", + "getRecipeVersion", + "getRecipeVersionFilterByOrgEnablement", "kas" ] }, "patch": { - "description": "Update recipe details in org", - "operationId": "updateRecipeInOrg_1", + "description": "Update recipe version information in org e.g. upload status", + "operationId": "updateRecipeVersionInOrg_1", "parameters": [ { "description": "Organization name", @@ -20743,13 +20918,43 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Create zip of version content", + "in": "query", + "name": "create-zip", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set version to latest", + "in": "query", + "name": "set-latest", + "required": false, + "schema": { + "type": "boolean" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeUpdateRequest" + "$ref": "#/components/schemas/RecipeVersionUpdateRequest" } } }, @@ -20760,7 +20965,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeResponse" + "$ref": "#/components/schemas/RecipeVersionResponse" } } }, @@ -20821,24 +21026,24 @@ { "ssa": [ "kas", - "updateRecipe" + "updateRecipeVersion" ] } ], - "summary": "Update recipe in org", + "summary": "Update recipe version in org", "tags": [ - "Resources" + "Resource Versions" ], "x-ssa-scopes": [ - "updateRecipe", + "updateRecipeVersion", "kas" ] } }, - "/v1/org/{org-name}/resources/{recipe-name}/versions": { + "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files": { "get": { - "description": "List recipe versions in org", - "operationId": "listRecipeVersionsInOrg_1", + "description": "List recipe files in org", + "operationId": "listRecipeFilesInOrg_1", "parameters": [ { "description": "Organization name", @@ -20865,80 +21070,54 @@ } }, { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 5000, "minLength": 0, - "minimum": 1, "type": "string" } }, { - "description": "Page number - zero based index", + "description": "Page size", "in": "query", - "name": "page-number", + "name": "page-size", "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, - "maximum": 10000, + "maximum": 5000, "minLength": 0, - "minimum": 0, + "minimum": 1, "type": "string" } }, { - "description": "Sort order", + "description": "Page reference", "in": "query", - "name": "sort-order", + "name": "page-reference", "required": false, "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], "format": "UTF-8", - "maxLength": 262144, + "maxLength": 1024, "minLength": 0, "type": "string" } }, { - "description": "Release Type", + "description": "Page number - zero based index", "in": "query", - "name": "release-type", + "name": "page-number", "required": false, "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], "format": "UTF-8", "maxLength": 262144, + "maximum": 10000, "minLength": 0, + "minimum": 0, "type": "string" } } @@ -20948,7 +21127,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionListResponse" + "$ref": "#/components/schemas/RecipeVersionFileListResponse" } } }, @@ -21008,23 +21187,35 @@ "security": [ { "ssa": [ - "kas", - "listRecipeVersions" + "listRecipeVersionFilesFilterByOrgEnablement" + ] + }, + { + "ssa": [ + "kas" + ] + }, + { + "ssa": [ + "listRecipeVersionFiles" ] } ], - "summary": "List recipe versions in org", + "summary": "List recipe files in org", "tags": [ - "Resource Versions" + "Resource Version Files endpoints" ], "x-ssa-scopes": [ - "listRecipeVersions", + "listRecipeVersionFiles", + "listRecipeVersionFilesFilterByOrgEnablement", "kas" ] - }, - "post": { - "description": "Create recipe version in org. Please use the string versionId and not the deprecated numeric id. Semantic Versioning is recommended https://semver.org", - "operationId": "createRecipeVersionInOrg_1", + } + }, + "/v1/org/{org-name}/team/{team-name}/collections": { + "get": { + "description": "List collections the user can access in the specified org and team", + "operationId": "listCollectionsInTeam", "parameters": [ { "description": "Organization name", @@ -21039,147 +21230,91 @@ } }, { - "description": "Recipe name", + "description": "Team name", "in": "path", - "name": "recipe-name", + "name": "team-name", "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, "schema": { "format": "UTF-8", "maxLength": 262144, + "maximum": 5000, "minLength": 0, + "minimum": 1, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionCreateRequest" - } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" } }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "createRecipeVersion" - ] - } - ], - "summary": "Create recipe version in org", - "tags": [ - "Resource Versions" - ], - "x-ssa-scopes": [ - "createRecipeVersion", - "kas" - ] - } - }, - "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}": { - "get": { - "description": "Get recipe version in org", - "operationId": "getRecipeVersionInOrg_1", - "parameters": [ { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Recipe name", - "in": "path", - "name": "recipe-name", - "required": true, + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } }, { - "description": "Version ID", - "in": "path", - "name": "version-id", - "required": true, + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } } ], @@ -21188,7 +21323,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/CollectionListResponse" } } }, @@ -21248,25 +21383,21 @@ "security": [ { "ssa": [ - "kas", - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement" + "kas" ] } ], - "summary": "Get recipe version in org", + "summary": "List collections in team", "tags": [ - "Resource Versions" + "Collections" ], "x-ssa-scopes": [ - "getRecipeVersion", - "getRecipeVersionFilterByOrgEnablement", "kas" ] }, - "patch": { - "description": "Update recipe version information in org e.g. upload status", - "operationId": "updateRecipeVersionInOrg_1", + "post": { + "description": "Create collection in org and team", + "operationId": "createCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -21281,53 +21412,23 @@ } }, { - "description": "Recipe name", - "in": "path", - "name": "recipe-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", + "description": "Team name", "in": "path", - "name": "version-id", + "name": "team-name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } - }, - { - "description": "Create zip of version content", - "in": "query", - "name": "create-zip", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Set version to latest", - "in": "query", - "name": "set-latest", - "required": false, - "schema": { - "type": "boolean" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionUpdateRequest" + "$ref": "#/components/schemas/CollectionCreateRequest" } } }, @@ -21338,7 +21439,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecipeVersionResponse" + "$ref": "#/components/schemas/CollectionResponse" } } }, @@ -21399,24 +21500,24 @@ { "ssa": [ "kas", - "updateRecipeVersion" + "createCollection" ] } ], - "summary": "Update recipe version in org", + "summary": "Create collection in org and team", "tags": [ - "Resource Versions" + "Collections" ], "x-ssa-scopes": [ - "updateRecipeVersion", - "kas" + "kas", + "createCollection" ] } }, - "/v1/org/{org-name}/resources/{recipe-name}/versions/{version-id}/files": { - "get": { - "description": "List recipe files in org", - "operationId": "listRecipeFilesInOrg_1", + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}": { + "delete": { + "description": "Delete collection in the specified org and team", + "operationId": "deleteCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -21431,1182 +21532,9 @@ } }, { - "description": "Recipe name", - "in": "path", - "name": "recipe-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Version ID", + "description": "Team name", "in": "path", - "name": "version-id", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page reference", - "in": "query", - "name": "page-reference", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RecipeVersionFileListResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "listRecipeVersionFilesFilterByOrgEnablement" - ] - }, - { - "ssa": [ - "kas" - ] - }, - { - "ssa": [ - "listRecipeVersionFiles" - ] - } - ], - "summary": "List recipe files in org", - "tags": [ - "Resource Version Files endpoints" - ], - "x-ssa-scopes": [ - "listRecipeVersionFiles", - "listRecipeVersionFilesFilterByOrgEnablement", - "kas" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections": { - "get": { - "description": "List collections the user can access in the specified org and team", - "operationId": "listCollectionsInTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Order by", - "in": "query", - "name": "order-by", - "required": false, - "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionListResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "summary": "List collections in team", - "tags": [ - "Collections" - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "post": { - "description": "Create collection in org and team", - "operationId": "createCollectionInTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionCreateRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "createCollection" - ] - } - ], - "summary": "Create collection in org and team", - "tags": [ - "Collections" - ], - "x-ssa-scopes": [ - "kas", - "createCollection" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}": { - "delete": { - "description": "Delete collection in the specified org and team", - "operationId": "deleteCollectionInTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "summary": "Delete collection in org and team", - "tags": [ - "Collections" - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "get": { - "description": "Get collection details in team", - "operationId": "getCollectionInTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "getCollection" - ] - } - ], - "summary": "Get collection in team", - "tags": [ - "Collections" - ], - "x-ssa-scopes": [ - "getCollection", - "kas" - ] - }, - "patch": { - "description": "Update collection details in team", - "operationId": "updateCollectionInTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionUpdateRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionResponse" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "updateCollection" - ] - } - ], - "summary": "Update collection in team", - "tags": [ - "Collections" - ], - "x-ssa-scopes": [ - "updateCollection", - "kas" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts": { - "patch": { - "description": "Patch collection in the specified org and team", - "operationId": "patchCollectionInTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionPatchRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas", - "patchCollectionArtifacts" - ] - } - ], - "summary": "Patch collection in org and team", - "tags": [ - "Collections" - ], - "x-ssa-scopes": [ - "patchCollectionArtifacts", - "kas" - ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { - "delete": { - "description": "Remove artifact from the specified collection in the specified org and team from another org and team", - "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact organization name", - "in": "path", - "name": "artifact-org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact team name", - "in": "path", - "name": "artifact-team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact-type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", - "in": "path", - "name": "artifact-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "OK" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Too many requests" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Response" - } - } - }, - "description": "Internal Error" - } - }, - "security": [ - { - "ssa": [ - "kas" - ] - } - ], - "summary": "Remove artifact from collection in org and team from another org and team", - "tags": [ - "Collections" - ], - "x-ssa-scopes": [ - "kas" - ] - }, - "put": { - "description": "Add artifact to the specified collection in the specified org and team from another org and team", - "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", - "parameters": [ - { - "description": "Organization name", - "in": "path", - "name": "org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Team name", - "in": "path", - "name": "team-name", + "name": "team-name", "required": true, "schema": { "format": "UTF-8", @@ -22616,70 +21544,9 @@ } }, { - "description": "Collection name", - "in": "path", - "name": "collection-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact organization name", - "in": "path", - "name": "artifact-org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact team name", - "in": "path", - "name": "artifact-team-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact-type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", + "description": "Collection name", "in": "path", - "name": "artifact-name", + "name": "collection-name", "required": true, "schema": { "format": "UTF-8", @@ -22754,25 +21621,21 @@ "security": [ { "ssa": [ - "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" + "kas" ] } ], - "summary": "Add artifact to collection in org and team from another org and team", + "summary": "Delete collection in org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { - "delete": { - "description": "Remove artifact from the specified collection in the specified org and team from another org", - "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", + }, + "get": { + "description": "Get collection details in team", + "operationId": "getCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -22811,52 +21674,21 @@ } }, { - "description": "Artifact organization name", - "in": "path", - "name": "artifact-org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact-type", - "required": true, + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } }, { - "description": "Artifact name", - "in": "path", - "name": "artifact-name", - "required": true, + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" } } ], @@ -22865,7 +21697,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/CollectionResponse" } } }, @@ -22925,21 +21757,23 @@ "security": [ { "ssa": [ - "kas" + "kas", + "getCollection" ] } ], - "summary": "Remove artifact from collection in org and team from another org", + "summary": "Get collection in team", "tags": [ "Collections" ], "x-ssa-scopes": [ + "getCollection", "kas" ] }, - "put": { - "description": "Add artifact to the specified collection in the specified org and team from another org", - "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", + "patch": { + "description": "Update collection details in team", + "operationId": "updateCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -22976,63 +21810,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Artifact organization name", - "in": "path", - "name": "artifact-org-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact-type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", - "in": "path", - "name": "artifact-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/CollectionResponse" } } }, @@ -23093,24 +21888,24 @@ { "ssa": [ "kas", - "addArtifactToCollectionFromAnotherOrgOrTeam" + "updateCollection" ] } ], - "summary": "Add artifact to collection in org and team from another org", + "summary": "Update collection in team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "addArtifactToCollectionFromAnotherOrgOrTeam", + "updateCollection", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type}": { - "get": { - "description": "List collection artifacts the user can access in the specified org and team", - "operationId": "listCollectionArtifactsInTeam", + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts": { + "patch": { + "description": "Patch collection in the specified org and team", + "operationId": "patchCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -23131,131 +21926,40 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Collection name", - "in": "path", - "name": "collection-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact-type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Order by", - "in": "query", - "name": "order-by", - "required": false, - "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "format": "UTF-8", - "maxLength": 262144, + "maxLength": 255, "minLength": 0, "type": "string" } }, { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPatchRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactListResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -23316,24 +22020,24 @@ { "ssa": [ "kas", - "listCollectionArtifacts" + "patchCollectionArtifacts" ] } ], - "summary": "List collection artifacts in org and team", + "summary": "Patch collection in org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "kas", - "listCollectionArtifacts" + "patchCollectionArtifacts", + "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share": { + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/team/{artifact-team-name}/{artifact-type}/{artifact-name}": { "delete": { - "description": "Undo publishing of collection to public", - "operationId": "undoPublishCollection", + "description": "Remove artifact from the specified collection in the specified org and team from another org and team", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrgAndTeam", "parameters": [ { "description": "Organization name", @@ -23370,6 +22074,67 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact team name", + "in": "path", + "name": "artifact-team-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "responses": { @@ -23437,21 +22202,21 @@ "security": [ { "ssa": [ - "undoPublishCollection" + "kas" ] } ], - "summary": "Undo publishing of collection to public", + "summary": "Remove artifact from collection in org and team from another org and team", "tags": [ - "Publish" + "Collections" ], "x-ssa-scopes": [ - "undoPublishCollection" + "kas" ] }, "put": { - "description": "Publish collection to public", - "operationId": "publishCollection", + "description": "Add artifact to the specified collection in the specified org and team from another org and team", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrgAndTeam", "parameters": [ { "description": "Organization name", @@ -23490,21 +22255,64 @@ } }, { - "description": "Indicates if guest users can download this collection", - "in": "query", - "name": "guest-can-download", + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, { - "description": "Indicates if collection is listed publicly", - "in": "query", - "name": "public-can-list", - "required": false, + "description": "Artifact team name", + "in": "path", + "name": "artifact-team-name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], @@ -23573,23 +22381,25 @@ "security": [ { "ssa": [ - "publishCollection" + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], - "summary": "Publish collection to public", + "summary": "Add artifact to collection in org and team from another org and team", "tags": [ - "Publish" + "Collections" ], "x-ssa-scopes": [ - "publishCollection" + "addArtifactToCollectionFromAnotherOrgOrTeam", + "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product": { - "put": { - "description": "Publish collection to product", - "operationId": "publishCollectionFromRequest_1", + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/org/{artifact-org-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team from another org", + "operationId": "removeArtifactFromCollectionInTeamFromAnotherOrg", "parameters": [ { "description": "Organization name", @@ -23626,18 +22436,57 @@ "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CollectionPublishRequest" - } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "content": { @@ -23703,24 +22552,21 @@ "security": [ { "ssa": [ - "publishCollection" + "kas" ] } ], - "summary": "Publish collection to product", + "summary": "Remove artifact from collection in org and team from another org", "tags": [ - "Publish" + "Collections" ], "x-ssa-scopes": [ - "publishCollection" + "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org": { - "delete": { - "deprecated": true, - "description": "Revoke shared team collection with the org", - "operationId": "revokeShareCollectionInTeamWithOrg", + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team from another org", + "operationId": "addArtifactToCollectionInTeamFromAnotherOrg", "parameters": [ { "description": "Organization name", @@ -23757,6 +22603,55 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Artifact organization name", + "in": "path", + "name": "artifact-org-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } } ], "responses": { @@ -23824,22 +22719,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "addArtifactToCollectionFromAnotherOrgOrTeam" ] } ], - "summary": "Revoke shared team collection with the org", + "summary": "Add artifact to collection in org and team from another org", "tags": [ "Collections" ], "x-ssa-scopes": [ + "addArtifactToCollectionFromAnotherOrgOrTeam", "kas" ] - }, - "put": { - "deprecated": true, - "description": "Share team collection with the org", - "operationId": "shareCollectionInTeamWithOrg", + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/artifacts/{artifact-type}": { + "get": { + "description": "List collection artifacts the user can access in the specified org and team", + "operationId": "listCollectionArtifactsInTeam", "parameters": [ { "description": "Organization name", @@ -23876,6 +22774,107 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Order by", + "in": "query", + "name": "order-by", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -23883,7 +22882,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ArtifactListResponse" } } }, @@ -23943,24 +22942,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "listCollectionArtifacts" ] } ], - "summary": "Share team collection with the org", + "summary": "List collection artifacts in org and team", "tags": [ "Collections" ], "x-ssa-scopes": [ - "kas" + "kas", + "listCollectionArtifacts" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team}": { + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share": { "delete": { - "deprecated": true, - "description": "Revoke shared team collection with the specified team", - "operationId": "revokeShareCollectionInTeamWithTeam", + "description": "Undo publishing of collection to public", + "operationId": "undoPublishCollection", "parameters": [ { "description": "Organization name", @@ -23997,18 +22997,6 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Target team name", - "in": "path", - "name": "target-team", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], "responses": { @@ -24076,22 +23064,21 @@ "security": [ { "ssa": [ - "kas" + "undoPublishCollection" ] } ], - "summary": "Revoke shared team collection with the specified team", + "summary": "Undo publishing of collection to public", "tags": [ - "Collections" + "Publish" ], "x-ssa-scopes": [ - "kas" + "undoPublishCollection" ] }, "put": { - "deprecated": true, - "description": "Share team collection with the specified team", - "operationId": "shareCollectionInTeamWithTeam", + "description": "Publish collection to public", + "operationId": "publishCollection", "parameters": [ { "description": "Organization name", @@ -24130,15 +23117,21 @@ } }, { - "description": "Target team name", - "in": "path", - "name": "target-team", + "description": "Indicates if guest users can download this collection", + "in": "query", + "name": "guest-can-download", "required": true, "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" + "type": "boolean" + } + }, + { + "description": "Indicates if collection is listed publicly", + "in": "query", + "name": "public-can-list", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -24207,23 +23200,23 @@ "security": [ { "ssa": [ - "kas" + "publishCollection" ] } ], - "summary": "Share team collection with the specified team", + "summary": "Publish collection to public", "tags": [ - "Collections" + "Publish" ], "x-ssa-scopes": [ - "kas" + "publishCollection" ] } }, - "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { - "delete": { - "description": "Remove artifact from the specified collection in the specified org and team", - "operationId": "removeArtifactFromCollectionInTeam", + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/share/product": { + "put": { + "description": "Publish collection to product", + "operationId": "publishCollectionFromRequest_1", "parameters": [ { "description": "Organization name", @@ -24260,45 +23253,18 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact-type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", - "in": "path", - "name": "artifact-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionPublishRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { @@ -24364,21 +23330,24 @@ "security": [ { "ssa": [ - "kas" + "publishCollection" ] } ], - "summary": "Remove artifact from collection in org and team", + "summary": "Publish collection to product", "tags": [ - "Collections" + "Publish" ], "x-ssa-scopes": [ - "kas" + "publishCollection" ] - }, - "put": { - "description": "Add artifact to the specified collection in the specified org and team", - "operationId": "addArtifactToCollectionInTeam", + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/org": { + "delete": { + "deprecated": true, + "description": "Revoke shared team collection with the org", + "operationId": "revokeShareCollectionInTeamWithOrg", "parameters": [ { "description": "Organization name", @@ -24415,43 +23384,6 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Artifact type", - "in": "path", - "name": "artifact-type", - "required": true, - "schema": { - "enum": [ - "MODEL", - "MODEL_SCRIPT", - "HELM_CHART", - "REPOSITORY", - "COLLECTION", - "ENDPOINT", - "BLUEPRINT", - "PLAYBOOK", - "AGENT", - "API", - "SKILL" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Artifact name", - "in": "path", - "name": "artifact-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } } ], "responses": { @@ -24523,22 +23455,21 @@ ] } ], - "summary": "Add artifact to collection in org and team", + "summary": "Revoke shared team collection with the org", "tags": [ "Collections" ], "x-ssa-scopes": [ "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/files/commit": { - "post": { - "description": "Commit artifact files metadata to database given request", - "operationId": "commitArtifactFiles_1", + }, + "put": { + "deprecated": true, + "description": "Share team collection with the org", + "operationId": "shareCollectionInTeamWithOrg", "parameters": [ { - "description": "Org Name", + "description": "Organization name", "in": "path", "name": "org-name", "required": true, @@ -24550,7 +23481,7 @@ } }, { - "description": "Team Name", + "description": "Team name", "in": "path", "name": "team-name", "required": true, @@ -24562,34 +23493,18 @@ } }, { - "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", - "in": "query", - "name": "upload-pending", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Set version to latest", - "in": "query", - "name": "set-latest", - "required": false, + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactFilesCommitRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { @@ -24659,19 +23574,20 @@ ] } ], - "summary": "Commit artifact files metadata to database", + "summary": "Share team collection with the org", "tags": [ - "ArtifactChecksum" + "Collections" ], "x-ssa-scopes": [ "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions": { - "get": { - "description": "List chart versions in team", - "operationId": "listHelmChartVersionsInTeam", + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/shares/team/{target-team}": { + "delete": { + "deprecated": true, + "description": "Revoke shared team collection with the specified team", + "operationId": "revokeShareCollectionInTeamWithTeam", "parameters": [ { "description": "Organization name", @@ -24698,9 +23614,9 @@ } }, { - "description": "Artifact name", + "description": "Collection name", "in": "path", - "name": "artifact-name", + "name": "collection-name", "required": true, "schema": { "format": "UTF-8", @@ -24710,77 +23626,11 @@ } }, { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 5000, - "minLength": 0, - "minimum": 1, - "type": "string" - } - }, - { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, - "schema": { - "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, - "minLength": 0, - "minimum": 0, - "type": "string" - } - }, - { - "description": "Sort order", - "in": "query", - "name": "sort-order", - "required": false, - "schema": { - "enum": [ - "ALPHABETIC_ASC", - "ALPHABETIC_DESC", - "CREATED_DATE_ASC", - "CREATED_DATE_DESC", - "SEMVER_ASC", - "SEMVER_DESC", - "DISPLAY_NAME_ASC", - "DISPLAY_NAME_DESC", - "UPDATED_DATE_ASC", - "UPDATED_DATE_DESC", - "PUBLISHER_ASC", - "PUBLISHER_DESC", - "BUILT_BY_ASC", - "BUILT_BY_DESC", - "RESOURCE_ID_ASC", - "RESOURCE_ID_DESC" - ], - "format": "UTF-8", - "maxLength": 262144, - "minLength": 0, - "type": "string" - } - }, - { - "description": "Release Type", - "in": "query", - "name": "release-type", - "required": false, - "schema": { - "enum": [ - "BETA", - "GA", - "EA", - "FEATURE", - "PRODUCTION", - "LTSB" - ], + "description": "Target team name", + "in": "path", + "name": "target-team", + "required": true, + "schema": { "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -24793,7 +23643,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionListResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -24853,25 +23703,22 @@ "security": [ { "ssa": [ - "kas", - "listArtifactVersions" + "kas" ] } ], - "summary": "List chart versions in team", + "summary": "Revoke shared team collection with the specified team", "tags": [ - "Helm Charts" + "Collections" ], "x-ssa-scopes": [ - "kas", - "listArtifactVersions" + "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id}": { - "get": { - "description": "Get chart version in team", - "operationId": "getHelmChartVersionInTeam", + }, + "put": { + "deprecated": true, + "description": "Share team collection with the specified team", + "operationId": "shareCollectionInTeamWithTeam", "parameters": [ { "description": "Organization name", @@ -24898,9 +23745,9 @@ } }, { - "description": "Artifact name", + "description": "Collection name", "in": "path", - "name": "artifact-name", + "name": "collection-name", "required": true, "schema": { "format": "UTF-8", @@ -24910,9 +23757,9 @@ } }, { - "description": "Version ID", + "description": "Target team name", "in": "path", - "name": "version-id", + "name": "target-team", "required": true, "schema": { "format": "UTF-8", @@ -24927,7 +23774,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -24987,23 +23834,23 @@ "security": [ { "ssa": [ - "kas", - "getArtifactVersion" + "kas" ] } ], - "summary": "Get chart version in team", + "summary": "Share team collection with the specified team", "tags": [ - "Helm Charts" + "Collections" ], "x-ssa-scopes": [ - "getArtifactVersion", "kas" ] - }, - "patch": { - "description": "Update chart version information in team e.g. upload status", - "operationId": "updateHelmChartVersionInTeam", + } + }, + "/v1/org/{org-name}/team/{team-name}/collections/{collection-name}/{artifact-type}/{artifact-name}": { + "delete": { + "description": "Remove artifact from the specified collection in the specified org and team", + "operationId": "removeArtifactFromCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -25030,9 +23877,9 @@ } }, { - "description": "Artifact name", + "description": "Collection name", "in": "path", - "name": "artifact-name", + "name": "collection-name", "required": true, "schema": { "format": "UTF-8", @@ -25042,9 +23889,34 @@ } }, { - "description": "Version ID", + "description": "Artifact type", "in": "path", - "name": "version-id", + "name": "artifact-type", + "required": true, + "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", "required": true, "schema": { "format": "UTF-8", @@ -25054,22 +23926,12 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArtifactVersionResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -25129,25 +23991,21 @@ "security": [ { "ssa": [ - "kas", - "updateArtifactVersion" + "kas" ] } ], - "summary": "Update chart version in team", + "summary": "Remove artifact from collection in org and team", "tags": [ - "Helm Charts" + "Collections" ], "x-ssa-scopes": [ - "updateArtifactVersion", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/models": { - "get": { - "description": "This operation lists models the user can access in the org/team.", - "operationId": "listModelsInTeam", + }, + "put": { + "description": "Add artifact to the specified collection in the specified org and team", + "operationId": "addArtifactToCollectionInTeam", "parameters": [ { "description": "Organization name", @@ -25174,84 +24032,197 @@ } }, { - "deprecated": true, - "description": "Application name", - "in": "query", - "name": "app-name", - "required": false, + "description": "Collection name", + "in": "path", + "name": "collection-name", + "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Page size", - "in": "query", - "name": "page-size", - "required": false, + "description": "Artifact type", + "in": "path", + "name": "artifact-type", + "required": true, "schema": { + "enum": [ + "MODEL", + "MODEL_SCRIPT", + "HELM_CHART", + "REPOSITORY", + "COLLECTION", + "ENDPOINT", + "BLUEPRINT", + "PLAYBOOK", + "AGENT", + "API", + "SKILL" + ], "format": "UTF-8", "maxLength": 262144, - "maximum": 1000, "minLength": 0, - "minimum": 1, "type": "string" } }, { - "deprecated": true, - "description": "[Deprecated] Page reference, Use page-number instead", - "in": "query", - "name": "page-reference", - "required": false, + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "OK" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Too many requests" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Response" + } + } + }, + "description": "Internal Error" + } + }, + "security": [ + { + "ssa": [ + "kas" + ] + } + ], + "summary": "Add artifact to collection in org and team", + "tags": [ + "Collections" + ], + "x-ssa-scopes": [ + "kas" + ] + } + }, + "/v1/org/{org-name}/team/{team-name}/files/commit": { + "post": { + "description": "Commit artifact files metadata to database given request", + "operationId": "commitArtifactFiles_1", + "parameters": [ + { + "description": "Org Name", + "in": "path", + "name": "org-name", + "required": true, "schema": { "format": "UTF-8", - "maxLength": 1024, + "maxLength": 255, "minLength": 0, "type": "string" } }, { - "description": "Page number - zero based index", - "in": "query", - "name": "page-number", - "required": false, + "description": "Team Name", + "in": "path", + "name": "team-name", + "required": true, "schema": { "format": "UTF-8", - "maxLength": 262144, - "maximum": 10000, + "maxLength": 255, "minLength": 0, - "minimum": 0, "type": "string" } }, { - "description": "Resolve labels", + "description": "Upload pending flag - if set to true, leaves the artifact version in UPLOAD PENDING state without marking it complete", "in": "query", - "name": "resolve-labels", + "name": "upload-pending", "required": false, "schema": { "type": "boolean" } }, { - "description": "Remove unresolved labels", + "description": "Set version to latest", "in": "query", - "name": "remove-unresolved-labels", + "name": "set-latest", "required": false, "schema": { "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactFilesCommitRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelListResponse" + "$ref": "#/components/schemas/Response" } } }, @@ -25311,23 +24282,23 @@ "security": [ { "ssa": [ - "kas", - "listModels" + "kas" ] } ], - "summary": "List models in team", + "summary": "Commit artifact files metadata to database", "tags": [ - "Models" + "ArtifactChecksum" ], "x-ssa-scopes": [ - "kas", - "listModels" + "kas" ] - }, - "post": { - "description": "This operation creates a model in the org/team.", - "operationId": "createModelInTeam", + } + }, + "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions": { + "get": { + "description": "List chart versions in team", + "operationId": "listHelmChartVersionsInTeam", "parameters": [ { "description": "Organization name", @@ -25352,24 +24323,104 @@ "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelCreateRequest" - } + }, + { + "description": "Artifact name", + "in": "path", + "name": "artifact-name", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } }, - "required": true - }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 5000, + "minLength": 0, + "minimum": 1, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Sort order", + "in": "query", + "name": "sort-order", + "required": false, + "schema": { + "enum": [ + "ALPHABETIC_ASC", + "ALPHABETIC_DESC", + "CREATED_DATE_ASC", + "CREATED_DATE_DESC", + "SEMVER_ASC", + "SEMVER_DESC", + "DISPLAY_NAME_ASC", + "DISPLAY_NAME_DESC", + "UPDATED_DATE_ASC", + "UPDATED_DATE_DESC", + "PUBLISHER_ASC", + "PUBLISHER_DESC", + "BUILT_BY_ASC", + "BUILT_BY_DESC", + "RESOURCE_ID_ASC", + "RESOURCE_ID_DESC" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Release Type", + "in": "query", + "name": "release-type", + "required": false, + "schema": { + "enum": [ + "BETA", + "GA", + "EA", + "FEATURE", + "PRODUCTION", + "LTSB" + ], + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelResponse" + "$ref": "#/components/schemas/ArtifactVersionListResponse" } } }, @@ -25430,24 +24481,24 @@ { "ssa": [ "kas", - "createModel" + "listArtifactVersions" ] } ], - "summary": "Create model in team", + "summary": "List chart versions in team", "tags": [ - "Models" + "Helm Charts" ], "x-ssa-scopes": [ - "createModel", - "kas" + "kas", + "listArtifactVersions" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash": { - "patch": { - "description": "Stash artifact version information in team in model version upload paused state", - "operationId": "stashArtifactVersionInTeam", + "/v1/org/{org-name}/team/{team-name}/helm-charts/{artifact-name}/versions/{version-id}": { + "get": { + "description": "Get chart version in team", + "operationId": "getHelmChartVersionInTeam", "parameters": [ { "description": "Organization name", @@ -25480,7 +24531,7 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } @@ -25492,7 +24543,7 @@ "required": true, "schema": { "format": "UTF-8", - "maxLength": 512, + "maxLength": 262144, "minLength": 0, "type": "string" } @@ -25503,7 +24554,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ArtifactVersionResponse" } } }, @@ -25564,24 +24615,22 @@ { "ssa": [ "kas", - "updateModelVersion" + "getArtifactVersion" ] } ], - "summary": "Stash artifact version in team", + "summary": "Get chart version in team", "tags": [ - "Model Version" + "Helm Charts" ], "x-ssa-scopes": [ - "updateModelVersion", + "getArtifactVersion", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}": { - "get": { - "description": "This operation gets info of a model in the org/team.", - "operationId": "getModelInTeam", + }, + "patch": { + "description": "Update chart version information in team e.g. upload status", + "operationId": "updateHelmChartVersionInTeam", "parameters": [ { "description": "Organization name", @@ -25608,42 +24657,46 @@ } }, { - "description": "Model name", + "description": "Artifact name", "in": "path", - "name": "model-name", + "name": "artifact-name", "required": true, "schema": { "format": "UTF-8", - "maxLength": 255, + "maxLength": 262144, "minLength": 0, "type": "string" } }, { - "description": "Resolve labels", - "in": "query", - "name": "resolve-labels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Remove unresolved labels", - "in": "query", - "name": "remove-unresolved-labels", - "required": false, + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, "schema": { - "type": "boolean" + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtifactVersionUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelResponse" + "$ref": "#/components/schemas/ArtifactVersionResponse" } } }, @@ -25704,22 +24757,24 @@ { "ssa": [ "kas", - "getModel" + "updateArtifactVersion" ] } ], - "summary": "Get model in team", + "summary": "Update chart version in team", "tags": [ - "Models" + "Helm Charts" ], "x-ssa-scopes": [ - "getModel", + "updateArtifactVersion", "kas" ] - }, - "patch": { - "description": "This operation updates details of a model in the org/team.", - "operationId": "updateModelInTeam", + } + }, + "/v1/org/{org-name}/team/{team-name}/models": { + "get": { + "description": "This operation lists models the user can access in the org/team.", + "operationId": "listModelsInTeam", "parameters": [ { "description": "Organization name", @@ -25746,34 +24801,84 @@ } }, { - "description": "Model name", - "in": "path", - "name": "model-name", - "required": true, + "deprecated": true, + "description": "Application name", + "in": "query", + "name": "app-name", + "required": false, "schema": { "format": "UTF-8", "maxLength": 255, "minLength": 0, "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelUpdateRequest" - } + }, + { + "description": "Page size", + "in": "query", + "name": "page-size", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 1000, + "minLength": 0, + "minimum": 1, + "type": "string" } }, - "required": true - }, + { + "deprecated": true, + "description": "[Deprecated] Page reference, Use page-number instead", + "in": "query", + "name": "page-reference", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + { + "description": "Page number - zero based index", + "in": "query", + "name": "page-number", + "required": false, + "schema": { + "format": "UTF-8", + "maxLength": 262144, + "maximum": 10000, + "minLength": 0, + "minimum": 0, + "type": "string" + } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelResponse" + "$ref": "#/components/schemas/ModelListResponse" } } }, @@ -25834,24 +24939,22 @@ { "ssa": [ "kas", - "updateModel" + "listModels" ] } ], - "summary": "Update model in team", + "summary": "List models in team", "tags": [ "Models" ], "x-ssa-scopes": [ - "updateModel", - "kas" + "kas", + "listModels" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key": { - "delete": { - "description": "Disassociate encryption key from model in team and mark it for offline deletion", - "operationId": "disassociateKeyFromModelInTeam", + }, + "post": { + "description": "This operation creates a model in the org/team.", + "operationId": "createModelInTeam", "parameters": [ { "description": "Organization name", @@ -25876,30 +24979,28 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Model name", - "in": "path", - "name": "model-name", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelCreateRequest" + } + } + }, + "required": true + }, "responses": { - "202": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowStatusUrlResponse" + "$ref": "#/components/schemas/ModelResponse" } } }, - "description": "Accepted" + "description": "OK" }, "401": { "content": { @@ -25955,23 +25056,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "createModel" ] } ], - "summary": "Disassociate encryption key from model in team", + "summary": "Create model in team", "tags": [ "Models" ], "x-ssa-scopes": [ + "createModel", "kas" ] } }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/org": { - "delete": { - "description": "This operation revokes a shared team model with the org.", - "operationId": "revokeShareModelInTeamWithOrg", + "/v1/org/{org-name}/team/{team-name}/models/{artifact-name}/versions/{version-id}/stash": { + "patch": { + "description": "Stash artifact version information in team in model version upload paused state", + "operationId": "stashArtifactVersionInTeam", "parameters": [ { "description": "Organization name", @@ -25998,9 +25101,9 @@ } }, { - "description": "Model name", + "description": "Artifact name", "in": "path", - "name": "model-name", + "name": "artifact-name", "required": true, "schema": { "format": "UTF-8", @@ -26008,6 +25111,18 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Version ID", + "in": "path", + "name": "version-id", + "required": true, + "schema": { + "format": "UTF-8", + "maxLength": 512, + "minLength": 0, + "type": "string" + } } ], "responses": { @@ -26075,21 +25190,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "updateModelVersion" ] } ], - "summary": "Revoke shared team model with the org", + "summary": "Stash artifact version in team", "tags": [ - "Models" + "Model Version" ], "x-ssa-scopes": [ + "updateModelVersion", "kas" ] - }, - "put": { - "description": "This operation shares a team model with the org.", - "operationId": "shareModelInTeamWithOrg", + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}": { + "get": { + "description": "This operation gets info of a model in the org/team.", + "operationId": "getModelInTeam", "parameters": [ { "description": "Organization name", @@ -26126,6 +25245,24 @@ "minLength": 0, "type": "string" } + }, + { + "description": "Resolve labels", + "in": "query", + "name": "resolve-labels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Remove unresolved labels", + "in": "query", + "name": "remove-unresolved-labels", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -26133,7 +25270,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelResponse" } } }, @@ -26193,23 +25330,23 @@ "security": [ { "ssa": [ - "kas" + "kas", + "getModel" ] } ], - "summary": "Share team model with the org", + "summary": "Get model in team", "tags": [ "Models" ], "x-ssa-scopes": [ + "getModel", "kas" ] - } - }, - "/v1/org/{org-name}/team/{team-name}/models/{model-name}/shares/team/{target-team}": { - "delete": { - "description": "This operation revokes a shared team model with the team.", - "operationId": "revokeShareModelInTeamWithTeam", + }, + "patch": { + "description": "This operation updates details of a model in the org/team.", + "operationId": "updateModelInTeam", "parameters": [ { "description": "Organization name", @@ -26246,26 +25383,24 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Target team name", - "in": "path", - "name": "target-team", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/ModelResponse" } } }, @@ -26325,21 +25460,25 @@ "security": [ { "ssa": [ - "kas" + "kas", + "updateModel" ] } ], - "summary": "Revoke shared team model with the specified team", + "summary": "Update model in team", "tags": [ "Models" ], "x-ssa-scopes": [ + "updateModel", "kas" ] - }, - "put": { - "description": "This operation shares a team model with the team.", - "operationId": "shareModelInTeamWithTeam", + } + }, + "/v1/org/{org-name}/team/{team-name}/models/{model-name}/encryption-key": { + "delete": { + "description": "Disassociate encryption key from model in team and mark it for offline deletion", + "operationId": "disassociateKeyFromModelInTeam", "parameters": [ { "description": "Organization name", @@ -26376,30 +25515,18 @@ "minLength": 0, "type": "string" } - }, - { - "description": "Target team name", - "in": "path", - "name": "target-team", - "required": true, - "schema": { - "format": "UTF-8", - "maxLength": 255, - "minLength": 0, - "type": "string" - } } ], "responses": { - "200": { + "202": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Response" + "$ref": "#/components/schemas/WorkflowStatusUrlResponse" } } }, - "description": "OK" + "description": "Accepted" }, "401": { "content": { @@ -26459,7 +25586,7 @@ ] } ], - "summary": "Share team model with the specified team", + "summary": "Disassociate encryption key from model in team", "tags": [ "Models" ], diff --git a/provider-dev/downloaded/nvcf_openapi.json b/provider-dev/downloaded/nvcf_openapi.json index afb5a83..532491c 100644 --- a/provider-dev/downloaded/nvcf_openapi.json +++ b/provider-dev/downloaded/nvcf_openapi.json @@ -1857,7 +1857,7 @@ "description": "LLM-specific configuration for a model", "properties": { "routingMethod": { - "description": "Routing method for this model.", + "description": "Routing method for this model: a request router algorithm name, optionally followed by ';name=value' tuning parameters, for example pulsar;seed=stable-a. The API checks only the format. The request router checks the algorithm and parameters on each request.", "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -1905,7 +1905,7 @@ "description": "Partial update payload for LLM-specific model configuration fields.", "properties": { "routingMethod": { - "description": "Updated routing method for the model. When omitted, the existing value is preserved.", + "description": "Updated routing method for the model, in the same format as llmConfig.routingMethod on create. When omitted, the existing value is preserved.", "format": "UTF-8", "maxLength": 262144, "minLength": 0, @@ -1923,6 +1923,28 @@ "string", "null" ] + }, + "tokenizer": { + "description": "Cannot be changed after creation. A request that sets it is rejected with 400.", + "format": "UTF-8", + "maxLength": 262144, + "minLength": 0, + "type": [ + "string", + "null" + ] + }, + "uris": { + "description": "Cannot be changed after creation. A request that sets it is rejected with 400.", + "items": { + "type": "string" + }, + "maxItems": 2147483647, + "minItems": 0, + "type": [ + "array", + "null" + ] } }, "type": "object" @@ -2849,7 +2871,7 @@ }, "termsOfService": "https://www.nvidia.com/en-us/legal_info", "title": "Cloud Functions", - "version": "2.256.0" + "version": "2.261.2" }, "openapi": "3.1.0", "paths": { @@ -3012,6 +3034,28 @@ ] } }, + "/v2/nvcf/authorizations/functions": { + "get": { + "description": "Lists all the function versions in an account that have been shared/authorized with/to other accounts. Response includes the nca-ids of the authorized accounts. If a function version is not shared/authorized, then it is not included in the response. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "operationId": "getAuthorizedPartiesForAllFunctions", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListAuthorizedPartiesResponse" + } + } + }, + "description": "OK" + } + }, + "summary": "List Functions Authorized/Shared With Other Accounts", + "tags": [ + "Function Sharing" + ] + } + }, "/v2/nvcf/authorizations/functions/{functionId}": { "delete": { "description": "Deletes authorizations at the function level. This impacts all versions of the function. If a function versions has its own set of authorizations, those are not deleted. If the specified function is public, then Account Admin cannot perform this operation. Note that the response does not include any authz accounts at version level. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", @@ -3048,7 +3092,7 @@ ] }, "get": { - "description": "Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", + "description": "Lists function versions of the specified function and their corresponding authorized accounts allowed to invoke the function version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ", "operationId": "getAuthorizedPartiesForAllVersions", "parameters": [ { @@ -3076,7 +3120,7 @@ "description": "OK" } }, - "summary": "List Account Authorizations For Function", + "summary": "List Function Versions with Authorized Accounts For Specified Function", "tags": [ "Function Sharing" ] diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/catalog.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/catalog.yaml index 7a6deea..4a8b6df 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/services/catalog.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/catalog.yaml @@ -7859,6 +7859,10 @@ components: needsAcceptance: description: Indicator if user needs to accept this license type: boolean + required: + - governingTerms + - licenseId + - licenseVersion type: object CountableResource: description: Countable Resource object diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml index 1840f67..d35baea 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_deployments.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Deployments description: 'NVCF deployments and GPU specifications, cluster groups and GPU inventory, registry credentials and telemetry endpoints (source: the published NVCF OpenAPI specification; served from api.ngc.nvidia.com).' - version: 2.256.0 + version: 2.261.2 paths: /v2/nvcf/clusterGroups: get: @@ -1959,7 +1959,7 @@ components: description: LLM-specific configuration for a model properties: routingMethod: - description: Routing method for this model. + description: 'Routing method for this model: a request router algorithm name, optionally followed by '';name=value'' tuning parameters, for example pulsar;seed=stable-a. The API checks only the format. The request router checks the algorithm and parameters on each request.' format: UTF-8 maxLength: 262144 minLength: 0 @@ -2298,5 +2298,67 @@ components: delete: - $ref: '#/components/x-stackQL-resources/telemetries/methods/delete' replace: [] + vw_gpu_capacity: + name: vw_gpu_capacity + id: nvidia.nvcf_deployments.vw_gpu_capacity + title: GPU Capacity + config: + docs: + description: The GPU estate the organization can deploy NVIDIA Cloud Functions to, one row per cluster group x GPU type x instance type, flattened from the cluster_groups resource (clusterGroups[].gpus[].instanceTypes[]). + fields: + - name: cluster_group + type: string + description: Cluster group name (the backend named in a deployment specification). + - name: cluster_group_id + type: string + description: Cluster group id. + - name: gpu + type: string + description: GPU type available in the cluster group (for example L40 + H100).: null + - name: instance_type + type: string + description: Instance type name for the GPU (the instanceType of a deployment specification). + - name: instance_description + type: string + description: Vendor description of the instance type. + - name: is_default + type: boolean + description: Whether the instance type is the default for the GPU. + - name: cluster + type: string + description: Name of the first cluster in the group. + - name: nca_id + type: string + description: NVIDIA Cloud Account that owns the cluster group. + views: + select: + predicate: sqlDialect == "sqlite3" + ddl: |- + SELECT cg.name AS cluster_group, + cg.id AS cluster_group_id, + json_extract(g.value, '$.name') AS gpu, + json_extract(it.value, '$.name') AS instance_type, + json_extract(it.value, '$.description') AS instance_description, + json_extract(it.value, '$.default') AS is_default, + json_extract(cg.clusters, '$[0].name') AS cluster, + cg.nca_id + FROM nvidia.nvcf_deployments.cluster_groups cg, + json_each(cg.gpus) g, + json_each(json_extract(g.value, '$.instanceTypes')) it + fallback: + predicate: sqlDialect == "postgres" + ddl: |- + SELECT cg.name AS cluster_group, + cg.id AS cluster_group_id, + g.value->>'name' AS gpu, + it.value->>'name' AS instance_type, + it.value->>'description' AS instance_description, + (it.value->>'default')::boolean AS is_default, + cg.clusters::jsonb->0->>'name' AS cluster, + cg.nca_id + FROM nvidia.nvcf_deployments.cluster_groups cg, + jsonb_array_elements(cg.gpus::jsonb) AS g(value), + jsonb_array_elements(g.value->'instanceTypes') AS it(value) servers: - url: https://api.ngc.nvidia.com diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_functions.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_functions.yaml index 8a45f07..9674fc1 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_functions.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_functions.yaml @@ -2,11 +2,26 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Functions description: 'NVCF functions and versions, function metadata, authorizations (function sharing grants), secrets and rate limits (source: the published NVCF OpenAPI specification; management operations served from api.ngc.nvidia.com).' - version: 2.256.0 + version: 2.261.2 paths: + /v2/nvcf/authorizations/functions: + get: + description: 'Lists all the function versions in an account that have been shared/authorized with/to other accounts. Response includes the nca-ids of the authorized accounts. If a function version is not shared/authorized, then it is not included in the response. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: getAuthorizedPartiesForAllFunctions + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListAuthorizedPartiesResponse' + description: OK + summary: List Functions Authorized/Shared With Other Accounts + tags: + - Function Sharing + parameters: [] /v2/nvcf/authorizations/functions/{function_id}: get: - description: 'Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + description: 'Lists function versions of the specified function and their corresponding authorized accounts allowed to invoke the function version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' operationId: getAuthorizedPartiesForAllVersions parameters: - description: Function id @@ -25,7 +40,7 @@ paths: schema: $ref: '#/components/schemas/ListAuthorizedPartiesResponse' description: OK - summary: List Account Authorizations For Function + summary: List Function Versions with Authorized Accounts For Specified Function tags: - Function Sharing post: @@ -721,15 +736,6 @@ paths: - User Secret Management components: schemas: - AuthorizedPartiesResponse: - description: Parties authorized to invoke function - properties: - function: - $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' - description: Function with authorized parties and other details - required: - - function - type: object ListAuthorizedPartiesResponse: description: Parties authorized to invoke function properties: @@ -743,6 +749,15 @@ components: required: - functions type: object + AuthorizedPartiesResponse: + description: Parties authorized to invoke function + properties: + function: + $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' + description: Function with authorized parties and other details + required: + - function + type: object AuthorizedPartiesRequest: description: Request to associated authorized parties for a specific version or allversions of a function properties: @@ -1570,7 +1585,7 @@ components: description: LLM-specific configuration for a model properties: routingMethod: - description: Routing method for this model. + description: 'Routing method for this model: a request router algorithm name, optionally followed by '';name=value'' tuning parameters, for example pulsar;seed=stable-a. The API checks only the format. The request router checks the algorithm and parameters on each request.' format: UTF-8 maxLength: 262144 minLength: 0 @@ -1604,7 +1619,7 @@ components: description: Partial update payload for LLM-specific model configuration fields. properties: routingMethod: - description: Updated routing method for the model. When omitted, the existing value is preserved. + description: Updated routing method for the model, in the same format as llmConfig.routingMethod on create. When omitted, the existing value is preserved. format: UTF-8 maxLength: 262144 minLength: 0 @@ -1617,6 +1632,21 @@ components: minLength: 0 type: string nullable: true + tokenizer: + description: Cannot be changed after creation. A request that sets it is rejected with 400. + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + uris: + description: Cannot be changed after creation. A request that sets it is rejected with 400. + items: + type: string + maxItems: 2147483647 + minItems: 0 + type: array + nullable: true type: object StackqlFunctionIdsRows: type: object @@ -1635,6 +1665,15 @@ components: name: authorizations title: Authorizations methods: + list_all: + operation: + $ref: '#/paths/~1v2~1nvcf~1authorizations~1functions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.functions + request: + nativeCasing: camel list: operation: $ref: '#/paths/~1v2~1nvcf~1authorizations~1functions~1{function_id}/get' @@ -1739,6 +1778,7 @@ components: select: - $ref: '#/components/x-stackQL-resources/authorizations/methods/list_version' - $ref: '#/components/x-stackQL-resources/authorizations/methods/list' + - $ref: '#/components/x-stackQL-resources/authorizations/methods/list_all' insert: - $ref: '#/components/x-stackQL-resources/authorizations/methods/add_version' - $ref: '#/components/x-stackQL-resources/authorizations/methods/add' diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_invocation.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_invocation.yaml index 736be17..f5c50fe 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_invocation.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_invocation.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Invocation description: NVCF HTTP-polling invocation (pexec and status), assets and invocation assertion tokens (served from api.nvcf.nvidia.com). - version: 2.256.0 + version: 2.261.2 paths: /v2/nvcf/assets: get: diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_queues.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_queues.yaml index 3d4ad1d..930da52 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_queues.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/nvcf_queues.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Queues description: NVCF request queue details per function and version, and queue position per request (served from api.nvcf.nvidia.com). - version: 2.256.0 + version: 2.261.2 paths: /v2/nvcf/queues/functions/{function_id}: get: diff --git a/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml b/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml index ccfcae7..cdd36dd 100644 --- a/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml +++ b/provider-dev/openapi/src/nvidia/v00.00.00000/services/private_registry.yaml @@ -2411,250 +2411,6 @@ paths: org_name: description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. x-stackQL-envVar: NGC_ORG - /models/{model_name}/shares/org: - put: - description: This operation shares an org model with the org. - operationId: shareModelInOrgWithOrg - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Share org model with the org - tags: - - Models - delete: - description: This operation revokes a shared org model with the org. - operationId: revokeShareModelInOrgWithOrg - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Revoke shared org model with the org - tags: - - Models - servers: - - url: https://api.ngc.nvidia.com/v2/org/{org_name} - variables: - org_name: - description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. - x-stackQL-envVar: NGC_ORG - /models/{model_name}/shares/team/{target_team}: - put: - description: This operation shares an org model with the team. - operationId: shareModelInOrgWithTeam - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Share org model with the specified team - tags: - - Models - delete: - description: This operation revokes a shared org model with the team. - operationId: revokeShareModelInOrgWithTeam - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Revoke shared org model with the specified team - tags: - - Models - servers: - - url: https://api.ngc.nvidia.com/v2/org/{org_name} - variables: - org_name: - description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. - x-stackQL-envVar: NGC_ORG /models/{model_name}/versions: get: description: List model versions in org @@ -6428,225 +6184,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ModelListResponse' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: List models in team - tags: - - Models - post: - description: This operation creates a model in the org/team. - operationId: createModelInTeam - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ModelCreateRequest' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ModelResponse' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Create model in team - tags: - - Models - servers: - - url: https://api.ngc.nvidia.com/v2/org/{org_name} - variables: - org_name: - description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. - x-stackQL-envVar: NGC_ORG - /team/{team_name}/models/{artifact_name}/versions/{version_id}/stash: - patch: - description: Stash artifact version information in team in model version upload paused state - operationId: stashArtifactVersionInTeam - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Artifact name - in: path - name: artifact_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Version ID - in: path - name: version_id - required: true - schema: - format: UTF-8 - maxLength: 512 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Stash artifact version in team - tags: - - Model Version - servers: - - url: https://api.ngc.nvidia.com/v2/org/{org_name} - variables: - org_name: - description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. - x-stackQL-envVar: NGC_ORG - /team/{team_name}/models/{model_name}: - get: - description: This operation gets info of a model in the org/team. - operationId: getModelInTeam - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Resolve labels - in: query - name: resolve-labels - required: false - schema: - type: boolean - - description: Remove unresolved labels - in: query - name: remove-unresolved-labels - required: false - schema: - type: boolean - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ModelResponse' + $ref: '#/components/schemas/ModelListResponse' description: OK '401': content: @@ -6678,12 +6216,12 @@ paths: schema: $ref: '#/components/schemas/Response' description: Internal Error - summary: Get model in team + summary: List models in team tags: - Models - patch: - description: This operation updates details of a model in the org/team. - operationId: updateModelInTeam + post: + description: This operation creates a model in the org/team. + operationId: createModelInTeam parameters: - description: Team name in: path @@ -6694,20 +6232,11 @@ paths: maxLength: 255 minLength: 0 type: string - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/ModelUpdateRequest' + $ref: '#/components/schemas/ModelCreateRequest' required: true responses: '200': @@ -6746,52 +6275,19 @@ paths: schema: $ref: '#/components/schemas/Response' description: Internal Error - summary: Update model in team - tags: - - Models - delete: + summary: Create model in team tags: - Models - summary: Delete model in org/team - description: 'This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' - operationId: deleteModelInTeam - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - x-stackql-sdk-evidence: ngcsdk registry/api servers: - url: https://api.ngc.nvidia.com/v2/org/{org_name} variables: org_name: description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. x-stackQL-envVar: NGC_ORG - /team/{team_name}/models/{model_name}/encryption-key: - delete: - description: Disassociate encryption key from model in team and mark it for offline deletion - operationId: disassociateKeyFromModelInTeam + /team/{team_name}/models/{artifact_name}/versions/{version_id}/stash: + patch: + description: Stash artifact version information in team in model version upload paused state + operationId: stashArtifactVersionInTeam parameters: - description: Team name in: path @@ -6802,22 +6298,31 @@ paths: maxLength: 255 minLength: 0 type: string - - description: Model name + - description: Artifact name in: path - name: model_name + name: artifact_name required: true schema: format: UTF-8 maxLength: 255 minLength: 0 type: string + - description: Version ID + in: path + name: version_id + required: true + schema: + format: UTF-8 + maxLength: 512 + minLength: 0 + type: string responses: - '202': + '200': content: application/json: schema: - $ref: '#/components/schemas/WorkflowStatusUrlResponse' - description: Accepted + $ref: '#/components/schemas/Response' + description: OK '401': content: application/json: @@ -6848,19 +6353,19 @@ paths: schema: $ref: '#/components/schemas/Response' description: Internal Error - summary: Disassociate encryption key from model in team + summary: Stash artifact version in team tags: - - Models + - Model Version servers: - url: https://api.ngc.nvidia.com/v2/org/{org_name} variables: org_name: description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. x-stackQL-envVar: NGC_ORG - /team/{team_name}/models/{model_name}/shares/org: - put: - description: This operation shares a team model with the org. - operationId: shareModelInTeamWithOrg + /team/{team_name}/models/{model_name}: + get: + description: This operation gets info of a model in the org/team. + operationId: getModelInTeam parameters: - description: Team name in: path @@ -6880,12 +6385,24 @@ paths: maxLength: 255 minLength: 0 type: string + - description: Resolve labels + in: query + name: resolve-labels + required: false + schema: + type: boolean + - description: Remove unresolved labels + in: query + name: remove-unresolved-labels + required: false + schema: + type: boolean responses: '200': content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/ModelResponse' description: OK '401': content: @@ -6917,12 +6434,12 @@ paths: schema: $ref: '#/components/schemas/Response' description: Internal Error - summary: Share team model with the org + summary: Get model in team tags: - Models - delete: - description: This operation revokes a shared team model with the org. - operationId: revokeShareModelInTeamWithOrg + patch: + description: This operation updates details of a model in the org/team. + operationId: updateModelInTeam parameters: - description: Team name in: path @@ -6942,12 +6459,18 @@ paths: maxLength: 255 minLength: 0 type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModelUpdateRequest' + required: true responses: '200': content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/ModelResponse' description: OK '401': content: @@ -6979,19 +6502,15 @@ paths: schema: $ref: '#/components/schemas/Response' description: Internal Error - summary: Revoke shared team model with the org + summary: Update model in team tags: - Models - servers: - - url: https://api.ngc.nvidia.com/v2/org/{org_name} - variables: - org_name: - description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. - x-stackQL-envVar: NGC_ORG - /team/{team_name}/models/{model_name}/shares/team/{target_team}: - put: - description: This operation shares a team model with the team. - operationId: shareModelInTeamWithTeam + delete: + tags: + - Models + summary: Delete model in org/team + description: 'This operation deletes a model in the org/team (SDK evidence: ngcsdk registry/api/models.py remove_model; not declared in the published definition).' + operationId: deleteModelInTeam parameters: - description: Team name in: path @@ -7011,58 +6530,24 @@ paths: maxLength: 255 minLength: 0 type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string responses: '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': content: application/json: schema: $ref: '#/components/schemas/Response' - description: Internal Error - summary: Share team model with the specified team - tags: - - Models + x-stackql-sdk-evidence: ngcsdk registry/api + servers: + - url: https://api.ngc.nvidia.com/v2/org/{org_name} + variables: + org_name: + description: NGC organization name (the org id shown in the NGC console under Organization -> Setup, e.g. 0123456789ab). Resolved from the NGC_ORG environment variable when it is set (x-stackQL-envVar - the same variable the NVIDIA Terraform provider reads); otherwise it must be supplied on every org-scoped query as WHERE org_name = '<org>'. A WHERE value always takes precedence over the environment. + x-stackQL-envVar: NGC_ORG + /team/{team_name}/models/{model_name}/encryption-key: delete: - description: This operation revokes a shared team model with the team. - operationId: revokeShareModelInTeamWithTeam + description: Disassociate encryption key from model in team and mark it for offline deletion + operationId: disassociateKeyFromModelInTeam parameters: - description: Team name in: path @@ -7082,22 +6567,13 @@ paths: maxLength: 255 minLength: 0 type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string responses: - '200': + '202': content: application/json: schema: - $ref: '#/components/schemas/Response' - description: OK + $ref: '#/components/schemas/WorkflowStatusUrlResponse' + description: Accepted '401': content: application/json: @@ -7128,7 +6604,7 @@ paths: schema: $ref: '#/components/schemas/Response' description: Internal Error - summary: Revoke shared team model with the specified team + summary: Disassociate encryption key from model in team tags: - Models servers: @@ -16595,6 +16071,9 @@ components: description: Short description of the artifact maxLength: 255 type: string + required: + - name + - shortDescription type: object ArtifactResponse: description: Response to artifact request @@ -17647,6 +17126,10 @@ components: needsAcceptance: description: Indicator if user needs to accept this license type: boolean + required: + - governingTerms + - licenseId + - licenseVersion type: object Dataset: properties: @@ -19258,89 +18741,6 @@ components: - $ref: '#/components/x-stackQL-resources/model_encryption_keys/methods/delete_by_team' - $ref: '#/components/x-stackQL-resources/model_encryption_keys/methods/delete' replace: [] - model_shares: - id: nvidia.private_registry.model_shares - name: model_shares - title: Model Shares - methods: - add_org: - operation: - $ref: '#/paths/~1models~1{model_name}~1shares~1org/put' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - remove_org: - operation: - $ref: '#/paths/~1models~1{model_name}~1shares~1org/delete' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - add_team: - operation: - $ref: '#/paths/~1models~1{model_name}~1shares~1team~1{target_team}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - remove_team: - operation: - $ref: '#/paths/~1models~1{model_name}~1shares~1team~1{target_team}/delete' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - add_org_by_team: - operation: - $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1org/put' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - remove_org_by_team: - operation: - $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1org/delete' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - add_team_by_team: - operation: - $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1team~1{target_team}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - remove_team_by_team: - operation: - $ref: '#/paths/~1team~1{team_name}~1models~1{model_name}~1shares~1team~1{target_team}/delete' - response: - mediaType: application/json - openAPIDocKey: '200' - request: - nativeCasing: camel - sqlVerbs: - select: [] - insert: - - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_team_by_team' - - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_team' - - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_org_by_team' - - $ref: '#/components/x-stackQL-resources/model_shares/methods/add_org' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_team_by_team' - - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_team' - - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_org_by_team' - - $ref: '#/components/x-stackQL-resources/model_shares/methods/remove_org' - replace: [] model_files: id: nvidia.private_registry.model_files name: model_files diff --git a/provider-dev/scripts/build_inventory.mjs b/provider-dev/scripts/build_inventory.mjs index 7f3dfbf..715acf0 100644 --- a/provider-dev/scripts/build_inventory.mjs +++ b/provider-dev/scripts/build_inventory.mjs @@ -258,6 +258,10 @@ function classifyNvcf(p, verb, op) { const versioned = p.includes('/versions/'); const res = 'authorizations'; const m = versioned ? '_version' : ''; + // NVCF 2.261.2: every function with its authorized parties in one read + // ({functions: [AuthorizedPartiesByFunctionDto]} - the same row shape as + // the per-function read, no path parameters, so a unique signature) + if (p === '/v2/nvcf/authorizations/functions' && verb === 'get') return r('nvcf_functions', res, 'list_all', 'select', 'the sharing audit across the fleet: one row per function with its authorized parties'); if (verb === 'get') return r('nvcf_functions', res, `list${m}`, 'select'); if (verb === 'post') return r('nvcf_functions', res, `set${m}`, 'replace', 'POST replaces the full authorized-party list - grants-as-data set operation'); if (p.endsWith('/add')) return r('nvcf_functions', res, `add${m}`, 'insert'); diff --git a/provider-dev/scripts/graphql_merge.mjs b/provider-dev/scripts/graphql_merge.mjs new file mode 100644 index 0000000..83ef3bd --- /dev/null +++ b/provider-dev/scripts/graphql_merge.mjs @@ -0,0 +1,262 @@ +#!/usr/bin/env node + +// Merges hand-authored GraphQL operations (provider-dev/source-graphql/) into +// the GENERATED provider under provider-dev/openapi/src/<provider>/<version>/. +// Runs as the last step of `make generate`; idempotent (previous shims are +// stripped before re-adding, keyed on the `x-stackql-protocol: graphql` +// marker). A no-op when the manifest lists no ops. +// +// For each op fragment this writes: +// paths./graphql?resource=<resource>.post +// an operation carrying x-stackQL-graphQL (url, httpVerb, query +// template, responseSelection, cursor) plus the declared parameters +// and a response schema built from `selection` + `rowSchema` (so +// DESCRIBE and the docs Fields table show the row columns) +// components.x-stackQL-resources.<resource> +// a select-only resource whose `list` method refs the operation; +// objectKey is the dotted form of `selection` +// +// Why the odd path key: stackql builds the request URL from `servers` + the +// path key (x-stackQL-graphQL.url is informational), and OpenAPI needs a +// unique path+verb per operation. Every GraphQL query is a POST to one +// endpoint, so each op gets `/graphql?resource=<name>`; the GraphQL reader +// strips the query string before the request goes on the wire. +// +// Services named in manifest.services that do not exist yet are created +// from scratch (and registered in provider.yaml); REST services are edited +// in place. See the skill's graphql-merge.md for the fragment format. +// +// Usage: node provider-dev/scripts/graphql_merge.mjs [--provider-dir DIR] [--source-dir DIR] [--verbose] + +import { readFileSync, writeFileSync, existsSync, readdirSync } from 'fs'; +import { resolve, join } from 'path'; +import yaml from 'js-yaml'; +import { PROVIDER_NAME, PROVIDER_DIR, REPO_ROOT } from './lib/spec_helpers.mjs'; + +function getArg(flag, fallback) { + const i = process.argv.indexOf(flag); + return i === -1 ? fallback : (process.argv[i + 1] ?? fallback); +} +const providerDir = resolve(getArg('--provider-dir', PROVIDER_DIR)); +const sourceDir = resolve(getArg('--source-dir', join(REPO_ROOT, 'provider-dev', 'source-graphql'))); +const verbose = process.argv.includes('--verbose'); + +const PROTOCOL_MARKER = 'x-stackql-protocol'; +const VERSION = providerDir.split(/[\\/]/).pop(); + +const loadYaml = (p) => yaml.load(readFileSync(p, 'utf8')); +const dumpYaml = (doc) => yaml.dump(doc, { lineWidth: -1, noRefs: true, quotingType: "'" }); + +const manifestPath = join(sourceDir, 'manifest.yaml'); +if (!existsSync(manifestPath)) { + console.log('graphql_merge: no manifest.yaml - nothing to merge'); + process.exit(0); +} +const manifest = loadYaml(manifestPath) || {}; +if (!Array.isArray(manifest.ops) || manifest.ops.length === 0) { + console.log('graphql_merge: manifest lists no ops - nothing to merge'); + process.exit(0); +} +const graphqlUrl = manifest.graphql_url; +if (!graphqlUrl) throw new Error('manifest.yaml: graphql_url is required'); +if (!existsSync(join(providerDir, 'provider.yaml'))) throw new Error(`${providerDir}/provider.yaml not found - run generate first`); + +// --- helpers --------------------------------------------------------------- + +// '$.data.repository.discussions.nodes' -> ['data','repository','discussions','nodes'] +function selectionSegments(selection) { + if (!selection.startsWith('$.')) throw new Error(`selection must start with '$.': ${selection}`); + const segs = selection.slice(2).split('.'); + if (segs.some((s) => !s || /[\[\]]/.test(s))) { + throw new Error(`selection must be a plain dotted path without [*] (it is appended automatically): ${selection}`); + } + return segs; +} + +// Nested response schema for a selection path: every segment is an object +// property, the last one is the row array; a page_info cursor adds a +// pageInfo sibling next to the row array. +function buildResponseSchema(selection, rowSchema, cursor) { + const segs = selectionSegments(selection); + const leafName = segs[segs.length - 1]; + const connection = { type: 'object', properties: { [leafName]: { type: 'array', items: rowSchema } } }; + if (cursor && cursor.strategy === 'page_info') { + connection.properties.pageInfo = { type: 'object', properties: { endCursor: { type: 'string' }, hasNextPage: { type: 'boolean' } } }; + } + let schema = connection; + for (let i = segs.length - 2; i >= 0; i--) schema = { type: 'object', properties: { [segs[i]]: schema } }; + return schema; +} + +function buildCursor(op) { + if (!op.cursor) { + // Single page: any-sdk's default cursor_after strategy treats a failed + // jsonpath lookup as EOF, so point it at a key that never exists. + return { jsonPath: '$.data.__no_cursor' }; + } + const c = { ...op.cursor }; + if (c.strategy === 'page_info' && !c.terminateOnJsonPath) throw new Error(`${op.resource}: page_info cursor requires terminateOnJsonPath`); + if (c.strategy === 'keyset' && !c.format) throw new Error(`${op.resource}: keyset cursor requires format`); + if (!c.jsonPath && c.strategy !== 'offset') throw new Error(`${op.resource}: cursor.jsonPath is required for strategy ${c.strategy || 'cursor_after'}`); + return c; +} + +function buildOperation(op) { + const operation = { + operationId: `graphql/${op.service}/${op.resource}/list`, + summary: op.title, + description: op.description, + 'x-stackQL-graphQL': { + url: graphqlUrl, + httpVerb: 'POST', + responseSelection: { jsonPath: `${op.selection}[*]` }, + cursor: buildCursor(op), + query: op.query + }, + [PROTOCOL_MARKER]: 'graphql', + parameters: op.parameters ?? [], + responses: { + 200: { + description: 'Response', + content: { 'application/json': { schema: buildResponseSchema(op.selection, op.rowSchema, op.cursor) } } + } + } + }; + if (manifest.docs_url) operation.externalDocs = { description: `${PROVIDER_NAME} GraphQL API documentation`, url: manifest.docs_url }; + return operation; +} + +function buildResource(op, pathKey) { + const methodRef = `#/components/x-stackQL-resources/${op.resource}/methods/list`; + const method = { + operation: { $ref: `#/paths/${pathKey.replace(/\//g, '~1')}/post` }, + response: { mediaType: 'application/json', openAPIDocKey: '200', objectKey: op.selection }, + [PROTOCOL_MARKER]: 'graphql' + }; + if (op.transform) method.response.transform = op.transform; // runs before responseSelection + return { + id: `${PROVIDER_NAME}.${op.service}.${op.resource}`, + name: op.resource, + title: op.title, + methods: { list: method }, + sqlVerbs: { select: [{ $ref: methodRef }], insert: [], update: [], delete: [], replace: [] } + }; +} + +function newServiceDoc(serviceName, meta, servers) { + return { + openapi: '3.0.3', + info: { title: meta.title ?? `${serviceName} API`, description: meta.description ?? '', version: VERSION }, + servers, + paths: {}, + components: { schemas: {}, 'x-stackQL-resources': {} } + }; +} + +// Remove every operation / resource carrying the protocol marker so a re-run +// starts from the REST-only state of the service. +function stripPreviousShims(doc) { + let stripped = 0; + for (const [p, pathItem] of Object.entries(doc.paths ?? {})) { + for (const [verb, op] of Object.entries(pathItem ?? {})) { + if (op && typeof op === 'object' && op[PROTOCOL_MARKER] === 'graphql') { delete pathItem[verb]; stripped++; } + } + if (pathItem && Object.keys(pathItem).length === 0) delete doc.paths[p]; + } + const resources = doc.components?.['x-stackQL-resources'] ?? {}; + for (const [name, res] of Object.entries(resources)) { + const methods = res?.methods ?? {}; + const names = Object.keys(methods); + if (names.length && names.every((m) => methods[m]?.[PROTOCOL_MARKER] === 'graphql')) delete resources[name]; + } + return stripped; +} + +// --- main ------------------------------------------------------------------ + +const ops = manifest.ops.map((rel) => { + const op = loadYaml(join(sourceDir, rel)); + for (const k of ['service', 'resource', 'title', 'description', 'selection', 'query', 'rowSchema']) { + if (!op[k]) throw new Error(`${rel}: missing required field '${k}'`); + } + if (/\n|\\/.test(op.query.replace(/\n/g, ' ').match(/"[^"]*"/g)?.join('') || '')) throw new Error(`${rel}: GraphQL string literals must not contain newlines or backslashes`); + return op; +}); + +const byService = new Map(); +for (const op of ops) { + if (!byService.has(op.service)) byService.set(op.service, []); + byService.get(op.service).push(op); +} + +const providerYamlPath = join(providerDir, 'provider.yaml'); +const provider = loadYaml(providerYamlPath); +let providerChanged = false; +const summary = []; + +// servers for GraphQL-only services: the manifest's `servers`, else the first +// REST service's, else the GraphQL URL's origin +let restServers = manifest.servers || null; +if (!restServers) { + const servicesDir = join(providerDir, 'services'); + const restFile = existsSync(servicesDir) ? readdirSync(servicesDir).filter((f) => f.endsWith('.yaml')).sort()[0] : null; + restServers = restFile ? loadYaml(join(servicesDir, restFile)).servers : [{ url: new URL(graphqlUrl).origin }]; +} + +for (const [serviceName, serviceOps] of byService) { + const servicePath = join(providerDir, 'services', `${serviceName}.yaml`); + let doc; + let created = false; + if (existsSync(servicePath)) { + doc = loadYaml(servicePath); + } else { + const meta = manifest.services?.[serviceName]; + if (!meta) throw new Error(`service '${serviceName}' does not exist under ${providerDir}/services and is not declared in manifest.services`); + doc = newServiceDoc(serviceName, meta, restServers); + created = true; + } + doc.paths ??= {}; + doc.components ??= {}; + doc.components['x-stackQL-resources'] ??= {}; + + const stripped = stripPreviousShims(doc); + + for (const op of serviceOps) { + const pathKey = `/graphql?resource=${op.resource}`; + if (doc.paths[pathKey]?.post) throw new Error(`${serviceName}: path ${pathKey} already has a non-GraphQL POST operation`); + if (doc.components['x-stackQL-resources'][op.resource]) throw new Error(`${serviceName}: resource '${op.resource}' already exists as a REST resource - pick another name`); + doc.paths[pathKey] = { post: buildOperation(op) }; + doc.components['x-stackQL-resources'][op.resource] = buildResource(op, pathKey); + if (verbose) console.log(`${serviceName}: shimmed ${op.resource} (${pathKey})`); + } + + const sorted = {}; + for (const k of Object.keys(doc.components['x-stackQL-resources']).sort()) sorted[k] = doc.components['x-stackQL-resources'][k]; + doc.components['x-stackQL-resources'] = sorted; + + writeFileSync(servicePath, dumpYaml(doc)); + + if (!provider.providerServices?.[serviceName]) { + const meta = manifest.services?.[serviceName] ?? {}; + provider.providerServices[serviceName] = { + id: `${serviceName}:${VERSION}`, + name: serviceName, + preferred: true, + service: { $ref: `${PROVIDER_NAME}/${VERSION}/services/${serviceName}.yaml` }, + title: meta.title ?? `${serviceName} API`, + version: VERSION, + description: meta.description ?? '' + }; + providerChanged = true; + } + summary.push({ service: serviceName, created, stripped, added: serviceOps.map((o) => o.resource) }); +} + +if (providerChanged) { + const sortedServices = {}; + for (const k of Object.keys(provider.providerServices).sort()) sortedServices[k] = provider.providerServices[k]; + provider.providerServices = sortedServices; + writeFileSync(providerYamlPath, dumpYaml(provider)); +} + +console.log(JSON.stringify({ providerDir, providerYamlUpdated: providerChanged, services: summary }, null, 2)); diff --git a/provider-dev/scripts/harvest_ngc_spec.mjs b/provider-dev/scripts/harvest_ngc_spec.mjs index 0e0854f..7f874c2 100644 --- a/provider-dev/scripts/harvest_ngc_spec.mjs +++ b/provider-dev/scripts/harvest_ngc_spec.mjs @@ -116,12 +116,35 @@ const manifest = fs.existsSync(manifestPath) : { files: {} }; manifest.files = manifest.files || {}; +// Fix class: stable operationIds for the /swagger-resources family. springdoc +// numbers the seven same-named handlers of each of these paths +// (swaggerResources, securityConfiguration, uiConfiguration) with _N +// suffixes in reflection order, which differs between server instances - two +// fetches minutes apart on 2026-10-16 swapped the suffixes among the verbs, +// so a byte pin would drift on bytes that carry no meaning (the family is a +// service-infra skip). Verb-keyed ids are deterministic. Counted per file. +function stabilizeSwaggerResourceIds(spec) { + let n = 0; + for (const [p, item] of Object.entries(spec.paths || {})) { + if (!p.startsWith('/swagger-resources')) continue; + for (const [verb, op] of Object.entries(item)) { + if (!op || typeof op !== 'object' || typeof op.operationId !== 'string') continue; + const base = op.operationId.replace(/_\d+$/, ''); + const stable = `${base}_${verb}`; + if (op.operationId !== stable) { op.operationId = stable; n++; } + } + } + return n; +} + for (const [file, { text, url, name, spec }] of outputs) { + const fixes = { 'stable-swagger-resources-operation-ids': stabilizeSwaggerResourceIds(spec) }; // written as canonical JSON (sorted keys): the definition servers // serialise maps in a non-deterministic order between fetches fs.writeFileSync(path.join(downloadDir, file), canonicalJson(spec)); manifest.files[file] = { url, + fixes, info: { explorer: EXPLORER_URL, explorerName: name, diff --git a/provider-dev/scripts/lib/spec_helpers.mjs b/provider-dev/scripts/lib/spec_helpers.mjs new file mode 100644 index 0000000..ec4f366 --- /dev/null +++ b/provider-dev/scripts/lib/spec_helpers.mjs @@ -0,0 +1,108 @@ +// The single source of provider constants shared by the pipeline scripts +// (graphql_merge.mjs) and the test harnesses (tests/integration/harness.mjs, +// probe.mjs), plus the generic helpers for walking a generated provider. +// +// The nvidia build is a three-input hybrid (the published NVCF OpenAPI +// document, the harvested NGC definitions and the ngcsdk response classes), +// so the fetch / clean / inventory steps live in their own scripts +// (fetch_nvcf_spec, harvest_ngc_spec, harvest_ngc_sdk_schemas, pin_specs, +// clean_specs, build_inventory) and the per-operation classification is the +// endpoint inventory (lib/inventory.mjs), not a rule table here. Everything +// that is constant across those scripts is defined once below. + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import yaml from 'js-yaml'; + +// --------------------------------------------------------------------------- +// Provider constants +// --------------------------------------------------------------------------- + +export const PROVIDER_NAME = 'nvidia'; +export const PROVIDER_TITLE = 'NVIDIA NGC'; + +// The two fixed hosts. Management, registry, catalog and organization +// operations are served from the NGC gateway; queue details and the +// HTTP-polling invocation from the NVCF host (carried per service by the +// inventory). API_BASE_URL is the primary host, the name the template's +// harness uses. +export const NGC_HOST = 'https://api.ngc.nvidia.com'; +export const NVCF_HOST = 'https://api.nvcf.nvidia.com'; +export const API_BASE_URL = NGC_HOST; +export const HOSTS = [NGC_HOST, NVCF_HOST]; + +// The scoping server variable (org-scoped registry and organization paths +// ride a path-level server template carrying it) and the environment +// variable it resolves from - the NVIDIA Terraform provider's name. +export const SCOPE_PARAM = 'org_name'; +export const SCOPE_ENV_VAR = 'NGC_ORG'; + +// The credential the provider reads (bearer), the Terraform provider's name. +export const AUTH_ENV_VAR = 'NGC_API_KEY'; + +export const HTTP_VERBS = ['get', 'post', 'put', 'patch', 'delete']; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..'); +export const REPO_ROOT = repoRoot; +export const PROVIDER_DIR = path.join(repoRoot, 'provider-dev', 'openapi', 'src', PROVIDER_NAME, 'v00.00.00000'); +export const SERVICES_DIR = path.join(PROVIDER_DIR, 'services'); + +// --------------------------------------------------------------------------- +// Generic utilities +// --------------------------------------------------------------------------- + +export function camelToSnake(s) { + return String(s) + .replace(/([a-z0-9])([A-Z])/g, '$1_$2') + .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') + .replace(/[-. ]/g, '_') + .toLowerCase(); +} + +export function pathParams(pathKey) { + return (pathKey.match(/\{[^}]+\}/g) || []).map((s) => s.slice(1, -1)); +} + +export function loadSpec(file) { + const text = fs.readFileSync(file, 'utf8'); + return /\.ya?ml$/i.test(file) ? yaml.load(text) : JSON.parse(text); +} + +export function dumpYaml(doc) { + return yaml.dump(doc, { lineWidth: -1, noRefs: true }); +} + +// --------------------------------------------------------------------------- +// Generated-provider helpers (graphql_merge.mjs, tests) +// --------------------------------------------------------------------------- + +export function listServiceFiles(dir = SERVICES_DIR) { + if (!fs.existsSync(dir)) return []; + return fs.readdirSync(dir).filter((f) => f.endsWith('.yaml')).sort(); +} + +// Iterate every method of every resource in a generated service document: +// fn(method, {resource, resourceName, methodName, verb, pathKey, operation}) +export function forEachMethod(doc, fn) { + const resources = doc.components?.['x-stackQL-resources'] || {}; + for (const [resourceName, resource] of Object.entries(resources)) { + for (const [methodName, method] of Object.entries(resource.methods || {})) { + const ref = method.operation?.$ref || ''; + const m = ref.match(/^#\/paths\/(.+)\/(get|post|put|patch|delete)$/); + const pathKey = m ? m[1].replace(/~1/g, '/').replace(/~0/g, '~') : null; + const verb = m ? m[2] : null; + const operation = pathKey ? doc.paths?.[pathKey]?.[verb] : null; + fn(method, { resource, resourceName, methodName, verb, pathKey, operation }); + } + } +} + +// The SQL verb a method is bound to (EXEC when absent from every sqlVerbs list) +export function sqlVerbOf(resource, resourceName, methodName) { + const ref = `#/components/x-stackQL-resources/${resourceName}/methods/${methodName}`; + for (const [verb, list] of Object.entries(resource.sqlVerbs || {})) { + if ((list || []).some((x) => x.$ref === ref)) return verb; + } + return 'exec'; +} diff --git a/provider-dev/scripts/map_operations.mjs b/provider-dev/scripts/map_operations.mjs index bfec2d8..f712a86 100644 --- a/provider-dev/scripts/map_operations.mjs +++ b/provider-dev/scripts/map_operations.mjs @@ -22,7 +22,10 @@ // (service, resource, verb), exec excluded // Fails without writing on any violation. // -// Usage: node provider-dev/scripts/map_operations.mjs [--out PATH] +// Usage: node provider-dev/scripts/map_operations.mjs [--out PATH] [--report] +// --report prints every derived mapping (service, operation, path, verb -> +// resource.method [sqlVerb] objectKey) and writes nothing - the way to +// design inventory rules. import fs from 'fs'; import path from 'path'; @@ -107,6 +110,24 @@ if (errors.length > 0) { process.exit(1); } +// --------------------------------------------------------------------------- +// --report: print the derived mapping table and stop (nothing written) +// --------------------------------------------------------------------------- + +if (process.argv.includes('--report')) { + const width = (i) => Math.max(...rows.slice(1).map((r) => String(r[i] || '').length)); + const w = { service: width(col.filename), op: width(col.operationId), path: width(col.path) }; + for (const row of rows.slice(1)) { + const service = row[col.filename].replace(/\.yaml$/, ''); + const target = row[col.stackql_resource_name] + ? `${row[col.stackql_resource_name]}.${row[col.stackql_method_name]} [${row[col.stackql_verb]}]${row[col.stackql_object_key] ? ' ' + row[col.stackql_object_key] : ''}` + : '(unmapped)'; + console.log(`${service.padEnd(w.service)} ${row[col.verb].toUpperCase().padEnd(6)} ${row[col.path].padEnd(w.path)} ${row[col.operationId].padEnd(w.op)} -> ${target}`); + } + console.log(`${rows.length - 1} operations (report only - nothing written)`); + process.exit(0); +} + // --------------------------------------------------------------------------- // Mapping diff against the committed CSV (review aid; the CI drift gate is // the enforcement) diff --git a/provider-dev/source-graphql/manifest.yaml b/provider-dev/source-graphql/manifest.yaml new file mode 100644 index 0000000..a6f8aa6 --- /dev/null +++ b/provider-dev/source-graphql/manifest.yaml @@ -0,0 +1,32 @@ +# GraphQL operations merged into the generated nvidia provider by +# provider-dev/scripts/graphql_merge.mjs (the last step of `make generate`). +# With `ops` empty the merge is a no-op - delete this directory if the vendor +# has no GraphQL API. +# +# Each entry under `ops` names a fragment in ./ops/ with: service, resource, +# title, description, parameters (plain OpenAPI parameter objects), selection +# (a plain dotted JSONPath to the row array, no [*]), optional cursor +# (strategy: cursor_after | page_info | keyset | offset, jsonPath, +# terminateOnJsonPath, format, pageSize), optional transform (a response +# transform that runs before the selection), query (Go template: every WHERE +# parameter is {{ .name }}, the cursor is spliced at {{ .cursor }}, a pushed +# LIMIT arrives as {{ .limit }}) and rowSchema (so DESCRIBE and the docs show +# real columns). GraphQL string literals must not contain newlines or +# backslashes. See the stackql-provider-development skill, graphql-merge.md, +# for a worked example (GitHub star history with page_info paging). +# +# Selection criteria: surfaces that are GraphQL-only (no REST equivalent) or +# where GraphQL returns data the REST endpoint cannot. + +graphql_url: https://api.example.com/graphql +docs_url: https://docs.example.com/graphql + +# Services that exist only because of GraphQL (created from scratch by the +# merge). Ops targeting an existing REST service are added alongside it. +services: {} + # discussions: + # title: discussions API + # description: Discussions for a repository - GraphQL only. + +ops: [] + # - ops/star_history.yaml diff --git a/provider-dev/source-graphql/ops/.gitkeep b/provider-dev/source-graphql/ops/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/provider-dev/source/catalog.yaml b/provider-dev/source/catalog.yaml index 7e4154a..3876f21 100644 --- a/provider-dev/source/catalog.yaml +++ b/provider-dev/source/catalog.yaml @@ -7874,6 +7874,10 @@ components: needsAcceptance: description: Indicator if user needs to accept this license type: boolean + required: + - governingTerms + - licenseId + - licenseVersion type: object CountableResource: description: Countable Resource object diff --git a/provider-dev/source/nvcf_deployments.yaml b/provider-dev/source/nvcf_deployments.yaml index 0b54c14..22e5f8f 100644 --- a/provider-dev/source/nvcf_deployments.yaml +++ b/provider-dev/source/nvcf_deployments.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Deployments description: 'NVCF deployments and GPU specifications, cluster groups and GPU inventory, registry credentials and telemetry endpoints (source: the published NVCF OpenAPI specification; served from api.ngc.nvidia.com).' - version: 2.256.0 + version: 2.261.2 paths: /v2/nvcf/clusterGroups: get: @@ -1959,7 +1959,7 @@ components: description: LLM-specific configuration for a model properties: routingMethod: - description: Routing method for this model. + description: 'Routing method for this model: a request router algorithm name, optionally followed by '';name=value'' tuning parameters, for example pulsar;seed=stable-a. The API checks only the format. The request router checks the algorithm and parameters on each request.' format: UTF-8 maxLength: 262144 minLength: 0 diff --git a/provider-dev/source/nvcf_functions.yaml b/provider-dev/source/nvcf_functions.yaml index 86135a6..0e53f2d 100644 --- a/provider-dev/source/nvcf_functions.yaml +++ b/provider-dev/source/nvcf_functions.yaml @@ -2,11 +2,26 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Functions description: 'NVCF functions and versions, function metadata, authorizations (function sharing grants), secrets and rate limits (source: the published NVCF OpenAPI specification; management operations served from api.ngc.nvidia.com).' - version: 2.256.0 + version: 2.261.2 paths: + /v2/nvcf/authorizations/functions: + get: + description: 'Lists all the function versions in an account that have been shared/authorized with/to other accounts. Response includes the nca-ids of the authorized accounts. If a function version is not shared/authorized, then it is not included in the response. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + operationId: getAuthorizedPartiesForAllFunctions + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListAuthorizedPartiesResponse' + description: OK + summary: List Functions Authorized/Shared With Other Accounts + tags: + - Function Sharing + parameters: [] /v2/nvcf/authorizations/functions/{function_id}: get: - description: 'Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' + description: 'Lists function versions of the specified function and their corresponding authorized accounts allowed to invoke the function version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the ''authorize_clients'' scope in the HTTP Authorization header ' operationId: getAuthorizedPartiesForAllVersions parameters: - description: Function id @@ -25,7 +40,7 @@ paths: schema: $ref: '#/components/schemas/ListAuthorizedPartiesResponse' description: OK - summary: List Account Authorizations For Function + summary: List Function Versions with Authorized Accounts For Specified Function tags: - Function Sharing post: @@ -721,15 +736,6 @@ paths: - User Secret Management components: schemas: - AuthorizedPartiesResponse: - description: Parties authorized to invoke function - properties: - function: - $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' - description: Function with authorized parties and other details - required: - - function - type: object ListAuthorizedPartiesResponse: description: Parties authorized to invoke function properties: @@ -743,6 +749,15 @@ components: required: - functions type: object + AuthorizedPartiesResponse: + description: Parties authorized to invoke function + properties: + function: + $ref: '#/components/schemas/AuthorizedPartiesByFunctionDto' + description: Function with authorized parties and other details + required: + - function + type: object AuthorizedPartiesRequest: description: Request to associated authorized parties for a specific version or allversions of a function properties: @@ -1570,7 +1585,7 @@ components: description: LLM-specific configuration for a model properties: routingMethod: - description: Routing method for this model. + description: 'Routing method for this model: a request router algorithm name, optionally followed by '';name=value'' tuning parameters, for example pulsar;seed=stable-a. The API checks only the format. The request router checks the algorithm and parameters on each request.' format: UTF-8 maxLength: 262144 minLength: 0 @@ -1604,7 +1619,7 @@ components: description: Partial update payload for LLM-specific model configuration fields. properties: routingMethod: - description: Updated routing method for the model. When omitted, the existing value is preserved. + description: Updated routing method for the model, in the same format as llmConfig.routingMethod on create. When omitted, the existing value is preserved. format: UTF-8 maxLength: 262144 minLength: 0 @@ -1617,6 +1632,21 @@ components: minLength: 0 type: string nullable: true + tokenizer: + description: Cannot be changed after creation. A request that sets it is rejected with 400. + format: UTF-8 + maxLength: 262144 + minLength: 0 + type: string + nullable: true + uris: + description: Cannot be changed after creation. A request that sets it is rejected with 400. + items: + type: string + maxItems: 2147483647 + minItems: 0 + type: array + nullable: true type: object servers: - url: https://api.ngc.nvidia.com diff --git a/provider-dev/source/nvcf_invocation.yaml b/provider-dev/source/nvcf_invocation.yaml index 30c0def..bac5fe6 100644 --- a/provider-dev/source/nvcf_invocation.yaml +++ b/provider-dev/source/nvcf_invocation.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Invocation description: NVCF HTTP-polling invocation (pexec and status), assets and invocation assertion tokens (served from api.nvcf.nvidia.com). - version: 2.256.0 + version: 2.261.2 paths: /v2/nvcf/assets: get: diff --git a/provider-dev/source/nvcf_queues.yaml b/provider-dev/source/nvcf_queues.yaml index 1f0f66c..bea3089 100644 --- a/provider-dev/source/nvcf_queues.yaml +++ b/provider-dev/source/nvcf_queues.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: NVIDIA Cloud Functions - Queues description: NVCF request queue details per function and version, and queue position per request (served from api.nvcf.nvidia.com). - version: 2.256.0 + version: 2.261.2 paths: /v2/nvcf/queues/functions/{function_id}: get: diff --git a/provider-dev/source/private_registry.yaml b/provider-dev/source/private_registry.yaml index 52d6f04..c573f51 100644 --- a/provider-dev/source/private_registry.yaml +++ b/provider-dev/source/private_registry.yaml @@ -2291,238 +2291,6 @@ paths: summary: Disassociate encryption key from model in org tags: - Models - /models/{model_name}/shares/org: - put: - description: This operation shares an org model with the org. - operationId: shareModelInOrgWithOrg - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Share org model with the org - tags: - - Models - delete: - description: This operation revokes a shared org model with the org. - operationId: revokeShareModelInOrgWithOrg - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Revoke shared org model with the org - tags: - - Models - /models/{model_name}/shares/team/{target_team}: - put: - description: This operation shares an org model with the team. - operationId: shareModelInOrgWithTeam - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Share org model with the specified team - tags: - - Models - delete: - description: This operation revokes a shared org model with the team. - operationId: revokeShareModelInOrgWithTeam - parameters: - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Revoke shared org model with the specified team - tags: - - Models /models/{model_name}/versions: get: description: List model versions in org @@ -6551,274 +6319,6 @@ paths: summary: Disassociate encryption key from model in team tags: - Models - /team/{team_name}/models/{model_name}/shares/org: - put: - description: This operation shares a team model with the org. - operationId: shareModelInTeamWithOrg - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Share team model with the org - tags: - - Models - delete: - description: This operation revokes a shared team model with the org. - operationId: revokeShareModelInTeamWithOrg - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Revoke shared team model with the org - tags: - - Models - /team/{team_name}/models/{model_name}/shares/team/{target_team}: - put: - description: This operation shares a team model with the team. - operationId: shareModelInTeamWithTeam - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Share team model with the specified team - tags: - - Models - delete: - description: This operation revokes a shared team model with the team. - operationId: revokeShareModelInTeamWithTeam - parameters: - - description: Team name - in: path - name: team_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Model name - in: path - name: model_name - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - - description: Target team name - in: path - name: target_team - required: true - schema: - format: UTF-8 - maxLength: 255 - minLength: 0 - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: OK - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Unauthorized - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Forbidden - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Not Found - '429': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Too many requests - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - description: Internal Error - summary: Revoke shared team model with the specified team - tags: - - Models /team/{team_name}/models/{model_name}/versions: get: description: List model versions in team @@ -15935,6 +15435,9 @@ components: description: Short description of the artifact maxLength: 255 type: string + required: + - name + - shortDescription type: object ArtifactResponse: description: Response to artifact request @@ -16987,6 +16490,10 @@ components: needsAcceptance: description: Indicator if user needs to accept this license type: boolean + required: + - governingTerms + - licenseId + - licenseVersion type: object Dataset: properties: diff --git a/tests/integration/harness.mjs b/tests/integration/harness.mjs new file mode 100644 index 0000000..7f805f9 --- /dev/null +++ b/tests/integration/harness.mjs @@ -0,0 +1,106 @@ +// Shared plumbing for the integration runner and the probe: locate the +// stackql binary, materialise the test registry pointed at the mock, and run +// SQL asynchronously against it. No side effects on import. +// +// The vendor hosts are https-only and cannot address the mock, so the +// generated provider (provider-dev/openapi) is copied to +// tests/integration/.registry-tmp (gitignored, recreated each run) with +// every server URL rewritten to http://localhost:<port>: the two root hosts +// (api.ngc.nvidia.com, api.nvcf.nvidia.com - both land on the one mock, +// which routes by path) and the path-level org templates, whose org_name +// variable and x-stackQL-envVar are preserved. provider-dev/** is never +// modified. + +import { spawn } from 'child_process'; +import { existsSync, rmSync, cpSync, readdirSync, readFileSync, writeFileSync } from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import yaml from 'js-yaml'; +import { PROVIDER_NAME, HOSTS, SCOPE_PARAM, SCOPE_ENV_VAR } from '../../provider-dev/scripts/lib/spec_helpers.mjs'; + +export const here = path.dirname(fileURLToPath(import.meta.url)); +export const repoRoot = path.resolve(here, '..', '..'); + +export function findStackql() { + if (process.env.STACKQL) return process.env.STACKQL; + const local = path.join(repoRoot, process.platform === 'win32' ? 'stackql.exe' : 'stackql'); + if (existsSync(local)) return local; + return 'stackql'; // PATH +} + +// Copy the generated provider docs into tests/integration/.registry-tmp and +// point every server - document-level and path-level - at the mock, +// preserving server variables and x-stackQL-envVar. Returns the registry +// directory; registryArg() turns it into the --registry JSON. +export function buildTestRegistry(port) { + const srcDir = path.join(repoRoot, 'provider-dev', 'openapi'); + const tmpDir = path.join(here, '.registry-tmp'); + rmSync(tmpDir, { recursive: true, force: true }); + cpSync(srcDir, tmpDir, { recursive: true }); + const servicesDir = path.join(tmpDir, 'src', PROVIDER_NAME, 'v00.00.00000', 'services'); + const base = `http://localhost:${port}`; + const rewrite = (url) => HOSTS.reduce((u, host) => u.replace(host, base), url); + let orgTemplates = 0; + for (const f of readdirSync(servicesDir)) { + if (!f.endsWith('.yaml')) continue; + const fp = path.join(servicesDir, f); + const doc = yaml.load(readFileSync(fp, 'utf8')); + if (!doc.servers?.[0]?.url) throw new Error(`no top-level servers block found in ${f}`); + doc.servers = doc.servers.map((s) => ({ ...s, url: rewrite(s.url) })); + for (const [p, item] of Object.entries(doc.paths || {})) { + if (!item.servers) continue; + item.servers = item.servers.map((s) => ({ ...s, url: rewrite(s.url) })); + const v = item.servers[0].variables?.[SCOPE_PARAM]; + if (!v || v['x-stackQL-envVar'] !== SCOPE_ENV_VAR) throw new Error(`${f}: path ${p} lost its ${SCOPE_PARAM} server variable / x-stackQL-envVar in the copy`); + orgTemplates++; + } + writeFileSync(fp, yaml.dump(doc, { lineWidth: -1, noRefs: true })); + } + if (orgTemplates === 0) throw new Error('no path-level org server templates found - was post_process run?'); + return tmpDir; +} + +export function registryArg(tmpDir) { + const regPath = tmpDir.split(path.sep).join('/'); + return JSON.stringify({ url: `file://${regPath}`, localDocRoot: regPath, verifyConfig: { nopVerify: true } }); +} + +// `--output json` renders every scalar as a string; the row-level +// assertions compare typed values, so booleans and numbers are restored. +const typed = (v) => (v === 'true' ? true : v === 'false' ? false : (typeof v === 'string' && /^-?\d+(\.\d+)?$/.test(v)) ? Number(v) : v); + +// IMPORTANT: async (spawn, not spawnSync) - the mock server runs on this +// process's event loop, so a synchronous wait for stackql deadlocks. +// Returns { rows, err, text }: rows is the parsed JSON (an empty array for +// zero rows, [{ _text }] for DML status text), err the stderr when it looks +// like an error. +export function makeRunSql(registry, baseEnv, { verbose = false, bin = findStackql() } = {}) { + return function runSql(sql, envOverrides = {}) { + return new Promise((resolve) => { + const env = { ...process.env, ...baseEnv, ...envOverrides }; + for (const [k, v] of Object.entries(envOverrides)) if (v === undefined) delete env[k]; + const child = spawn(bin, [`--registry=${registry}`, 'exec', sql, '--output', 'json'], { cwd: repoRoot, env }); + let stdout = '', stderr = ''; + child.stdout.on('data', (d) => { stdout += d; }); + child.stderr.on('data', (d) => { stderr += d; }); + const timer = setTimeout(() => child.kill(), 120000); + child.on('error', (e) => { clearTimeout(timer); resolve({ rows: null, err: String(e), text: '', stdout: '', stderr: String(e) }); }); + child.on('close', () => { + clearTimeout(timer); + stdout = stdout.trim(); + stderr = stderr.trim(); + if (verbose) console.log(` sql: ${sql}\n out: ${stdout.slice(0, 400)}${stderr ? `\n err: ${stderr.slice(0, 400)}` : ''}`); + const errish = /http response status code: [45]|error|panic|FindRoute|no matching operation|cannot find matching operation|disallowed|cannot find any viable servers|not supported|required/i; + if (errish.test(stderr)) return resolve({ rows: null, err: stderr, text: stdout, stdout, stderr }); + if (!stdout) return resolve({ rows: [], err: null, text: stdout, stdout, stderr }); + try { + const parsed = JSON.parse(stdout); // literal null for zero rows + const rows = Array.isArray(parsed) ? parsed.map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, typed(v)]))) : parsed ?? []; + resolve({ rows, err: null, text: stdout, stdout, stderr }); + } catch { + resolve({ rows: [{ _text: stdout }], err: errish.test(stdout) ? stdout : null, text: stdout, stdout, stderr }); // DML status text + } + }); + }); + }; +} diff --git a/tests/integration/mock_nvidia_server.mjs b/tests/integration/mock_nvidia_server.mjs index 58b45ac..9c2ad6a 100644 --- a/tests/integration/mock_nvidia_server.mjs +++ b/tests/integration/mock_nvidia_server.mjs @@ -294,6 +294,10 @@ async function handle(req, res, log) { return send(res, 204, undefined); } } + // NVCF 2.261.2: every function with its authorized parties in one read + if (m === 'GET' && p === '/v2/nvcf/authorizations/functions') { + return send(res, 200, { functions: [...state.authorizations.entries()].map(([id, parties]) => ({ id, ncaId: NCA_ID, versionId: VERSION_ID, authorizedParties: parties })) }); + } if ((x = p.match(/^\/v2\/nvcf\/authorizations\/functions\/([^/]+)(\/versions\/([^/]+))?(\/add|\/remove)?$/))) { if (!state.functions.has(x[1])) return send(res, 404, { type: 'about:blank', title: 'Not Found', detail: 'function not found' }); const parties = state.authorizations.get(x[1]) || []; diff --git a/tests/integration/probe.mjs b/tests/integration/probe.mjs index 75c72dc..2c9ad6c 100644 --- a/tests/integration/probe.mjs +++ b/tests/integration/probe.mjs @@ -1,53 +1,43 @@ #!/usr/bin/env node -// Developer probe: start the mock NGC / NVCF server, materialise the test +// Developer probe: start the mock NGC + NVCF server, materialise the test // registry (as run_integration_tests.mjs does) and run the SQL statements // given on the command line, printing stackql's stdout/stderr and the wire -// calls the mock saw for each. Handy when a binding misbehaves. +// calls the mock saw for each. This is how bindings get debugged. // -// Usage: node tests/integration/probe.mjs "SELECT ..." "EXEC ..." [--env KEY=VALUE ...] [--unset KEY] +// Usage: npm run probe -- "SELECT ..." "EXEC ..." [--env KEY=VALUE ...] [--unset KEY] -import { spawn } from 'child_process'; -import path from 'path'; -import { fileURLToPath } from 'url'; import { startMockServer, EXPECTED_TOKEN, ORG_A } from './mock_nvidia_server.mjs'; -import { buildTestRegistry, findStackql } from './registry.mjs'; +import { buildTestRegistry, registryArg, makeRunSql, findStackql } from './harness.mjs'; -const here = path.dirname(fileURLToPath(import.meta.url)); -const repoRoot = path.resolve(here, '..', '..'); +// The environment the provider reads (as in run_integration_tests.mjs) +const PROVIDER_ENV = { NGC_API_KEY: EXPECTED_TOKEN, NGC_ORG: ORG_A }; const args = process.argv.slice(2); const sqls = []; const envOverrides = {}; for (let i = 0; i < args.length; i++) { - if (args[i] === '--env') { const [k, ...v] = args[++i].split('='); envOverrides[k] = v.join('='); } + if (args[i] === '--env') { const [k, v] = args[++i].split('='); envOverrides[k] = v; } else if (args[i] === '--unset') { envOverrides[args[++i]] = undefined; } else sqls.push(args[i]); } +if (sqls.length === 0) { + console.error('usage: npm run probe -- "SELECT ..." ["EXEC ..."] [--env KEY=VALUE] [--unset KEY]'); + process.exit(2); +} const { server, port, log } = await startMockServer(); -const registry = buildTestRegistry(port); -const bin = findStackql(); - -function run(sql) { - return new Promise((resolve) => { - const env = { ...process.env, NGC_API_KEY: EXPECTED_TOKEN, NGC_ORG: ORG_A, ...envOverrides }; - for (const [k, v] of Object.entries(envOverrides)) if (v === undefined) delete env[k]; - const child = spawn(bin, [`--registry=${registry}`, 'exec', sql, '--output', 'json'], { cwd: repoRoot, env }); - let out = '', err = ''; - child.stdout.on('data', (d) => { out += d; }); - child.stderr.on('data', (d) => { err += d; }); - child.on('close', () => resolve({ out: out.trim(), err: err.trim() })); - }); -} +const registry = registryArg(buildTestRegistry(port)); +const runSql = makeRunSql(registry, PROVIDER_ENV); +console.log(`mock NGC + NVCF API on localhost:${port}, stackql: ${findStackql()}`); try { for (const sql of sqls) { const mark = log.length; - const { out, err } = await run(sql); + const { stdout, stderr } = await runSql(sql, envOverrides); console.log(`\n=== ${sql}`); - console.log(`stdout: ${out.slice(0, 1500)}`); - if (err) console.log(`stderr: ${err.slice(0, 900)}`); + console.log(`stdout: ${stdout.slice(0, 1500)}`); + if (stderr) console.log(`stderr: ${stderr.slice(0, 900)}`); for (const e of log.slice(mark)) console.log(`wire: ${e.method} ${e.path} query=${JSON.stringify(e.query)} auth=${e.authorization ? 'yes' : 'no'} ct=${e.contentType} body=${JSON.stringify(e.body)}`); } } finally { diff --git a/tests/integration/registry.mjs b/tests/integration/registry.mjs deleted file mode 100644 index c8d94dd..0000000 --- a/tests/integration/registry.mjs +++ /dev/null @@ -1,58 +0,0 @@ -// Shared helpers for the integration runner and the probe: stackql binary -// resolution and the TEST COPY of the generated provider whose servers -// point at the mock. -// -// The vendor hosts are https-only and cannot address the mock, so the -// generated provider (provider-dev/openapi) is copied to -// tests/integration/.registry-tmp (gitignored, recreated each run) with -// every server URL rewritten to http://localhost:<port>: the two root hosts -// (api.ngc.nvidia.com, api.nvcf.nvidia.com - both land on the one mock, -// which routes by path) and the path-level org templates, whose org_name -// variable and x-stackQL-envVar are preserved. provider-dev/** is never -// modified. - -import { existsSync, rmSync, cpSync, readdirSync, readFileSync, writeFileSync } from 'fs'; -import path from 'path'; -import { fileURLToPath } from 'url'; -import yaml from 'js-yaml'; - -const here = path.dirname(fileURLToPath(import.meta.url)); -export const repoRoot = path.resolve(here, '..', '..'); -export const NGC_HOST = 'https://api.ngc.nvidia.com'; -export const NVCF_HOST = 'https://api.nvcf.nvidia.com'; - -export function findStackql() { - if (process.env.STACKQL) return process.env.STACKQL; - const local = path.join(repoRoot, process.platform === 'win32' ? 'stackql.exe' : 'stackql'); - if (existsSync(local)) return local; - return 'stackql'; // PATH -} - -export function buildTestRegistry(port) { - const srcDir = path.join(repoRoot, 'provider-dev', 'openapi'); - const tmpDir = path.join(here, '.registry-tmp'); - rmSync(tmpDir, { recursive: true, force: true }); - cpSync(srcDir, tmpDir, { recursive: true }); - const servicesDir = path.join(tmpDir, 'src', 'nvidia', 'v00.00.00000', 'services'); - const base = `http://localhost:${port}`; - const rewrite = (url) => url.replace(NGC_HOST, base).replace(NVCF_HOST, base); - let orgTemplates = 0; - for (const f of readdirSync(servicesDir)) { - if (!f.endsWith('.yaml')) continue; - const fp = path.join(servicesDir, f); - const doc = yaml.load(readFileSync(fp, 'utf8')); - if (!doc.servers?.[0]?.url) throw new Error(`no top-level servers block found in ${f}`); - doc.servers = doc.servers.map((s) => ({ ...s, url: rewrite(s.url) })); - for (const [p, item] of Object.entries(doc.paths || {})) { - if (!item.servers) continue; - item.servers = item.servers.map((s) => ({ ...s, url: rewrite(s.url) })); - const v = item.servers[0].variables?.org_name; - if (!v || v['x-stackQL-envVar'] !== 'NGC_ORG') throw new Error(`${f}: path ${p} lost its org_name server variable / x-stackQL-envVar in the copy`); - orgTemplates++; - } - writeFileSync(fp, yaml.dump(doc, { lineWidth: -1, noRefs: true })); - } - if (orgTemplates === 0) throw new Error('no path-level org server templates found - was post_process run?'); - const regPath = tmpDir.split(path.sep).join('/'); - return JSON.stringify({ url: `file://${regPath}`, localDocRoot: regPath, verifyConfig: { nopVerify: true } }); -} diff --git a/tests/integration/run_integration_tests.mjs b/tests/integration/run_integration_tests.mjs index b884342..5214c15 100644 --- a/tests/integration/run_integration_tests.mjs +++ b/tests/integration/run_integration_tests.mjs @@ -26,47 +26,15 @@ // // Usage: node tests/integration/run_integration_tests.mjs [--verbose] -import { spawn } from 'child_process'; import { startMockServer, EXPECTED_TOKEN, ORG_A, ORG_B, TEAM, FUNCTION_ID, VERSION_ID, REQUEST_ID } from './mock_nvidia_server.mjs'; -import { buildTestRegistry, findStackql, repoRoot } from './registry.mjs'; +import { buildTestRegistry, registryArg, makeRunSql, findStackql } from './harness.mjs'; const verbose = process.argv.includes('--verbose'); const t0 = Date.now(); -const stackqlBin = findStackql(); - -// IMPORTANT: must be async (spawn, not spawnSync) - the mock server runs on -// this process's event loop, so a synchronous wait for stackql deadlocks. -function makeRunSql(registry) { - return function runSql(sql, envOverrides = {}) { - return new Promise((resolve) => { - const env = { ...process.env, NGC_API_KEY: EXPECTED_TOKEN, NGC_ORG: ORG_A, ...envOverrides }; - for (const [k, v] of Object.entries(envOverrides)) if (v === undefined) delete env[k]; - const child = spawn(stackqlBin, [`--registry=${registry}`, 'exec', sql, '--output', 'json'], { cwd: repoRoot, env }); - let stdout = '', stderr = ''; - child.stdout.on('data', (d) => { stdout += d; }); - child.stderr.on('data', (d) => { stderr += d; }); - const timer = setTimeout(() => child.kill(), 120000); - child.on('error', (e) => { clearTimeout(timer); resolve({ rows: null, err: String(e) }); }); - child.on('close', () => { - clearTimeout(timer); - stdout = stdout.trim(); - stderr = stderr.trim(); - if (verbose) console.log(` sql: ${sql}\n out: ${stdout.slice(0, 400)}${stderr ? `\n err: ${stderr.slice(0, 400)}` : ''}`); - const errish = /http response status code: [45]|error|panic|FindRoute|no matching operation|cannot find matching operation|disallowed|cannot find any viable servers|not supported|required/i; - if (errish.test(stderr)) return resolve({ rows: null, err: stderr }); - if (!stdout) return resolve({ rows: [], err: null }); - try { - const val = (v) => (v === 'true' ? true : v === 'false' ? false : (typeof v === 'string' && /^-?\d+(\.\d+)?$/.test(v)) ? Number(v) : v); - const parsed = JSON.parse(stdout); - const rows = Array.isArray(parsed) ? parsed.map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, val(v)]))) : parsed ?? []; - resolve({ rows, err: null, text: stdout }); - } catch { - resolve({ rows: [{ _text: stdout }], err: errish.test(stdout) ? stdout : null, text: stdout }); // DML status text - } - }); - }); - }; -} + +// The environment the provider reads: the bearer credential and the scoping +// variable behind the org_name server template. +const PROVIDER_ENV = { NGC_API_KEY: EXPECTED_TOKEN, NGC_ORG: ORG_A }; const results = []; function check(name, cond, note = '') { @@ -75,9 +43,9 @@ function check(name, cond, note = '') { } const { server, port, log, state } = await startMockServer(); -const registry = buildTestRegistry(port); -const runSql = makeRunSql(registry); -console.log(`mock NGC + NVCF API on localhost:${port}, stackql: ${stackqlBin}`); +const registry = registryArg(buildTestRegistry(port)); +const runSql = makeRunSql(registry, PROVIDER_ENV, { verbose }); +console.log(`mock NGC + NVCF API on localhost:${port}, stackql: ${findStackql()}`); const calls = (mark, method, p) => log.slice(mark).filter((e) => e.method === method && e.path === p); const has = (rows, key, value) => Array.isArray(rows) && rows.some((r) => r[key] === value); @@ -173,6 +141,10 @@ try { check('function_ids (scalar list transform -> function_id column)', r.rows && r.rows.length === 1 && r.rows[0].function_id === FUNCTION_ID, r.err || JSON.stringify(r.rows)); r = await runSql("SELECT id, name, json_extract(gpus, '$[0].name') AS first_gpu FROM nvidia.nvcf_deployments.cluster_groups"); check('cluster_groups ($.clusterGroups) with gpus as JSON (the GPU estate query)', r.rows && r.rows.length === 2 && has(r.rows, 'first_gpu', 'L40') && has(r.rows, 'first_gpu', 'H100'), r.err || JSON.stringify(r.rows)); + mark = log.length; + r = await runSql('SELECT cluster_group, gpu, instance_type, is_default, cluster FROM nvidia.nvcf_deployments.vw_gpu_capacity ORDER BY cluster_group, gpu'); + check('vw_gpu_capacity flattens cluster group x GPU x instance type (4 rows from 2 groups)', r.rows && r.rows.length === 4 && has(r.rows, 'instance_type', 'GCP.GPU.L40S_1x') && r.rows.every((x) => x.is_default === true || x.is_default === 1) && has(r.rows, 'cluster', 'GFN-cluster-1'), r.err || JSON.stringify(r.rows)); + check('vw_gpu_capacity issued one cluster groups read', calls(mark, 'GET', '/v2/nvcf/clusterGroups').length === 1, JSON.stringify(log.slice(mark).map((e) => e.path))); // --- NVCF function lifecycle: INSERT function, version get, authorization grants, deployment, delete mark = log.length; @@ -194,6 +166,9 @@ try { r = await runSql(`SELECT id, json_extract(authorized_parties, '$[0].ncaId') AS party FROM nvidia.nvcf_functions.authorizations WHERE function_id = '${created.id}'`); check('authorizations list ($.functions) shows the grant', r.rows && r.rows.length === 1 && r.rows[0].party === 'nca-partner-0002', r.err || JSON.stringify(r.rows)); mark = log.length; + r = await runSql(`SELECT id, json_extract(authorized_parties, '$[0].ncaId') AS party FROM nvidia.nvcf_functions.authorizations`); + check('authorizations list_all (no WHERE -> GET /v2/nvcf/authorizations/functions, the fleet-wide sharing audit)', r.rows && r.rows.length === 2 && has(r.rows, 'id', FUNCTION_ID) && has(r.rows, 'id', created.id) && calls(mark, 'GET', '/v2/nvcf/authorizations/functions').length === 1, r.err || JSON.stringify({ rows: r.rows, paths: log.slice(mark).map((e) => e.path) })); + mark = log.length; r = await runSql(`DELETE FROM nvidia.nvcf_functions.authorizations WHERE function_id = '${created.id}' AND authorized_party = '{"ncaId": "nca-partner-0002"}'`); check('authorization DELETE -> PATCH .../remove', !r.err && calls(mark, 'PATCH', `/v2/nvcf/authorizations/functions/${created.id}/remove`).length === 1, r.err || JSON.stringify(log.slice(mark).map((e) => `${e.method} ${e.path}`))); diff --git a/tests/offline_validation.mjs b/tests/offline_validation.mjs index c3963c5..c140bbb 100644 --- a/tests/offline_validation.mjs +++ b/tests/offline_validation.mjs @@ -57,12 +57,12 @@ const cols = (rows) => rows.map((c) => c.name); const EXPECTED_SERVICES = ['catalog', 'nvcf_deployments', 'nvcf_functions', 'nvcf_invocation', 'nvcf_queues', 'orgs', 'private_registry']; const EXPECTED_RESOURCES = { catalog: ['artifact_deployment_params', 'artifact_files', 'artifact_specs', 'artifacts', 'collection_artifacts', 'collections', 'csp_deployment_params', 'csp_deployment_params_meta', 'csps', 'gpus', 'helm_chart_versions', 'model_files', 'model_versions', 'models', 'nim_metadata', 'recipe_files', 'recipe_versions', 'recipes', 'resource_files', 'resource_versions', 'resources'], - nvcf_deployments: ['cluster_groups', 'deployment_gpu_specs', 'deployments', 'recognized_registries', 'registry_credentials', 'telemetries', 'telemetry_secrets'], + nvcf_deployments: ['cluster_groups', 'deployment_gpu_specs', 'deployments', 'recognized_registries', 'registry_credentials', 'telemetries', 'telemetry_secrets', 'vw_gpu_capacity'], nvcf_functions: ['authorizations', 'function_ids', 'function_metadata', 'function_ratelimits', 'function_secrets', 'function_versions', 'functions'], nvcf_invocation: ['assets', 'invocation_status', 'invocations', 'tokens'], nvcf_queues: ['queue_positions', 'queues'], orgs: ['current_user', 'orgs', 'proto_orgs', 'roles', 'team_invitations', 'team_member_roles', 'team_members', 'teams', 'user_invitations', 'user_roles', 'users'], - private_registry: ['artifact_catalog_flags', 'artifact_collections', 'artifact_deployment_params', 'artifact_deployments', 'artifact_files', 'artifact_product_shares', 'artifact_shares', 'artifact_signatures', 'artifact_specs', 'artifact_version_configs', 'artifact_versions', 'artifacts', 'collection_artifacts', 'collection_product_shares', 'collections', 'encryption_keys', 'helm_chart_versions', 'license_acceptances', 'model_encryption_keys', 'model_files', 'model_shares', 'model_versions', 'models', 'recipe_files', 'recipe_versions', 'recipes', 'repository_associated_models', 'resource_files', 'resource_versions', 'resources', 'workflows'] + private_registry: ['artifact_catalog_flags', 'artifact_collections', 'artifact_deployment_params', 'artifact_deployments', 'artifact_files', 'artifact_product_shares', 'artifact_shares', 'artifact_signatures', 'artifact_specs', 'artifact_version_configs', 'artifact_versions', 'artifacts', 'collection_artifacts', 'collection_product_shares', 'collections', 'encryption_keys', 'helm_chart_versions', 'license_acceptances', 'model_encryption_keys', 'model_files', 'model_versions', 'models', 'recipe_files', 'recipe_versions', 'recipes', 'repository_associated_models', 'resource_files', 'resource_versions', 'resources', 'workflows'] }; const NO_ENV = { NGC_ORG: undefined }; const WITH_ENV = { NGC_ORG: 'mock-org' }; @@ -77,7 +77,7 @@ for (const [svc, expected] of Object.entries(EXPECTED_RESOURCES)) { resourceTotal += r.rows.length; check(`SHOW RESOURCES IN nvidia.${svc} (${expected.length})`, JSON.stringify(names(r.rows)) === JSON.stringify(expected), r.stderr || JSON.stringify(names(r.rows))); } -check('83 resources in total', resourceTotal === 83, String(resourceTotal)); +check('83 resources in total (82 API resources + the vw_gpu_capacity view)', resourceTotal === 83, String(resourceTotal)); // org_name server variable: required only when NGC_ORG is unset r = await runSql('SHOW METHODS IN nvidia.private_registry.models', NO_ENV); @@ -127,6 +127,10 @@ r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_functions.functions'); check('DESCRIBE nvcf_functions.functions (id, name, status, version_id, container_image, inference_url)', ['id', 'name', 'status', 'version_id', 'container_image', 'inference_url'].every((c) => cols(r.rows).includes(c)), r.stderr || JSON.stringify(cols(r.rows))); r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_deployments.cluster_groups'); check('DESCRIBE cluster_groups (id, name, gpus, clusters, nca_id - the GPU estate)', ['id', 'name', 'gpus', 'clusters', 'nca_id'].every((c) => cols(r.rows).includes(c)), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_deployments.vw_gpu_capacity'); +check('DESCRIBE vw_gpu_capacity (the view: cluster_group, gpu, instance_type, is_default, cluster)', ['cluster_group', 'cluster_group_id', 'gpu', 'instance_type', 'instance_description', 'is_default', 'cluster', 'nca_id'].every((c) => cols(r.rows).includes(c)), r.stderr || JSON.stringify(cols(r.rows))); +r = await runSql('SHOW METHODS IN nvidia.nvcf_deployments.vw_gpu_capacity'); +check('vw_gpu_capacity has no required parameters (an unparameterised view)', r.code === 0 && (r.rows || []).every((m) => !(m.RequiredParams || m.required_params)), r.stderr || JSON.stringify(r.rows)); r = await runSql('DESCRIBE EXTENDED nvidia.catalog.gpus'); check('DESCRIBE catalog.gpus projects the GPU catalog rows (display_name, pci_device_id, memory_size_gb)', ['display_name', 'pci_device_id', 'memory_size_gb'].every((c) => cols(r.rows).includes(c)) && !cols(r.rows).includes('column_anon'), r.stderr || JSON.stringify(cols(r.rows))); r = await runSql('DESCRIBE EXTENDED nvidia.nvcf_functions.function_ids'); diff --git a/tests/smoke_test.py b/tests/smoke_test.py index 7132659..db47c38 100644 --- a/tests/smoke_test.py +++ b/tests/smoke_test.py @@ -224,11 +224,15 @@ def cleanup_breadcrumbs(self) -> None: def read_smokes(self) -> None: print("== tier 1: public catalog ==") self.step("show services", "SHOW SERVICES IN nvidia", expect_rows=True, contains="nvcf_functions") - models = self.step("catalog models (public, paginated, LIMIT pushdown)", "SELECT name, org_name, display_name FROM nvidia.catalog.models LIMIT 5", expect_rows=True) + models = self.step("catalog models (public, paginated, LIMIT pushdown)", "SELECT name, org_name, team_name, display_name FROM nvidia.catalog.models LIMIT 10", expect_rows=True) if models: + # a model published under a team (nvidia/nemo/...) is addressed + # by the *_by_team twin; team_name routes the statement there first = models[0] - self.step("catalog model get ($.model, by org_name + model_name)", f"SELECT name, display_name, latest_version_id_str FROM nvidia.catalog.models WHERE org_name = '{first['org_name']}' AND model_name = '{first['name']}'", expect_rows=True, contains=str(first["name"])) - self.step("catalog model versions ($.modelVersions)", f"SELECT version_id, status FROM nvidia.catalog.model_versions WHERE org_name = '{first['org_name']}' AND model_name = '{first['name']}'") + scope = f"org_name = '{first['org_name']}'" + (f" AND team_name = '{first['team_name']}'" if first.get("team_name") else "") + twin = " (get_by_team twin)" if first.get("team_name") else "" + self.step(f"catalog model get ($.model, by org_name + model_name{twin})", f"SELECT name, display_name, latest_version_id_str FROM nvidia.catalog.models WHERE {scope} AND model_name = '{first['name']}'", expect_rows=True, contains=str(first["name"])) + self.step(f"catalog model versions ($.modelVersions{twin})", f"SELECT version_id, status FROM nvidia.catalog.model_versions WHERE {scope} AND model_name = '{first['name']}'") self.step("catalog GPU catalog (bare array)", "SELECT display_name, pci_device_id, memory_size_gb FROM nvidia.catalog.gpus", expect_rows=True) self.step("catalog collections", "SELECT name, org_name, display_name FROM nvidia.catalog.collections LIMIT 5") @@ -261,6 +265,7 @@ def read_smokes(self) -> None: self.note("cluster groups / GPU inventory (the GPU estate)", True) self.step("GPU types per cluster group (json_each over gpus)", "SELECT cg.name AS cluster_group, json_extract(g.value, '$.name') AS gpu FROM nvidia.nvcf_deployments.cluster_groups cg, json_each(cg.gpus) g") self.step("nvcf functions (fleet state)", "SELECT id, name, status, version_id FROM nvidia.nvcf_functions.functions") + self.step("nvcf authorizations across the fleet (list_all, the sharing audit)", "SELECT id, version_id, nca_id FROM nvidia.nvcf_functions.authorizations") self.step("nvcf function ids (scalar list transform)", "SELECT function_id FROM nvidia.nvcf_functions.function_ids") self.step("nvcf telemetries", "SELECT telemetry_id, name, provider FROM nvidia.nvcf_deployments.telemetries") self.step("nvcf registry credentials", "SELECT name, registry_credential_id FROM nvidia.nvcf_deployments.registry_credentials") diff --git a/views/README.md b/views/README.md new file mode 100644 index 0000000..974a50c --- /dev/null +++ b/views/README.md @@ -0,0 +1,11 @@ +# Provider views + +Views are virtual, SELECT-only resources spliced into the generated provider at generate time from `views/<service>/views.yaml` (provider-utils reads `./views` automatically when the directory exists). They are documented like any other resource and tested in the offline layer with `DESCRIBE` / `SELECT * FROM nvidia.<service>.<view>`. + +Good candidates: json_extract-heavy posture queries, multi-resource UNIONs, the provider's estate inventory. API-derived resources win on a name collision, so views are prefixed `vw_`. + +A file is a top-level YAML mapping of view name -> resource body: `docs.fields` is what the doc page renders; `views.select.ddl` is what the engine runs, with the `sqlite3` form first and a `postgres` `fallback` for server mode. The engine learns a view's required parameters only from a `requiredParams == [...]` clause in the predicate; `docs.requiredParams` is docs-only. + +Shipped here: + +- `nvcf_deployments/views.yaml` - `vw_gpu_capacity`: one row per cluster group x GPU type x instance type, flattened from `cluster_groups` (the GPU estate the organization can deploy NVCF functions to). diff --git a/views/nvcf_deployments/views.yaml b/views/nvcf_deployments/views.yaml new file mode 100644 index 0000000..1d94d8d --- /dev/null +++ b/views/nvcf_deployments/views.yaml @@ -0,0 +1,51 @@ +# Views spliced into the generated nvcf_deployments service at generate time +# (provider-utils reads ./views/<service>/views.yaml). See ../README.md. + +vw_gpu_capacity: + name: vw_gpu_capacity + id: nvidia.nvcf_deployments.vw_gpu_capacity + title: GPU Capacity + config: + docs: + description: >- + The GPU estate the organization can deploy NVIDIA Cloud Functions to, + one row per cluster group x GPU type x instance type, flattened from + the cluster_groups resource (clusterGroups[].gpus[].instanceTypes[]). + fields: + - {name: cluster_group, type: string, description: Cluster group name (the backend named in a deployment specification).} + - {name: cluster_group_id, type: string, description: Cluster group id.} + - {name: gpu, type: string, description: GPU type available in the cluster group (for example L40, H100).} + - {name: instance_type, type: string, description: Instance type name for the GPU (the instanceType of a deployment specification).} + - {name: instance_description, type: string, description: Vendor description of the instance type.} + - {name: is_default, type: boolean, description: Whether the instance type is the default for the GPU.} + - {name: cluster, type: string, description: Name of the first cluster in the group.} + - {name: nca_id, type: string, description: NVIDIA Cloud Account that owns the cluster group.} + views: + select: + predicate: sqlDialect == "sqlite3" + ddl: |- + SELECT cg.name AS cluster_group, + cg.id AS cluster_group_id, + json_extract(g.value, '$.name') AS gpu, + json_extract(it.value, '$.name') AS instance_type, + json_extract(it.value, '$.description') AS instance_description, + json_extract(it.value, '$.default') AS is_default, + json_extract(cg.clusters, '$[0].name') AS cluster, + cg.nca_id + FROM nvidia.nvcf_deployments.cluster_groups cg, + json_each(cg.gpus) g, + json_each(json_extract(g.value, '$.instanceTypes')) it + fallback: + predicate: sqlDialect == "postgres" + ddl: |- + SELECT cg.name AS cluster_group, + cg.id AS cluster_group_id, + g.value->>'name' AS gpu, + it.value->>'name' AS instance_type, + it.value->>'description' AS instance_description, + (it.value->>'default')::boolean AS is_default, + cg.clusters::jsonb->0->>'name' AS cluster, + cg.nca_id + FROM nvidia.nvcf_deployments.cluster_groups cg, + jsonb_array_elements(cg.gpus::jsonb) AS g(value), + jsonb_array_elements(g.value->'instanceTypes') AS it(value) diff --git a/website/.gitignore b/website/.gitignore index dc32d51..f681084 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -8,6 +8,9 @@ .docusaurus .cache-loader +# The shared stackql/docusaurus-config, vendored at build time +.shared-config + # Misc .DS_Store .env.local @@ -18,6 +21,3 @@ npm-debug.log* yarn-debug.log* yarn-error.log* - -# vendored shared docusaurus config (cloned at build time) -.shared-config diff --git a/website/README.md b/website/README.md deleted file mode 100644 index b28211a..0000000 --- a/website/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Website - -This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. - -## Installation - -```bash -yarn -``` - -## Local Development - -```bash -yarn start -``` - -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -## Build - -```bash -yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -## Deployment - -Using SSH: - -```bash -USE_SSH=true yarn deploy -``` - -Not using SSH: - -```bash -GIT_USER=<Your GitHub username> yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/website/docs/index.md b/website/docs/index.md index 9367530..06f400e 100644 --- a/website/docs/index.md +++ b/website/docs/index.md @@ -47,7 +47,7 @@ REGISTRY PULL nvidia; ## Scope -This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (342 operations across 7 services and 83 resources), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. +This provider covers the NGC control plane served from `https://api.ngc.nvidia.com` and, for queue details and invocation, `https://api.nvcf.nvidia.com`: NVIDIA Cloud Functions management (`nvcf_functions`, `nvcf_deployments`, `nvcf_queues`, `nvcf_invocation`), the NGC private registry (`private_registry`), the public catalog (`catalog`) and organization administration (`orgs`). Registry artifacts are surfaced as metadata; binary push and pull of artifact files is the registry data plane and is not mapped. Streaming and gRPC function invocation are not mapped; the HTTP-polling form is. Container images are served by the separate container registry API, whose definition NVIDIA does not publish, and are not in this provider. NVIDIA's official Terraform provider (`NVIDIA/terraform-provider-ngc`) covers NVCF functions and telemetry endpoints; the surface here is generated mechanically from the published NVCF OpenAPI document and the NGC API definitions behind the NGC API explorer (335 operations across 7 services and 82 resources, plus the `vw_gpu_capacity` view), with response schemas for the registry taken from the `ngcsdk` Python SDK's data classes. ## Authentication @@ -65,7 +65,26 @@ $env:NGC_API_KEY = 'nvapi-...' $env:NGC_ORG = '0123456789ab' ``` -The public catalog (`nvidia.catalog`) serves public artifact metadata and the GPU catalog without any credential; the variable still has to be set for the provider to run, but any value works for those reads. +The public catalog (`nvidia.catalog`) serves public artifact metadata and the GPU catalog without any credential; the variable still has to be set for the provider to run, but any value works for those reads. A key that NGC rejects answers `403 Access Denied` on organization and registry reads and `403 Authorization failed` on NVCF reads; the NGC CLI's `ngc config set` validates a key against the same service NVIDIA uses for both. + +<details> + +<summary>Using different environment variables</summary> + +To use different environment variables (instead of the defaults), use the `--auth` flag of the `stackql` program. For example: + +```bash +AUTH='{ "nvidia": { "type": "bearer", "credentialsenvvar": "MY_OTHER_VAR" }}' +stackql shell --auth="${AUTH}" +``` + +or using PowerShell: + +```powershell +$Auth = "{ 'nvidia': { 'type': 'bearer', 'credentialsenvvar': 'MY_OTHER_VAR' }}" +stackql.exe shell --auth=$Auth +``` +</details> ## Organization scope @@ -90,21 +109,35 @@ FROM nvidia.private_registry.models WHERE team_name = 'ml-platform'; ``` -NVCF resources carry no organization in their paths: the key determines the organization. +A `JOIN` cannot fan out across organizations on `org_name` (the rows do not echo the server variable); to report across several organizations compose one statement per organization with `UNION ALL`. NVCF resources carry no organization in their paths: the key determines the organization. ## Pagination and casing -NGC core collections (organizations, users, teams, registry artifacts and versions) page with `page-number` and `page-size`; StackQL follows `paginationInfo.index` / `totalPages` transparently, so a `SELECT` returns every row, and `SELECT ... LIMIT n` is pushed to the wire as `page-size`. Columns are snake_case aliases of the camelCase wire properties (`displayName` -> `display_name`); query parameters are addressed in snake_case too (`resolve_labels`, `page_size`) and translated to the kebab-case wire names. +NGC core collections (organizations, users, teams, registry artifacts and versions) page with `page-number` and `page-size`; StackQL follows `paginationInfo.index` / `totalPages` transparently, so a `SELECT` returns every row, and `SELECT ... LIMIT n` is pushed to the wire as `page-size`. Columns are snake_case aliases of the camelCase wire properties (`displayName` -> `display_name`); query parameters are addressed in snake_case too (`resolve_labels`, `page_size`) and translated to the kebab-case wire names. `UPDATE` marshals every `SET` value as a string; `INSERT` and `EXEC` send typed JSON, and `EXEC` cannot carry a boolean. + +## Rate limit + +NVIDIA publishes no request limit for the NGC and NVCF control-plane APIs. A `429` is surfaced as an error on the statement that received it; wide statements that fan out (a `JOIN` from a list to a per-row `get`, or `UNION ALL` across organizations) issue one request per row and are the ones to pace. ## Deprecations -NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those path families are excluded from the provider. Private Registry team scoping is exempt from that schedule and stays mapped (the `*_by_team` methods). Refreshes of the provider are reviewed spec diffs against content-hash pins. +NVIDIA's NGC deprecated API reference ends team-scoped (`/teams/{team}`) paths for NVCF and sibling services on 2026-09-30; those path families are excluded from the provider. Private Registry team scoping is exempt from that schedule and stays mapped (the `*_by_team` methods). Operations NVIDIA marks deprecated inline keep their marker in the method description; those with a published replacement are not mapped. Refreshes of the provider are reviewed spec diffs against content-hash pins. -## Example queries +## Example Queries + +Try the following queries using `stackql shell`, or run them from a script or CI pipeline with `stackql exec`. ### GPU capacity by cluster group -What GPU capacity exists, and where - the NVCF cluster groups the organization can deploy to, with their GPU types and instance types: +What GPU capacity exists, and where - one row per cluster group, GPU type and instance type the organization can deploy to, through the `vw_gpu_capacity` view: + +```sql +SELECT cluster_group, gpu, instance_type, is_default, cluster +FROM nvidia.nvcf_deployments.vw_gpu_capacity +ORDER BY cluster_group, gpu, instance_type; +``` + +The same estate straight from the `cluster_groups` resource, with `json_each` over the `gpus` column: ```sql SELECT cg.name AS cluster_group, @@ -133,7 +166,9 @@ LEFT JOIN nvidia.nvcf_deployments.deployments d WHERE f.status = 'ACTIVE'; ``` -Deployed functions with more than one minimum instance - the standing GPU spend: +### Standing GPU spend + +A deployed function's minimum instance count is the GPU capacity it holds whether or not it is invoked: ```sql SELECT function_name, function_status, @@ -146,9 +181,13 @@ WHERE function_id = 'fe97aa46-c8ea-4237-ba56-1212036f4d0f' ### Function sharing audit -Which NVIDIA Cloud Accounts may invoke a function - the authorization grants as data: +Which NVIDIA Cloud Accounts may invoke which function - the authorization grants as data, one row per function across the fleet, or for one function by id: ```sql +SELECT id AS function_id, version_id, nca_id AS owner, + json_extract(authorized_parties, '$[*].ncaId') AS authorized_accounts +FROM nvidia.nvcf_functions.authorizations; + SELECT id AS function_id, version_id, nca_id AS owner, json_extract(authorized_parties, '$[*].ncaId') AS authorized_accounts FROM nvidia.nvcf_functions.authorizations @@ -168,7 +207,9 @@ FROM nvidia.private_registry.models ORDER BY updated_date DESC; ``` -Helm charts, endpoints, blueprints, agents, playbooks, APIs and skills through the generic artifacts resource (`artifact_type` takes the plural path segment: `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks`, `skills`; models, resources and recipes have their own resources; container images are served by the separate container registry API and are not in this provider): +### Generic registry artifacts + +Helm charts, endpoints, blueprints, agents, playbooks, APIs and skills through the generic artifacts resource (`artifact_type` takes the plural path segment: `helm-charts`, `endpoints`, `agents`, `blueprints`, `apis`, `playbooks`, `skills`; models, resources and recipes have their own resources): ```sql SELECT name, display_name, latest_version_id_str, updated_date @@ -178,6 +219,8 @@ WHERE artifact_type = 'helm-charts'; ### Public catalog, no account needed +Public model metadata and the GPU catalog, readable with any value in `NGC_API_KEY`: + ```sql SELECT name, org_name, display_name, framework FROM nvidia.catalog.models @@ -197,9 +240,9 @@ SELECT email, name, is_active, last_login_date, FROM nvidia.orgs.users; ``` -### Provisioning +### Provisioning a function -Mutations use the same SQL grammar - `INSERT` creates, `UPDATE` patches, `DELETE` removes, and lifecycle actions are `EXEC` methods. Body columns are the snake_case spellings of the wire properties. A function with a first version, its deployment on the smallest instance, and the teardown: +Mutations use the same SQL grammar - `INSERT` creates, `UPDATE` patches, `DELETE` removes, and lifecycle actions are `EXEC` methods; body columns are the snake_case spellings of the wire properties. A function with a first version, its deployment on the smallest instance, a sharing grant and the teardown: ```sql -- create the function (and its first version) @@ -223,7 +266,9 @@ DELETE FROM nvidia.nvcf_functions.function_versions WHERE function_id = 'fe97aa46-...' AND function_version_id = '868d2192-...'; ``` -Invoke a function through the HTTP-polling form and read the result: +### Invoking a function + +The HTTP-polling invocation form is an `EXEC` whose opaque JSON body is the function's own request, and the result is read back by request id: ```sql EXEC nvidia.nvcf_invocation.invocations.invoke @@ -235,7 +280,9 @@ FROM nvidia.nvcf_invocation.invocation_status WHERE request_id = '<NVCF-REQID from the invoke>'; ``` -Registry metadata is provisioned the same way: +### Provisioning registry metadata + +A private registry model is created, patched and removed with the same verbs (`UPDATE` sends every `SET` value as a string): ```sql INSERT INTO nvidia.private_registry.models (name, display_name, framework, precision, application, short_description) @@ -251,11 +298,11 @@ WHERE model_name = 'resnet50-finetuned'; ### The whole GPU estate in one statement -NVCF cluster-group GPU types alongside the hyperscaler GPU instance inventory, using the `aws`, `google` and `azure` providers: +NVCF cluster-group GPU types alongside the hyperscaler GPU instance inventory, using the `aws` and `google` providers: ```sql -SELECT 'nvcf' AS platform, cg.name AS location, json_extract(g.value, '$.name') AS gpu -FROM nvidia.nvcf_deployments.cluster_groups cg, json_each(cg.gpus) g +SELECT 'nvcf' AS platform, cluster_group AS location, gpu +FROM nvidia.nvcf_deployments.vw_gpu_capacity UNION ALL SELECT 'aws', region, json_extract(gpu_info, '$.Gpus[0].Name') FROM aws.ec2.instance_types diff --git a/website/docs/services/nvcf_deployments/index.md b/website/docs/services/nvcf_deployments/index.md index 7e674c9..17e21ae 100644 --- a/website/docs/services/nvcf_deployments/index.md +++ b/website/docs/services/nvcf_deployments/index.md @@ -18,7 +18,7 @@ nvcf_deployments service documentation. :::info[Service Summary] -total resources: __7__ +total resources: __8__ ::: @@ -33,6 +33,7 @@ total resources: __7__ <div class="providerDocColumn"> <a href="/services/nvcf_deployments/registry_credentials/">registry_credentials</a><br /> <a href="/services/nvcf_deployments/telemetries/">telemetries</a><br /> -<a href="/services/nvcf_deployments/telemetry_secrets/">telemetry_secrets</a> +<a href="/services/nvcf_deployments/telemetry_secrets/">telemetry_secrets</a><br /> +<a href="/services/nvcf_deployments/vw_gpu_capacity/">vw_gpu_capacity</a> </div> </div> \ No newline at end of file diff --git a/website/docs/services/nvcf_deployments/vw_gpu_capacity/index.md b/website/docs/services/nvcf_deployments/vw_gpu_capacity/index.md new file mode 100644 index 0000000..3a033cf --- /dev/null +++ b/website/docs/services/nvcf_deployments/vw_gpu_capacity/index.md @@ -0,0 +1,145 @@ +--- +title: vw_gpu_capacity +hide_title: false +hide_table_of_contents: false +keywords: + - vw_gpu_capacity + - nvcf_deployments + - nvidia + - infrastructure_as_code + - configuration_as_data + - cloud inventory +description: Query, deploy and manage nvidia resources using SQL +custom_edit_url: null +image: /img/stackql-nvidia-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a <code>vw_gpu_capacity</code> resource. + +## Overview +<table><tbody> +<tr><td><b>Name</b></td><td><CopyableCode code="vw_gpu_capacity" /></td></tr> +<tr><td><b>Type</b></td><td>View</td></tr> +<tr><td><b>Id</b></td><td><CopyableCode code="nvidia.nvcf_deployments.vw_gpu_capacity" /></td></tr> +</tbody></table> + +## Fields + +The following fields are returned by this view: + +<table> +<thead> + <tr> + <th>Name</th> + <th>Datatype</th> + <th>Description</th> + </tr> +</thead> +<tbody> +<tr> + <td><CopyableCode code="cluster_group" /></td> + <td><CopyableCode code="string" /></td> + <td>Cluster group name (the backend named in a deployment specification).</td> +</tr> +<tr> + <td><CopyableCode code="cluster_group_id" /></td> + <td><CopyableCode code="string" /></td> + <td>Cluster group id.</td> +</tr> +<tr> + <td><CopyableCode code="gpu" /></td> + <td><CopyableCode code="string" /></td> + <td>GPU type available in the cluster group (for example L40</td> +</tr> +<tr> + <td><CopyableCode code="instance_type" /></td> + <td><CopyableCode code="string" /></td> + <td>Instance type name for the GPU (the instanceType of a deployment specification).</td> +</tr> +<tr> + <td><CopyableCode code="instance_description" /></td> + <td><CopyableCode code="string" /></td> + <td>Vendor description of the instance type.</td> +</tr> +<tr> + <td><CopyableCode code="is_default" /></td> + <td><CopyableCode code="boolean" /></td> + <td>Whether the instance type is the default for the GPU.</td> +</tr> +<tr> + <td><CopyableCode code="cluster" /></td> + <td><CopyableCode code="string" /></td> + <td>Name of the first cluster in the group.</td> +</tr> +<tr> + <td><CopyableCode code="nca_id" /></td> + <td><CopyableCode code="string" /></td> + <td>NVIDIA Cloud Account that owns the cluster group.</td> +</tr> +</tbody> +</table> + +## `SELECT` Examples + +```sql +SELECT + cluster_group, + cluster_group_id, + gpu, + instance_type, + instance_description, + is_default, + cluster, + nca_id +FROM nvidia.nvcf_deployments.vw_gpu_capacity; +``` + +## SQL Definition + +<Tabs +defaultValue="Sqlite3" +values={[ +{ label: 'Sqlite3', value: 'Sqlite3' }, +{ label: 'Postgres', value: 'Postgres' } +]} +> +<TabItem value="Sqlite3"> + +```sql +SELECT cg.name AS cluster_group, + cg.id AS cluster_group_id, + json_extract(g.value, '$.name') AS gpu, + json_extract(it.value, '$.name') AS instance_type, + json_extract(it.value, '$.description') AS instance_description, + json_extract(it.value, '$.default') AS is_default, + json_extract(cg.clusters, '$[0].name') AS cluster, + cg.nca_id +FROM nvidia.nvcf_deployments.cluster_groups cg, + json_each(cg.gpus) g, + json_each(json_extract(g.value, '$.instanceTypes')) it +``` + +</TabItem> +<TabItem value="Postgres"> + +```sql +SELECT cg.name AS cluster_group, + cg.id AS cluster_group_id, + g.value->>'name' AS gpu, + it.value->>'name' AS instance_type, + it.value->>'description' AS instance_description, + (it.value->>'default')::boolean AS is_default, + cg.clusters::jsonb->0->>'name' AS cluster, + cg.nca_id +FROM nvidia.nvcf_deployments.cluster_groups cg, + jsonb_array_elements(cg.gpus::jsonb) AS g(value), + jsonb_array_elements(g.value->'instanceTypes') AS it(value) +``` + +</TabItem> +</Tabs> diff --git a/website/docs/services/nvcf_functions/authorizations/index.md b/website/docs/services/nvcf_functions/authorizations/index.md index 257feb4..0d15cfb 100644 --- a/website/docs/services/nvcf_functions/authorizations/index.md +++ b/website/docs/services/nvcf_functions/authorizations/index.md @@ -36,7 +36,8 @@ The following fields are returned by `SELECT` queries: defaultValue="list_version" values={[ { label: 'list_version', value: 'list_version' }, - { label: 'list', value: 'list' } + { label: 'list', value: 'list' }, + { label: 'list_all', value: 'list_all' } ]} > <TabItem value="list_version"> @@ -75,6 +76,40 @@ The following fields are returned by `SELECT` queries: </TabItem> <TabItem value="list"> +<table> +<thead> + <tr> + <th>Name</th> + <th>Datatype</th> + <th>Description</th> + </tr> +</thead> +<tbody> +<tr> + <td><CopyableCode code="id" /></td> + <td><code>string (uuid)</code></td> + <td>Function id</td> +</tr> +<tr> + <td><CopyableCode code="nca_id" /></td> + <td><code>string (UTF-8)</code></td> + <td>NVIDIA Cloud Account Id (wire: ncaId)</td> +</tr> +<tr> + <td><CopyableCode code="version_id" /></td> + <td><code>string (uuid)</code></td> + <td>Function version id (wire: versionId)</td> +</tr> +<tr> + <td><CopyableCode code="authorized_parties" /></td> + <td><code>array</code></td> + <td>Authorized parties allowed to invoke the function (wire: authorizedParties)</td> +</tr> +</tbody> +</table> +</TabItem> +<TabItem value="list_all"> + <table> <thead> <tr> @@ -136,7 +171,14 @@ The following methods are available for this resource: <td><CopyableCode code="select" /></td> <td><a href="#parameter-function_id"><code>function_id</code></a></td> <td></td> - <td>Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header </td> + <td>Lists function versions of the specified function and their corresponding authorized accounts allowed to invoke the function version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header </td> +</tr> +<tr> + <td><a href="#list_all"><CopyableCode code="list_all" /></a></td> + <td><CopyableCode code="select" /></td> + <td></td> + <td></td> + <td>Lists all the function versions in an account that have been shared/authorized with/to other accounts. Response includes the nca-ids of the authorized accounts. If a function version is not shared/authorized, then it is not included in the response. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header </td> </tr> <tr> <td><a href="#add_version"><CopyableCode code="add_version" /></a></td> @@ -229,7 +271,8 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# defaultValue="list_version" values={[ { label: 'list_version', value: 'list_version' }, - { label: 'list', value: 'list' } + { label: 'list', value: 'list' }, + { label: 'list_all', value: 'list_all' } ]} > <TabItem value="list_version"> @@ -250,7 +293,7 @@ AND function_version_id = '{{ function_version_id }}' -- required </TabItem> <TabItem value="list"> -Lists NVIDIA Cloud Account IDs that are authorized to invoke any version of the specified function. The response includes an array showing authorized accounts for each version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header +Lists function versions of the specified function and their corresponding authorized accounts allowed to invoke the function version. Individual versions of a function can have their own authorized accounts. So, each object in the array can have different authorized accounts listed. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header ```sql SELECT @@ -263,6 +306,20 @@ WHERE function_id = '{{ function_id }}' -- required ; ``` </TabItem> +<TabItem value="list_all"> + +Lists all the function versions in an account that have been shared/authorized with/to other accounts. Response includes the nca-ids of the authorized accounts. If a function version is not shared/authorized, then it is not included in the response. Access to this functionality mandates the inclusion of a bearer token with the 'authorize_clients' scope in the HTTP Authorization header + +```sql +SELECT +id, +nca_id, +version_id, +authorized_parties +FROM nvidia.nvcf_functions.authorizations +; +``` +</TabItem> </Tabs> diff --git a/website/docs/services/private_registry/artifacts/index.md b/website/docs/services/private_registry/artifacts/index.md index 4e39075..d666aac 100644 --- a/website/docs/services/private_registry/artifacts/index.md +++ b/website/docs/services/private_registry/artifacts/index.md @@ -765,14 +765,14 @@ The following methods are available for this resource: <tr> <td><a href="#create_by_team"><CopyableCode code="create_by_team" /></a></td> <td><CopyableCode code="insert" /></td> - <td><a href="#parameter-team_name"><code>team_name</code></a>, <a href="#parameter-artifact_type"><code>artifact_type</code></a></td> + <td><a href="#parameter-team_name"><code>team_name</code></a>, <a href="#parameter-artifact_type"><code>artifact_type</code></a>, <a href="#parameter-name"><code>name</code></a>, <a href="#parameter-short_description"><code>short_description</code></a></td> <td></td> <td>Create artifact in team</td> </tr> <tr> <td><a href="#create"><CopyableCode code="create" /></a></td> <td><CopyableCode code="insert" /></td> - <td><a href="#parameter-artifact_type"><code>artifact_type</code></a></td> + <td><a href="#parameter-artifact_type"><code>artifact_type</code></a>, <a href="#parameter-name"><code>name</code></a>, <a href="#parameter-short_description"><code>short_description</code></a></td> <td></td> <td>Create artifact in org</td> </tr> @@ -1200,11 +1200,11 @@ SELECT '{{ labels_v2 }}', '{{ license_terms }}', '{{ logo }}', -'{{ name }}', +'{{ name }}' /* required */, '{{ privacy }}', '{{ publisher }}', '{{ safety_and_security }}', -'{{ short_description }}', +'{{ short_description }}' /* required */, '{{ team_name }}', '{{ artifact_type }}' RETURNING @@ -1247,11 +1247,11 @@ SELECT '{{ labels_v2 }}', '{{ license_terms }}', '{{ logo }}', -'{{ name }}', +'{{ name }}' /* required */, '{{ privacy }}', '{{ publisher }}', '{{ safety_and_security }}', -'{{ short_description }}', +'{{ short_description }}' /* required */, '{{ artifact_type }}' RETURNING artifact, diff --git a/website/docs/services/private_registry/index.md b/website/docs/services/private_registry/index.md index 042c835..6519a38 100644 --- a/website/docs/services/private_registry/index.md +++ b/website/docs/services/private_registry/index.md @@ -18,7 +18,7 @@ private_registry service documentation. :::info[Service Summary] -total resources: __31__ +total resources: __30__ ::: @@ -39,15 +39,14 @@ total resources: __31__ <a href="/services/private_registry/artifacts/">artifacts</a><br /> <a href="/services/private_registry/collection_artifacts/">collection_artifacts</a><br /> <a href="/services/private_registry/collection_product_shares/">collection_product_shares</a><br /> -<a href="/services/private_registry/collections/">collections</a><br /> -<a href="/services/private_registry/encryption_keys/">encryption_keys</a> +<a href="/services/private_registry/collections/">collections</a> </div> <div class="providerDocColumn"> +<a href="/services/private_registry/encryption_keys/">encryption_keys</a><br /> <a href="/services/private_registry/helm_chart_versions/">helm_chart_versions</a><br /> <a href="/services/private_registry/license_acceptances/">license_acceptances</a><br /> <a href="/services/private_registry/model_encryption_keys/">model_encryption_keys</a><br /> <a href="/services/private_registry/model_files/">model_files</a><br /> -<a href="/services/private_registry/model_shares/">model_shares</a><br /> <a href="/services/private_registry/model_versions/">model_versions</a><br /> <a href="/services/private_registry/models/">models</a><br /> <a href="/services/private_registry/recipe_files/">recipe_files</a><br /> diff --git a/website/docs/services/private_registry/model_shares/index.md b/website/docs/services/private_registry/model_shares/index.md deleted file mode 100644 index ee409ac..0000000 --- a/website/docs/services/private_registry/model_shares/index.md +++ /dev/null @@ -1,298 +0,0 @@ ---- -title: model_shares -hide_title: false -hide_table_of_contents: false -keywords: - - model_shares - - private_registry - - nvidia - - infrastructure_as_code - - configuration_as_data - - cloud inventory -description: Query, deploy and manage nvidia resources using SQL -custom_edit_url: null -image: /img/stackql-nvidia-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a <code>model_shares</code> resource. - -## Overview -<table><tbody> -<tr><td><b>Name</b></td><td><CopyableCode code="model_shares" /></td></tr> -<tr><td><b>Type</b></td><td>Resource</td></tr> -<tr><td><b>Id</b></td><td><CopyableCode code="nvidia.private_registry.model_shares" /></td></tr> -</tbody></table> - -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - -<table> -<thead> - <tr> - <th>Name</th> - <th>Accessible by</th> - <th>Required Params</th> - <th>Optional Params</th> - <th>Description</th> - </tr> -</thead> -<tbody> -<tr> - <td><a href="#add_team_by_team"><CopyableCode code="add_team_by_team" /></a></td> - <td><CopyableCode code="insert" /></td> - <td><a href="#parameter-team_name"><code>team_name</code></a>, <a href="#parameter-model_name"><code>model_name</code></a>, <a href="#parameter-target_team"><code>target_team</code></a></td> - <td></td> - <td>This operation shares a team model with the team.</td> -</tr> -<tr> - <td><a href="#add_team"><CopyableCode code="add_team" /></a></td> - <td><CopyableCode code="insert" /></td> - <td><a href="#parameter-model_name"><code>model_name</code></a>, <a href="#parameter-target_team"><code>target_team</code></a></td> - <td></td> - <td>This operation shares an org model with the team.</td> -</tr> -<tr> - <td><a href="#add_org_by_team"><CopyableCode code="add_org_by_team" /></a></td> - <td><CopyableCode code="insert" /></td> - <td><a href="#parameter-team_name"><code>team_name</code></a>, <a href="#parameter-model_name"><code>model_name</code></a></td> - <td></td> - <td>This operation shares a team model with the org.</td> -</tr> -<tr> - <td><a href="#add_org"><CopyableCode code="add_org" /></a></td> - <td><CopyableCode code="insert" /></td> - <td><a href="#parameter-model_name"><code>model_name</code></a></td> - <td></td> - <td>This operation shares an org model with the org.</td> -</tr> -<tr> - <td><a href="#remove_team_by_team"><CopyableCode code="remove_team_by_team" /></a></td> - <td><CopyableCode code="delete" /></td> - <td><a href="#parameter-team_name"><code>team_name</code></a>, <a href="#parameter-model_name"><code>model_name</code></a>, <a href="#parameter-target_team"><code>target_team</code></a></td> - <td></td> - <td>This operation revokes a shared team model with the team.</td> -</tr> -<tr> - <td><a href="#remove_team"><CopyableCode code="remove_team" /></a></td> - <td><CopyableCode code="delete" /></td> - <td><a href="#parameter-model_name"><code>model_name</code></a>, <a href="#parameter-target_team"><code>target_team</code></a></td> - <td></td> - <td>This operation revokes a shared org model with the team.</td> -</tr> -<tr> - <td><a href="#remove_org_by_team"><CopyableCode code="remove_org_by_team" /></a></td> - <td><CopyableCode code="delete" /></td> - <td><a href="#parameter-team_name"><code>team_name</code></a>, <a href="#parameter-model_name"><code>model_name</code></a></td> - <td></td> - <td>This operation revokes a shared team model with the org.</td> -</tr> -<tr> - <td><a href="#remove_org"><CopyableCode code="remove_org" /></a></td> - <td><CopyableCode code="delete" /></td> - <td><a href="#parameter-model_name"><code>model_name</code></a></td> - <td></td> - <td>This operation revokes a shared org model with the org.</td> -</tr> -</tbody> -</table> - -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - -<table> -<thead> - <tr> - <th>Name</th> - <th>Datatype</th> - <th>Description</th> - </tr> -</thead> -<tbody> -<tr id="parameter-model_name"> - <td><CopyableCode code="model_name" /></td> - <td><code>string (UTF-8)</code></td> - <td>Model name</td> -</tr> -<tr id="parameter-target_team"> - <td><CopyableCode code="target_team" /></td> - <td><code>string (UTF-8)</code></td> - <td>Target team name</td> -</tr> -<tr id="parameter-team_name"> - <td><CopyableCode code="team_name" /></td> - <td><code>string (UTF-8)</code></td> - <td>Team name</td> -</tr> -</tbody> -</table> - -## `INSERT` examples - -<Tabs - defaultValue="add_team_by_team" - values={[ - { label: 'add_team_by_team', value: 'add_team_by_team' }, - { label: 'add_team', value: 'add_team' }, - { label: 'add_org_by_team', value: 'add_org_by_team' }, - { label: 'add_org', value: 'add_org' }, - { label: 'Manifest', value: 'manifest' } - ]} -> -<TabItem value="add_team_by_team"> - -This operation shares a team model with the team. - -```sql -INSERT INTO nvidia.private_registry.model_shares ( -team_name, -model_name, -target_team -) -SELECT -'{{ team_name }}', -'{{ model_name }}', -'{{ target_team }}' -RETURNING -request_status -; -``` -</TabItem> -<TabItem value="add_team"> - -This operation shares an org model with the team. - -```sql -INSERT INTO nvidia.private_registry.model_shares ( -model_name, -target_team -) -SELECT -'{{ model_name }}', -'{{ target_team }}' -RETURNING -request_status -; -``` -</TabItem> -<TabItem value="add_org_by_team"> - -This operation shares a team model with the org. - -```sql -INSERT INTO nvidia.private_registry.model_shares ( -team_name, -model_name -) -SELECT -'{{ team_name }}', -'{{ model_name }}' -RETURNING -request_status -; -``` -</TabItem> -<TabItem value="add_org"> - -This operation shares an org model with the org. - -```sql -INSERT INTO nvidia.private_registry.model_shares ( -model_name -) -SELECT -'{{ model_name }}' -RETURNING -request_status -; -``` -</TabItem> -<TabItem value="manifest"> - -<CodeBlock language="yaml">{`# Description fields are for documentation purposes -- name: model_shares - props: - - name: team_name - value: "{{ team_name }}" - description: Required parameter for the model_shares resource. - - name: model_name - value: "{{ model_name }}" - description: Required parameter for the model_shares resource. - - name: target_team - value: "{{ target_team }}" - description: Required parameter for the model_shares resource. -`}</CodeBlock> - -</TabItem> -</Tabs> - - -## `DELETE` examples - -<Tabs - defaultValue="remove_team_by_team" - values={[ - { label: 'remove_team_by_team', value: 'remove_team_by_team' }, - { label: 'remove_team', value: 'remove_team' }, - { label: 'remove_org_by_team', value: 'remove_org_by_team' }, - { label: 'remove_org', value: 'remove_org' } - ]} -> -<TabItem value="remove_team_by_team"> - -This operation revokes a shared team model with the team. - -```sql -DELETE FROM nvidia.private_registry.model_shares -WHERE team_name = '{{ team_name }}' --required -AND model_name = '{{ model_name }}' --required -AND target_team = '{{ target_team }}' --required -; -``` -</TabItem> -<TabItem value="remove_team"> - -This operation revokes a shared org model with the team. - -```sql -DELETE FROM nvidia.private_registry.model_shares -WHERE model_name = '{{ model_name }}' --required -AND target_team = '{{ target_team }}' --required -; -``` -</TabItem> -<TabItem value="remove_org_by_team"> - -This operation revokes a shared team model with the org. - -```sql -DELETE FROM nvidia.private_registry.model_shares -WHERE team_name = '{{ team_name }}' --required -AND model_name = '{{ model_name }}' --required -; -``` -</TabItem> -<TabItem value="remove_org"> - -This operation revokes a shared org model with the org. - -```sql -DELETE FROM nvidia.private_registry.model_shares -WHERE model_name = '{{ model_name }}' --required -; -``` -</TabItem> -</Tabs> diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 21e5a37..01d3ea6 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -7,9 +7,8 @@ const config = createConfig({ providerTitle, prismThemes, overrides: { - // Docusaurus Faster (rspack + swc, via @docusaurus/faster) - not - // strictly required at this site's page count, but kept for build - // speed and consistency with the other provider microsites. + // Docusaurus Faster (rspack + swc, via @docusaurus/faster), consistent + // with the other provider microsites. future: { v4: true, faster: true, @@ -17,15 +16,15 @@ const config = createConfig({ }, }); -// Date-stamp every doc page ("Last updated on ...") - the shared config -// ships showLastUpdateTime: false, so flip it here. Docs are generated and -// committed, so git history supplies the timestamps. +// Date-stamp every doc page ("Last updated on ..."). The pages are +// regenerated and committed on every provider refresh, so the stamp is the +// regeneration date. config.presets[0][1].docs.showLastUpdateTime = true; -// Use the locally vendored registry-branded logos (STACKQL>> | REGISTRY, -// matching the awscc microsite) instead of the shared config's hotlinked -// main-site wordmark - self-contained assets, no cross-origin fetch. -// global.css swaps in the -mobile variants below 996px. +// Use the locally vendored registry-branded logos (STACKQL>> | REGISTRY) +// instead of the shared config's hotlinked main-site wordmark - +// self-contained assets, no cross-origin fetch. global.css swaps in the +// -mobile variants below 996px. const registryLogo = { alt: 'StackQL', href: '/', diff --git a/website/package.json b/website/package.json index 3c098a2..7f17b06 100644 --- a/website/package.json +++ b/website/package.json @@ -67,7 +67,7 @@ ] }, "engines": { - "node": ">=20.0" + "node": ">=22.19" }, "license": "MIT" } diff --git a/website/provider.js b/website/provider.js index 20eb34e..a9d75d8 100644 --- a/website/provider.js +++ b/website/provider.js @@ -1,2 +1,17 @@ +// The only site-local identity the microsite needs. Everything else comes +// from the shared stackql/docusaurus-config, vendored to .shared-config/ at +// build time (see package.json vendor-config). export const providerName = 'nvidia'; export const providerTitle = 'NVIDIA NGC'; + +// The scoping server variable and its environment variable +// (x-stackQL-envVar), read by scripts/sanitize-docs.mjs to annotate +// generated examples "required unless <env var> is set". Deliberately null +// here: the org_name scope rides path-level server templates, which docgen +// does not render into the examples of the scoped (private_registry, orgs) +// pages at all, while the org_name that does appear in examples - the +// public catalog's /v2/models/{org_name}/... and the root path +// /v2/orgs/{org_name} - is a plain path parameter that NGC_ORG never +// resolves. Annotating would mark the wrong pages (NOTES.md 22). +export const scopeVariable = null; +export const scopeEnvVar = null; diff --git a/website/scripts/sanitize-docs.mjs b/website/scripts/sanitize-docs.mjs index e368417..609957a 100644 --- a/website/scripts/sanitize-docs.mjs +++ b/website/scripts/sanitize-docs.mjs @@ -1,38 +1,73 @@ #!/usr/bin/env node -// Post-docgen sanitizer for the generated provider docs. +// Post-docgen sanitizer for the generated provider docs. Run after +// `generate-docs`, before building the website (`make docs` does both). // -// AWS descriptions carry literal angle-bracket placeholders (<region>, -// <account-id>), stray unpaired HTML (</code>, <p>) and XML samples -// (<Grantee xsi:type="...">). MDX v3 parses any raw <token> as JSX and -// fails the build on the first mismatch; braces ({...}) parse as JSX -// expressions with the same failure mode. +// 1. MDX safety. Vendor descriptions carry literal angle-bracket placeholders +// (<region>), stray unpaired HTML, XML samples and regex fragments. MDX v3 +// parses any raw <token> as JSX and fails the build on the first +// mismatch; braces parse as JSX expressions. The generator's structure is +// line-shaped (one <td>...</td> per line; description text only ever +// appears as td inner content or TabItem prose), so: inside every +// description cell escape angle brackets, braces and square brackets +// (protecting backtick-wrapped `<placeholder>` tokens as <code>), and +// leave every structural line byte-for-byte untouched. // -// The doc generator's own structure is line-shaped: one `<td>...</td>` -// cell per line, and description text ONLY ever appears as td inner -// content. So the deterministic fix: inside every description cell, -// escape ALL angle brackets and braces (protecting the stage-1 -// backtick-wrapped `<placeholder>` tokens as <code> spans); leave -// every other line - tables, Tabs/TabItem/CodeBlock, CopyableCode, -// index link lists - byte-for-byte untouched. +// 2. Scope annotations (when provider.js exports scopeVariable and +// scopeEnvVar). docgen merges server variables into every method's +// required parameters and example WHERE clauses, which is right only +// when the env var is unset; every `<var> = '{{ <var> }}' -- required` +// example is annotated "required unless <ENV> is set". // -// Run after `npm run generate-docs`, before building the website. +// 3. Landing-page resource count. docgen's total includes each service +// index page; recount from the generated service directories. +// +// 4. nvidia-specific: the NGC core query parameters are kebab-case on the +// wire (page-size, resolve-labels, exclude-from-team) and the engine +// accepts their snake_case spelling (request.nativeCasing: kebab), which +// is the user surface the rest of the docs present. The kebab parameter +// tokens in the parameter tables, the method tables' parameter links, the +// anchors and the SQL examples of the resource pages are rewritten to +// snake_case; description prose is left alone. import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; -const docsDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'docs'); +const siteDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const docsDir = path.join(siteDir, 'docs'); +// provider.js is an ES module in a package without "type": "module" (the +// vendored shared config is CommonJS), so read the two exports as text. +const providerJs = fs.readFileSync(path.join(siteDir, 'provider.js'), 'utf8'); +const exportOf = (name) => { + const m = providerJs.match(new RegExp(`export\\s+const\\s+${name}\\s*=\\s*(?:'([^']*)'|"([^"]*)"|(null))`)); + return m ? (m[1] ?? m[2] ?? null) : null; +}; +const SCOPE_VAR = exportOf('scopeVariable'); +const SCOPE_ENV = exportOf('scopeEnvVar'); const TD_LINE = /^(\s*<td>)(.*)(<\/td>\s*)$/; const LINK_TOKEN = '<a href="#[^"]*">(?:<CopyableCode\\b[^<>]*\\/>|<code>[^<>]*<\\/code>)<\\/a>'; const LINK_TOKEN_CELL = new RegExp(`^${LINK_TOKEN}(?:,\\s*${LINK_TOKEN})*$`); const BACKTICKED = /`<([A-Za-z][A-Za-z0-9_.:-]*)>`/g; // Control-char sentinels: cannot occur in generated markdown. -const OPEN = ''; -const CLOSE = ''; +const OPEN = '\u0001'; +const CLOSE = '\u0002'; let filesChanged = 0; let cellsEscaped = 0; +let scopeAnnotated = 0; + +function annotateScope(lines) { + if (!SCOPE_VAR || !SCOPE_ENV) return false; + const sqlRe = new RegExp(`(${SCOPE_VAR}\\s*=\\s*'\\{\\{ ${SCOPE_VAR} \\}\\}'\\s*--\\s*required)(?!\\s+unless)`); + const execRe = new RegExp(`(@${SCOPE_VAR}='\\{\\{ ${SCOPE_VAR} \\}\\}'\\s*--required)(?!\\s+unless)`); + let changed = false; + for (let i = 0; i < lines.length; i++) { + if (sqlRe.test(lines[i])) { lines[i] = lines[i].replace(sqlRe, `$1 unless ${SCOPE_ENV} is set`); changed = true; scopeAnnotated++; } + else if (execRe.test(lines[i])) { lines[i] = lines[i].replace(execRe, `$1 unless ${SCOPE_ENV} is set`); changed = true; scopeAnnotated++; } + } + return changed; +} function escapeDescription(inner) { let out = inner.replace(BACKTICKED, (m, name) => OPEN + name + CLOSE); @@ -42,24 +77,21 @@ function escapeDescription(inner) { .replace(/\{/g, '{') .replace(/\}/g, '}') // Regex fragments in descriptions ("s3://([^/]+)(/.*)?") read as - // markdown links ("[...](...)") and crash the link resolver. + // markdown links and crash the link resolver. .replace(/\[/g, '[') .replace(/\]/g, ']') - // GFM autolinks bare "scheme://..." literals on the DECODED text - // tree (entity escapes cannot evade it) and Docusaurus crashes on - // regex-shaped ones ("https://.+"). A zero-width space inside "://" - // is invisible in rendering but breaks the autolink prefix match. + // GFM autolinks bare "scheme://..." literals on the DECODED text tree + // and Docusaurus crashes on regex-shaped ones. A zero-width space inside + // "://" is invisible in rendering but breaks the autolink prefix match. .replace(/:\/\//g, ':​//'); out = out.split(OPEN).join('<code><').split(CLOSE).join('></code>'); return out; } // Inside a CodeBlock template literal, a lone backslash before u/x is a JS -// string escape (backslash-u007F evaluates to a DEL byte at build time), and ${ -// starts interpolation. Double the backslash / escape the $ so the source -// text renders verbatim. -// The (?<!\\) guards skip sequences that are already escaped in the -// source (e.g. IAM session policies carry literal "\${Transfer:UserName}"). +// string escape and ${ starts interpolation. Double the backslash / escape +// the $ so the source text renders verbatim. The (?<!\\) guards skip +// sequences that are already escaped in the source. function escapeTemplateLiteral(line) { return line .replace(/(?<!\\)\\(?=[ux])/g, '\\\\') @@ -68,24 +100,18 @@ function escapeTemplateLiteral(line) { function sanitize(text) { const lines = text.split('\n'); - let changed = false; + let changed = annotateScope(lines); let inFence = false; let inTabItemProse = false; let inCodeBlock = false; for (let i = 0; i < lines.length; i++) { const line = lines[i]; const trimmed = line.trim(); - if (trimmed.startsWith('```')) { - inFence = !inFence; - continue; - } + if (trimmed.startsWith('```')) { inFence = !inFence; continue; } if (inFence) continue; // <CodeBlock>{`...`}</CodeBlock> spans hold verbatim SQL in a JSX - // template literal. The MDX/HTML escapes applied elsewhere must NOT - // touch these lines, but JS still evaluates the template literal, so - // sequences like backslash-u007F in AWS description text become raw control - // characters in the built HTML. Neutralize JS escape starts (\u, \x) - // and interpolation (${) so the text survives verbatim. + // template literal: the MDX/HTML escapes must not touch these lines, + // but JS still evaluates the literal, so neutralize escape starts. if (inCodeBlock) { if (/<\/CodeBlock>/.test(line)) inCodeBlock = false; const esc = escapeTemplateLiteral(line); @@ -98,32 +124,20 @@ function sanitize(text) { if (esc !== line) { lines[i] = esc; changed = true; } continue; } - if (/^<TabItem\b/.test(trimmed)) { - inTabItemProse = true; - continue; - } - if (/^<\/TabItem>/.test(trimmed)) { - inTabItemProse = false; - continue; - } + if (/^<TabItem\b/.test(trimmed)) { inTabItemProse = true; continue; } + if (/^<\/TabItem>/.test(trimmed)) { inTabItemProse = false; continue; } // Description table cells (one <td>...</td> per line). const m = TD_LINE.exec(line); if (m) { const inner = m[2]; if (/^<CopyableCode\b[^<>]*\/>$/.test(inner)) continue; - // Structural link cells in the Methods/Parameters tables: one or - // more comma-separated anchor-wrapped tokens - // (<a href="#m"><CopyableCode .../></a> or - // <a href="#parameter-x"><code>x</code></a>). Generated structure, - // not description text - must stay verbatim. + // Structural link cells in the Methods/Parameters tables stay verbatim. if (LINK_TOKEN_CELL.test(inner)) continue; const codeCell = /^<code>([^<>]*)<\/code>$/.exec(inner); if (codeCell) { - // Type/pattern cells: regex patterns form accidental markdown - // links ("[...](...)" inside character classes) and MDX brace - // expressions ({4,7} quantifiers). Neutralise both; entities - // decode inside the <code> element so rendering is unchanged. + // Type/pattern cells: regex patterns form accidental markdown links + // and MDX brace expressions ({4,7} quantifiers). const escaped = codeCell[1] .replace(/\[/g, '[') .replace(/\]/g, ']') @@ -146,10 +160,9 @@ function sanitize(text) { continue; } - // Method-description prose inside <TabItem> blocks (the paragraphs - // between the TabItem opener and the ```sql fence). Prose never - // starts with '<'; anything with raw angle brackets or braces there - // is hostile description content. + // Method-description prose inside <TabItem> blocks. Prose never starts + // with '<'; anything with raw angle brackets or braces there is hostile + // description content. if (inTabItemProse && trimmed && !trimmed.startsWith('<') && /[<>{}]/.test(line)) { const escaped = escapeDescription(line); if (escaped !== line) { @@ -162,13 +175,8 @@ function sanitize(text) { return { text: lines.join('\n'), changed }; } -// nvidia-specific: the NGC core query parameters are kebab-case on the wire -// (page-size, resolve-labels, exclude-from-team) and the engine accepts -// their snake_case spelling (request.nativeCasing: kebab), which is the -// user surface the rest of the docs present. Rewrite the kebab parameter -// tokens in the parameter tables, the method tables' parameter links, the -// anchors and the SQL examples to snake_case. Description prose is left -// alone. +// nvidia-specific (4.): kebab-case parameter tokens rendered as snake_case +// on the resource pages. const KEBAB = '[a-z][a-z0-9]*(?:-[a-z0-9]+)+'; let kebabRewrites = 0; function snakeKebabParams(text) { @@ -183,26 +191,11 @@ function snakeKebabParams(text) { return out; } -// docgen counts each service index as a resource; recount from the tree -function recountResources(indexPath) { - const servicesDir = path.join(docsDir, 'services'); - if (!fs.existsSync(servicesDir) || !fs.existsSync(indexPath)) return; - let resources = 0; - for (const svc of fs.readdirSync(servicesDir, { withFileTypes: true })) { - if (!svc.isDirectory()) continue; - resources += fs.readdirSync(path.join(servicesDir, svc.name), { withFileTypes: true }).filter((d) => d.isDirectory()).length; - } - const before = fs.readFileSync(indexPath, 'utf8'); - const after = before.replace(/total resources: __\d+__/, `total resources: __${resources}__`); - if (after !== before) fs.writeFileSync(indexPath, after); -} - function walk(dir) { for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { const p = path.join(dir, entry.name); - if (entry.isDirectory()) { - walk(p); - } else if (entry.name.endsWith('.md') || entry.name.endsWith('.mdx')) { + if (entry.isDirectory()) walk(p); + else if (entry.name.endsWith('.md') || entry.name.endsWith('.mdx')) { const before = fs.readFileSync(p, 'utf8'); let { text: after, changed } = sanitize(before); // parameter casing only applies to the resource pages (the landing @@ -211,14 +204,34 @@ function walk(dir) { const cased = snakeKebabParams(after); if (cased !== after) { after = cased; changed = true; } } - if (changed) { - fs.writeFileSync(p, after); - filesChanged++; - } + if (changed) { fs.writeFileSync(p, after); filesChanged++; } } } } +// Landing-page resource count: docgen's `total resources: __N__` counts each +// service index page as a resource; recount the resource pages under +// docs/services/<service>/*/ and rewrite the number. +function fixResourceCount() { + const servicesDir = path.join(docsDir, 'services'); + const indexFiles = fs.readdirSync(docsDir).filter((f) => /^index\.mdx?$/.test(f)); + if (!fs.existsSync(servicesDir) || indexFiles.length === 0) return 0; + let resources = 0; + for (const svc of fs.readdirSync(servicesDir, { withFileTypes: true })) { + if (!svc.isDirectory()) continue; + for (const res of fs.readdirSync(path.join(servicesDir, svc.name), { withFileTypes: true })) if (res.isDirectory()) resources++; + } + const indexPath = path.join(docsDir, indexFiles[0]); + const text = fs.readFileSync(indexPath, 'utf8'); + const fixed = text.replace(/(total resources:\s*__)\d+(__)/, `$1${resources}$2`); + if (fixed !== text) { fs.writeFileSync(indexPath, fixed); return resources; } + return 0; +} + +if (!fs.existsSync(docsDir)) { + console.error(`sanitize-docs: ${docsDir} does not exist - run generate-docs first`); + process.exit(1); +} walk(docsDir); -recountResources(path.join(docsDir, 'index.md')); -console.log(`sanitize-docs: escaped ${cellsEscaped} description cell(s) across ${filesChanged} file(s); ${kebabRewrites} kebab parameter token(s) rendered as snake_case`); +const recount = fixResourceCount(); +console.log(`sanitize-docs: escaped ${cellsEscaped} description cell(s) across ${filesChanged} file(s); ${scopeAnnotated} scope annotation(s); ${kebabRewrites} kebab parameter token(s) rendered as snake_case${recount ? `; landing page resource count set to ${recount}` : ''}`); diff --git a/website/src/components/HomepageFeatures/index.js b/website/src/components/HomepageFeatures/index.js deleted file mode 100644 index acc7621..0000000 --- a/website/src/components/HomepageFeatures/index.js +++ /dev/null @@ -1,64 +0,0 @@ -import clsx from 'clsx'; -import Heading from '@theme/Heading'; -import styles from './styles.module.css'; - -const FeatureList = [ - { - title: 'Easy to Use', - Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, - description: ( - <> - Docusaurus was designed from the ground up to be easily installed and - used to get your website up and running quickly. - </> - ), - }, - { - title: 'Focus on What Matters', - Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, - description: ( - <> - Docusaurus lets you focus on your docs, and we'll do the chores. Go - ahead and move your docs into the <code>docs</code> directory. - </> - ), - }, - { - title: 'Powered by React', - Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, - description: ( - <> - Extend or customize your website layout by reusing React. Docusaurus can - be extended while reusing the same header and footer. - </> - ), - }, -]; - -function Feature({Svg, title, description}) { - return ( - <div className={clsx('col col--4')}> - <div className="text--center"> - <Svg className={styles.featureSvg} role="img" /> - </div> - <div className="text--center padding-horiz--md"> - <Heading as="h3">{title}</Heading> - <p>{description}</p> - </div> - </div> - ); -} - -export default function HomepageFeatures() { - return ( - <section className={styles.features}> - <div className="container"> - <div className="row"> - {FeatureList.map((props, idx) => ( - <Feature key={idx} {...props} /> - ))} - </div> - </div> - </section> - ); -} diff --git a/website/src/components/HomepageFeatures/styles.module.css b/website/src/components/HomepageFeatures/styles.module.css deleted file mode 100644 index b248eb2..0000000 --- a/website/src/components/HomepageFeatures/styles.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureSvg { - height: 200px; - width: 200px; -} diff --git a/website/static/img/docusaurus-social-card.jpg b/website/static/img/docusaurus-social-card.jpg deleted file mode 100644 index ffcb448210e1a456cb3588ae8b396a597501f187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55746 zcmbq(by$^M)9+14OPA6h5)#tgAkrW$rF5rshja^@6p-$cZlt9Iq*J;!NH?5&>+^i? zd%l0pA7}Qy_I1b1tTi)h&HByS>tW_$1;CblCG!e^g989K@B=)|13|!}zl4PJ2n7Wh z1qB@q6%`E~2jemL!Fh^}hYfz85|I!R5RwovP?C~TGO*Io(y{V!aPUb>O6%!)!~Op% zc=!h3pup!KRwBSr0q{6*2sm&L-2e})oA3y5u+IKNa7f6Ak5CX$;b9M9ul{`jn)3(= z0TCG<<zWuMKmcE2BVdCs&r0%wne$4_AJrw=;4{~#qo3KJG3!V%*c9u?qTA4C0l*^w zpr;1__#ZHjfY)$p;BOY(&n7L8;<^OFN%fjXbz|aXIu=rS#d*x?CF)`}$||BD3n-}! z01To4JSgx8KEMwE@BxIPRzd!`;zxA>li6i8=o)3kSrx^3DjJi7W8(8t_%PJ~8lVjC z2VTPD&_&_>060+qq1c&?u#iAbP9wbT2jg5_aX>LlOOXw|dQJ8p&2XY<Fm?bDP7(lB z)PTYOJ>YDc|J+YUT?3|Fxm{f?d*1vFWPGwXt8P3T#_<T=j~;-T^w%~qQCJ56xGDbR zSms(ebHaHkv|5`y!m{jyT8%^-_<6BYn3OW`2G*;rKT`1iqF`si#sM;;qA=zf!ZHGz zEcIF&bpokcHNrdkx^Tidm?J?cWqJVKPx+4&!0=C7u*Mn^->TQB*NSP3+0+ndOe%v- zTZotCfofsS06&ki{<`Cj8{s5jFZc&1dl<{IBW%#V_!JjOm6+#&aRi;8<qf_BJ(h(A zj#~f`9}#wI4tf#h4ghejFNq*5d|Q{mI9ZpVUKjpm5^NgX=F#7_vcQPZ!!9Yo?$U!= zU@-&R+R`NYAIG;r5~Xz1nDfwW@L}AbMIcKa$b|yq2Ac%~4<pRhsa~|YLdLn`I={NP zti1mO3r-Z~JJ9t2APO>ODL(?0fENIOtiNXjMhdO24CeDB#rNcC*<=TwpueFfx=2=r z-lt`qW^;vEFji%7kO25#YkwjKyZ93WFbbY!Q6-@Jz!9kqj>xgp2VhEYyMJwMYyHZV z<N;8eJ0{6LfDZ=+9s%?)C4b`xGd$}b9RS?)QX9X&#$>G;7!MV>54LS*F?==$6(Z9S zfrEy``J-iu6G?#+q=$58MlrE}+C~G-hEMn#CuNuuVV;8#FHuD_feqmtfw~Ran|V#C zy+f^&q>|d(X{ubCVWs3Ai;Fz>-kAk`yX{^Qj_xV#NEV8oxtfCsq3%uYN0U4+Kcu%j z?Rzr+fnu%QVSgx7Z8;iqDfklV<B(tzNxtxb<E>K3tl(C|B5~_ywyQf&|IJgyoV|q( z<1`6^2G=2%pTX$m#~!Q-7f>sA;n6<Z&+`Sf_BEPzDrUOLt+9RAc%m*`1{s=ze)D8> zsy{fJ>o;yxpRCMtZFb#E)dl;n&K%g;H?#HaC_Hvn<d&auS@noHDK|w2cJBoTKS2~X zr?-x;EBF0imLflz?)#{tF&?2YCaWW-vEAyud+&JW(w?%eM`tH{e5k&sud;9*sIWk$ z*jRNnT5x*EnDnWF0#9%`RV3>HuqN*d+9vB7ZNpfqqTsk*(((>8<~)=+HX!*Ss3~|# zShAf@XL@`g)$G<Lz0-np`eQ-pv*XNd$5l*w*I1)z8T2vjaQLM4;ipWT{>$rAA9cU; zk+0v$7Rl=PDs_rN&*@^DQ<3}LIqeDu_8cvBZoZQK#xaB*@qDhG^d_fYSBG@Y_wC5B zy{FTF=4jI`H0PRGXlulcwJ$*KBs^);$y@AfTWB!przp%+gn+%ZU2qD$Eml|2m?K;y zsAx49(J!Aq5lqX4u5Rlh{1hD6V?uI0-0}%=eSBZ<jc#x9miwmkC0VAjZFzy6`R^J# z$>T$;aWCJrM*G=&(~P~7QxUJFlHF+63{SfFhWU%gt&D(4Z~X54CH?JsJEHzO9{;5# z5f-P_*$Y>=CXYL(i4Vw1)$Y&DwihU}jeLyuS2hQ>zS%^7!rET)y)?ZI;W^c(neZ5; zcYHr@l=i48ImXZ(y)o<7>Av^Nw!8t!KDn{67gef*G5f-&iZ;`G@ej`@uBTkn0_QVc zw|RGr%!y<lX+z14yxcIy7B#2&m3VHgT3x<hPV?+l9a6%a0N2?<_DCI;vQ%Wjl=VTs z^~{&oqupTW_^sj!OWc%C+NPb_udk%OtZmP`2jAC!9rl*k*eJ_U-fO=5^yYN4_QxHK zG|vOTw3J3MdZ!Zh`(!(RZ<Az@b^K0Xz{_T>|LdrjWk$H6iyi9+o%)D%pY)DHt@e}~ z-ryeSdskl$jkA%Gje(z=CvG<e!cDi%cNf!G%UgX5$A{9Dmv)}Jx~6wiS0a1l^Q1G( zKf68g`t^np)+z;_#$+8u+Euzo#r=-l8xvyH&}VLsS!XfeNmJU>Ub4lqb$@>K02q8; zBpGv48m)G3Jz8nD`*7z;ch+s~JId9q{~KmJV4qG#Vy<FSD<)@QIj214aWN(MYxmBR zYrsOl&m1-YdSC+p<KzLb%UUw<C85glAQ3flUcfw9a^JII&Gz7~w7s|6)n6X=4qDs9 z7fkFurNAE*dQ|Me5H{P={^Q`DHSXF8uGOpM+uC-@sL*}$68VT~#ww5e?y9S+rkisc z8|36ZGZ$*5D{~QjD5MZ}>htwGh1U7ZW~XgF&CHVcfjI@4|IAMz<Vd5|z#;39Alt=? zALmYMLcfo(Sko0s&Pwfwkn08GydD65n6<vFnJ&jknnzc=-okF|OpP_xr3IfR(ZQq! z5++GVjx4h}GkuB8+hTOv@aeXS%|p$-t8%&53lzf{db{3M12>t<JI%q5vZ|9^&c7OR zQiz)iZnpaI_zIkrCyuoez2!0BJySB<%;@%V0^C_6wuKooJkZrnRq?*M`+ixxHJ~}& zMDTESD=Sc5X{Ljm*)AboUCrL~>7B{D4ttmRhW76WO-cP6HX>7cPS<kA&EdP}m3j8V zCfb^C*H9>Ion_Pic=YB^cwH;qqm2b=+@OjfH55;lLt@>%R&7MejNBW98rLJXZZQtF zmm<7wrV(U^X%O}rZp($;Nb;(nTO##-Fk_K%y2c4)Yt?EsKDLVz&SyIxmRvPYUf)~A zkMkfE4X%Dz8*f>*I$-5J)wLSdUUaV&xP%U!WXidR7*F!E3|fu1supvKyq>T*84`M& z=Dt<hq)6`ldiGQyCw@<-FaEN5G-e|seoE-kNf%UDb>)zp4h*&a^3bbAWSy|{$~mRt znU?J9X@W)z1+)2SKH;RDEk{C{F~PxzePOC4k2I22=OxAKZEhYTo#jZLnzJRvL-#I` z%_%U{YhbA5LxSuc7mb|<#t0l8BZHy-cvj?r(|M5YOMU0wJ}PLj6z+91PP@u~sUN(0 zoPkUiqj+}m^;#5WI-p1sl3!d`><`0$1U4*Tus{#@{oJ~C_^ll&fIY{RWHLB)Iw~-5 z_trhoc*;Xx|5u&|7Q=~%>SU9d<Bv4yPa)19Qt5KtL#|GJDf?XyDjH8dm>JXt>XnSP z$}G4aR=bB#EC~i5U_z8$Olb|B1Ec2J6a`$P64P%*8UxnscnAmYxki;vGRSH!M<=El z7AwT}?l;S3Ju)fk9NDaW<~K*9J6DCaimLP@Zry38*StONeVaYg4GMSV1sb;$0#63E znXJh6$=|17p)3iget{zQI<J@OA(US`x|g5yy9pU7uhfq`S;&Z(q7bglZCEC!+mY|v zTg-TOHF@OYi<NZ!Yxa)xk2C0Sx_;LE_y=3%5lQYXYo4gmL?>-ZcSA4kztpbVusXh9 z97)P(^GVx?9}T_w+?VG}Hu2dxs!PdI;c!Skm{8crbnUpgGsmO6Y~0f~`3af#=;}JO zs+>jl(}Ww@TF9nIIp*io9|Ar+SXKeoJ2p0x<sNkvW3$Z6vo7{z`8++tGtSZN?z`3o zSv4`3((2W1uf2u>qq^dDIUaz_3UMRe!*?g>RKH02EKY^8E=Ov%mKqCKc_O8|58B$F z2nPy$8uP`<bUY3*IJ!Do^t$`a>nq5-GE>)_IseB*$*+;W_EcowmS_|Q%w=6aW(&AB z%OtxG-1&Xrq>E%{bj<mA=<*svN6E$`nD*8t)r?iJXTz1^eU^uUmt$?cFF|n=+5FI! z?bYnOj@)VHPV}&XOx!oid!*@2KH<Yo+qWfnhwlU)0Lk~~Tk26WHB;zc-8FG$zg;v- zJgK$8+JoEi9Z5g1y6*azeq8Rev}3LJ9Bt)5h-Pe_f;?kB@2pL;-{(olw6w>zK4kBw z>Fssz$u`@4(H4(yPd(wlj>oT~6v>IV?P<N2DW6E%PBjTHqBo<YJqv2juDQ*VS&3o> zZDj-meBV3Xh&lOz7Q@p@Wg;VMtEtz0tWmBTlY%+n#pR{<tz$*s3>sF{)xA5u*BuDd zu~BvH^44yI-2poCTSulFIMHH|6$HIN2!U|l513rs>o5b7&T060H4stH!Rj6uhJ>*c z|EXU<h*=D#&wrsH0KBed#QGFi4x*#+fO%OMBF6^^(LnS{0G2M`9e@U+_J83pcuP$v zB}Q;!Z_fzUEX6gjIs#PwCKQC-VEg|mT43<^4}r#oQqg7(udFK9B{0|gt;9gE3;>LN z@Ms{ehhc57<PrUcAAo0)logkQ*T<xuQ!cRpodF_Z7^H_4Y%oL*;1l{$W`TYBhv1%7 z7Cx(nkH+Lu1`#&+kRHH?X@j{2<Oh*`)?Xii_aNaig$Kw=GNQW)!~I(qf`I=IP^JW5 zEB{j$!dPJ>nJbz5tP(eS6gqwNx4;1P!wL~Xzd!0hhz^<pe*Yn`H${lmh`G5+ITa@w ze``9hocQY=Y>)}wUrh90P!E%NrcHnd5moayrW^mwAO&F9eVphr<!@TLXwoxlaJ#-9 zZC%^jjLaW_)laZ;5>}#sl@u5#&@cZG3Pef_5ki2d4No`s`w>3E)~NzQq~(%!wQ~iX zS=!>QgW*;6d%-30eCYi-s{}L5+4xRvjRMVc-|_!cJZOOW|D`V>G$9BAul9zT%D`1W z9M}_f^IBfCT+$nV07$(ZMgM6Q>awY7HarX62K->7rWiZ>Plf%@Tc$X)SUE~YSzKHO zOo@t904vq~)2~8z9N~Y(5ghjQaweij<Y5AD{6+t348TSuDg$;AeE;iQ#C84$;2m6) zm99on@NH$2HYJQ7Bzry(6Pb<nO^-kEuK#LUFAD1fEbRXo8#s(i;*650^wlWh*<bir z>Sq9}$13ISo#S19Gyn+S8<}IqydMB*M2Fv(F;m*Z^NjCKA@hf(byh~F_Wz8Y|LB9G zj>C<O?~o0b#AQURdXcbu=Z84faOa9)b&aARG56i#p4-=ZmSh<{&ruJ97;FPU)5TGM zBx!mZZ_9u5`bOA?1iALp0yJ~N59}ql6#?t<KZF?nEf=>REj|u0+^<?za-*rm53cyk zrE&9Uyek;;Lx3XtV5zStY`oFcS7cYCYLoJ>+~|!q^Z4wYAm~DH8vU0K5hJLx;^WW) zn1W<Qt5KQoAiKwYNX1i6m(v~qmJCus)n*q8@kM6OQ3qD?t@?ITV>dmfwUxh0&F)Ge zJJ$CZ;Gif2pJe@g3jR{7X$9eG;iwp*gh^4;#?q$usU`sYWi;VGk9zUsuxLCqS?i4> zU*!nKB+RzHh&TF;OaYU1boXkFHseTZ9^7<t<?|Y`J>*ClUf6WeOAm2`Zgc?XVxs@; z3fyjS*rbEGB3x27NK$sQDLqTsoYX+=I47hKrjQhxw>;|F(o#M)1Zs3=vHf+{4*=lU zQU(~L<y{2*U@^nCkG4nEMMwuP|2PA5Zj<ns@OrpE6Qd-qtn3!QSC+CfzY<>2n)P!C zOzn-%j;-zdo*A78MJ(b}aNl*Pd%bH4<%$K3cP@a%?zXvnXr7tnRf8PyxM=h2%x6XV zGm+MfF#t#t=FVq6y^o&};nl4gZ1=OgS0W6oT4??aAn_EswVeD=G?0*F3Ky5X?YMg! z*>m;`U68Bw-j3*NS)Xv59AyM$#IrAaBLy!3%T~RztCkOyD`0Oh)~c45m`f(fWkn+8 zFDQ?ehB?ie<ks*egq4N*1@-n3DqjPdpPa`I4hM`*bB2(sPk-^#jtXjdzSwn-s1_!_ zChqRDY}<<%smCn8Sx7GE&8v5yC<~FYI}myimE>sKfXr>kR(d+^nK;|$bJ0BgK9l#= zSZkY0hNH`T%pTpu&S<)sN$BmKep32<*GjviX5<~dm2S)BRn}Za<=11?iR0CbzUy=Y zs!S!r=YBKN!Hvrz2HB~apVp)gQ@jZ_C@MZHwF>*RQt`RvqEl`)rFXy;*9O;aJ^+IS zAuxBFkwxDhrD+zs6}YE;!WWE7N;x=xxy(hv8tOrT%;~evWtP_;i-tw#{=|s|_1gD} z+$ZPC>;C15y?f=k!B)}XV?@W+W5Jl7E#au2n|eXFYo52!7iV<YndJIs#paI_EXqE! z%@BF5w)0q}4Ysy^3AuxMkW3mptw_3%+<up00<|jh=Wo%aI@$>_nr>%rHTLnmp5t__ zeQ~n3Y!)Mwq>pgU`A+DOtI(5{uM`!T&#y7{XqPhrZyx}q50{b`55VTpH9@&go43WC zqZc?IJ_i<z0Aw0*-MemUsCj;%g~HQ&;|q)RQ_+g{YiGzl#4=$Al$_C+9?6m)0e1mC z^7GpvA&FnLcjCvpzHZ?MtehELw~He0T7Fnzd1Z=F*k8p|afvLA{XEt6cs}->kEfm4 zqiap;*teY3XjF&M`E)w#v0j2fK8>&^=3ARl7X5?sL7($cGUyT(&GjZ}T7K}UWUq6o zgZIm=(`C|a=eg_1ZeQ8aAv^V`3$rbeo%f|J-#teM&do=a<qC!H-saHCKLFj**@-(* ztY=5rwS5$HyF@0V-yoFQGyGmF_~sbk6#N>J4+|bCGzXl53;$~hV*A0ZA5ycpm&br> z1s-woGI3ag*H2HL@1`7`+#zk!nQo^`L}FmXBF9_OVvslb3Qd{^lg7NlT6j-eh)ldq zIsckeM<XnN`PSKEeoc4CC248U&zS?~=YiF7_ixs8JAq4QAr`2oPtk3A(&<(=lEL+3 zvrQKRmWn&9uP0_^gB7iIW@33t!4CizR<?Dw;7I!yk&JU28<i7Z@dtqKzRlGoG1H(> z_udDHz~0vrwpZ3KkTG;-vI!dRfSCp$d>Y)?cj8N5Tr%KDYlI~&_w+W~Esn4I>jEK8 zFVT=y$0H**Z{;PZsC?US7QBb(=tZKtCHDjvqV8L^j>>H?^4A4kTvR^*B7Ecb4?qFk z;I3A-%I#4)i|WCd)!jLZw1itTxsZ$F`MsNa(gzoB&z!Z262^le=~~4I&U`Eb`C+z^ z-VqlxQ;MGC=e90n>dE>aoHV5TkqviF0s?l+z${VoH%t8KFvbH=8^6e$^AlVGU~39o z`MtfitBvEM13&NqqE=`^fHwS_H<WS8v|+D9!&F{}y%SBG<<~t0nhLb6d~9x;w7}Kw zFCle6jq9c6ghc;)B}J6{gR*kbsi<R_0^|_m<Ku9H{27?`!JQ5G5cOOK{tWJK7N7_K zJYg{?IcQDn-0uKu^etw`h<#G<3f8f|6sKa0`-VzcDwdj-0F_XTQ0BEiA!UL#)m)R1 zzbGdXYq7gZ*943eYtM3}E^;92IuyL&OKB4xJJ9OK2k>Ew#UDbHmBR+1A|sO+c44k$ zHR9{S!q-(m1a+=}nRGQkrWg-S#Cg;_7%!4Ry2VnE5r>E(^0Gl4^r-P`1z2qO@<rFH zEPJw)EV4iO{$D5#R}O|<WM%&>^9(pRjEp!;DAe7B)FZP$pa4?IWYcn*v>YZ(G2ETw zy|C4)s}8H`Ddud6ogaW9O%*z&O_X=V^6P+mS%uG2EcbTZmk$RT3*(0o4D%(Ts3kn3 zR^3eYF*}KjX-S8m()tqnj<B+4x^sS^1Pu#ff_}!F0W8Z5%C72<ciwlvB>4;!Sp!Ho z(7&2M@h1HM;%Et+(u{~Toh0sg@7K`vuJ8O(-mWug9HRvjKP2RmGqWQF%DK(bM_*a0 z>f3#KhBt~#=bL&FWEC}JiXdh?Q9fn5e)7$+{?1Bdf8>;*vDW!BMGjU0?$JBadm(AQ zHAm<S7Hfp^h=Z*{@LD^s;Aq};|JCxC;8RRZzjL0$J%LhFMGW7U_GkJoD-+)6N#}RC z!pHQqgs&+Lk_B8P>i$WF|HJ@r5-F$f^VPE+X>suAfbT1DUvi%}6k2#y?ZFyltx!?p zAr?D|oG4gh_c+U9sb<xr_xo{GqjOcW1H!y-4Bc+hrUUe|nrEdO(Ymwy?9h+RxpCy( z{@eS-=Oi6$hR#o*z6M4U%Si>>u3LP&?IzmiCo$x4%SP!Q8Q(jEtG(-GPNIhRV_K5L z7Q77k6<P<9Po}>Jdl2*V9zOs=X@?=vUZ(<W{(TKzCuj4gm?rb59EWt2+60u^sL1x) zE*)7vh}#M_q_O_sRfNNfwM$`zoWME9{HWb`e}k?hbyPN;Y_nA8QZ2T@jOH=OECQC9 z64A}yo)67!6-mc~h8V<1?<;M&`yZ;#uN`}ydi8m|vSZs*8pt`jw4h)i4r#?ZNjkNx z@_kB@wC~}1e0hg?MBtM(T9FjnAh<l4e&8#Xp|J8pNFeNZ-(#zO<wtYrbejFiMV^m? zzWP~C%+Or{X2r$+6?^-r+1cWV*JT^zxM+{gX>27Ngc&%L;RjmxGl273=|7++0XC*K z9Zp<^Y~Pm)w3D*jwEo<^OkS4Y<#>lqUb=O)W%Fa5t!Yi<%z$TRIO#_Z7Q<fPl2J!H zUd(bD$6)XFWM96Zsof!MW{D3Yk83E_bm!IG1%GMBeqWi$bEWBDC%2y!N6%#2g&GUw zQd3-$hg-Kko$_=iUi(~MW!SEcv&&mWsLxy?Pf0XyZ%H%l-Z$S(Sq)UW-+-$JZ#(@p z`r2dv3Ob|Fn}Jik+&wd4F9Z22#l@SHbDn4G-w9uf(}vO#x-$9N<3Cm}ajxKwhQKyS z;8NDAZ?retx>3QZ2H5BD@(x_63h;Y($5taTf_%0;ZvK_v)P3}%^YaRF4ri60UEoVB z9tvN{)Jtntfs9Z(yp!blwx06#5$P9W8ouO?r4Ila4@;@S!F4qL>h!`rvxwm8$-&c` zq^<(9nR=GK@B4e0qjX45ZoSs3?|jeZ@13@KMK0R)%1IlSsLp0DH)BFK20FoEM2kwW zSasI{O!BwCJ+a#u@A3ot$06uqU?n&`1G^@J*u|t@Fqwmwe+Wf0fpg%{_PCq6A2+)j z2hE=ehK9p~<ls@N8AYpbMXMMvk75o0WYt`Ur~f8kj8U?rxlyijx)hEUw-d`10MI%! z6B!k-?PKd3^@MQ#qZ>efCY}}Fj~mMr1Qr~qOdueZ6a_2SDwHZ*l<a=WL*n~ikC6O& zYDE}%J>G#r|D%`UFa~RY<LQ?9H)~M&zLS^NMWc}@$N?h|X~%+P2TZGIHA*!uSOB6_ z!L*{EfJq(^)y$*MRTQCUoHt5|<UMB=D1oFf(Z5e>puWgUN;*|PxsXBBeqTj`RJnU2 z9PE7zrU|}#_j#k%TQeT63k<&b?|z^RNGOSfltB<gHLU<}EeSKG#!*p@GlZjfBL?3u zL;t!Ew_9LSpb2<Y{9n16DDCLjOZ0JG!c|`l8EF>4MjA|mxqLrdoZ?;jS1BSRxcR{3 z&%l5U(~v7ESy(7pNhyb$1x}p^+*ny$*~6KoZMdfentT6QH1Dr`Dd@U^^%MTqyRNen zJ1b!yKUiiizxRn-n~&g}YvqM*{G%USoM1&>P*AuSldPnqET|FpU!M=af1wNq_3z-J zu56ng_&fk$SpR2Tg&VxTY(oJPP3gAh>wSjZ5#J1#nHbkU`Cof;dA1dQz?$+;E7aQf zK?$L1IL6d(9>vPMi+iISD+SJz*W!e)X$i&Pwc(XN-;gZPke+O!zgm29u4?v!xUP9C z<WFLQyDMPsItDN&0&8n-lz7hr18ab8N8%_GZ=&A1{GPd1_U73vSSxVU@!i;9DI7s5 z$;g1iNI@?p1-63d{rVX?)iZSJSlJ+1+!vHa0^RT4s_LIiX-@U7&mbGMPc;$01f`Lu z6y+k;0feg#{<dHT=-}U66MEtBbYQ!UbE#1%=DBrS@Sk=FY5l1PMZsV{Q$sa;Lrtxw zMy-WS8>cK48Y@K`N<dAEsPzPaXbFQ=YVR5@dRi1FL?Oec$Qlc%^2~T(l@UjU!Ue7W zPTkqo7Xt5j8XTW2&cL|-7KOO6a)`42On)Z;%AW}!S%sKA0OE)&Nm-_Tt+p#tR?hb| zqiI-$elRhHVf$ME!D_{2C@$B-58zVtRO_u4x)|Z<ay;vRF@S|$fE+d>N;M7x{1@te z=@S`oF&M(3^!G8wji3Z4u|IZUp?p~QVc?q&l}!U>SAWC+@B3Q=M8Gx8SMIb+e*r+q z{Yg@g$}_Sz-mgRV1*RA!0Rj$rc-W8!5u7m!h@?;r;RvN(6N<kkl%fQ8ZJxcsG1iW& z;sbn<k~(UAU-HlVfC(bgZF=kaQXcT%4Oa}E*je&k`H@K*6%<`AeOjIO<y#PXc3|QM z^5J$@A>x9m1}wb6UV=69pH!1u4ND1C3^0#GV9Vk5v%jLF1iBkM+~_oe#(k6e04;|1 zqVxcTK}B~<8@cW$rb+NWw4LZ7KVGkN-UHS;bD^cK+2-3`Rj^V98<9f`kPTuKt;S`5 z?|)V)15P$Dy~TG^p+BRJpbTIN2fb57!5|jT#s_X^pn<y&uwwo%!Qp22Q|F3?M^ItQ zGU76U%(1vkqBOf8;7CCPla?H|EH3DHIe0u;Lq|&RBm}r=27dn`>Ni>exLT+xuR}kI zLTF>DrKH5As1d;xUMq}JD<J>`rE#xm<3PV^bKt~*|K(@>_s$+l6?PG9c;I$Y$I9Wx zA;xF_MZf_#OaTl`qJ^-80rMXYZnX;yHMnC5N`v2j=zq5Pz&RPG92*Z}aj95Z+R(pq z5>Xr9FJ8qsGy#`dMOy$X4%|!w<&^&whNI5zri}lV6#?4!$Ljbv_<yWUe)a{NYcQaS zQq2^AD~nkAC1e1=2TOqen2l<v6@X*>f0<2-3Nu?974eOh|NodBrc6s{g264H^#+vv zkI(-F!??JN@B<(iW`KcV-0ngu+-@)j;0A>UFo`kAQKI6|7gl5B1rI>b2tj!?@U%?! zpFY4#g}oL@l|*Hrm#l)1qwa_0RO)Vc;oKlpABihvuq26}r$$LgB-%uwqRxuRrpyG- z63Ji#aENg52nfiiNRQwVk-^yt-aSGBkWsL4aPbK7DcQKVMb!z2h+ndEs=YI%qUPWc zQ>IZ-)zB2Te@6Q%>$!xa)SLHy;OQb1@YE3;2Jiq}T8Nyd)7_1XLd)Qqf~l-gf<<r) zZq0|?!XJROS61Dc55Q9neVX>mu~bv_xL2)jRuX@t1;#}dEe+$KYBs8Ozc8vKSmQMe zW+znS+=sB<kTeRn2ktT)S{H7~1ZHL%&0=e#lrWKL^V~%)WEymikbT89H;l6}QSh1$ zJF;*Vo)*Y1B|<5&2{urxJ?>{$!eWdtEK&;U{CqQ65Mz$g8{KO3091K?+PmZnxe)Uj z+Qa!s1zBptH)^y=Y^r;+YwUV(!nv}S<^CwP->`OJJ9$f5gUG$;<Tk@ue_$vKk7Ho2 z_05t3YQrok+UJuMT84Vu{LbOfUivrLIdP<uQcCPwRK?j*q!#osRSPG%j&&_4*~X0{ zs*DvnQkK$b8*IglIzk^XH+4k|gVEubat199J){u_aY*|Ybi=9XqKbKx(j!0J_D)fy z=q@f)vQLrkeO~hPdej;lTX;7;@=E63$TCo%wYsq!(>btdeT%D1lTQVA%c1zi!li^! zRC4P;e}Vde23*`#o$}dkJ+39wA!C@gdHJNz_ROozn%~qZ35{gxr<N=I;NHPd^8%V> zfiN+FJmv8BeiZfN4}PZY+~4(EHI@`4GB%VeN^dL-nxv{!>bS=G=d1&YuW4g(RYo?9 z1bQp@-L75k9jgsahz$6&S+Al>N$6|(Uspyh?G^CV(>yb-uEMv?{QHK7y|JZHbV$py z%-C#HQ^wHzF5_m4mG%K(t4T}wM0ZA{r9PYV^B7{;x3r!Xhwb>CR?<2{=4)iW>-lFp zYAZW-ff6Srzcmf>ey26kFp~2&CwAle919+v=b#GbfQ_k(^GDH^U5h6Ij_hJl+$cY7 z`$l|J9)NY0%G=H3-AiTp4`ibZCebLFOx0X*^9LW5S-jM98V1l7TC$z>H_cy3Z}AyT z7cVLl@}RT$dt1%R4$rYgTUqZJB_<@D5gGBnLzk|&Ap3rHOWJjl)n=4BT|4ZgqT{Y# zt8otJt6<by=DndU<U#kMB#z!M_M7Ipo<4<#PAH3k0M1ZoK7?|}qaV@ExYRh(kuUu# zMr{K2GlUoV?$2V4kFh03AO>vZPNdUZ->2VQc|t#}@1f$zuiGu7Z`2Eq_iUO7kLfvf z3+3l;rJH=!P82eCED=AEqW3F^^w0nBW|fbIo$+A)nzK!N%82P?SXGa`4vSNK00<2u zG?U_{jq8ikbd8p@c-wd;R3TJ+v(c9<y+pTBmoZ+zG%@R$@qS50Gw?eT*8b?ArDk4P zex&3v4IflV31aPW1!=3P-l)5u@*fy^Rja$Pos#ih=!%utwd6(1+&qn?d{9S$R({Vh zRW)PsU{vTpdxNcJ#mXkd;-eGS=ZFzh#$khFUrY{rp4w`+u9dUUM#b!Mr%ns?Pt~gb zB(XzwBE4XB%Jo5y5c(Wcy1)10+w+_#d0c5lBIf#52O0%cf$Me+IteY*SHrgg2>o9< z15te~^)#o6%yp?zaR-=9=hVgU2)|jpPHt`JGmCnIB+qepbmFikm>#nfBmU{7vA8^z zhTK~#rjjnUOtV*azuR=2pq%=qDo}!HCW$#qTWyAliZ8Xa(cAZ0uV^tvuLjr-#E|<6 zgACc9`oD!F+lpA=rLNEf$nCx{x6Vg$hB|ia>mt1(@zkT4(zdKQrNiynVbyP`+<(GC zZSyg_F+eKZ$i9krPDP!?9!-GQV7-#k7*{YGhxdf%D@)yd=P%=c?r60bP2qytty%-G zh7;7A?%TTQIkk;cPgbW*m6aq{m1>`^R}`Bmi$Y$X?QaEJ3_Auk*q^L1i~N3dGM6CL zP<_JeZDBHK(^_7!@i}$(_U*t}@%hy|H{~Q{;gP|bU)fn%xGdctI%`>elX|Q^@vKaK z!d+`Jp@j=)v%^wXH{7|-__X;}<bWjcpVYTFde-X8AKm_J@@z`nacW!}5;3+=x0)9` zFKb=8JEGc!^KuYzNV?A&VRt_ob#NNO<T158r8J%6+*nXbKovZ>-BP#uIY3=_0IGNc zu~4o%m8|B~5EtZ$^}=3sv!lGEYU+H?Y3%_wM6P8#*6#HJvT!3ul#<{n<vfUeo|*=+ zKriSyAYN8t!eb%~dyR5XMl8`O6h`^6N8p1utwMU$kU5Uxxsltgw*aTVCF9&S>9ja- zRGu5okTwJ1Zmk}BqcGi4_;~IUR<Fs8+K=ZU<T%JdZZxl?ifE$=`DKi)p2S1=rl*1; zTi;Ky7cYdzsV0sVLEWL6%PfN5e2zqzYxGkX9fyS=jaz=o63(_eGG^9likVe-DZWk| z89%RA2Zw6U@{*YABy}4wb>anbdr+P5iXG<{exUhhs+*pLQ^{jA#EZ#>o0{+2Mh|5& za#ugek0I`(zQL#5eLDARVY*Xa(DwdUqkel}vhN3?;f0iO-H(xqufvN&!zQI78i>uE z8>&m)ewHaoGgtXPku_dEb6PORWr~;1cC<<?w~F&%Qj#%@R<MmMu5+&PRaASKb()An z?Jd^s#rnT|nNTGy_@;}-Q@-DP06d7Jt)d~U;JN0c-&dmhTs`j57*zvJmd<Ba_-y=_ z>+G5K=KBl%`A&gp6C>lB)v5Ri$FsN;P4>0AbJz7kC<~Dg6Mg7fXVHmZhEHpA*eA&u za?3ON*{!W8PYLPoTR+cR&PxuH$lp`AWkTjWWz)Zkn3TIiCEofih+Lm=9GE(9)!Yfc zt(H1<`s=^*222e=?7hC0lh4e7B}PtVI_{cAdxGNtdfZX}Ca>Ti9YS^NB6cCtzFtR} zgaj!>#THZKLuuFqeb58ou+VPMIV94Az9}?pq<g`KQ(s5HxS$0)(^<6w={=}4wo{v0 ztI~^hR`fJIb%uL<-*WL>(nm5%Nr@`CDh7dQqUo_(1Ka~Jk;oawETtB8>b`mRyBtgh zO#hV*Tx!lPB<OoP;@Ow2_d}ePwFOW^zsuPZC>M`YD{&wUnqnt2DkRmgRC{h$?KYyR zNy|HI%;HhKQrs~er!LN>c2+qWT)k%E+~E5H9eFKV;EhkieNbfqMTavz)YO`;;q)r^ zR<atkY`b#U#JLE&vMH!38st2GyOr^ik=D6B*}#CBC);T*qsYNz^X>KcAY}gLEwaGA zNB*t;%C<*Y+tgC<mLPJk^{bz6r;EQNc8hI7dyOUfqvLx`;@TH@Sf_tGVI2fqrA+DJ zy@zC>dcJX-=MUjGgyz~ESiO9#&<i!PbarK~sxp?+(rjHM%8)ah*BPXqIjGuA<`SN2 zP*W@_8-J{UmZKtK#)LEwvewlz_W%$<q%3P{Hc5Y44xD8AUW#)4{SBK>b61{-h<+|2 zO<gmA<IVr=@jE_dr*+p?j;UHJ;WBw1>;mjRZ}0|pCLmN$E}rD#(9h}~)QpVO*=OQA z#Y%e{>N&D?0uC{dY5L(<8J1$SoXTWsj~6x5e9=~^#nEWa^lWqnid)H7wg`B&H>nuf zicIgRBoFD2ii?SfJ43AUH&TVFO^DDYcT;;?zvOP%hwr9IDk(8n^Rrc$KG_W$S^CCU zJn=ZugG;lxxPrOnJdw}Typ5n~t5&$I{si5!MLacZa-r_WCh{j~l7-Op=$9TV5idhN zglm&=R)0UNEvq|kz+%&#x}Q{2@c3ZLBldp!yX7N~c^eZPht|o%1isQe*+RisbVF_% zc)4$!;>pF);4JrP4@@UX#!&8hI;B{0l7;+j>*r10Q|es&1NFKQ)-tV2$Om$A@O-## zCLqC6viD-87<d<=7`HQQHMiM_qZ9j6IDV!wslrG!S<2lAB5=c@yh)&G-y0!7$#5)< zM{q1uW^0rd9x$w@&M!yDT$8Uolri_}0SGCLF4;&ml8{t9+IJ$~6e^y!BI!rzv&IhQ zGI(sNAY+54&vuj(QD2P26<dNrZEFI#4AAN$Ano`t)%ZQilCfMw7d-LSS^UALI%@$* z!UnBCaym!rd|kYA_31_obTD(Zs&8J7NXRjL)3bkpIF8r;%8-0Q)o~$+pYe+vc1pH% z#)nMn*~J3BQT=kq;uUx0j{uj7Y8`v+v$$`4GBk6&W<27Hix=6fmSht6p9b;SYITpk zhy{})>K8StG^Ws5ct0&<OPs3h6)G+zjvES~Moy`gDovwDC&$^{suSNz6*o<F*PHtU zn?>olMkYox>$?+Dv3O{NlG}G;g5QSmf4?q;BsuQo`^U|{x}>ACKXRkdd^tU`U+|LS znWy0^S2)LcB@0!EdDt(Vij$36^78r<n*e8<lwXbfEIIM7GX`ipYA^41;Ez^=cjBc4 zZ(>3tM}C?KI}e^X9-D}*M!iFT%zNr0Gf&Ck7!`A>(uLE(OdeRwb4qX3EiMVz=v<h_ zz(1*lJbf0|6)e;LIZi5Bx6?EBsrhzmZ*f3;?+~zNXR!=U(>WC3?2PE%-wA%a1ap0C zl~rRJyzSkY8Ag$Lm-Lq^*t1^}+zs%@8si;z!Aaw5c$|~Vez}RpL6m1>KPeiGJ-kE2 zbc5&X&fJgVtRw*RtiMc#4#s3H)KgHzHqg{R3E#R(bk3b8<&|L5d#($dxdtH$sL)Ko zW+BbDfPQKTs#e36Joca~N!pf`_Le7~Lv03)(7sml@e{h^6)?B<<Rye2$cO1**0V#z zzdaoxbatg=VYZwulpaP?NHIR)sN4&SdloN~arMkI<A%T5QlH7Vz*Nsj|Hs(LLc05J z{3M#*66BOfl|f%Cpnvkfk=Tg*e3dxIie~E1LLvD8{F3{)Rny;7Q4eKJYrI@bV{#4T zC=vXQ_J$RTjE1i!pQ{DmZ}W<r)0ltWL~_t?!&_eHOj}gx26w#jyHf#5f8r+#0u>b% z4<^3n;sOFVdZ|+>M(^LPJA^2T?>N`FCB!o7f5xo^osCpJG~aJR*pRaJ`|hF>b2{X( z4aKEJ#QV2I?XR1|0J3}|ZH&ySn!Nm=`P+m<#hI$;xz?{pkF56P+%fUR#QbB?5vU@D z`>PliKDIXEyl0$1ZZC5zk$jU4dGg+)S}VQJ{2eA&|CmIoN#1+}`@$?!Mu3F2+9T02 ze0p5ot83?2=!y%bJ6DW(u9o4&WO$pZ4(odr6?FoB7XL4e)f!oeU;7hCto!x9u^3y2 z_p)<yMH+IYCl;=2G~%ez%zuoRPLwUPjV!2z`#xS08X+GoqxqGDbfct;9bL1&8hs^# zq^F~gQZ3^4jgyC`<FV@I)56B=-)9d%$LJKZjH9rGD$^vAG{p-K%bQL$qxaCdH5+J` zQ>OlA3aa{6K=F7$1_8Kool5Rz84;b!W+-X$m<HN>#2JgTdGR`~%<5^BB{h$tmHspv zRGNoo-aTFhEpL1CiLM*gJ|XE30ntfqZ6RW8RmFz7r7ZSdo2F`+dbIqX^P95F?^XML zEd;Je?~!LW2b^bUTSOUq6$IdZfuOEh#~DDY>}8&v?k$U}JNqeWBw+k5RaOv)s}jE= zQ}Q=>D-=P$ONyT$s*Ds6LSFrpWZ<xzHaK~QM%Rf-N#SvD-F?Oa=|@_Y(gvC-Ex`>V z9vm@*jijy=tPX3=<R!_raFWM1v2>aU<`d%SuI}+t_(ucyRkiyAE)B^U$L7<mp-m+( zNlRH;LN$0zQWlf5Js0Ktj5Q7o8>DbCd`ZfC1GSJ8C#vU2#vSFtvhw(~TDanF;rn!a zWgH2WF*ekmAnI0Qm{vS{Le0(+uM5o()7|2IRkMwT_#?fPo-fNKuG}%_?WB5XSGAlb zor5}ub|f^JD<-m8x~AHfvW<5`F`lhl67hM38YaG)q~vy{D&^Yntrm?>4z^ZOsgY#Q z1rH+LbV>KeLE_&Mx4guoLMo);;h{zA@6Vg{<*=;A?ow0;2nhIdN=lYmb%EU~F+?HH zLaoso&FKfglw9l+vgl0wD}L>5CraD=W3%oYoYELRdWj9p+A0?Z!6LgiDg#Eu>Ssf0 z&g1y!IZG_R=3hb@lHbRp(1j)&W)S7%^q<5B2`lgE5Sih9hn&%pLfAg~&g4O!dAzEw zr6}!RX6}Ey-TL;=D!pNqHJX2g5o#)RC9PgCs$st=+TNbHeB0ziMr46BDXhn3@+9lb zakzM5tAy8y(qP%tE{ZSGapnb4Z^LN!*_y7=s>e||+mVpl^pnes7OO}vC4KH*VY&(u zBMQ9fD2JG^z22EVkkJ~(SO;UACk7d9{ug7_|C8~{@mt)aT#ZU+DQOUbF#6axF}^Fd zmhtBwd{#Y3lNT?|FIsK&gZ~-#n-Y__6Paff`W5$GI_?&4)>Y6wNn%X>=Sz?np7Qyo zZH9g7Vq#S+Wke2_L1>5intVG>$_RV=;j_%`e4O#OwWIFnFw^vf``;Nw$R9Y&G7L@Q zEpjyn?t&uTR?$ToG6e_w*elUbNC~oP3@8{6T6R7*{BS$ppthlyGy84Q%jeFbF-1n> zO)SGM6LD+T;r0urWn8w~gEyVb*0_W98_BXWEHC7aW9+`WLmR`7N+r~9=L(~xq$Jgb zc0`M~DlkIF1Q$x214|&HJK67p$TCg(T6J$4SH->xR%+&~^((0Nxq2lp^|OY^7-4i; zBL#gyG5+ECIpe3%Ik#hK5FP>?%G+Pa7_Z}b`G(asWH1;##`0)}=0g~DiAQ%12Cj5i z28T%p_C$R@L_1|{@r`H-3@utWDI40LfR4i!SA32m<v%{E@KyFQg|;Ux`Q+TNYK(Q@ ze7%qMUce$MHCsz!R<B`jJ?rbcXM+zwlIOv~^?t>0qYI@45{@x~z)w#KlJvgXw}%|m zRo=DGsu9QXI-g+Tl7VIjr}mX;4fZ<mRaX<I_F0%#+x*jfZs`}f7sHKbvj%B4wk1W` zG8j}(8_90$WUM2R=t(xUSDx^4$A>(YL6i<v9TtmLpBh=$Zk+wErxT+R;M3Uk4@)bd z#jQA;9g&~*Q8{YK2o~DA3fSgM8RFW<<P~!|k5hyQWK&I-j7Lsm(4EQW4BDZJB%H$) z)duyZ?3O~M9uEL66i<Hc#{_g<zA47q0uP#MR5RSzN3tWXSA1&;fw&H#j2O4aCi>Qz z`lznb+}yW8^|YL;n26~KwXN#Dv2^Jf8J;<DuaVm2q59->RGE5MC0?77MSdMq!OZES zr@rC*vXhutbr*g#pI;TJ7-h(_N3>Ax$cW*Hvendxf#T2KHpKfFv0s*GVYIHa#ER76 zH)fn1{!z7-v31;4FFC;np`(vIh~mi%Kk6K0qRrbY_10$&xciNpno*F#wF<CMsqygF zZYIlUZHDv$k)>H=MCWkdaFgK=U$FHh6#XJ6e393;9h_D1Zj72KeX!pg_>9E<8*a-g z^}Kf2k*_7=T(WO~W~`LQ`#b^ur_5KjDOs!UUZE)a4ErIxiW)A?ryWE_hQ{K-z66() zy-hd_Wf6g>qeoGlrK;PChpG^jPZRHd1~2MDVv*}eCafA~rLyFEm7f|EuG-#T2SgA< zQulXvo;0LIo^229Q9ItQ+RBrWH?~QpcDh9k(_=n;aXhtJh!9kR$kCNj9kJ=~BEU51 ziIB~(jdq=S3*TzWE4mQ!!I|ecuJydbjIPp*Xw5Ghu@wSqzc$S6Ix+3baF**T>Mt41 zK!k+2I%~h$4?s4Ot~MGVS3+Ob?$pC%AG>el2v|PfPf#)JsHx(Ctgl_<F7wX7r^nSD z<d0<gzpu2)@%`MS=E|*DM$fiE>0O>zUrPSn=nDj;t;8OUo=NMf=eZW`H&)xh@0RbL zug`wD9%>dDMf!g1Mmbzz7-EO^Yys;ref6{S7=chPEbgzvK3Ygwd;HLVo?}5(#ACVb zWsLd8mLO<il&JlWUJo10ow&v|eFZKKz`$*=`b3)D;|IkeP5M^jh*RRog-{Dl(0ZKE z!1T}}bf&+W3BuewKalIdmHsS*lG%IYo%qbuylD%M$uHH#)EiP|@g703NL&|r?)nJc z_64tAvWhNRb@HTOy{|~cRHfgjyJ!1af8{tJ##7UA;A2<C;2ZXQ{)APw+*ZH%xxZ{) z_d|K&DT#`o(P@>ML?j@oEu`Ybe-Nd<!7ty?|1r`nAem`6!P~Z~j-;#ES;t#Lysj=g zwSue|EkBnV1M8=Q(f$E#Ieu$X`xtoYigWepGfAuzR1GAZPsqxr&MqSu?>ygs{ANWu zTYi}_YQ<948Jzmju!q^KwWli0(I_g&4zh3T`JS8oyS-JxRIlxlOk<C+vMz!S0#Byr zaasM~tGvSUB1-SLg^1ySzOvGCBsA3ei>v13y^u$ebFvDyZKo49C5A{;<KK4DRc$5E z4!xpN3>Tr}MGMfceW3vqv{k<Zt|FX9pAVHdK)7NoM|5w>;$^5ymBa8D>MecFsutjT zA|2ncpoEfZ3}EUt@Ng34X@<YF3*!-f&31`SX-;86xVs*iNV+ZI#3tWCn*RhRuJn;D zi-C!vYB92(8K&SNaVVW3bu-e4O|_LF!b^uI<VKkbM$?V}WoH``<LyxV=gky+rX;F` zlDV`JN=j@ZDT~JON1ECTk1-%(wymeCwQ|H3zgibO=B_(lKMECNTGUOf&iRaOIi$&e zMUOfmIkM|@$X?SkP!URx6xTqgW0G)NvQdde{xyAb{z)C_%RZc=Td1*bK>75@l=LMd z^xZ7gESH4|2|k980z_jCp=#YZA)wxX8X~1diHoFqFvh?^Q;)<IYWR*F<u%M|l|;CR z&{;F7gs^&@XI{nI*|^*~X4vbO9}6csW-vR1D)Khy+^Sk>oZcQ^W-l}yf5-ITM^aKZ zdfcjKlYl-&+8kEemP6lOR$P)7OO`b%yP(T25cq|hroP0p;{1@NydW2?&Uu!(^E(fD z#^%)iOUjTB^}P|c>sOo(_ivgq!yorSoV_H}q{tDvSL(K+bRbh52yrU?;o;#a1$BI; zG0RiGi1qO#MDdZ{{&bK@3)dmD(0ps&@XAgmQ$@l-h4Gx@t|NQC$u0q^d(ku>t~*n- zd~721PFdAKA^EX@ux5Tar!^~Q?kN4Q#)8B>%mcd&9luSEH|o>s^4tryTublkdEEI{ zKR#&=Y~)FcH*t4`M?g&TY~~}M>#}&vt3FYW)XMt2n{6+LCM@Vc2}fP)OONUg_(3`R zRab{`pOc0H4Vwb&4_9$Hs=7gmE~%pp$%I+QRt~Z=N*)eeji{_PhDB=gEL1PPqQmXj ziAC29F0k*5&JI!cBe@oy3-j>BSk^9W)qi|x9siuq!?B_AiaL9Ia3GgP<L0JeJ_@mh zSpUgO)&25OvAVNy3d2$ws;RYi&S_zhB(ip|<opjHGF4kRAI;Ps$>?P`@aa0sC%Vx~ z4_H;|sIZ_baSi_@V?ArUq-+ig)fyk1eXqmTJP^R3h2&8I=PKcQB=1Si$Yi>2^`ec` zWhT-zHa%mNK+fB?4Hfg(dl$9ssVh57orM0LPj=M|2|5Z33$ZS1MD#ToTy?*a5E<)o zZ^vgVRHt{{s?S|<rpRJViJ|__R)g?xl5`?kwx;7A=M7IF&K;i*k#y1x2MN0%z0MD1 z6B{M{wvjPu+%#XYu?e5Lx^<4@w-=<Oy?MQwa}|x$padRUngWl5@;H&%&$V)=CaQZp z*YQzQ`J}J+iMsVhyQ)D?pH9Q%jPe|^AYr5M3dKaB730MtJJjVNos2iH`*XZv^doDk zGUhtI7PxAzCDYQ{yxV7Qf|pycHhznaQ-CJi(JW)b6gxBdx>cu9e|pBs<_KW^^?c+z zVk*-fa)Av4H$i8mAsYz;V>N#~@y4qSwKG%ox#ZW_-xaK$Fo)u_7H+~xDQI%!Bh|re zEIa^~TT?%8*jT<QSypiQzgO!S7c((t#N+mj35i*(ri^<lJa1TAZ_T?$?0Igh$e<}l zOs6Taz+>^u!yxl1>%qYTu)I_Iwf#Cm!)=kQd!PDS6W_)FgT0q+ohn_P|7b-8%kc;m zg1^9mPpG^{HSkKoxNcleZ|3O*V?9Y(hvnWYam7N)*3PotcW%Kd$xrtzn4cx+@DGp{ zFPwjuW6B=Zy)W%}`8}SIrnZJ4SEixC`5nMMSLxD`jCML$)Oa|F+)t9}6J=&fRyZ_^ z*(>evV$1-$K&$Aa2X9j!@6ZDeqAYa1l-8b9FTg}aF(uUeG0nO9eI}>KD(22{Y3iez z8sj(PllCVvngk!res$*`DI4Nz8|c28;b3g=9C+P-zJQd-I3R2Rjn*zpn2l7K`Dk-4 zq4GHFR>DRKlZC)XE(X!Rv+KEpkgX@Ph)0`3j~T?RfLQbFSRt^V`+L0ShrurdA)6#R zbvLEIWqYfi#>&qP=f_x+*)14zkd8ci08%!rf(xnWtQ7*>#*Q3lqkb5<y8Yy=S@oxQ ztd+qL9|&nX2<2F8a>ZF8F>;{gl*e(oha^!C7JqB6_d~123dt*fdvJq(?6p*0LOR6U zl~o@(cjQPyT3~|OL^gOFW$f2uVn7?jn#?#D74*G0zSOzzEpH3+v@4X!>%a#ZdTNAo z02SDS+U^x)AN~i#!qbx+7~#+diA%C-494h3`5HW7V|<ojGbJPuj}fq_8tR2F;2X4t z$iO+%>SpXT!d-y6K;E6??0eZ_5aM0iGa7jgD1?z-2)tt(?%)HrV0P2IbUwxg)d%!3 z4(Qq8t4L!w^x)eVTb&7NdkTc^eWb9hI4uNo=4Vx(!X0`ZmUUTkqhL%zXoLtLh)Z5V zt{c8kL1$SYHBbFM)7D;w($|K!o|>Tg+asAc(_eT~?!65~_r`GLc;t~??0R+=C$8+% zSU9dXJbLgR#?h~h;~9v{d|1ty%Q<2)Xi_iT>Z%Bt?C^@A1-{?xP6+qny4pNWax8sr zh$_z;Rh0)xfA?_O?hY?gv-D6ddJNR4@Y&jc|MeC)wpLV5P2%7;{EV$#ZcqAzo!qmx z?ntfHdsSvdZRqSGv5P*ec0FDX*}Bmbt}B=gb58YCcP~YrMboq0D&KRi(a*1$I=D`) z(2;{aX<B>$+9#~ce9s7Dc;AlEy)1ge>u4P`ls#tV!AH}{Mrf3Ev0g>k_on;O1VUFJ zja5^PD~MNp_xa--s%kd#tw&d-JDVyx?UVu)d+29O8LvL)y+8u|%P4{5!jguGKBVVX z<m=M!e5NK&R=@cZVrWtuiP#FI<!SshbNe<pu21?qw3^h@A&mC(lbS33cO(G}eGkCL z$B!JegZ0!9mP)v{0(R;q*s!(EVy2{AJ(V=s3TcGHjD6eIrpH)(FTf?=yFSUf$l7w* zF=UVPyzl?8_Eu4G1x>p!?(Q-W+--0V4ud;Ga3@%BC&Ar4xVyW%TLQs?ySqbxoXLB9 zegDO|`1jpj(`&Du>guZMs^_U@SzO2wiCx{s6}xlc&#oh~?+TXf7P=r0OSNAfr7?9= z+=L&!eF>@TAe>!T(a=TM0@E)Zl#UnR35M&^|&$%M!ToyO7X*>OO8DdjGdIhHXPX z?svWHw5|YD^yy!Ed6saf6-1ZQANVTlA1J0y8BhWitD!fgc0O*ZogU?W{Bt5=|3G*4 z0jq4((3_~e7hRJuRM`){U|z**Fm`udnq^RoEE9-!$k5NS%TzM(uPX~_hfO9JTpe|K z%R@gT`}pR!(lNGD0G4y<U}SC;6&=(w)4%w|M+)#L200Y|aI$)_)5@?ki|(EMf>Ahj zMEi$N{5aLE!7mDWy`(!%x!PN3{hv3%S)|U`OK02zn;mkigLW|8Cqk||nYC#RM3piP z1hL@Q<|b|GXjZHE1wYf7mwb8HTsHNp&aOo8IRTPw{J4rdTvT7LGO=6`h|uC8t^tE^ z2nXn^x%`~8UdLhe>F%x^KudaWuj^CIgH|`GNqTS1huhCeAzR|zcVN*+D^GZvg@t6{ zt%Jlv;t+k^cO{`*Oyu4vy&A6z3MJqkIX9c1AKljGEZooh3;N(+_BT<651L-I+e8z) zJj{Ug6s~`2z968B!3)qy`JqVw0XcMz?Z)C-ni;Puf&<S?+v)JFQ(>MR5s_EUj`9^N zc;)D0ekKK2F19`-g_u62@O@lqzi$?uQmFd1QaNobI;MW=A>yG|U2xA+(&{n4;JspG zJ-vAO_MWK+!A_SoceK(e*pjJyX<)UFz?T`Y9-H}d$jADsFSt4t`-_TXMgbZ8=s-uI zN}uEaz=#(l8|*5;4k$FC@p&!SWuo}TbavOrfL;Xic}AxxdwTfr^OtTM9$#(&gBgL1 zCgRm~-OP9kaZ(%GS-8Hps<OlGWOAxi;XHS)s+HvxOicS!KHT4P_E&jV4+nd7_1To$ z83Fcu$aXn1^&o(YER8yle0phR)vv3INiH<y&ed1x(2XYn4s5Ioa`MZ#DA7X3;nb*h zZ^fWT9JH;7p|$+@Z!at;8@2nev1*!*1Dc6ze3BgCqv<w?64^0?tiSS8ewQArgw6t; z-)~C~rp}KFz?}EonP)mu;t!$#7gm!xAOEBg!K7mizz;gC>ZuFAHf+g8Ui_asA_>2N z{}WoY+y{;)wte$I9;{JE2LYtY*L*^DeR{mjQxi_YwYJXSbXjlVYbWV!4!n?iElyk& zy^M>mx?ICf@W0anrFqwS(ZZjxm2p{Ct18%;%=`5whuQRB?n4Dp#-@jXfH)`T4>T}@ z(>zL!clT~7L2ehKJ&TDg2W)5kvy+LcyuryarP5q}=lE*g1$Wvc=HHClGs`X=cHYVQ zV}5aV#pFaKx{*62j~+E^{o=!<`%)BcQ1;0AmTT>}S>h0q=-1Jorgo9}7wS1Vyu<Ps zq1U0reBLKpu6GD&<Tx`XR%ouMRjZwqbv_P2rFH8k-HeX@swV9uhaN@f&~jOE*XQ)+ zyMBIYSRP=ug3!>?Kz`8EX1p_-4{J;lNJ2x?N3deQ?__Q4X`u)~;kVttI`SSwqY})U zf!AS6{dh$TKArl?Vs+3KubJM<Cg^}b(rED-zu*nfQ*lFdQ-G=bA;3@_twl{_BDa)+ zK$<HFMb3U<mQ?l(gSzNi<|`gqFI(|AeI$NuSDu3yjqsghxULFc(~7QG`S3kWO=-~8 znf`YI5X0~}w2GE?r2kUiN7jjl9*8|blQLC_wEj+GHv|md2kFVs+hao>LAtooil(z? zH&-|YJnm*^mH@3dxDfSU*-TRgaxN1LCP6qu6!CF@J3Oh0=h9*XU1M@+6Ladmu>#JL zivIKXm3}!-e;8OYA`>woR4Cl#<tY>xB3fxB-`Hfqdc^pNib+J^$P$`DP<2hsrEp}I zQ<D~}z+Bbve3)<#$>_(``<1Ijf%natpKc5HM-Rbhu=J%eJL$8^zKwH{4agt`@cU1m zpuThV^OMMoOu|w6wC==YEgygQfoIad0O`QgblvY9_mqR|jApUcdy(Lkr*{YU$F~Ua zvVw5Wf>5GNfOcC6tG6U_>qy0qoKn(JYXY~@{Ms4=6*zcF8aRn@6ME~GsrJ;*92N6^ zY&>yh34%;EV*Zw;eUAUiZ&wupmR#g{_0^$e6Jn*c<*U&c;U$E65sQ5)%m&SUYzMv% zL@{=a8s{6R;#~Aq!_0ZP+Tc)HXZ5ttQ41tW7Sc)-6RcWb|JVmk8IeRFVEm!eAw1hE z38h>Y8j7T!0u5>#PY-3{)X9)G95$Wv?EN>(`ptIATg601g<1x!fptG-rH!E8_D@^y z1dNbQ@fN$x9!1XHW+PoaRWA7IS^)5E@W13I|A?-6U)7!w%dBI^uO*pI%56K)#`Thv z-ykObUb-<f2qzN=)`gn6Cm$U-1fFYm{t;b$IqRKnX?1Iw^$5j^(T{y=Eoza0#zTL! zS<{{yCZ(#U2(}|{;g+U|C~-E`M9OW#H}F*X@QTnyANLMxhzoJw(6z|Bf1&)Bg0CTk z7~28QzffB|+rr<jNUm}|KB50V43?GE`J|tO#O^_VFf|Rj#(snFuiec)Ft3d8=)Zo$ z4<;A^Re?|*v3esfr(2p*T7e#x7_s_^0ZlYTc7lwV7wPqQ{v!KX>b&0wAUMakr6}NE zsL^B24*0tdMdL@1LP5<!tUgi2NaPUh=kx8>fH`2~=$lzpVC69|=}~R<kOJ-~9TjUh zzc=tnXJTwo;3JR4vsdAF5o^qggc+B$LxG7ypGM+U11f5b0(!y9_6lN7aX1Gzo<i23 z%h~L(H^a{-Z31e0=BlGYG9>gpfhWupn~ZWk?Y`?*YnkT_6$PAm99BukW^KI)qfJ>l z7gXMiPUofoC9Bro+CW7mC0xY!TbAfh0b1`nTbEap3tQFSf^P~N%gc}L-aK4q7FyV7 z-@5mo0)~jB<IyhF&U_tQ$QNw8SGbRcZk;%7<8@Hs;&k6@x$pG>S5zmee1R-;UOJh> z6|SRB=#IA`W&$$?_C^Vd&&Iv7(>d?yU;US>%S-BE#sGTl9D^{`XhF(sl)+s)nO|&? ze4$V+tST@VS}vAD#eC`K%Zkygf8sG>Pkk)Z^}zOVizMU#CQ8@4t$~e;W)d<L?5G(y z1%)eGNCg%6l`x$iRmfM7Y%Dv_o>yD-enef^M{H?8TfvnQ5<wH0S38f)Fh87Mn&D(p z?tlMsvA!KL1$U_IHF#|s+G7s7?)2Op<U_^%5#*&w5S{G>2E(dj(=QWa6&O0Hv@R6& zpj@3*{UYB9a;QNv9v$&h2&FMY3{H@X_2m2D0qm|zED*}8veH-axyoutqwF+`s)m|j zar8t1hZeL@p<%kzlZ}vgS;u%!PwYlakwmV{6rHdH6q~lQx|_r;Y%Ugs)4647*q_6- zwwzIk*Nalst^J^^%Bw8uzG*yzsz3`;;iL@i*opd5c?gEWnV1H?)A63{rHAr_EeJa! zvLVTlcpd~f@!0}a1uC}NP)0oLH_psD)Bjj%z?;CVe~Ob-vUkv+@w|UkHrAF6MB^bW zXERG#+UDPn6}LdfiHN*L4Y63-QVWLf!d<@>3DgG5QHbSQ0JwNPO~03wt&=#W40a`s znR6ty-#LlsAr&j8WQN5p%Z(NJ26hwHL~*DZ#|M_0tKqlLJC0TPJ6p-04~_mvsh2yJ zcF|vIuCXa-`NLj43JP}KqP;}qDCMonly(h@e*0Mh66D5NoA6m#T_!NLI=5w<ustT( z8V?Qw;U*-G+~28NHtUQ$6BQ<p)21>|`!<X%$~f$)#!wdqBqinXkpz#E0>(Ki0SOZ$ zAkviwBa7y?yDKq$8j(Iryu&3z<C=J<&Gx40luvz8K8%;PUnpGrRaO=ilA&e7fgCfB z^*(GiCz;%pT|6)(Fq!mSE9;BDq!NiFc$|eEHgSFv!Kw1Ce}5o7ST*+eZb9iE{b{jw zc9QKcRQ&y&^JMRyh##Qg@)^@emZkGua_Rr$7tmm;!GhogUBzHxPeU7{LVUS^Wlm*K z4!*PnSr#vD?33}WXZwQ>*5dMo_^O$^eVtYvG5y>wB<!(XvbE;hS#@e?oh1|_a&i)A zqg%DW7=ojns`?!hY`LSY;OAi~=BD?nKB8q1*-6#+K;x>jjSkU=jo>qer@qPsa{4_M z(Xibqwva-z)kVxKEJq4Xr}L8~Cea8ByVGjJxFPv1my_RMIXt})#m?ixGH;vQLnGs& z(%FW1e$SO?YtGfHiyh}F)3FgT*q%X`S4URO%=#xn@3tOVYJ8{~sR?|^irvM{_V*at zT}D$9Hho10>?JS#r@W#HExX0O;Wi%j-mV4;`R<eDyHz>ymI_fb#wWcsYLnJnWd4+R zQTCq409!kbtSIN$TtcWjf>tL_i%h(cneO6VujA%+V$YUuQNPitngyJsBYmT?<J{2v z5VvKiZ(ap=B0+-V!__a;*NQfbJOi;zzt1=U74G!Pv|Klr&cB_Uth5*G9tLD{=BwY1 z_abz={xD_Q6Y-{4DI3V55ntOiFr)IP2|KWgm<8Jg=XP0nuYK9S@TgK*$+FcK`wPX; zu&&myXe*9T2Esde$Bj%z$~F1k04ozAOXR7w?q&J-OJ5%w)!c|?#Qi!o<tp1)v!0K2 zI5!3#h0`M0zNIbwWk4eP<nb`AVP#F3*|0|;atm9}fACB$gW={?$*J8qkvN+n^Ro}j zxQOr#b90AiYwaSJgu7x5a?vBDc^mApnAc8v<7mhS24XS~lZohwYvW67#jJ?*r;NB% zUiN}0<k~!;Nn<vz4{eVPGtQb)_i{i*0-^W}uRRbzzyXttBF7LJ2ZXS)uCS4y#<if^ zLEc!s$Rp)0_ZU1Nl+Vcme-9<+Si*8P_#+uDv>m*Ew)fQL(Vb{TWhqd;;-aCMu8Jqy zw2Yd4`Iz-T{h?>b=3Q-OxR>m>!p8lX-+x@r`JYI8mIyx0sOg>cvh<4&)gh4hba2An zmR(mU>;-6VwQc7Xa@K?Gzs5RDL)+B7sH@|A+w)j!YwDZLn}&KJI*N59c#fg7>AE=i zINsqY>+;Z6qnqY*iv1VLEcom0AhDH{^4ovv?*(W=TKE((gi)J1#w**@D^sPqAJ0Z^ z$j~1H?&D{nlhjt!m+STEj0Qt@%!(D8{b_$<Z#d*YJq)xEqjTDq;_AX_=Pg>=V*B5$ zHD`O^3SIt%ifHf~oz})(b3JpS2zs40H@I9~Uii*uhH}v@Y~*(dvxFp<qnBeVAf->w zA+1~<>mw=oBLbi^<l|_Pz*Vl#Wo|_6AZ09S7=P(5yJJ5+K4JUP-?-ed{l_CtM<jC2 z1K&~~!u8Zm(N@Zl)3D>HIV`mbpE*1zc<ee}S%w_;j4&>|AKIGkV{vP6dakoiot8>A z4!wuo%14@qFmIw*7bgnXj!kmRyL%p#H&@EfeAD#S@6H6OJ&LhiV{HA<rDorX`G>!) z<e&M5DXqW7OrCkVi!POZ@%hStSz74o_r<8X>Q8Y`L$Bq9Tg)GEP$gy?S^oPqB1^qt zJMHL~Uk18aQ&>09jAbl$r2d*J!NI)XdVmo{RWDpY<st*$$3?e}mCG%CTlxp@LrwCY zqS;(mX0^Xi*g223AUzjCcjKe|aRyQed6~h2?>z_TPN^D#*p!zvS2^PUf-Z`G5nB9L zSnclzT+*fn7R5oMKo14@r<GIkiE?Mp(!{!&m5ncCmT0DntZ;nn%1mn5*c_~WOugc# z$67C#M)I{ky<fDx1})81-jVmD80FpHRlFe<?LgitVxN_3n*Ku3Ct`S^t37N>@pE`I ze3}FQ5~U+Xv;woLD?&R1@SMdKn`3N0%}d>SwkoGzP}bmzboU+(ZNONteR?hP#JA<u z`?|flGH%W8Pf<~Qx+&KR05UR)Q^@BKI^vu;Gjic<X+sYaz*wBKTB?2GoEDvRDDO0I z2O%+~>9zYRE}5ryhmi9r+hJ}$VsJ66eF~hT_rk;{+D>g#GN`L(iD)H$%URv4H-v_z zS8NRLobH1LD(Vn>O8?W?juDIdbm`_;YC+B)1Uot(VJV@yVyEpYT*ztMXMPbjVW8}s zm5yBhVX3%jNNmB6FX15?X~x&$8R~&CKro?`7e;CJVecI@#=9J?J&k1Q^zj%F84qTP zbPUJI4atIQxEPyO2mpT|-1O;d9>CnVUAH11ws;v8$<IFk2c;96rjUr@<~6TIpLlM4 zGk>ccDV}ac2<<S}HC@7fqD&SDeg<GMEu3Av#RUHH^nQf_)o#R`Sndv?YsqOusSRSl z=|AjQTE;#N?bMR9tOz?iAf;TL$L@j8i_cmlQRYUcJq~W2nJtE|yS%pP=+BjTYAC)X z>q3&_&!wTy->U&lk5cVKJxb9R0Iig(AXDxJKGq4N#1xnY{BZl`vUHL;<?oS8R+=ta z`tg!xMzq5&PfWJEFhgF3Q@yPEiE>ndgi>@XYSTCgUxaNIFXF0C@0)X7TNicC_GjvQ ztr@xX9n#fJzpT7HS-e#ry?SurQZh;zH%PMWs>_Q+ei|7D16dA89Ot^8%zgP*V-v;V z=UU|U2G|-D8cN~^u(ut)Rh_yuZ}zoAT;cspnTQ{#fT*Eg*#53NQJgvbq0%VMGSDbB zpb12ox#9fUH9M8l()~6kFyoVTD4>7o((h*{n^hL83_%gyH<vGZ&>LpBs2$HvORIcz zeCP>s?ytt!8_cs@Kg(fmNgZDKmHV0dwaV7N6|UkBG!>1)20n)#j(JYa%t$>0zji+} za(I*i?l~5PWHk;{KLKT^rnEG~8l^h^YHg=X0+8S;iFhD;M&s5W?zLD*NAI+~f6yf} zKsOhU;09vj)lK8lKuBOASqSsTD7D-#En9kwA@-+-bRERwB3TUftK_4_Gm?`W+rJ!c z8V*JIk;*wSu&<las-E4VcKRO%(N~wv<(ZmH0M$0O>`-(aKZz7DE<=O?H%1}`%`rBr zj`aar@#AMRq6?B}^4GFhz(Rlf(G}q@E_-E(N2^4H4!m)stH`W-#k?bK%{74=H4{x? zB6Sf18yibRl+kUyIyX#xSlTo!%M^xGb_^_!6y?X^k$#TFQI(WqH{T2PZMF2=p?MaK z2f!Y}ERcH7vn^|tZDLR;0H-Q^tbyZ?G?7UlIkYr6KLrPnMT&w8A=at-$*^CUQv$la zp*9NVcNaT)Z4*HU@}|f)v~;r1TiNK{CzI(r&Ce|YW^v0?QWB=GA|{?GZx%-c9-R17 zFIQ(Ho+B8)3+Qc6%zd&1h6YkP-6YVeQyuPFU$C)p3rLVssmFk34c79jC=rG=fH_L} z^Y#K1?Mb0x)=!J||1f;^50rWdxXAD`3LnH{VPj<!O%;UZ`WUJLX#}$FqFK9&q52iV z3kj4AjPF`$gws5Ne#izb%>o8ZIU;CtkU)`gRuK(SmaFPNsB?h0arwM+5SUmvL&Q%t z85E>Z5&~)b2YQ3}A8^Anl4O#Q@7JY9uv|(8MfPz@rOe0;uCAy?;gwAQjVi0yGES_p z?h;`bIU-*q3wf!=5{<kjuVKSEq9}+r3YVYO{sEVLa!^lAMdoTRG2VX-$)L6gG#4X| zY4+&qMqjPAxgSWS4h$-j^TaNix@tAKIX=L>2HAS(DdEVOAT5ktuKFsN8)J)Y{zvD( zr(Est_{Q#>jx-F`7Sx_j`{92xv^}bPxiykDTFQ7~dhc4A)ww_DiR`WAxzl>{`o9N( z23n=16>qh~Uek0wAtr-93J#q}{)OT_uu%z*yL|am1DU7rKoo%Cg8&XS^;dh8k40{m zE=(7&Eip3z6LBvq!&2ENm480+ewx!>8(vQr6mXVD_?ehccU1DFeJ7Q2ad{f(;^Fkv z_~G?yb;CeO%B=tU3D!-NNs+Yg+aH!2&dZYQMC~r|yH+W)S$rG*8rtKGb#O3CEpl^1 zSh5~E6-$!GS;vmz1S#jKVxJn_e|1i^#X3hK|2)_+Kg3m46!vITR(~Ad3(8S4wzuY( zA;t(*RNzdUbA{<A-T#nr^M6~8cKu7&FU6vTSavaGCzrAd|4s?uU*>*q60*myOKCfZ zSSAEwT-~zu*X>h2S~ZU{TrIutUC)Y4){tO$t$tCTRF~NRP*E=~Y~GJ|U90UU14#;S zGlsxY?~zzZ-Q~ECZxsCiarmZ3iQd5$o&UJZ{ze1gP*l`P<xg(4H1hM^nL0OjR+mK3 za0J`zrJeWCHgF*2edz#prxy5WjiO(Uokg}LvERtP{g+jpbF7|K(-2-z{Ybm87_g6{ z^5b77;Nec!qRaItYW>|}5>3^b#oXr3*IAUlL2je^D^~`l@z_vZ0u{S%M$&)aS*Ij! z-hNtY`2m7T{0c%9|7%sFe=RsVD`#s|FqQD7t3d;di(Lj|YHU}Qc*d$<$J=VPXT>6B z3OU;=WJVhDIq*|VAFqnsn}13D!LHm&D&u8PG(5yyF{(^`e(D=p=Oq90U*n3qEJ&2G zpti}lu$a4dBmQsh<d#sHMXJ>1T1Hdtcc{D~%)d5FjW%D3q_w1^wDc{5;~1iM3c$bb ziJQs-Loo06jkNuWrh>(DsmpA1L12D+XMxS{ERq)f@ZtAINzybplW5i2;}=KW_=G3* z#>w(6BIiecp~@#>B+daN?Ao??)o#UGYVLxg&$*(b>wsS7=$Wd=@Z7&p@^8}U3e}2I z&g_oikS81WguVK^CTR-3(7l#(1>}LSVCd>55Y_z~W@bYElp0Mq%K~P51c>4+RYI}# zpHXYgig7oHso2kqR5CT>4Vog>TkDZ1;`D_O$+AiB30ftzWGbmUT>wr5G@@Rc3$vp% zwdPLsKfcn3JmVIMPKP(X+q4WaR%_kR*l_QkFEq(l06CN)lu03-g|Ut+8I`MPPiltK zUwhM@^z=`bUARfFT!x4ff^N_3hREaZ#I<l1AJCQpZsI~eJK7bC@OWRzs9jCdVJ5Q| z)EXj8d?l`h**8L23TVg;IqmzcGRU)~U%CD1idXBZ+7p-gNjnXGq6fbg#^T=?=h~3Z zj{4=0k2qkbwnDl>edfq2eVISz$jaT$2!k3k*Sw^Pq(Ou-M_EdYrJSmwf?&JJNH!_h z-&nn%za86-q5g$ZFcdR-`E&#G7iw-Pp71@j%fI)|O_)H9>d{R@v1Bk4E3&^lL&z65 z`3F^p>MQ_bmEhhsR+N8LEp|bjUJVh#-Cctu^UNw-{z9>z=PvyT{0n6dp>%6tLBT-7 zKyHLUMngn^hlhsrkbr@O!iK}b!KDO><EfcAxzsnnQ&4eAI0rP&;d6+o8=JZ%B<A<; zQgf+lxDL$HNCp-ZHW6@}IsVcNO3E8V_#fnM^p6m7_l1~a_^?@gS-WM;_tO%a<D3qw z+N|eww_z4zcP`t<h!?5%g3Mu8$^Zz%dJRK#)u&$+pj7=KOC79)yb^pL1evfWz^`TE zsM?-rgSilY=<1zfF6z6nz!rvDlZE6q+o8dUjX4_sD3Ng9U#R67#1HljM@f}kN}lQQ zVC?R`(}`UrOiGe;kErJK#p9AT@(}!C0O++ZV_)-Qi0{+D1FNiwSvIk#8@8jYxAYwC zRgr@U<k-~tL97mcD52mU<#{Y-k=ctd=JXL~Spd>Nd?+E=P?XvLpD4QvuD;_jeuoU_ zdTp8HsN%CkkDWX31pK(5KTPPoK)qkZ`gd|CNDHIW1XVYb9qXU(_}v9vU!H=*47UB$ z*$cZhOzSf#glqL0HAK2;FZCmX%5-pt!mg?>kr_5M^hu1!>8{L`ol;qZV_Sc_sY|<R z&1wP*=}axpMRwX@@3dyMLpJ*qNTcINP^?g6@^qvP@Y!g0iK8;OB!Uzim%|qQUw`s0 z;V?1$36X_z>nNi*)U(D*Xv7rj{`V!YA62maFW)Vpu|rqFC}$p5&0|Kpp+-+8Wlgw7 zAQZzc&Ci8mdQQset|dG**wvXDu|ml7hKXO9efs42=9dusiH~G#^M#Gy=eC?4R@ov1 zJ4fKK+_7vJ<y1IMjoS8ffAXcjqxy|9T&W=}xztO4^T4{M28ek~EiP3JPIP6NW=k@| zI*KpL=t?gr*OR=uC_BuI>^)Y9!;xZ1Q*AJQ^e%i3HQ>76`>C+u*zSGf7?4W9w6AiS z{*B=>e%(MRyo{x>>`#_6pxkvxuG8H92y^(dkWbd2AiqI5D9!~#X1t&74A4Q;@x!ag zp(~3(KLdM(*s1MVeb+jg%F1G^u=x|=$z<POs4R~xCWqPa!rX-{fBmG60$Zw>PwK)g zuZVuc^RjBB{duk~!{6{nx4v0l@&8dulgc(YTL!P)2I^c*(#Sy)T}E_xO={>vLE9fo zDS4r6X);W{Vubd45iK6*n)ezQ{>a`P{wico?6@lm<1yl1o3|Ird6>Eiwa>$xDl8fA zjFw0y=?Jh2N4W_EjGemBg!I%smb8Z&vox@8d5*|s339AStKf9EMUadr{cmY}9+3(N zB&YiZ2dLxFALeEIWAE3eLmUBq0k!jVfbnGdUU*0dtk+NxCF>hZYhmMrhX35)&ki5< zRKD=;(}eFDD6zICwOjjo4(3+Z*o*>q=Yy{~=hZp+cPw}Xfbu`v?hL+OCj}}k3%CN^ za&G0;z4*D?xv86kMhJE3+F1A(Y@h56I#S7q>L}JoPw^<eR&^mgEOl*bxW_61)`Jp_ z>k#(hfA^eKQp)8ctVr;tQX5n(wuC4>kK@S(aHHUirpOekHpjGJxdjR!jmLzfy*fo- z{YS#~|0H|~_wJGwD7lOeKu`C~?!x~wqfY|UO?@^=h36)OWMaxhtSi22FgnLc9Q@^A zd@C#cd(B!UK~Dqc&Nzx^p`@+1GFUDZtKdv-1(Cld;55%WQWuXVQu81wyEm8a`^$|r z?Ipi{w-@&=Mfk^jBH$!fn64N-@Z8Lik7PGy(9K+WT7BmMe-ehgUTh67LNl(+e8(86 z28`2V&HTG8o{C|uf(1dE(9#qNHaR2FS*?|Wr1p4xkn)3``BsuUh5?#^Ro5J!p)xv~ z64E&ugeoFvk8wDxv0+UE(YQFf|DkZ13t0&&sP%UT?*fV;+c`sJtj(WV4rR7S*OR!} ze4;W@_5(1%`E^C|MShYGaWHW$zg<BK8-pP+m;$uDfcl|`2k8pk9m$nf&haSfpA|ym zb=LxCUx}gHxKAKU(q_8(IsBEg28Z-E1@6zt|M{nBBGtl(AVS>FPjV?ys|zw^u)|mp zzZW@8AK3(#)WH~G<;aq4UyCnJPZjD`|KPIx3zcGfApP~X&2xa+8MM(ojn(Popz(Qh z7LG&zWPViDV}{J>c)!JXK3RV9G|@|#S6)(M^44FdY@Zo?KI^^N>16@>h=gV5YxNKC zt%4U8djc{e>f-tJ=JpK#?4uW9#L)@1iZN!!>c`KH41fNk0y}{qA^&m<TH*e!+BHt$ z6Qe03<eu#WCrHgHx;*+@x8`HQwwcC#>O_5+Xn-sN;{16^U3|i^_$7(e>3CjR*S7Qh z-mmCR%`<ah8xQS0XB_b-5^@b0m#^K~XGJs^tEMjXzP}P;&5=j;+)!MqGs~RNLSsjO z_(oMrfJE3w+7q0-?nVdsprp|LRbqa?TTq%Lq3$Jj%u-U|WRirCBs-Gw53l^B2Is4f zhlaNyN-F|f5PMUG5i31^oit?Y2q#Mc$S?ci`CE2rqfMAVn~x%nB6md?MRe6-mR`s6 zrJl2VzHkRaqn8O5O}NUfeyskp?E5Tcs)erUp;BR&my4OObr6qA5nAF7wZ_4wp_E5R z?+90z+GH>tAs|zS#Rkr16}7&uyK*XNwU$%GAwx$C8-|d_cgGnyx0WU(pT3CT!&mTp zWBoGJqLPYmBJ>c^8d`?a<_E??^-Ti@hT)~TYLICauV8jGC#<8)4ii}I{b#p$82XoN z%5mXx5|{dBy}@jMw$WV230l~>3h42FD;|c-XS_dbGEtfX$+wxY2<SQ9L2jM-k8Smo z^2@mz+QO94SHwi3kJE^q0aJe_O<irD79tSd+oX&ArtP!4Z{7E$3cQraW*#?3Y9R4k zZ6D@I9UmP(l?cQCbMwDzxf=eLoX!xhQ~fWj9U;8){`hVC_U-ylO6`O`<l?G%Y7-tw z6Uq`S;v4A9R#KxAG0o-UsG%C#&|3*rUv80C80;;1@fjFdj&};O^ObL$`_P=6#|Cxp z(4xQ3dYx9OCn5=kQ&amlN?)hFL{b<sB7qPo5yD8La!i`$S>1XHsb5V68*q&geyI&{ zy*^xJUJ9U{Q$06$n$<F)qRFG3T?%XOgNu4M;BmLto}8Z-mpP9|<VvU0WcJw_&`Z_| z+Re@Mn_+^ZgqP)mi~)sIQH{Vlh?xk)M(G``r%4#ErHRGH`@&)eFHHi8Sdf}U33xwv zjw4VB5TO?_wwL2^c4P)($RbKY30{t@DX4b}<?xz0J3B55nNc%pOxX|{@*Zl~CDfTa zHDTAyMRAuE?|#)oH|?Qu68Q@?gQscl8v00c-9Gu>w_}=ecFqIxIwAw2+E_F(m=sH< zPMV=Un^53GazGVHYZQPz>+7<b-0uPA^{kl7G+935J=*PLnX`h!0fUrDYLfjjYNWA| z5wVV-8Yx06XFL>va$>6C6!_XiuUQee(~nJ_cz!L9acq+1SWfk&Z+1iAR*D_6J*f1! zQPQ7tK(uHUane||)U8SSB$Dfl2s{4q4Hd=-x1B;G@JI4@f-V%<Q^1!4{W?1H6TZ<V zzQXPl|DJu)<r|bx20ZYmLz!0kWXLW~qLjJ21QfK4(kD?lm?Yb&F@tsR61n1fS-h_% zd|RGg2k8io`D9k#5E=QHs<(37ej9P|U@qoqkTwF_>60@uF_Q2$0><lv+xhLt>Qimm zs5YcBp${DH<$NXM=zy(r?kI7@oD~dpszm+>%BXCTSm$U3u4j)`1j1Ua9P_ms^<A~s zSoSuNrs0LgQ0BAKCo>?zzAxdspPHo>g%$ZYb`dF-ZNrrx^6Mt4KiV>?b0pL)nYE~_ zP$NYeGJGE%<gE-a8XSLPe)9TQ{0)=-u6BFxJ>|B*;<QG<oJ_&Rs57ol1+?<noeCA> z36<q|e$cb}2V&TL&B~6k`1mjh!AbQI(r2(63dzjPXiV(wMz%fnn}!d!a1)8t%i^>0 z=oF>sY+arM$80X*tGzsw7EB*>n+4SniQp>A$lxp75~+-xSL~p^JiDx2V-V3xY@;$O z%NdIb#SY#8v#?`ld6Tg{OmAq?i@GwZP~S<Ob0X)t3`sU7Nybha2x=c8>=LWiP-DO2 zfPQfik0+e)UhF2jS_}+b2F1xi5y*zbJ#vULGVD8G8!5#cpJ{*>FEG<DCmx5<F{?uA zl(AJG{giK|7w7?z0qBhp7~j|_b^?XQ2BKz()S3<HM~Ll)B^7jrasT<YXV>jEQ~`dQ zcOU0y^v1QfPn5adbKor<Q5-uBb0#9>rTEV`n1jZ+_CsbJ?7Kr{!{MaVr<5I+;lH8( zlWWm?@-3xS25%g{URt*s)5O45P+KHTQmBiS5l41G*l2XM69dicDjS8R&7MI?rhX$| z9OeEVX^1FAvg=?cGlm5GH&pt&yd*=Av8$S^(AY%ltYRug)@W2>D^WA(SW;|dj#Bb* zPY9}ZL!MjVzPnal92|C{3IUIgvC$FM07?EV&8XVOsA2{>=keTXV!WOswB5r0g)(<a zU+l4goN^XA#N?$)Rzhz)P(-P?5HQCus=X)$YMIea>sH`pxVp$<yNtC4hRM#eMk1~f zG|OS*=flZ}z98iP?=hhcqlOTShUv_3TaTPv$hZF1%VLT^^l+*a326qB^bai8*opKA zn?zqU#%%DK<lWapma~H1)!x~@ZdO{4;|6_+<}2Uh7Nb>E*LSx0bY$^ho1gZ(Ce+BX zgV-<Q|BqKXyP1WuGwS_lRUvjt*e?a?hlF%{IYK{gXauESGVacF<A~`F9|)etJILL* z-BF(~zJ3<Mq@P5_P6(q$C5e=gIn?;FJkgsUf1V(-J0Ys0;G6(!FX_c|ODNFO(k;*l zTv0irzotsm(y_gUaqt;i=7a>v@;O*LCgouh%LTJjh>6fNe1i)!k?_(K>@#hAJi=BY zGE;k|p=-ghx5_WRZ|zIf2wi`nNO=!AA^h@IFVd>=cc9tAO;Z$>jb7>?tb6ny`W{KE z@4c#}i7OkeEN~Kt%gx{BlP5$=yT6^}6F42x4XRhqN%6t?;^?rmV5dyeoKLqcsOHK2 zbb#$ru$;PP7F>-8@AY=H`&w$0QopRgaXn7;V8}$bm*lMCBkc85YEVhMoV!yFW|9fq zOOmzYH%4z?uXN91iF#K}mflTpD~cK^sdvEd|BV->>NLNJv8A%AlG31C6zsX}U(Y-$ zZwF~!_}FM_&U^rCK^~wXBnkagUjoVFg9|^`O?Sx!Zea>pf;c8<%({Q|nH^JacOn1z zeADz)ALFn#kY)z$^<l>0QBF!@D0pPDEp@pW1(>)BE4M#(XVf)^jdx86Y`CCpVU>tB zuWv)APNSav7T`?DGY-4Nv|7{Snoz5!!&0eVGg@vN53J3Ee_3g#hG{28yjf!D{fT1E zpg%UfmE;4?O=&gw@ZDbf3Hai_OYc~H3~3&%p!09Y^Dod7$$qC>#(szjxJE8nhoW^b zyHTy4i$#2Ft$oO_M0HjPEsBbN7v4b>>76ZMU^64jzyQgDIvRU(<M$1}+E+?%`#4gB z4<2X4AndE}sZ<Y7`7QGmBm$<6M<*VYto<KQVJ0c&kEcFAK$?ch6&}U~%5P)K+>8vw zWPJAM{3hPn^}8Sq7x3jCh>#A0#0LkcK;;6~LD|#%<n7}4A^gpO#-fyl<tM*e+X{LM zb{aZy;^$(!1!+9=rfuqIaxEPj1>`NK@4|3rICT1gYuQz2?o{Y!3t{~rZg8TZEN4}C z0NFhS4PVz}Y>K%r9px4qj2)fe-bF0^YHjv9n(WTJK5}pczXS&VM!l-6Fb>;jtTbAc zK>wvDj2JFDuA*@Qh}BhoWY_h{4$zT9GX>R%Nz*M!2arbiK*p^`yCvbGMUsmhg)T~` zogo2NWbfPXr~}*^P`(nPi<pjxO={B^tJ}FwoCz4Z^6wLP>=GphNo*`lsV|mWNcALV zT9G=LCo(Lc$(c{p)vLpUgeC#3E!-5S<nMTHp1bhhi82o@BeO;eBE?PRH_pHK=!DKm z?GqXFtuSsV9_?kXD;3g%={HR;YJk)+LivIfOcP>I2<4q|L5aG>&KDQ6FuD;dD&Is2 zkhb{2IeyUMrXlL3Ba;z9C<m8t$`vf05fqu)To|_mUQ@d5)eh8PWC}4HGq$hE<l<N9 zXSC^_dkOWPWtoXe;~(JyiD}6KRxZgk!bW!L4rb=gtP@^?RalP~Zyc?~BLL4Y8}%h8 z+6ThZHxif;Okd=Oq#6d9NGl7YDq)9Y#CgLyxG3vVHLnK~8i=e%;MzupCNaZCB8Xu+ z%ioLiMpe*NNG9>h9BN|Oh{&lpP3T)V)to~umT2O}(UETHGV#M=KbH!v$e0++(+CsN zSl4jZIVZ1@nNopF65IvlxKhF>5$T-|oFbj-<O*&leEYXpO;l;r=yiALKa1WD9^AWK z0CIYmQsl?+%E-WELnJ{R;Ig_Rz;*!$NsojGYtcTR#`O4I1FUa;Md=BIOCU`lY+8uB z(8eU>96=Jh9ctiE1@X35d7DPBaSD)+;H0*g6&q6ycF7_o7Ecw|X6Ib0dkC_CeD&2k z4?8=&aA-}O)<}TCveL}y<a<IQpB*>P3kxGgUUoI;yiH&aiWuC5M_T*)_gbr}=-st| zZJZ9OO_)~7+%}NDF!kg;Xf>^I7$qw`T-gJy4AHH+g(f9~Yxw(2pl-SRg!wfr8=mMO zCV?;L;%ft?iQ)j@x|yb=-9tNF>u8~|kQNpK7`dl5y417E$Ynes8{9URCTU895-IJ5 zXfeN$gmepw!q10Mxeweej^snobY3zU8wjP`Z4wJ<@b@jSL5`$!bslp5J**O@Yq>%d z_0hQbLdi?M!t9H9mHsEW9WxV>jiGKMeQ!=g11Yf_90%3xV6v_G>rUWzaJ=|>#w6Gt z!7>DF1j_a~<Z{y3#xb>&rQ84Qn+njH9Y0@^rEgU;RTPsTLbVLq$5sDYi4iv7pfSYk zd_X9gsDx|AO^DW24B~@?;DVWf=pZLF6g$J!A2^X~-$QzCY`9=kG+Yy0qnw*_=_~EN zmvYy&A-eT751Sl#79(PY&mVc)jF^}V$sWk(4;x?qGTBP>v}D_%V|3P5Q`<QhG}XW$ zHbYA_G2V|0AIOCP@&`qM0D%``u)w*z;Tlr(e(D4^39B(ZxyuoT>KS5v8b{c=sf7;8 zFqg%9AX3{CQ8=vcoli2JJISLN>1js61v%7CNzMThI}#;JFoE~YZVWlH2&RkFfePwL zBC^c9cfypX9rvfb?57aJ6EZ_D5mra$NvyCy!xp?Lb-5yfL}CO8w=pD8^(npBqbtWe z0xUCvv>QNXDu@&m73$6t98wT%g8dU~<mGn#6mTtEN(hJ*565CnKL(!xTqfcJvABFy zhcf(=b3A-Z@}2gs$7~<<iEoA6fT*xxJ>(ucaHlfk$P7=<%SWg&vjyO`+Hl9|^Z7$A zOeO(-ugx8&LSF<0ZU{UYi$(r=E)z>S{3BcrF%?<<@A04krSP9aY&X{NJ*GFAU~Q`F zNp2ioI&(wWsc32Nd<&ggwXsqM(GTlAYEbad$|0uUnUksjzg3*x5Yc&Xb8vjKnM?>! zeF#^==usY-oz_FiVY|77gsk8r|G95&P2beFjv@L;uh@|)xJz<ETn^r_SYq$lQ+#4Y z;2=jTKl|HhvxkLvw7f9C<HmeDmSZ$*E<G-hKu_qhEi_jNl&LVxaWDE|ew75#pX^W? z0x!%|*&+Fh&DZ+0Q6itUF>j4aebFyE>LydpS;AD7Kmxcxl$Oc>#b9|?L=2Rh2C6xE zG!vK>JSXB`qb3?siIObloPr!}Ofs{EC#G+<I<F#YKOT-hv3%3l>aQ~>t#!QGX!-OA zf#wb~D}+LF_GHM{J#CA8gfs<z5+9@wwCeEV24y4CchW>C=llm~<S(LxRYF%NGd@O) zL3+Djnu_=mV=Lf}F?pfh!q#DkG47%ZO$D4yH*50tF%wit`6T?Z287<@mxjdy8&PKa zPljnS7)<H=X;2$^Omswoy;FYL!>MJPCZ*5_RI6@5?mIa_Wiw4B5Dv}6#;FrRVu8jR zQ|+?GOQ9jvK@6*Cv+GW&!C8o4Q56s<i*%7zLHce+_Z*yvgpXRKCIv$EE6UWIBPt5V z(SB&7x?4st70{NdhRd#apM1S5qedGF#KW;KyICAFoiR4|&QX#t81p|Dj%*TUH1bU( ztNL7Q5&nUWhgVI7=yOqyb=DzS9s*sTW^mC@lYLoOPh-4HO|(You@4$3gT08+PDsrk zdg{?u@ceAbN>=%jKop=|6|B&CB5mKC>W1A3vz>k1ILtRO+cr;txw^|Xo7o4;1vI6I zA&x~YuD~?WRJ`lK*kG?PX<G5fEvH)(vB<m&#kYm;9-R{<jwPL?>+sv)HOUaUsmtw& z{ctGOOL3U4rz&j>uVP`l3tM8SEILA*^pL?ZaA@R_k_V?32mH)j0@U@J+?Gx!(Wd^w zI{)2K(vy=Us;57#LIjbWB|e)O+E#;H%DNrEe{_@$K&(}{)-vmwp^>XD?2CyX6{Lhy za!(R2Q$+KF-6fUr?s({!w4@$<A0^5cER|o-oes{}BKnlpk>2Dggwpg`!?@Us5R)ic z08>>Z7#koZArTNXuS$mrlK>S+4a8m-{t3dHnKQk{ovDKfN3}$BhGK7s_R6T|S7ZMR z#d>?Gs$3g5+|N0|MJDBs7#%NfIJ8Lr?{*!TV+aK(mQIFwGKUd}%}YnaYZcDHmUls; zS#KH5QZE}E@72DI<o)A^|6mBAAv1rXKXk@o`)+F=W@M0FD@XBipP}q+=2il~s{>WZ zPDrZtV<F@|hRz;@lk{|L)zTQ37LvDD#~6w|3<p_He<m|yd%P_t0#a$I{%!tesdD05 zEUKLAzfcCkPRG=_DRVpd#xmGc3=NicIGs51a}1i&1X^lkPzZe@r(x44r)!KNzMAfl zp4%C6R0MJs2@VtR9zq??vSE85RXOc2H>aRC?ff+sIP+_6#|j?V(2=p@p+rvT<r?(B z^KPH8(EEm^&JXX5pY-|uSfA*OmM$^R0kt)nu*)Kc9zS9-CDb8AlVo;qnu<NgkElMJ zzLO7mKXHP>Qt+G`62yXR5@5@B(b$-7<z#VA@Y00`XD*OVssZFxn*8Okar`ihb<RV= z$1=vJrNa_=&Z+o)K+&otl&~gFM^Ep{(8=GQwpl;%-N)!7xv#WY-Jopej@hmqi<oK$ zDldGqc=wKQ`5puNJv7L{G<Rr`Qat(n+=JrPnHt|@0=)vfuyjY7ZnUc-=2ww{O&08x zy7ZMxU(n^qibm6Vwr<DV3>-lj3+#&Deo1XCzPC>y*N3}&uX0<*I5PeO-4)iJc@c~< zx)tZNom4Dw^Nm(2y^EI>Gu^J&4&|cOwGd=fnl$LGy!#_PD3YeTk~BID%?Yi2hm{%b z2i4A&VXyz|$~)|>Ep7~d{0=UXUY-KDajD~JQ-3~tbfC}oRS+rn^3#ZiGBl2>aXSy3 z=kE{c+u4kIqR2Y}4Sj#O;urUZsUhW=y&vVEt*0_`OwyDc*JT?t%Au`m4bn+-N)kSv zK91 {ReJKDzsq0S-SERkON=-c09|2#}%+_b0t3Ya`yJPygodggISBkbAcyLjE<? zGR<Pu(oJ!H6K(d`aX4;hSv}rx8Pp}@l^9$c|M@Bw6l#pooPcgt=V)4}(Zn(aaC?P0 zExcu|*hB#6A?;9m<~MIq1icf~fP3?KZu66_@F(3)@h3TB8}$>*Yb3t~UOjgkC_x9x z0%ciuS;!aTIaZoh<xLz<)+2}I4P^)uq6FH#0B8GVD%3kp4W*I4CXFR-7@&0A>3#Ky z{Mn*dN(JR&aE6UjX}(iKdiHtp)?Dn+DT-#nTL!|b0~qQwX}hrXNf8(CFUUz3Ck@ZO zJr(~a$g9DPz8~o<709L)cO9H&>>POetiuW*8k;I$=Ny)+Qs(gZi0C>6uk}eX-yo2u z_Q?nPbZb&5ZAQ%xm3P5`a##*2TCphkfJs_WqJZj*G(~2M8EXJEwmy^-`Ohh+P)o8d z32-I3#1_iA1go*xr0xoVszj#v7K+l0sS|8GX(C^BPqg!rz>xH+2_DDrF2nbthIsV< zH#H9BPA<DyZ_Nl_M=dkPB#UunRvjl&oJTGXsFEb6n<ktUSW&^ri2lTrOq#a?N0uBM zZX6;9)w&3((*8UPTq0rXpRtiL#H(y3LPb2_q3j%_n33>2g(B$J;T3)c(AivPyJfRi z+O=6D@RCc02uj|UQPXi!$ED@sxGcS<R_PCtVKNLwKR~Jx9`x`mgT<M53d+R>V0|n% zESt|!TTYS4n&=IT7>A!CxHRwu+mfH3gAvO8qtFqES*XOFv7wd=(p#vB_9p|lJGH#< zpqSTvztq@Vj38pJ1E@?*IZalBhiY7qD8lr9he#B2TuHSjNRe7gSNXyK0PN+vgGpJs zkbLPNQfDEW2OTT<c-KU#25+EG5NUQXnJp@1DnCU#D<wfEmo_tMe;tP$%K;zdhBp5H zRR2I-$ET@&7c6ID^7@KE&%-#m;8EYjJ*xZloPDO9Mw#*O#^hUleQk0RHrNmN1M*mF z!uE>{tZkrJ@nZ(^`bK0RxEf-n_Qzz3q-$Mdh=Fz>d(I~bjhXwk<DvLYPqBkDb9#;Z zg4AtMVzmkC@`E`upq((1Wb=wHx^Z3Ic0teDm?p)aus*1UF&;q|62FLVa}3YB+g-8J z&dT=_OQ*Hj0Q<$}Nt`7njuV?b7UqK=4$U<n=o)Fs*M&*KJGun4kWaiuaHRIsX&YvC zM@xiZpatZO{QmmdLdW-EKjN?l=0{J@RGNh`fAb{G1jRtPWhZ>wAbE#ajxzb1>IY4l z^bvM+z;j4T3J$DIIy7VdwwZsMK|r*zVIa~_TNNHxo0tP0S2=I_2a(<W?Ozztt87xn zFgAL`PDIggoD+MfsEy@x@%3^Xvn;@JGiQlBC|q?$otSyfhU~ncCap^cv|`cGD6lgc zhpFT2G{78fHoXRk0Pi|I!;TJv0gz9T!b%ck8(jnrl3F_`v9g?ZPyY$yHKPPE^BShb zXtA)2zne(9??;ecVk<}y#OuZa!VkEm8)u<xoeaaFy6UK#!<bRp?Z)D%)-D@<Wp?(E z5vSiIGV-uEm1zO`)N5>-eij8|P=HCyvL?}NiRhz4V3H4+rb))2ccB9ciWLS?WQN^W zPT(mTz8B~sAx80&B>sLON)<k}>#-(m#)9@TmbJyu#(!n`HrE>x_o5LGmLwS=iWUCJ z$va2Lku;fU^K=p<bZ$TClSmEqL97xw4_F@Cx8^Ct$eu~#NLAO14a;1vBSWaIQ5J~t z)AnfXW4&6LloYg<mb5>V9ZU+GEgLg3-USwpMBrAY=I;WH;6Yi0ua;BiM1;*Za$JT2 zc${@R6iaXXO$zt4A$&3Y+u%vBVd)u=eplj0mn}<oGiMO98dVWkmqI3#M?51RD~iqf zw~eH0x)|}#>wMdkiGxc9f9m>u^Lp+UW{zO)C<l6<g!nQIUV22lIV@hZLv`zR7YqWt z5U$w8X)*ZY0BvnTII_G*x`SnNRTYjh>4HEw?2#b*6zx8Zr=L62x~jL8Fw9ewU#DT6 z2*_z8*r)u>2`PabRe88wR<LIJW%6$s2JzcF;COF5=qsZCo|14TjErcfSxfpu9q`fq zqp@5W4ACTZdcLjVjaA6>b&m|lG7)<>6lSQFjIkaL9Q23Uzt>(=JC^`hy_&9mX3S3g ze17Fpzc(+phd*xqX+PyJRJCh^kJjAyxsC#TvjI!a!vE8&T6n(QgS`~w2z%4=KOB=O zOc^0f#tPmk7=p}tBKZ9L2|iK0{8##~GllmA*&iR^$<aXR=NWu0dA0>fziT2@EISxQ zGLAN1)CgHfd88>D^ZA<J?q`hc=2m99`>r(@ERBCxbY<ORqg><qu3jRh?d!YaC<;5v zEq7@ujnnPrhD=Q8<{YY@L7}SG%j#_m`5dAcPMUw8?*uusWI{p33hDsI(z?T!DtktD ziXz3MK>(--zfXMfN5Buyr+Gu)4y(Soad?6Z8R#)^yd-d1Gau#{Ee~Ms<Y4dEFXfSi z2Ri7V^iw}mlJgt?uj3(Fd!pFR(8YqO8>a8J!f(4)&Iuag*7dFBY{{PO+n0{8c6LZW zXc0MwtoFq-a*0id_%Bpyoo9GGkr%%MV<T-yP<bOrmC~y;Wq^udV`{}e&%Pv-63^%) z-Z~zxafBvn&Xlf1I+4-L_~>Y0J2^%QkbqN@4u?s?hn+AH`F13?4^#A;Mb>1;*iQ3? zWVEXstG~!WJRHWQDK;f|Fk)?ICjzhBxTBHAdvK6uhENYbMuF6@1MTCxZvsw3zrQ$J zOz5FIQ%d)e#61y$oe<ji_U+I80Mtq08EkCNaqiF&&q8p)Untcer3QUPlkJxsx)QN# z1yV%FWfEvrJXp5mjYOURr|w|h9`}S_yE;yH`fPUIR9`zDrm%(6YBxX8yad<;j`-3X z7v@m7<8W>{ac&>Lpoui@i13&d%*oI~2`;BF^@9lE)TaSd!h)6Zmvnvkzv0aQ!JPe2 zQYfgY&U8F5gc)97Dyo>h3{uNTN;HUU=Ks(RQ>BZpSyX6Z0_y8r-Rw;uq9K7`?XU-A zN&TrP0B4W#eMpL3Z2WUCwyS)=%^hu6L{T=aXqbHpi8DML_%mjFVMj_&iaJhG)D@fl zqo#;3t<M;#(&1nMwdP9v;-<FrJULaVP<8#Pl0q6@I;;rnTdpy>B55bT78Boy=Cx(j zo3jc`p8rPKTR_F}E&ZZ{Cb+u>cOTr{-Q8_)Cj@tQm*DR1?(QDkEl7Ys2)UF0Ip25B zefPa@t+!Us(0g{%T~)hk_m-+(&9K%l1z=o53Xca5dU8UBr(u%i*&Tki4>N}JEuo5N zC)XxjPCN}pufXo<F2zFZq+$o)wgfhYQa#>P=W3PQ&0n}ZgqpJ4D34aE8(!8Psn%03 z=)^oHDl?{M#*$Lz#s)xnQ-!BRVF|X9F5H(Wt6i$v1kg=7eB>LzqO<z1`-VHkSpv|d zd-F@`jEE-%FBh|US(*y?O&d@<#PBPiJi5SRehIufvT{9Uc9Kw%|1kcUTOZHHv&jQ} z;3(+Bt!M&hCVQ)n)6t=Oqo?!1^6BzFi&RgSNMTVp!!n1H3+1ZUldBz5gXxVMW|H)I z>~iUP2*|&}=PoYMg6(K!GRgs+J#QqOoi;Sa7Q;5Co|fI_S}ucxvP=_qicnw#6kW@3 z<P2lzrIgKQCt=+z73d%*#Cd5C{d_=0wVjJXAoP2w*MKKf;%Zkt(VYv^LZ}j{TUfny zUF?YEY3kg11Xq_PB!(b0QuIf;;cQtp2!oAOC+!SRoMd&SS>kp{zDnL_T3_or*9ODt z)x^)|EDIxq5q1-Ul-hD}%ES%rB~f;2FMx;d_CZAv8I*Y@WU_m9Dcb7ng$K)r#ymf* zI8#4L@%SVu%SJZZ$>31FO?neEFnH-NaEu^j-s}fO4J+jH`q<>B1PPl4Kq8r%B>A1f za<M9qgx%GVM=hAW9^_BNjZGh%WwDrvInutdVQRvXbJ8Pmka4n7t%)Kzof+q#Fu|=; zM5lLo8K0I7Z4h^*$IZn!i$xKyb3o_L52O4jtY$ES3OToE8V9u>i{)={(nNQCWh?fO zr|<&7Sx$3Wb%jBIFqi^ko)!m~=5g}@VHJg6q+EkZR;06zVq92iQDQG;7oLS`b)TU+ zjjnfkmIptt)LjYP98~MrQP7jbywS>2e#pU%vVb`Vhqa7F$uWQ{KUD7{wr-WD&nQ$F zt}XSKsR(mZ5eL|Po0c=OSA>fkZ-VU7sDhnDi@(`5{-Im%U?#DxZ)*u;oMs&{9+66s zgHqF{XSq!cPg*Tsk_)GHxiYVXdpoJWu}rM-;SXRc=uT+C!&kRxqT#Kj^F)>I%8)7d zm8@U)gs%V*7_@Awv5**8Z!o;HHo3wF(93^F|Aa#vKs$jZMHI{eyG9W#JK0#=%Fr>| zAH=8=rp<hmc*y8vwpp$xN3Z*2g^f)x(IR0+$F>o0h{az8703Fi#bn>9fYGeaU<4fo z+M?-Xb7oo)%YES`ZN)L{Tu;J3dSb%=pKiO;V}AGG-o@yjK0CO>F;WCEj6IK1yzXEI zml$D+C()I-XLI!PknLXM?%a}~uhEC1ho7=qowQGOuH~KxD4Bl%GmJhZ*#4PduTy0% zXqsBIxQn=+Nh4kQ?JKP+V6kE6n8^;F@FtWaVUcwm*%w+!qq|{if{&K$LwJJbS+PoF z!_Eh+nDa);R&W;PQ#a3U0zO)RKLA1Rxf)IcvD4d-THHSXEAh1&Y@u4Z`90p_qHTTu za@%Jyq)S-CLs`~|1+S#2n_gr)W~xNkRC**K$ncrLSiIMD3^lPKR$or?p@w4-i#kuA z0-qn(hNsk<_f<;43*MXVwP;)$^MdY9UmSHc<2!!4thEy@KB5?2m<ZUeJ&`;+Yat5O zbWI=T&go+_Y&l!Tbb2$-<?6#D_y+1T@z44Itxsl8rhx-OIjd<*Mf!M`VMAM3`N@qS z=^k%xF*U{mxTtA87sP#qL-K<m+EbWw@q%3eq}mXquy!z5K@xG1KDuJ%{<^<5z4&j9 z96@ZDwEr9<K&vxJIvEHD9-|pB_^r4#{L)w)yVk@PBV1@DHWg#05&d|K^~Ui&BK}ev z!>;elX|rt;kR<F3$r|q1K-FX<<0s)u`GWN${YY!kDDnR;Dwx(UC>12=94?mIjUMAP zOg4QW=h2+RjQ$pJSf*D6<$ltKTb76jX+5MJxX*U#JdX|V+!plLGTfKBJec|xGeaJm zXqsrJ{<5c>dORc-3U3+EyV8^jLq{9(AV@Z-^UVViH33u0HA%YOPO`$84ROdpT=z!W zt05xj%Bikeh{LjBGBR!m%91CY=FE?6RS*M~8Y5;}G*PhZBRR9dXsYwi%r@AF9g0(C zgNf0!9HjYKcDaSf{NeqaRGk7J^fs(-{#Qw|50N>=otYS0HDr&g2%J9Fnx?m9mjEr; zKyr+bcob-gDo4?X&JokwI(!rAA?O(Pc!sP|`G)+1L$mQBof3flz4^@q@+_xB6y$7J zl2$qbC-$hc>r(+3V|10+fG_ikGS47r9}YsZUWSSUQt7z~y!Mu!h~2FH-d-gUaGBOK zI`%oO&W&ZK-eOq%b^>pGf^^2@9JVX`o7~_PkTvusM)J{F)wEraBlmXbRfhT0{AK`I z-!2**CYNAtON9@tv@B{AJSWHS9ePnilhnQfAxrWQkl-gum=t=kK*z66Q7(M*M%8jH z%R*ElJFvGBOsN*vCDg>qDE(}>7u*qQrZUPTnIcC%7|<0PK)2SJp`_dLJN);y#t^|u zn|Gu~8uqt+g47@QA(kT)n$%oQpCZa3&<eOr^*}%~JPzaQh0>w(9@Fh9f*Zum4O{w% z;;7-1J8)V@84Inu%($l(UhDej9k?!_lhP@$G`@Td_Va%I(+Iy}QBJffXT2wy99+UF zsz?JMP&=Ve?2bakv0D}0G>HXHdGrX?IziVP%^jjceWy?q!8+A7=L!%&A56SrHM9&0 zl3UT|L%D=uV~dwAUk_7j#sU_wp$}tGO1G21#|`R)$H@@<dwhSZ`0;nkPb!mI^6$7j zdDgQ?hoW-P+UIDOXd&EM`uYvL&`c!e&ZYXIm|1x0Y`nR{_^z)3;&;rPzMpyn$Ahp> z;lO?X1(A?oKhb=ZO*%DCc{BqE0StHo(^#{hl<i9WbjO%02b~TD=};m<SWQiA(%@!% zSJ&{+H0kgRiV9QfI4;bAV{!XJJ^*^>7om5=q?{KL$N@8tL)Lb(_9Wc-<)Fob6JDKd z?^EL=JS+VT<4mX`c*h%urcs`z^N(bBxMC>9Qp%)pG^WZCQJn$Gobde&gTx;wY@C60 zxy4dHTjI6Fx7nn31_`#fBqQ&t@WRqj$Ui|0%9g<C1u>f`%O~Zt?>`lsxr{5u$dQ%0 zx1OA$`6v(cXKa9X*VjYZe<cm(#K2;L=Ne2hYn<9t!e`4$7vQINZ~O>BL#!qXUqmku zPL#k85!YCT3@nFG8(o+}j3Oe!)vkg9a|(_>ASf>HHA%qGeq+e6xm#-gA{i%Qin<O{ z&2Tpxcp5Z3Du%F$KWg0^A8w%o8zqsV-EPtXg87t0k!LM$z8-60N_1$ic}XZ4pJcbE znjJ_BAvj*3)Pn1K7_o4#kOL39Z%#_ROe+k4Fb0$#E(BuGVD~&%RAlNjmnhCM%+tBi zjC@3dIOw^6)099w6QOZnHXnceR!9oVZ;ooC5rC-9n4zZ)nWK{!I)M2lK&<?vx06_6 zkoL5Nw6QQ6LWRmSB2&2Kdyj&=dTUBWt0T5G7Qa0K7AGke)&-oZ2I9G?^0whbVz&($ zsntt=5G@n{w_J~<wf@6kag)r)yCDcut+<qRaC*L<)X;vLZx}3(@f+NP^hv5-i6IX{ zp>8f*G*!VAOR`Bly{6&{#s?qMH^)GH&P^Du_aFb$f5S1zN$R@JJ8ro9m6k=<H1l29 zo=$6_@2ipIyRR?7%i|Bn)3yJxsELDwiEo3nqktYd>!1e8=?Jg>Qqy_%Hf7s3;6)Dh z=Qb#9p9=7+0>>h7E)VU7Sb?km!>dB}uU7>pQ3B!O<`nI{$lqyY*jQW0AAsS2)@uAu z{2|2&Shva(_j+DcoRI@4Dr`6lTzAt_yA^85k4QBYhe#9%RJjScBa=0bQg2AYPn<XZ zUoVfpuNGj`kc42Eh*i97K@&lW;TY{OU78_T@n!@St#G{$h%`<pHSzy+vl(#wj>MjF zvMlgDl-Z)(RQW3hLEE?c#(#DlS+FU+&J`lahDpLk3sg91pb|7j-Ne61SD>;zka&Zq zm$v3K1|I9z4d3)!hX}vd7RmoS;xmw(_m-M8krZ_bxBLtNa{WH}MSHZ(!9=bhpgaDw zZRjpU*69sONb0@3uE<}oH}>uImFwa1Y<CV^<gIVF&R>#txVKJWa&^hpKmI#~tsi_D zOKpL;&rA^S`xVZa5T*$`j8-27IWSwC{>mv=8$aDz^+iCMcK;;wxFvRmIiA4Q<U2pD z4`Z?y=1i^r9pn0UR}*o4v}#m8)mB!BUkonsHzyr!Sz8jiQ*;|qt}G3O?vOEYz3wBu zaE?9$CMB5#%th!Ss<Kwvn~(qZt9q3l3G)>XCQpDaY}!G^hp-#`q#Y5y;gC0FC_f=u zlPn$-v%BA6wgS#Y2-y67_lr%x6CKCs3G`8*U6SinzZE+l^Vtj0T1F<liN{J7nO2uM z!w&lm=A5IjZhTi}igCT>AvfXZwFUi}txH8QiGXsoL-_^E$5FG~n??LUN{{}|KN#6T zO+__B%BLbZ@}j&~MUN1Kd?>!1zk27d@zYC?u*~>~&@ybPCm!!PiT`8Zs`t-OqF|S} zPx5w^g-2P~tYXblliPiCvm0df(DyYi$pl)sS<JSb);*Qyg-=zb(VMmZb20D#&&B_~ z)o}vx3<}l0YCyfRI)wf~$B1jxDb_4~j#du+$pq>(chRv;q1Ck-k;B8M3#zti;f~jt z@@PD8xb+{v1wA+dixUkTfdvHt4F?Ge1%LtvVEq$;1r37+4#8rB#UlO0!paU*#u3KE zCgTthB^NWMbV~SF22Dr^h>zfr>s1&vkqHy$%x>jf^LmaM60%egD_e7#VoVG;W8>|* zqiw^whg&)!eDpfl*{yzO#Z0HV>0qQo{T%cinKJdU=Z#F8I+Qw0J5PI)mLj%q-wAw) z0rOG)MsPQX?`Nyk{=WI?VuM#E8=^rnT&%=mBQEsEMP0ifI3^3}qP9U@@uFx!>`4v2 zbk4=i$pslPBuimnVr$&$o)nQ(REzbYSwd^vrn>gU7A|~v&bqEmiNSgXgx8badJxp4 zJ>!qXT6;t>Z`)1G6ds$JBI%7#5%h_k9tyNdR(PNVR=+IT<tNOu0>y}emX!p62U795 zM66??@Z~c%n6cXQdu=<S73dsm(zH(1EPdSxWzlC033w4`kNGh~E6dN*dfSnz^_oHS zu6#t9(I&u(1l9W*%RVnov9l4Kctg5TQOfomTaJDf(m4`%9rWr#^l7*vc?f7cwQ%wh z?fVHW!RV{z_ebW^A32u|lG&rhN4D`VW%qnAL}9V`VmngX`#qJTokkO8ZRlI;TjU0G zB&FkPl6wb+-Nh>>pRaFlw+_F<JXTKWjElFT<HsT<kwHtuqTw(mfds}6Mvf^u5{CF_ zEa(hm`3ej*s^`ALj{D+*ST9GkL;nCUYqVT(Nj(ufof;jN9Vo<|lMJZUv{x3XZ9B39 z(Tvm8=)-s~cbLPHp)~m$HRcL`G4dZ(_;MAW8pI7qmXz#3s~gP-C9cz4L+04*%54wb z{L`>ZM-5wHPhGs{T18d{IPr2m74(d>;UsPcoj_U?cPs;H^i8*FRcAKrB1=Uz#>Xj* zoE(BG&mvzdtx(;Yy+W|`{QpXC=&$sKNp7X-?lJh0qbA2?>)UhHX&9#6EfSYfPtt^; z79q<6b|3yjh+Kb#*l1RD-Y9gfH0c4)CsGKk`S33Z8vK=DSNql{13ID72~d%lyfbhS zdkO#0N-8e>NTr$#ycJkfq(*dJA`p74JN<rZ7rqeIMBJ?rkpf2<vs^zyvnZG2aK?;8 z#$K-xPZ$72CW85;#eX){Y>HC<mCX)}xM87i-b2lMmA-7B=x^(%R<Cm9h$bBTZ#8n! zz5*lxf&>v!B@AeN9T?4O<A|JB7C+VUw7PkL5{k4%c_%z%InqSd|93O7Uyi7BNnTvq z`y%c^TCco`(oW!>1xThWrz=azZe7%9z1^+EGo-qn^-d{$SNrTJGuuUZYM<y06rx?H zxgv|jS1a<JCD^<Im29UGu%ubuzcXgOv~TeII2*dO;?=Zer{X+=KimGituLb{c%<56 zvg=B2FIiW#Z@66}LV|B?R$I_im9a_?StN0!J5!s^+5(UP(A^X=TKamm4tVqPTE~Hv zCY5MDs~KNUOb1U#gB%N|gvjV&?61D`uhMerBA){PQSC-Uj}4q;HE*Jzc#}1y&LJOz zSjz@g3z&BCvz)FWzsbQ}5)^p6V`;K9tu)Cj9SVmSg)V_<AQ?l%*_wx|u098ISR;r} z>E7aa@9;)JZ(<-1kAAi(jg2Gdgddm^&z(CX{{~L;7TC5IT19E;a6pj8J&|US<f`)( zY=R8-wxx~AnT(Hy51MCYV59-Hv#8eJ-M}QZYDX1Gi$rCclD{-l_lihntqN~4Sd%Na z{5RDk50X(?OCnO%WdbX2zro_HwqDp+)Q|YcP*jERbznyXXp0LA8|xN#h8?y6!f;`- zD_UNtPC3|_)!c~8jy4ZAk0Y1#2#g+p%9*RfGNl4cpw&XtZSAeR73zgS4m{VSs1<gm znul?>Y-=JzA-sECEIeCcdN_h;b+eZ~E4ptm^Vx|NsjPoFyW&HlS?N8+@HZpooFP1F zSl-}w2~w0Qt}krV;p>i@{l(G|5{tchgxZgmFezdht2+50eJ^14J#W<aHSB;O1qE|S z0x~_B{EMRnK}%fs8%3G7MV!R0e90^CEm><vn;yu?Wl@S^AtiQ`T1yW!UW=(xHFXp# zE1~I02#0)YVGRFmyV_dCIPDXn@lIz~fwD9Z@scjqJe3?jg928{GIhQvAZJSNTou(I zVjUMvJW%*~VO;`$K1(J4CsvXKKC>}9?J_$%k=_8)k+nyVRQew<Zub+g1C?Ma*b$YU zXda}-)6fNqy}jFI|CSN|#+1J@<fz21u`<z)deM~HnuOn)(|<L9TU3Qy-&{Agsim#^ z_c*+!uV(yz9JG%1`e%Zsq8fw|CuvkWqV5#GV?*~P(PZwAY(ExqQ26HNZ2P#G-LIw3 zVKl2G$x!?b)KrG6R?p&Zc<Xt^>~Q&F=icqwTq=X%B7<S6<a&E+qy4maA(TELSp)mB zVPofD{;j~u4#%U;UI=j@eW10&$I`SojUtO-8UVEVRqki_<dJ1bU`LL+8OE6EKz*LU zxKictbJf2y{P?@EwWV3>kK5{?s1Y7k=~TKKIkJD%+-t#g4G^&5uqr@*q9@>Y<|sHe zz8^pA*S2)fXy|mL9M%5{9PWG4S0~TnBk;;J@Y6js<lp?M=^=TlWih534{UBVq7*kY z>R9#wlK3aJDeSP^3R47-#Yo_j{%W?rwh`H-ZYVeaZJK(nwekV{igcgP!FswRKQ!1v zu*QPYPVEK~Rjc!94OTW6Sl0Vtix$DFY^oo1K(ZpLcv#6pE!OS%Y*S2{D1984^1Wc5 z{JUCjxUk~Gr)zjjB#aWM8mJu!&~6Pze*U-LS8kYum%Dq0{qxgfgDt%J{eA~V2bsdM z)Y>D^1Sz=}gN0DN>B}7XIJ}_*ubNrX9AM8gwmNTC6n2>cQ|Wn`?IQ2lVjI#ccuf8? z@3myDr+mK0f@zS_ioyvDXBHB{>uO;0QvZZL)pvjwX)0+%G5Tnn;HJ^R*Mzm#5oFo; ziAv@Z@cnbH#a1|cRgA7HloCqt0km2^x@c!2<u5Z_<voGIAYs*)EdIfW)v)~e6X5Uj z@C&S=!p;DipzwkAwRp~6tlaa~6&)AOvKfc#><I&c^s6KMC<bZB9P0qhVkBDFXlZGC zT3<1l*<}GWsTHjEO|#b-@&;qL72HKz@M2%(>-=(OvScj$eaSlC4Dq2@PfNkHO$(C3 z5fZwdh~mfj1<G+^WZ7?AUWcPPrG^^4oko-s+ws6Dp(p)n>MZ(8Zyl8{#+Aq|%#1WJ zTDtR~8f$tHT@>DV@6})fkeg<J3g9K+Ln7eijPEl%0icFn*aPg91h~Itwz4TTc}fFo z+ZCQ?SPE<aN?1=|L1z4>&ie&P`d^_zdwDY@L>Lq_UtZO?-)MF|(;N7t*7i)U86Jb` zTv~#r&8?=^C8($LL1WoQ2m*fgj3FvNi3p#k9jA_Jl0D=28Cv<MeS9b)mvwZ5VZJ<& zDY!eVrla?N%Ymx)&T;ML`FPU7Qa8D)2v)9P*EhR4v%&Blq8zREO?3<cZ%v6H6%Lhg zK^Oxg13nb8((E0^A4rI^U&Ky4tdgwi9Z0OOZaA|UbU9n1!=HJtFlc%0FsM4!SVSt= zX&|F(PacK$WnhlfA7rrJ+ADD@WKw5So%-uB;|Oi}<x>Y8Zl%IJ^mhm1G_o9L+b`ZO z<LdtPrvjI+3lU6$-KhATo;6tE-mW-c<lU5M#tLCe9dB!Jn`3|&)tKZAp%<U}FlYmz z(5>sREn&1mSuihjP4mm(HL5}(0?X$mJ5kX8u{`_JrecCzqt`C(I_KsMi=Lm_T)p#l z@74<s1k~>-{Gm!m%{z$&XF%#AWtSd3|IZLpy$54Vuh=9VK%ojE{g<-Xq*jF;?pw<& zZZdE4%WVzq?X6=9udCyRjxf%|)3cCFGHS=N#~<&#U)Ppi6S-Y@HHq-`OOhy4yK0`1 zm6{3sbHk_YGHmmg<SJoG)dqCgE^&3qrD+B5+m3AmpS5cook~r`tM3Dfo~g<n$*bzl zY`M^xiiUf0OEbem)1S6xdJTHxd``G-z{(@LWP<;!9O%9p0c|4+v!-i~+=&{%bWH{g zjST<&yLuu+7Kl)eBq7oh+-Yc$ri+lBnZ-zQ5L5osatwW~J6;C=(vMmU&j5Zx@DFzV zC!I+LHdPlezQT3oSdWms`C7~Hi9eJ0)}#a;2=1Tp?@rbRrheI<j30WNOE3O{1E#iT zw=K+l8GY-O-2j`#!1xfw6BnygeE;0oPES0FJ=T?{iX8m*=q=lxohocdnQ(9+_p85= z(&hPY=^P#+dgN<j#fh}Zz3u*5Kh0NgAN*m^|F9vM^oW_`%Cu*6vHtbe;svyhkC*Y& z!3RTUYsTRgM>THJ;{aUOwkx6AkTGXZ&^95*9VLyrD!b3+1vMye+Q{og2Fd!DeD(O@ z#GMAiLz^bdVqMU^w-moue{+t$XpPoCtO!aqxe_LeP&jXIO@R0lCffc{V<xgJ(uTJ* zxo4{UJUP!DxeEImK;jqddx472EbK1MV@t2E{;Jf-QnDjHv8B^;Xl_yyN2BTF!-7&R z*`0D#OC4><T^sZ&O=wV#{9{Lr6T1k%<E1UO8`Q6Ud}jQ0^0`fs;<jwkXk@t6o?jB5 zcucw$I$dRukBF#ke{+I$c%;wC{6ztxsvN1ix|bYDa;qxinl#CVGW9e~#>l>=Io)*( z(P^-Lj8J8L>m46P?LK*cXwaeS&_Vq@udb{1e>{p}yWT14`y?n`a21oyDPa0&-NOFs zQ*`F%y$(C(=HLVU$?k3n0$m0S^&1Xe)RP+d0{~A;h0wtBP)Hb9L>MUOe`cis2mmA$ z8Y&nSL<OBiS=GcD`Y$Yquv%bZVbK7FXv4xmQo+7)P{JZPd$Q?2ARv$saDPES*a+bf z^3IIYu_0ymP=y{40tRl3Kc)#aQ5oM*a<t5_k#2r`55Efk)JP`E+yFic3L^U=dMRH* z*&n6^UMy71s1H`L=`Wb^kyHA7&N@=&^&WN=G)mp_Armu<-?4t4&I>f=m7gYJljwf5 zhXXsg2_7$JR1Z<Pev`92B{l86mk%-tyNnPVfgcG2@BCP7MCB<;0~gZS=IzxI?JhYK zt&WH<KHkwJP2FM6nW=MF?v`MbS4^w$7MHPL9V=*~&if{44?mTihOK!;R_&+#Bsq4= z+nW!`8u%ogOfG-p)EYP!Z8^Hgb6Z7FR|K;W1tj>Pn|G!@AowaipoK|iZ<!6>UM<0g zjesU`D(WF(hOwD9jsl;?Od?JfGQ@aO84;L}Wxhaa)jR{oS9llrQ429V6qEz_E?U|Q z(N6nC3ogk4UgAih7E8$#3yrMChJ3&n$C75*alzK7YL^*MgN1Y~;mnPpqR9<eXWO%Q ztGSLbffFootsUjTfK8T||BJLC@>;R1bIs+Y5cWOst;kSP>7p`vlaQ~{h=U6SwboDT z9Ha0wE&jR!4{#?i6)O5$1Xb6RJBYIy@@fP>RyXgm`3a%K`bId2iH<%18(^NJ_~V`n z^Io`ce!l)+Pl;|atA6?yYb5xq%t8`hw0t3Zt}%_^2BU-DQw*PpB@vo1ZMn``1lFb@ zh?ZG+(4B3b^5s(w6e05q0;~s2Y1iwuW05vsVw7zCr0pF8l3q;G{fge`3p)(ZnhlVa z4c8W`y>XeQRmyh@m!BoY@j~|2c9yOc;%ne15(*x;;aB#sf`-)^j2rL?8WC{wmXXcb zh~F<^uvuV{kKJ^B2Gjufeq=6~nS{L;y)ma2|Ag@-A6D7qe#T#$eQFynPwbZ3K-V2h zpl&e63L}}%uLUqFeKwSHmu=|BiquxXv(U6&L4b+SRtp-ob{MCru^M7(Hf=W(^WaDV zrxbK<8MEbI<!FCqO5WD@Ons>5_P2Rg&es3P7iH3xWwD4GvLPPflEczZufHAmdxbgi z+B2{qv_Fy`DZLbRREKYdgni<U?up}l(g-cg{ufnP7+xUH^g_i=#zr`*d_ql_%Z5Zj zOHGMwsCk6eLePeA#%K&SxtNDo!o_q9c+*HC)|1b<yog17p!kRP_ow`a{Rg6NGN;_; zZQg~e=t~l@(5aw|MW4atXRU`&)GVTyav)b$jm;+x)C|b_YMdDjF5q9mh4q6%SP<kT zgK$vx{s3NEoPH85K<Ga|g~$|ecg(U=Y|50pkZK^E%#5IlbW?wjc+nPEDt*RFmaubI zvW+0b7}ASWL)}^+{^7rRk^8I!(;k#7;E7TgkBEkpAG9CjqYuRhYdzjPO@{w#)7pud zE4uuQcUc5C#QXF~1s_?u(u5nomIIIXHr9(8g5%DT9yO2O%}xp;fImq@k>Z-C4A1ch zU1-#JBel800)sTv7%#R!jz&xKBVv#=(eC`~vF_?x&zD&k!$qw8pu!i~=wmwOl=5EH zB5&E)|9uMnl`Exus2lBZi8CxIPo%Gc*rcKis?<S1shEy$G#!8jN-ZmI4zSyj*yFbG zA<~|U3=7nJyl;<(XT{?yk=To65_VP4vr<sNYA<Je));cnM#jrW9FCw{w6u06)!{2& zT|CVi6vkXh<w7rriT|caxY6b{cWL81<4u9@h-6Pf-&=W#mbbdNhokGEx+n8#*hB*v z2^tb^z1lVMZhFvr8$QVA2wQkZ-IxomJf5!@Ls7Xtx#W7v!!BXqKn-q39o93lG_c)f z5vrQcRWsF0ymN0RuhF}j0wQaT$m3nTqOB$lG(mdOG6r_Ir)`XpQszlOsG&w&DbU^* zY>FD<P${zXI=P<Wsn;Jmz!=}b^zh82hH8J5>%ci>Ca+E)GTHhXb=RJX`#fG9+)YDz z!=}8$C0#~XWK1rIO{0t|0*xw6ikeT#J{XwEzlsjH$lBC*HI(^K39@ne`<y*wr-}t6 zvks>^a=)oiZ@edc`tiBOeM3p#bohJrt9Gr#uNH&dF~6A5IC*KH%{hEw)7uy~+GHtg zVrRNfd`wElk?XH#ZoP*9z?`RbzBQPKrkjE{D!iEo<X22fZ3})Wnu$W1OwkHggSfQ6 z1k8z3&Uzu^$f}|rgYw}pQs&c?bDGhPvR#L=?xlJ55X6GN#)Q)w21!F|9OhH&HW<-a zY2a7|Fg53}57B&p{Iv6;-=6*KxZ%uov)g#!_^r=kc(==MqM%@w0>U_JEnm80WKqE3 zhsMPw{D{6N5XM9+#S#98YwK~Bfa9=(;=5)K_7QShYYui}|3ZVJHGV{2`ClPsdC1{Y z$(Mrp1+PD$iu(|xh)3JLpVPQlZ^9pPiGf}Q(ZW**POxh^e+W^I?t~w;Z_U4@6MQB~ zB0Xx4j7Chzju8gPf1n`D2cf6ycfhz{Ed=K4R?`<LF0+?`H4Lvte$9>pf^9If&_1h0 zQ~e~eGB}rTElFg?*0Rf_q@StzYQ|P&K-{j~8+~$|tYeF;y=?7G3-k34AnM?&(Vf29 z<vV?pum6a%Qr*vdShdK6dIgUmxvjLT)e=YtX8=-(1PW9sAf>~%e(~sow#P{}S4R?r z$V3=)|KtanXDljM@WgN|I#z@H6Dl@F$VJv^Z{JHbU%$SiT7b|GKe^Z*lnLjyf)^$* ze-t7U&KTHu<kTO7B-{d%+hQ61>g(5QqKP$4i*pmOX%N1#;GaKZ_&tJTK6EA4=9n+B z#Pbey+X&?jD?_*!?=N%L(XeL`-IeedE&Mm-0Ja?Y&>)au^p5nR<*0&Ns3L(zhr`^+ zPY0(o^)d>c8UEPM1jz}2iN((aL<a|@<LS-OpTiM<QU<WZho|%1A^aDOWXN(68TAvO z1s~+(p5O{zyRi9wiJ$kZ)cqL332Aa}dC=|zMySa9MpUC>)ZNQ<UW;jMxyuU5*@n+9 z63zyiCsnvYt|gzTT5~gh;nU&fpk?PBD3NL&>hzn2DnR5jW!7wJweJOZ4deN$ldvd% z84!7Z`7n+7|9Xl8?K%r_MWTv>b2Q{A5yT+WdGH6IN%D({`O)MLpz+^@kLzYQ;wG=? z1qwIk{0R}RH~sz*egE1~fPjVsK*4-~hWOXm4H^vU1_OXaMFXN^V6w1dVUx0P2rGYL z<rMiq#$}v9PARJL&xj4`UpopN2pIA)2N`qLB#~CeD<=VVsx31nF|LNI9euYT!+fKG zT5UQW(d2g|&@#eg<*Ih|+36+HQBN>r4xUd(LF%mnW_6V06rl^(I|BHM8M9ON(0OZZ zw%h#dp6cK{J$)(NWi#{M7N0I1oyHz>J1HlM46(omdCTc9-wpTd(<VO@PNLNl^I3%x zHE)vVM2fpTK`<=s6G#+`D-pO~lG%mjfd{MRQw9y!iSuivV=ikRjq&F8!SkkG`qyz$ zQUiwH($4FyEwCr2sPl&{XFTlX3!822v!*XuC9^qwg6VY8V|7||(~WWOv+4H`J2JoL z&SEw2^ODB+V*T#$gp}Z1@^I%H6tQWoQmY=qx7)0hFN@$p&}-96HU0=*<Gfu?AnVTU zee$eq?eb{Gmn;avffyPFqk%btmJw%+PT9kmz;HOz4^ml8FLCN#;?wwWmfq~+>i09$ zNOs2*5`iyG#7!wdO*p`&6tyk*!*|b<ip6jJb5-<UYbv1U49=nSbel!;IrJf(T%6yN zq~>&8#$N;G;E^9BCb2a)^P|Zq9IinDYui5{T^?0WGBxO>`Em}0X3DYC7tC1IYFYle z(6nq@19>^_ggU6YM|Gb><g8wdJf(>zwRaS3@FXXK(Y@PSE+|jx9x_Kada}vYfEs@Q zDm61%eplGyUpx17&*bsS74i}E_4a4nLW5?hjv6^>iW3*d&&`vh=9kz;j5wZ`l|$jt z>50#F)>>)NwF?tT9{PZaX*aOGCOT!la5^2*mD<k7+>G`0gq|}BIxLfd*nGoOUL<9c zbv0?g?NhBR1|Au`Yq7)75m1Y3%$fF6N4zUh>1171Vs!WCJ<FCgz<$q{)J%z0dY8E} zZKtX#s`cU^_-jGg!(rO4?-e>(yZSZzeV?&9WLD|!cQk@3N5yA!LvX8%>3kPsoHU_A z*DSS}>50FBTSe|~tHjQ!u>*~?yEltZq!W+DX$3Ou^tV1q#K_e1@D+|GGacPj#(KhQ zqkit+Ok?>OAQvf+Zjl<B*s{+l_4a*6t)wgPtEQ&SuBfI1qY*KCW6G-5h6sP+6yda8 zVsCAyj1foT5GLc*2uo1nC6ew(7eSE~mGWBWI`dK-a*nS>TwL+`h^w7@gj{t=O*EY& z4mv-!kny!+!z!frdtXyCYaS<e2%Zb{QgTh}n04z)o5g1o*Uji*ao`cn3Z)~%8k^lE z!fzNqM`l*No!qs0+K#WxXb3HXnk)@H6y(<kW*4G|tQ>il4G9SP9?@^{dJ^{>2dHP? zR(SQ=@g74hbAM1;?$LES%Q(P0oA5OQ6*qQz5=cVOKGsigj5$zBpK_4Z*eOVevdg@R zxq3bJ&wy$nhCaX0vqe{H9)DG+->)X4#PUaaUakh$Xx{Gjz;72{VtI2Y<k6Zsi;aK6 zh^ONLXLoMt@~wwool>)-?62Vd$0Fos^iH{g>KMorU%iiJbaKM!<Tun(lPp`itCzxN zyQ{eEq$`x)QJHN&YVG;|AM~1_ip#T!F_u8IeD}#7(&8D_Y>D5Fb3F~A+S9$RsN9hd z+n*pKT=YxW-VtzO*S!pI+Ub>@F1p0(uv)U?1_{9Th5a>zmNokSGK5|N$@*W^Uh@&e z&gR->GpZwx&rsCcn~xamnlCf^Zn_^4yJ<dYgGf)Cn-YuqXpW?7#5HDW)kP$tNv*s& z7^a>)F60!kT#8o)gy6G>V#GJT+owVChlFw5%UlQn@z7Qtnh1|<>2ukCZCE68d@rDn z4MlPfHms%k5G6h@B>Va43NQVhA^k&#+a6h#Dnc?tD)#WB0`)o4%;8$yB%UgL)G3oA zJK3BOvdUxBcGGz)Auuo0XvkOTapf4Z0%-)a#&w=(qz4JM>0ZJGjI1QwQZQazE2v)m zSpp7YmDVg#@L;PvGZou;wbR|_DI>9Jo#Ox{y*mr{EB}J{c#$2e6oE&%k61Jt>rIrT z^n6^vLM9(`yvgVvz+q8vUo#p@`4{10v8bq=1@~<3OpKsxi>5GELJFf^1RN)pJCo|0 z7&`vK7JD6LFd{muIoe@pmgjtGws^>h4Y`^&Flgh+LPN5!ax-DDS|03206aCJGAOg$ z9O9_h_?8W;O+e)3noPc3=bF>0v`COWZChQNj(^HJ<0G+kNlb1|wm2xqZb|#Yz_g9w z)jk}_szB>@mrNt5RbN80k`AV0rJIVsDw=wWgjKQl66oFRIU(t~4+iG=ZC)(MM>jxi z`D(5Jt-|7!X0sRhj~oWPK<*cHYUWcAUyQ{?;v_(+RYMv`x*Jm-Mz96z3R9t^wiXFj z`;9S0o3b~k!!IXMR3sQC+~b*l`>%G`+88r}c>Z&;8>6g#St5Pg-{tN>J6cE3@(eX; zPz;JfO$X9}htog57XSX#(GpRjE_-t8lp7T>>5ijaGbNa9GNf~+@y6MJ*{RCM&rf2S zJ<6M0t+6jw-w;9cFhIIA16_n~?BE)fWmA^8s8AkIrXP3wE1D%H;XZH9>T9Hd@$pdr zC|O{}JI2h+OnVlmxl#HVn?6yuGOnhaYEbfsWei$ngji3LZQ5ZJ^V6sChB?4PDwz}v zqZ;Ug;i{pAkG%PnEdT9zgG|k$9A<=#rp79|cFvP+(JZ%ltILOoa>^h*SuuJFPyV7c zDke=uT{1Ekg|Gs97~2sB)&6HGrY<Sk;ZgB5U@O}u;m=2iNL<w|zRk6kY4>k%K-Zq> znhLf>ODW_T9ddel3HYqWNqXJq3F9?>sEj#tJ<A@<dNnA*_LHKl8uzDe1s!xjy2)UB zOFJjKM>YvLU0jYw%|zYRUir<IOca+K%mz7x?Fo?@&PnwMU3~2dQR(Dc<S6Pot}n<S z!<?K^*2sxGSrG(-O+}_SuKVlXISC`oOm}|~%N>8~$++-)D8M*WlNiz);jY>+s%E|N z>DZ}y$O8{gTD_+J0AM5}PRC!c#ikM&u5yj%Uq)Rs^@Y84K>@k<#j2fnW~mkas^yv2 zuQ^Y@6@C251p3tSb}Qx_mrvU+*tZ^eu3uxo6%y`R?1?pR!{6PU<e%b9L?;^uD{D10 ze!&xXijYHpy}uE6)u?=`B0j0xP|GL{M2vfDnYk*Gzms&$dFGk@^+AdpEzZxjsZv%Q z;RSR?f|PR6>(OP%+K72R5lKqsmCR{)xUu)dZkXHvg7h;oC#Hpv$sH_hc@lqOZGMc6 z?wacSY9+fia<rzSq(>1S`Q0tv=UZHoR1yALsi9_|pW)Rx0;eW3JT5M!p2e4J^$4kV zc08;a^=Oh@rRBl5o_V$~^EyKuB^6p#s*@_VZkc`6BI!snjt86945Re*D--Eus@uLs z+<I|yof>@ZM(l~nRBD<`y(1R3;~yI`AnL0b%ZWb#b|8<|vSlUN=U^4BXmU!c<7z%X z?%CZ`CD}`2mnq^7^|^1Uz=pT#Fq&Sa4jb}bZ&F7Rbl!v_-}f;C_|ej~36RDONSEdc z)63ZEoBaC)p81T+%X34@vxesSP}@c_HMZt@>COGx{<;DuQDxr8Udo?XYH2RNd0yJA zq;(n_zGRh>Uj<1#ERDA`h85#Qrzre5Vyx60a|LRcQ+;%}x3k4Zv8bnSDcwLQ*F(p< zgCX+kxA8%1iT60uXVYud{k9_&Z2SPst&bMd$BS7<GN`b{-gRw;93L=U^XMY*;Y1Le zYMs*73P#Xb?`gwqm}#<4Ud0X!G03+6{y4a_cN{&ShQ|7rBKGw2DKws1dS{G0dZD*_ zroa?-%Fi!AB}pCVDsU+25#GwD8X`_2FVdFruUIh`lJV-b2>S2_Di3@rb`lGENP;1x zOB@@;CGU<lDegrZS5NX3ye1@Va)#ewkSuRF$fe%*YxOi#B;Z;p&xAdW*+yRPSF)Wg z?Q?Czh%eV6^SK?Kx;|i786Y`)Ga@9^!ohhOnY$FKK7Dl=c~KL38GWB@-|^q_?>?#d z{T7=viWw{Fn6ySuxW=KgseC)T+xiDUT3EcIG}EZ*)9zXyR%yLgt0h0Y@+p}k#mI7p zPiU-9$ttC9=9*pYUCA>592?8d;Gg#aJdte&WgiFCJ69DI*U3&cz)TW(uYqGvHEbMe z>TySwR`441M!U!twnFKsvECcBu$-NR>?Dq(UrU)M!Or`mT*tFJ<Q;UiWJSpn_19j9 ze0~}NOH~~s6h1_1e*j+BRpu``9ICJWR$W@%lcjTbI36Cxp_<nj%vQGUh4k0<qSa5T z7aDazp{fe%5A;m<kc(jSwdNV67l9q9w;$6D?_R`zC1>|R={uh5Nn6vFj$Rxsm7+sM zeI^BOS8V5cS##dG+*+&7Br%UX-D}R^9V@Hr^T=Lbp{ZX*^eYwfROD+L!S7Nsa_?GJ z?+1Bt$%lIn-ZM=gu-DBJ2d9kaTeW|)4=`EK`e{OKIUa=OD^drVN=#&*4a%#wS&s0W zjYd}20@w?%gOfbfIZNx-lOE;{vylc7Yt0~tf<Yb`okRpZlD<Qtqa7s4W>pxzP=LpF zHt5=j0D4$*1YDKi$WOTSkOI{<iU6Dm#Q1wHo>QPAd}TM5hQB}A)j1;A$TyZAS$c<z z%iPx)uv!LbNF(Upv9IvN*tF{Y*7PwqY7Zv<q<V3C%}OMo<^e|WKbyu2tQXCB&^&zm zufpi%BNUwi3fO)P`N8&ErBN`-aQ}kwS?R5J;vY+$ENCmKsfof9I4v4%?Q9QA5(!`p z595*lDWAnUnx!Mr9nggXM{?{in=oWy`T`nKYj<7c9s9!d8-ECbaW82Q7w@BXz2esZ zmm=L--K_w|BnynahK{;QZC#^m59oqy`n8$mBYb*G&pxC-0Ll7&1qzfJoc3Q87I7bo z)3muhM@C6w%b106O;PCeh?h{%TUiPyJ206(;}4i1%QIckoUe{>bg2xGnV7ftz^5iw zKjH-Hk3J(`$MvL90A71adzZ@)h%ZgxsQcOJYCg1K$plYtF#PT1UYb8CT4eOBh5LDV zp8owhu=s}na2~jp?UG-PmlzmW-X}lw@~fg?bE~{~KiV~}F3NChw(fs!M5>c84@o=Z zuueS$CFe>3i&_SB>}!cJH!akuF+M4!D0y=>nIwn^eA|L0=KDk`WXHfARpZy=Z@7As zdWZOhqP4UZKTzHJ%M|i%JbT-59g<M@Q{Sr}!F#O9U{Tvuf0w`gZ&OphZJ}}fUqBv6 zpj04+zoPO=p`M4p1~uvFjZCJ(n@DESk16?iK{@?61Q*7uEnOn2$xGb>d6Ji_j&}FT zFT1|Bb$sTvp=N4&M+49$3WO}b8oc9IYqKJ1$+CvEN%%KkNmop(x;4G3?{p3t*beYM zR&(N3^r!Kq5W9(siz_u5(*F8O1XqCpP@jV1x&Sdhtc?*w5wBS3fz#Za`<ZT;R0^(0 zGQRYkbb2Atz`%TY$sQLjDV%)j*%id8Be|i_vJM;Y=?@@pB0F5SZ04m_N~4dCk-QBF zE`GX;R}3jN`e^<!>YXm4yu1%{C;K7E_4JwWA<uRHZ{C-LDcE=|G#U1iFxrD8Jky2B zLt0ArRO_d}cA2o60Nv#}3kjCy1_jj1O0AM21|3&nq9rq(ik7_!ABV^kh{kVVkTX%D z0x=AM67AN5@*{N(F-5vql+1tW+(f}8*1P%+IE(E+R#L8TZ~b}1AI|JM8U{a;m;P<X zzU$y==<q}j*Sq0R+u`)}3x|MdU&!JZw5lAX;XE+WmTQcw^bcU_Ds{fv7W5@6@&J3B zr?g`;OoR_uw=P4KUmppp5wJih%2|a~uTv26G=r(yG-4GshZUKwIsv27D5dy$9eTp( zMX#xtWkb7H^$pYdsJ!<23l7+DfE-32W#4tL;KVq!>QeduPZDwF62*>o4ULj_eP^q9 zyK?Jh=oxJUM$mO{iB=q{!l4^~ZM|IKVHj>2)spWo=~G}`8qzUsZNT!UY?kfi_9#)g zu18C<2zMOI+<FMgLyHQs31Y(-iOBHU{Q*M843E*SAQVd4(8|rO$2hIaq>P%c`~_RU z>P>%VbIcQvjQ_LxPCL_op_<$FyQ^Jl#S3F@Pd0X4Mjt#`-C0&YI+XU#bKLm*$fwI8 zO?dGn)7=-wS|%lAqlTq?9YzxBq4wFt6;6Iwrnd#tx00We3U-xwrf>MxppWe6--BIP zsd&+{tD+k7&e!g3!HIbFl!*-W4j*tLAQX)C$;J86qM?-~h96Ao&{Zw+Y~;vfjO0Hw z4Vn?Xhy?@<VnyjZcG2Wj;M6ldtYg1iA$)m)>Ggr!71(W?^Sple_Up^D-@glY?w4P} zb(<5<)|OVGRM3m~em3<*^Zjfz-6Fu6ZX+>n&+Iu??Cm$)I0b{-)PWb#B>uYPLPEg6 zBSJ%efcP)BTr_lO@D8X71{s@(s+x&&!vZ;ru&A<2U}8aG;{d68(jaC~(LM~jv1vkb zlbG4R*VO*m1<gdP)KESG;0Dk$WItw2Q9d<rKv8qUL|j5<V3F;`vG~uw?Y|-AZ;w2a zocTE|m$1MrGyAM+IxaT1@($ofoYkVUm|WE&l$$L3&u{P7L_SY<{T$_Z0^zk3(D;V4 zpztAt9zfYtSD}cOL)MtuQ9`ahhItG|(L|UX03df3ZH6aCs{w+8w6$d-gti`pTWP`L z)!fgL250s4P^?iC<TN{Wz;N`55EJYLV^^5QGj^7q-zqvF;-D&rNe!7f=s1LD!k>yn zNUS(Z?+ZH40x;@vlM?YXtv~)&tTU1|*va`ywlU6%4pg`DV&<&#(|*wo{mEH`4M(W~ zqKu8z!*uGZc`EP06_S9ltD;djxWG9S5N#a1n>=DO(X*{4M&+@S^Fyj~**@|CCXH#@ z;Uwm8e)3f}8DKbzHE(Dlu*5y}zdwLoJLiM3Fr_?@UIqv}b4aS85C_!qMwE?V23>q9 z%K<hBzPycDJQHYP2KF4Z)0D&#G_}lnbPX8us$Wd+AQSmA`82f!fBo$1K%Sif`sy%{ zo$I#=ZgcA*tK52jW?~PzNfA|G5WQah$R!eN*5a%u@Ql!k56jJXQVI?04`2a80FeX# zWVcz1wl_H2uCKM@N8QxakDM_dSlMWYv|aq;uf=OrMlG&i&9c*}jq7G49udbr>miz% zBI#^-ld_G?4{6`$Ijs)=Iz5$nKCem4+vK%KFsg7niRqqZ8bibV3{#%eiWqL2#kV0M zwn?u_Yqm`DEjOCDNo!kq9ij+B*#wuA7sJO$1=DU)<U_G$nexuv=VScSt$NGTudN+_ z0O0=_)_WxIEl&tZ`Yp?>LulJtPnXYf4%@EMq3W?2|KdvEj*4U($6&Z7v{_58Y$(b@ z)+l{o$2Wng6ZmVsK~>}u(|;;A;DYquY$pE)oBap~UAeOKOgiHB9;z8$HAOPD@_n|a zf@54viUUSj(HB@XF5Vw6hq9?;ta6>dEpuY=2K0!N$4L&5F$EB4leM3!|MuDKOL+)u zrQQ`{zSa+|<7C?{-?|n(Bqo3Bx*AerBXP)jpcK0Sj%N6)3}t{~crJY(8K=b8r4*Vq zMTCA^rc_na6r-6kFzOfS|MEcGzI<8}`Xyn@0&!zzbbPLLhRFEY-Oa>l(gDd_xjV)| zCxy#iJc5%3ps9eF*9m)Fok?zmZQ3jh&`;LK$=vuHS?lGY#reCiL*Ylxmc{Ruxe`A^ zqv8{S^CPO?a6Nb(Y`?2=1j7HDy%!slb|a1e3sfrDm`hSyvV0x0VFCo(_Ud5jm{<uj z<$vqo%c8(a!v}k3(V_!TB;m<Hrjqr{DVxVG7pAQsN$|fEFYjN9SMaWf=}<b8!f%y- zCSaPXo@~N)Ml#LLEj@1#S)N95;E9{@JJceHHy7l?+^%hT8gAk0xJjR~D>Kt-w59*5 zb$tA)=pg4S#r0R~!s}0tC)Vj7RD4C-nL?FRunVjrC%GCUp>4^E->E*;nD6`GXBW)h zCR_=s&El_r{qpY9<TG;_C)`)8MJT85-0Hxi#f3rTz+pHyFbSM%GoG34vj>N4HLD&- z>9G{s7#}1`TnT;4`L@TGd2UE&f55~=pnWluj645w?<m2^I4dc4J!r3gdsS=yOTy*r zIZx}<FVI)nx9&cfnQ_PRlcTApTBj$%?G8Q|KU?N<OQ@d-4ChsDP~Vli9e`Cq$d=7& z^-&_1wt_>){Qq=vp7)4w*E2N}{=VJ|dfN&_(5b&gH(HuQ`=r};x=%Hpvku^QPCjsP z<Ua<QY2G?FouA>9yZA4D`vLGK*Ce%F(l63ob@2^>=LG0yJ!G_XgLOsHOWY+_m9(Kx zadThtSgElE4ez>^mgPOsR(O;Qo9_;z`efN9Qn2VR7h+FQr=ssQH}=+Xr!V6qwx^4I z%*>0fE(8}m9c=HLD_!}&B{y0^6X#m{wN46O!@lHFD#S5sp-QjAV|+oX*1iJPXtO+d zD{<RWeKBz-N=;&QNCT+3(Z$Nrhg@O$fP$hh-QgbyE8b0hmv5v7BR41l9Y=mr$KZoT zPzTFw4uKVVc<%<l)6uE#c*XEy*fGh*j@9acC20fIj-ir{Y#c^TE#8go&-l<oG!WO- zdMag1i!lsOq;z@R+kXJpSp0!_Xh8>@E4Cnpan;k*Y83#4i-HreSa`A4A3)aA8vkhA z9{_qgfn+7QSJy&IdniGY3~&y4@_>!@X?>xI7MdtTtx*xj7gyE6e@k>dHr1OB2>%~K z=w3_oSN?D<IZP0&%4PxI>h@8QjC(Z<)s5_4-4^Smytgtjah@EqIM{gbwNlGpJ6RsV z7=d*Cf<c0Xt-DapP6JxG!&8HJ$&vOHWzPWefGK&@6=bpVIwW0SiWD)+tv7su|A2H< z=BDJ(edrZV@W^D+lktHloTUpKf?*k&O65)@y!p4&qj6#;cqAg{)M1yZf^d;EvC7Cq zQCSi5VXKPwz}Qf2c0rOaT}kQAaEHoAF|NfwGpS$W=c6$wFrm4?N9jK`U^}M7{6V%R znEK-Fmz<rjt1`_rpGfm=;18ASHjx@J|AQ_G^p91sjgI?g=%&pPq?jzy)1{%i@0qq; zw#Y8>fvhMaFR9W8j^6R+ss?_(D9W(Yx|*UUfXKeSw^m0v+M?+VA3=F=6o6542*r3! zspTVpk5SNQ)%dCjFN<g!&5Qfu0EmpxM7Pl`6zB3xf-;p0AO>F^Dcz_ygSp8%yS5T> z#_YE$<<6e#kZAmv3a9~c&||DQj~KnuCuqrGRNed}PImnds>RVr&23V8Xwrr#oXQ+} zWhOId^0^9w^$p3t!1fkVt5!?|QfcJP#sVh+VPn%Cw<iyi%%>-vB*NGHltx9mszf0^ z`4PE92Kzi8zMeFA6iIR}8C{ker+$3}4bJyRh@-lu978n1=6GmajpfQaNlGEZq)rwU z0A6)^UK#*-l+^N$lj^_tdxe0!vSlR@+A*%)6##~-UY36$C-`5LU1>NJY}+2$daa3J z9!trLWsqv@j3t?2EMbVoIzsj>#A68+VT>`Dq>^Pu4Tdab>&Z?=v`CZe4U)0TGI`NA zy~q3g|Gt0casRuH`@HV!Jns8G&Xb&)Xe8_)t2<+f+(eE9E8TYxBAcD@>C*M#SkMX& zI!HmY8?|fzTrcyGetZe8SASt6a~|S}{V%Z>f%z})W&f&X#8K0W-a&oGZ;GV;0F4$? zxY<r(b+{2;89;MZ8h5C`IX2k2sT%hSV!6AZqE%+fJl1n`_QTQ{o5Bwu7BKYVguo0l zK*$oGX#q|6p+Zzgq}2-ZP71=#%(cvME^f*)bab?0hIaQDEzHLK`6X>m;+9i5_RE-B zj<Q#vw6S(KQpljs&-q8^)MwHGVG83laQJ@$_s_mp0j_d?f-54yG=U;gX6w>&jqfkP zX(b)A#Ga`oyt(VkO7Ot&R4jpEqyg~bmbhn|`4u^zhuQ*ty@ab&=*-C;FS<nVuHSC? zs90=AunCr?3XY71fr)uXl}*7B{fjK`;l+DiX@?qJo=Tu_j%U?7tNu35%P4k9n}|fb zB;MRxu6_V9oY^gY0=-gSlM$XuzIhF0q^y<Q#akdA!H*2{s(61VGfQD7K-nlYZ>!Z% zP00}ekL^c<-zClw7}6GmMI#NkEX_maIqI)%cMD0MBlki%Th}}bugJ~G#fs0KW*2WH zzF&W0Iy3~q!Y7WYC;h5$5~;fA<NdlLDJajy`=I|wS&`J1`*2_^zV}=xD8J@aDy`n4 z>h7Miqgo6mVM(@4rt-RR;kU5&6U;FRV0_N)R90FEBWm}huS0^1RH!+Ql>)Dd)<kl} z^$1ysR1>-k!nz{Y;?mU(Ll;)4vng|hhX?kp*8nw^rGH;-=Q$fz7Eixxn6FY7;?n1! zm$H@(k^hEWjORKKGudEUuQg4RE_`cd4t}@vVkbsc=hpmfsmncRcPFz*EdGT!vvt9E zE?GtDxNenpqnuf3#(ZCM7ncyZG~Wy=lvkdOC8-YD_GM7L+vjB7M_8(NFCdGL5zn0^ z64xST;(HL4;0p_A>WxmOB>xq}@pQ0;q<!SNaN02IIGh`13czCOzkyziTKcDPn@gD{ zJl4@7rboCcnIdZxZ4sgydthLWk=Wcs&>bbH!~>^>dJ{hCjTp0>F9>XOOg#lj0>ED3 zQg6vafv^X(s~S%o`=MZ%JfCx9f;dH`LSXp7pl!wbLPr6CUrh?RJYtcx=#()0Pw5YT z;=qn6cT*{%L}~Kv0N<}oS*1l9<HaCPGWi4$pzqlIllB;kSLH=EK*D?lx@S+8jF(#6 zhk_?3aikW5>X5@1sZ9K0ZrSK%Ly>W}c{;dBaM}I>mv#Etj~Ewh%m_!Gu$?c;G*lAl z5J{~Ru37T3f$LLxXYa7|yFrP<P<(B71-=18N|_vkWuvmXrxbEgC*dO`1N<X_EK?$? zz;{a(Z?^8UdCC-SRXt$INeiFplL5--)Vmg6+)BFY#}>1=M2m|LWB#+!QbKi@t~LE) zT$LN_07xkKqJP@Erg4`+@7Mtz{RWgb^=*HFc5IN_i|PmX6=OsL%Q~F?dGabyo0K6f zWbg^Nev9bERIsIIcD1_hNlv&c<Q+hOH6k{mhZOcVCfluXm;K@#mu?;7S@~1no!rCc zm=I4!&jgwrPdN=izt1;@@yp}10rbDF*vQY_&{EN^)h7!t1Fr>k(!V2!wl8M$ldw1K zyMH;vvYbH(K&4i<J}Eu-ZKRw3YE6DJOYQJC01=8?s&!2MX6|!4qW-o9-$GTzCGmR@ z9&U8LrGOQN<aPVU_ul|+S4nNf)v_=ouj_Q75A37{4Z;wXp_A-*$cW~08}6m8`%V$2 zk#CQVOjJqnkF(x__B(Y$kC)UWWYF+-Rr9e7Th$%RtIA2kM=E~CCh}>D3#u&ESFeY5 z71fX|XPe^lh4z-i#NHdJ6zi00Ewnsf(eo^XsqBo$uy5`gwHfhp-s`Qct-w4pWrKy| z+$CXc^fQ_`S9D5C^JNY^0vC5)U^NSRB&W~Uu7nMJD1)s2$?p}VGjoHYGo5hTsTi15 z>Et!(wkn>i3*SrYX!rHa9@Sn*a7J*$FPew=pzSqsB{tm#L^F*=lvHq^OG_Y&@Y|7M zm@AvWKC0N>vwm;9Bd{hR9^|QiwN2ME51#*cyRCX4<m#3|TcQt4O^{|?ma#;`?Gt7& zqC2PC8&0!Kl6*}@Z|x5xQxA7?IbR(9y?o|~yvIPLn~yw`d2~8(yF>8itr^MYbiq@% z4=(ktY`;>~lh<4L4M>(EjXNvOgJjnU_Ow^~;Zu(PnwLCg2=hFuEAv*Eo)9TF5%)&8 z)l=H8&gLB`@V>7g{P)P1E4R;-k?^KHnw;5;Lgs3g>Rk#NIcqldK_<jFb(DA5%H1Nw z1>My5h3%)}*DeDM_3+e-(|7+*K~X1G(iFaCtRA?39O|vA6_50Zd_Fh{38*N_DdmOK zmxU-ebBi`(p9y6AXGNWwMpMF`-+6K#>Otm3kO9Se7@)*Ee;aQAh!h^&^zaQtq*Mst zxk}E)BlFCDxf9j>OzRZ(*Mh|@4~~DrEd7wcc<4oT9FN{X4-y0#;dg}qs!VunMV`J^ zK|kMtfQx7zQ^ZnIZv{~aaS}nl1L(?`vp>7!=DKg0bmTauLxEE*1<=<hv=d1wEZ{r3 z29nlYj6K0mdi2)<*K4Owju##dY$>0>7&Euu$j+ND2K8G0TYxmgMx(@$vZ8xZ<k%eZ zj1mW$F|a^3AloNrTmVrznoZ4T^2Xq~YS0GlC`d?(YyaLCG^|HN-fCG;a<_*zn*HHj zlN7_*Iz`k`AdxTd*!{7Vi`vlWDFvc510q?^SB&$!in~L_0s<=KMq3kJKacu67x$-; z*F>1?{SGOusNl(auW*Aqp5YVDJ+06E1ch!KR^K@QHMe!ZO+s%u-(u8yt=7~Xu>#Gz zG1hB0!u&;y>+J`bP^S8pmF!(-PP+CDPR6O~ScgYQ;mgFR|K*It14@*i)Um}04*kU2 z8_uzmlYH3@mhEi0By+~)a%bD0<3k9#+l~NX&fy@)1aGl9)KWaxfEzF4LDsZELHBzD zwz`tKL-(roRVBqSCtctt>sesRc<x;4UBZXPled`Vk;XhZ7C$4DK}$Mi*Ygks1dkVq zYFmxFFN0xj3)BaXD?d7IS<QHWLD$t?$2Z=#x3IMOU@)X2$KWu!QI0g2d{BMuFj_0l z;j2RdD2rrhf#)=vFM{>KE^84P$=<c!>J^r$baw0)wpAylw`A6YmB;nT2TWNt6q`#w zbji@}RbsG|ibh~gY#7({&YjEO#bll;Ak~c4C(u?LX%uTFiUmTb-3}Vx&)z$sTTWLE zz({#C$(7?!nm8>&?F27MXAPwnc0SPE@EqFaxp3WGd2XL1UB1*~Y*L|Xad|~7dV$Vy zbP$z>%hvwU8K=~WPpSF;S6aNQEdjpE9uCU?hE7zqOG9l`8UvMkblzKUH2be^y8jp& zbC771OK}nw)19PaBi-tbjGh$wS@7`7cC0f?gaQ@E#vY0K`GKBBT^l>z`6{-Xat;i` z-hwr^^5L^=@N3$Nr7jJ9y-uOal<Br~={U|7QIE7wztIH7<jiI@{h*L{2-c_h#bJLW z(wpT;sg0k=mth^@)}s7sg~(-H@SCB&ksi<6WaO!;*@kpEi;XBG1xvM7;bSQ0;3qxY zx1UpXE-#>1a*MD(gUzn!@E~>N?MZHOw!oj7G@~qZOVq@^E@^gVoL`1~+`zrg4GH=q zhUR8r<vI!v>ZV6ybF}5Kn|Ijy<cFH4n8zN_U#Cy(+hu8yKMcm4ukI^gMJs%3%h=+I zP-@xD`opxSC<~pZnW@_)#R4Unr_7*Mbj>1xVyqnCbXR|s(F&j6nTT2I&B@6U)Momn zl~40vbNl+;CPGgwrXWGeRz#vo^va=%#z!&v-QX>;r?CzDmF&wICs&t^gjb+HbyAlu zMj$fEW+#&V8gGY(KVE`c>Cwx4@n%%k0e}1*(>b4BUJnY1Zgl-#TGDp0Kkn<2!w5~g zvI66hkuJCqL^qCJr{ynR-v56Ayn?5WKTl%wvo~rR^I$L2G3XIr$!y>eANg-P#SqaU fgzs%Vr*-jYG(YMS<<q~EWKZa+O(!$Y{r>ttdtee# diff --git a/website/static/img/docusaurus.png b/website/static/img/docusaurus.png deleted file mode 100644 index f458149e3c8f53335f28fbc162ae67f55575c881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5142 zcma)=cTf{R(}xj7f`AaDml%oxrAm_`5IRVc-jPtHML-0kDIiip57LWD@4bW~(nB|) z34|^sbOZqj<;8ct`Tl-)=Jw`pZtiw=e$UR_Mn2b8rM$y@hlq%XQe90+?|Mf68-Ux_ zzTBiDn~3P%oVt>{f$z+YC7A)8ak`PktoIXDkpXod+*gQW4fxTWh!EyR9`L|fi4YlH z{IyM;2-~t3s~J-KF~r-Z)FWquQCfG*TQy6w*9#k2zUWV-+tCNvjrtl9(o}V>-)N!) ziZgEgV>EG+b(j@ex!dx5@@nGZim*UfFe<+e;(xL|j-Pxg(PCsTL~f^br)4{n5?OU@ z*pjt{4tG{qBcDSa3;yKlopENd6Yth=+h9)*lkjQ0NwgOOP+5X<a+W90uT_e{89WWP z1uR>f?SEh$x6@l@ZoHoYGc5~d2>pO43s3R|*yZw9yX^kEyUV2Zw1%J4o`X!BX>CwJ zI8rh1-NLH^x1LnaPGki<ocosVRGTo_3sKv=Kb(<VNrB!ox>_t#4PEz$ad+hO^$MZ2 ziwt&AR}7_yq-9Pfn}k3`k~dKCbOsH<t|9AO*ojFkOgF-mwZ~Pd<sb}04VgRobNh;n z`#}&N%5bcYHFGwMjP&D;nWeW*TrcPonb%8E35v}qm*Kys@{lejMxvtl6Rrx%$30KK z#$Y&QU=pB58@H{<g`+Sf3;=}WzL0z)hA-&R+lM>jvWjnLsP1{)rzE8ERxayy?~{Qz zHneZ2g<bgz^Om%kA>WT3P|H)fmp>vA78a{0&2kk3H1j|n59y{z@$?jmk9yptqCO%* zD2!3GHNEgPX=&Ibw?oU1>RSxw3;hhbOV77-BiL%qQb1(4J|k=Y{dani#g>=Mr?Uyd z)1v~ZXO_LT-*RcG%;i|Wy)MvnBrshlQoPxoO*82pKnFSGNKWrb?$S$4x+24tUdpb= zr$c3K25wQNUku5<u4|V^5N{GnRz6<=+%NY;nN{}JY<ebK;UPe$G{xlGrc9!QA<Si} z`9zc4aT<BZAG=E&U+xlJgwkxlxtJVpD5&bkLh)(t7sSL8CZ~n#E|Uw5w`cS5fY8Di z2iY@`A0iptgRg{-s~D$8M_scyUWCG0#E<u#77FG+2TIkkU&#Qq``CxdJuTw}4kg;j zX=OwcPXlGM&NSJeZY|zbex(!DmW_AE9cPGs6AsCR+!+q=F-UyEL3@0E(3+SN`tKvF zw_F~hb&J6-H%07;>VG@A=`$K7%?N*K+NUJ(%%)m0Vhwis*iokN#atyu(BbK?+J+=H z!kaHkFGk+qz`uVgAc6<E(k$3+zDbdoId9GCS}wAk9ob>00d#i}WSs|mtlkuwPvFp) z1{Z%nt|NwDEKj1(dhQ}GRvIj4W?ipD76jZI!PGjd&~AXwLK*98QMwN&+dQN1ML(6< z<Wwsew1C($&IJ(a)@sxd+%+5ib28==2GIH9cRtK0pX9l{xKk-T_^iQV>@+{1`=aIc z9Buqm97vy3RML|NsM@A>Nw2=sY_3Ckk|s;tdn>rf-@Ke1m!%F(9(3>V%L?w#O&>yn z(*VIm;%bgezYB;xRq4?rY})aTRm>+RL&*<?cmPUSW37tw)mE&14yCL+al>%2-B%m; zLtxLTBS=G!bC<z*s&g#elj(Pt?!2MLTE5t&%Yc=fy3NX~t*(EEq(tyqI}D8HEg0Mp zX>$q;FQ|K3{nrj1fUp`43Qs&V!b%rTVfxlDGsIt<lkc?tZa*5X4?P-9%=Ky&4ZkxW z_#AV=;#Il%P1d3ev(SegRAh#nW=?yoZC*l8n3`&TXhGWGlA^i1(bE$bPSZ_}Ape+U z5hUI?`N5IO?wx0n^&gEgF9gqyI#cQ{ep{VwO|*~s^b{v~A4=GNS{<8~PT4rSph;nD za=5h|sVTL=eDf+WSmtK?P)x9kDi}VJ7dja&b6{>3<REf^+J7hNvX~BxXc56L-mKAG zRB{5{aHff15y4wia_6@zEHK;;p5Rm?WqEDZTbdNuLPTHb5bSHyl>}n4p;<j8ejeM| zsW4OT!q6Vs`M4LQb1Nh4LdbpnZ{eY|sN0aey?veEALpo;nEaw59>1%Llj5ePpI^R} zl$Jhx@E}aetLO!;q+JH@hmelqg-f}8U=XnQ+~$9RHGUDOoR*fR{io*)KtYig%O<Ti z+u(*rt!L+!n>R|08ygwX%UqtW81b@z0*`csGluzh_lBP=ls#1bwW4^BTl)hd|IIfa zhg|*M%$yt@AP{JD8y!7kCtTmu{`YWw7T1}Xlr;YJTU1mOdaAMD172T8Mw#UaJa1>V zQ6CD0wy9NEwUsor-+y<mOMm;`&hA_bFmEeZj+TXuzHg~3yjV33Bql8={pRcE&){@X zCz?OIbLN+2uh&P8#&qN!?(WU`ER+`q@Sp?-Qv?e&QUr9>)yc|Vv|H^WENyoa^fWWX zwJz@xTHtfdhF5>*T70(VFGX#8DU<^Z4Gez7vn&4E<1=rdNb_pj@0?Qz?}k;I6qz@| zYdWfcA4tmI@bL5JcXuoOWp?ROVe*&o-T!><4Ie9@ypDc!^X&41u(dFc$K$;Tv$c*o zT1#8mGWI8xj|Hq+)#h5JToW#jXJ73cpG-UE^t<KwE|WF;?16;wez3O_S@eidlBQ5n zs$@!s<Lzk!Q&Xpjf|8Ob4o=Qh@vd;HcjzMKmE)aR(U(8KsGa2=gj<7ollvE3@4`ZR z|AHy$am(hJZ3l|K3KLO(aCnFeePwRljvx!IpKEYq5yn#k#9W3}dSgoCM1Hor1*23i z2q!7C0wz`89a`QVuJyZR2c6*^!n#!o`au3e6-$*S)e3MC*PlYuVl`pEe|v6DRp#Kl z*GIC%XRFDGCmj~Q2OC|mBkwY3^v19}u`~YA=9X41)Ft)qvUP4RKR;iWa4cpXFL%DL zSh}?}S&po%7H48&in1)Mux!zT!{JEe?QLe4!)xLE+^O6>sRf4gKw>&%Z9A>q8eFGC zG@Iv(?40^HFuC_-%@u`HLx@*ReU5KC9NZ)bkS|ZWVy|_{BOnlK)(Gc+eYiFpMX>!# zG08xle)t<y#?%t<x8`X{wM$tHb}=JHbX&T=zu#zTA&9W!pvtLv=$tvI{i@1E$+kB- z!7({CAz;6Qbhz2D;rlI2sj=Wzl;F+`ro^z+Y<o?HuwDE6q{R!*K^~)ZV`?~?l1<9M zyDzEprRcyrQo=4aU&EfgD)j@(!xj5JlJMh;;--o7a_lu$Yu!g&DO`6xtvxWY9;%rZ zaU980M$pTM64!Zs{ak!bj)?oIhSd{Fs7WY;uaydj!z^m-BK;<9V8xMJs7;*rga9XO zY&b*Q?Q6Zu6gGi#q+H42K+CcswEES;w>ntYZ9b!J8|4H&jaV3oO(-iFqB=d}hGKk0 z%j)johTZhTBE|B-xdinS&8MD=XE2ktM<mxd?Q0V9L0Nzb(@VY()dOy&d5wykb+a5@ zrfJpXy30k0y9-j=VRes5iRI((27hs9EqE)R1X6~ujW>UX8z#eaqyU?jL~PXEKv!^) zeJ~h#R{@O93#A4K<H5H=G^GH+U^P;9YR$ut&wl^6Mvk1&Th>C`8@k8N$T3H8EV^E2 z+FWxb6opZnX-av5ojt@`l3TvSZtYLQqjps{v;ig5fDo^}{V<A~7v(R-=PEyfo9M0| zm|sc^VQe-9-hKSvAY}#)^fC|XMV+Cy9svQwo;pTP9zS>P=L0|uiRB@4ww$Eh!C<yJ z`6k2EH4-;>C;75L%7|4}xN+E)3K&^qwJizphcnn=#f<&Np$`Ny%S)1*YJ`#@b_n4q zi%3iZw8(I)Dzp0yY}&?<-<Shg@jBMt^bbWsuj3tBKRvE~o|n$CY956YN4+TDzYCO3 zd<bkNG>`CzYM5Rp+@AZg?cn00DGhf=4|dBF8BO~2`M_My>pGtJwNt4OuQm+dkEVP4 z_f*)ZaG6@t4-!}fViGNd%E|2%ylnzr#x@C!CrZSitkHQ}?_;BKAIk|uW4Zv?_npjk z*f)ztC<RtneXxJ=ZHGoP_t6RV!k%4po{I$dmD3PR2mIg@(2qvVP)!@ldA;j><enwL zcvU3Apy9_J5Cygz)Oapzxo%bMv{?CS=!@`0lZj&<^x{*MzWSWdaH(!HwynfAgp0Nw zkr#FnFu=)iolJ7NAGIVY<R3ha+T|33g67%=QeIr<7v55U(X*4Kc>$Cj6O<_{<Wg|v z+p~?ieYb?!xep#RnYdTedW`h@O1%W>K=dPwO)Z{I=o9z*lp?~wmeTTP^DMP*=<-CS z2FjPA5KC!wh2A)UzD-^v95}^^tT<4DG17#wa^C^Q`@f@=jLL_c3y8@>vXDJd6~KP( zurtqU1^(rnc=f5s($#IxlkpnU=ATr0jW`)T<J2fheLtL#J+KNERY<9i&O3aVbdYA_ zmaTLq$r;?snyMU>BlF5$sEwHLR_5VPTGiO?rSW9*ND`bYN*OX&?=>!@61{<GU8;vG zE9wz*Eva#8B|}4z7bsfNl_FgkOZ_@_a|?6xsxQJr904C{<fP~$^pcG}>Z4)@E;VI9 zvz%NmR*tl>p-`xSPx$}4YcdRc{_9k)>4Jh&*TSISYu+Y!so!0JaFENVY3l1n*Fe3_ zRyPJ(CaQ-cNP^!3u<X>-X<pRVs%HBDjaMgqOO2M($bGql@=Z_XMW4qUiAZx@0}HV{ zA)a;@n^}u()>6j&W5|vC1KU!-*8qCcT_rQN^&yqJ{<E$uaa?6olMGw><b8_at3#BT znG92OW35v6(3btaau1`wtiJ{^5@_-3hQ>C(T*`(!A=))=n%*-zp_ewRvYQoJBS7b~ zQlpFPqZXKCXUY3RT{%UFB`I-nJcW0M>1^*+v)AxD13~5#kfSkpWys^#*hu)tcd|VW zEbVTi`dbaM&U485c)8QG#2I#E#h)4Dz8zy8CLaq^W#kXdo0LH=ALhK{m_8N@Bj=Um zTmQOO*ID(;Xm}0kk`5nCInvbW9rs0pEw>zlO`ZzIGkB7e1Afs9<0Z(uS2g*BUMhp> z?XdMh^k}k<72>}p`Gxal3y7-QX<p@13u698;4&-$Gh6%89>&L{&Gf6-TKsE35Pv%1 z;bJcxPO+A9rPGsUs=rX(9^vydg2q`rU~otOJ37zb{Z{|)bAS!v3PQ5?l$+LkpGNJq zzXDLcS$vMy|9sIidXq$NE6A-^v@)Gs_x_3wYxF%y*_e{B6FvN-enGst&nq0z8Hl0< z*p6ZXC*su`M{y|Fv(Vih_F|83=)A6ay-v_&ph1Fqqcro{oeu99Y0*FVvRFmbFa@gs zJ*g%Gik{Sb+_zNNf?Qy7PTf@S*dTGt#O%a9WN1KVNj`q$1Qoiwd|y&_v?}bR#>fdP zSlMy2#KzRq4%?<w>yw<!vwB`j_GfU*P#`{ZOiMj$yAPzQbOiy8v-$r6T&v@)RC{jU z3@_$4)_)?$(*-E2*GggK$J1VYP*swb`b*3XE3<9Iw&HVSol)<*uu`#awX4C0JiSmt zNX%tJzg3C++PjaGZ4?y7gVNguen~^u1LImaPk`y1-)3<~@PZIhAAU3sA3)-0|BUVy ze%A!WTciTk+VL>Xh1w;U&=gKH%L~*m-l%D4Cl?*riF2~r*}ic9_{JYMAwcczTE`!Z z^KfriRf|_YcQ4b8NKi?9N7<js!ssfx{V_pWGQ_S_1MC{tQX+ys7B^C-S_M(uBlbvQ zFOYx><4;PvvQQ}*4YxemKK3U-7i}ap8{T7=7`e>PN7BG-<NL>Ej;Uti2$o=4T#VPb zm1kISgGzj*b?Q^MSiLxj26ypcLY#RmTPp+1>9zDth7O?w9)onA%xqpXoKA-`Jh8cZ zGE(7763S3qHTKNOtXAUA$H;uhGv75UuBkyyD;eZxzIn6;Ye7JpRQ{<N)f#Iw@?Nkz zb9k#~`ksQP@vbVm2SSUxmiV(%#^er(2}9@cF`P%>-6>)ioiXj4Mr<nXci`$jsf6#> zUzfB1KxvI{ZsNj&UA`+|)~n}96q%_xKV~rs?k=#*r*7%Xs^Hm*0~x>VhuOJh<2tcb zKbO9e-w3zbekha5!N@JhQm7;_X+J!|P?WhssrMv5fnQh$v*986uWGGtS}^szWaJ*W z6fLVt?OpPMD+-_(3x8Ra^sX~PT1t5S6bfk@Jb~f-V)jHRul#Hqu;0(+ER7Z(Z4MTR z+iG>bu+BW2SNh|RAGR2-mN5D1sTcb-rLTha*@1@>P~u;|#2N{^AC1hxMQ|(sp3gTa zDO-E8Yn@S7u=a?iZ!&&Qf2KKKk7IT`HjO`U*j1~Df9Uxz$~@otSCK;)lbLSmBuIj% zPl&YEoRwsk$<y#|3W5`|0PU^efrshpF;$3y<ro~)Gk;-fq5s+#AzI7MuBEGm-pQpQ zK1TU=!=D)8aiZ4Ozt(lYXsv&H*|Yv<mDvfhvRyway-n{-!aX=>8~Az>>djrdtp`PX z`Pu#IITS7lw07vx>YE<4pQ!&Z^7L?{Uox`CJnGjYLh1XN^tt#zY*0}tA*a=<B!77} z4${OBY||r34HjX4w}9B$lhrY@L<9{lVc&62*<Dm&C@+I<Dd`1BU5-{2(~Q6zmA3lc zar3$ln^p+p`shLvr-P>V)<y%ZC<nC|Xa2SG{uir?xgw>rf=&-kLgD|;t1D|ORVY}8 F{0H{b<4^zq diff --git a/website/static/img/logo.svg b/website/static/img/logo.svg deleted file mode 100644 index 9db6d0d..0000000 --- a/website/static/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ -<svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#FFF" d="M99 52h84v34H99z"/><path d="M23 163c-7.398 0-13.843-4.027-17.303-10A19.886 19.886 0 0 0 3 163c0 11.046 8.954 20 20 20h20v-20H23z" fill="#3ECC5F"/><path d="M112.98 57.376L183 53V43c0-11.046-8.954-20-20-20H73l-2.5-4.33c-1.112-1.925-3.889-1.925-5 0L63 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L53 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L43 23c-.022 0-.042.003-.065.003l-4.142-4.141c-1.57-1.571-4.252-.853-4.828 1.294l-1.369 5.104-5.192-1.392c-2.148-.575-4.111 1.389-3.535 3.536l1.39 5.193-5.102 1.367c-2.148.576-2.867 3.259-1.296 4.83l4.142 4.142c0 .021-.003.042-.003.064l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 53l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 63l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 73l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 83l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 93l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 103l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 113l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 123l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 133l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 143l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 153l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 163c0 11.046 8.954 20 20 20h120c11.046 0 20-8.954 20-20V83l-70.02-4.376A10.645 10.645 0 0 1 103 68c0-5.621 4.37-10.273 9.98-10.624" fill="#3ECC5F"/><path fill="#3ECC5F" d="M143 183h30v-40h-30z"/><path d="M193 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 190.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M153 123h30v-20h-30z"/><path d="M193 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 183 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M63 55.5a2.5 2.5 0 0 1-2.5-2.5c0-4.136-3.364-7.5-7.5-7.5s-7.5 3.364-7.5 7.5a2.5 2.5 0 1 1-5 0c0-6.893 5.607-12.5 12.5-12.5S65.5 46.107 65.5 53a2.5 2.5 0 0 1-2.5 2.5" fill="#000"/><path d="M103 183h60c11.046 0 20-8.954 20-20V93h-60c-11.046 0-20 8.954-20 20v70z" fill="#FFFF50"/><path d="M168.02 124h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0-49.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 19.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2M183 61.611c-.012 0-.022-.006-.034-.005-3.09.105-4.552 3.196-5.842 5.923-1.346 2.85-2.387 4.703-4.093 4.647-1.889-.068-2.969-2.202-4.113-4.46-1.314-2.594-2.814-5.536-5.963-5.426-3.046.104-4.513 2.794-5.807 5.167-1.377 2.528-2.314 4.065-4.121 3.994-1.927-.07-2.951-1.805-4.136-3.813-1.321-2.236-2.848-4.75-5.936-4.664-2.994.103-4.465 2.385-5.763 4.4-1.373 2.13-2.335 3.428-4.165 3.351-1.973-.07-2.992-1.51-4.171-3.177-1.324-1.873-2.816-3.993-5.895-3.89-2.928.1-4.399 1.97-5.696 3.618-1.232 1.564-2.194 2.802-4.229 2.724a1 1 0 0 0-.072 2c3.017.101 4.545-1.8 5.872-3.487 1.177-1.496 2.193-2.787 4.193-2.855 1.926-.082 2.829 1.115 4.195 3.045 1.297 1.834 2.769 3.914 5.731 4.021 3.103.104 4.596-2.215 5.918-4.267 1.182-1.834 2.202-3.417 4.15-3.484 1.793-.067 2.769 1.35 4.145 3.681 1.297 2.197 2.766 4.686 5.787 4.796 3.125.108 4.634-2.62 5.949-5.035 1.139-2.088 2.214-4.06 4.119-4.126 1.793-.042 2.728 1.595 4.111 4.33 1.292 2.553 2.757 5.445 5.825 5.556l.169.003c3.064 0 4.518-3.075 5.805-5.794 1.139-2.41 2.217-4.68 4.067-4.773v-2z" fill="#000"/><path fill="#3ECC5F" d="M83 183h40v-40H83z"/><path d="M143 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 140.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M83 123h40v-20H83z"/><path d="M133 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 123 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M143 41.75c-.16 0-.33-.02-.49-.05a2.52 2.52 0 0 1-.47-.14c-.15-.06-.29-.14-.431-.23-.13-.09-.259-.2-.38-.31-.109-.12-.219-.24-.309-.38s-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.16.02-.33.05-.49.03-.16.08-.31.139-.47.061-.15.141-.29.231-.43.09-.13.2-.26.309-.38.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.65-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.11.12.22.25.31.38.09.14.17.28.23.43.06.16.11.31.14.47.029.16.05.33.05.49 0 .66-.271 1.31-.73 1.77-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19m20-1.25c-.66 0-1.3-.27-1.771-.73a3.802 3.802 0 0 1-.309-.38c-.09-.14-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.66.27-1.3.729-1.77.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.66-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.459.47.73 1.11.73 1.77 0 .16-.021.33-.05.49-.03.16-.08.32-.14.47-.07.15-.14.29-.23.43-.09.13-.2.26-.31.38-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19" fill="#000"/></g></svg> \ No newline at end of file diff --git a/website/static/img/stackql-nvidia-provider-featured-image.png b/website/static/img/stackql-nvidia-provider-featured-image.png index 872999ade8cefbb87d897c0662d8a9b41c0eae5e..9474ad39e2665dc9e30f337476a03d3cd3c426ef 100644 GIT binary patch literal 34168 zcmeFZWmlBl`#-FrqM{-qBCR4h0@6|<Qqod0G$JV}T>=&&NJtFQoiogkLky)N-7!Oh zbPNpx5(EFubzKjB@8G^4d|8XN&Lx7JdmqO>KD7;gp{{uC3jLKcXU<$xdM>AR=FIt` zGiT1ZUb+bWge7cw{mhv_X(c%s9j}p<ao@Kz#N?CBJ<l#NrRVSDV%~|K)4M=(2?w=- zyh`UWxG>@fxt~|dX;3`9c06#qoaEq1TaI7l)w8ErDd+w&V#@c<q475NE8!uZ%Q6@E zp5FNO$&h!}g;#KLlEqd13?cAAw1vx-&#sK-y=XB(SM{!%?uG4rdOH*i_+7xq4Xx`z z|2~~DQ+RjbpT~DESbv=R=jmx4)yuR0Jl!3*1m5BF<A&{dy?>uB37>oT@6#vxv$y|! zdKPwu;@_wA|NXfCt=<0$<)0P!UswF^MET$G`R`%yzgh9W!TA62VB~4L_fIXlS>p}p z%x6ckjtTKo2+s;GxZ4AQ^BW&d^Dxx`ZoWR#$?D1kvZxDr|38F7x94vB^A1=+JCwx( zJ1M&6$Qk)tk*w<<ZAC)ik+a$L&=fd-6nyU8xqEW|0=q?ad-0bg{x)o_Es^{R3JRJW zuza293~%&oWr%nb|2l@|<fMROcxOF@aKhW&@;Kar#3$6$wk_Fu!~U#s@V~(BhPdJf zZjC4lRXKK&^vPtzK{XyBrkmR|dzOaw>UTm6Cx=0vo{%Z{*$Vv9i!KF5d~Aab&^8ey zmws-gVWC%vLT5Qt%_KRaic9_#nz5O(!U!gy)T*YWK&7P6q^I8<%{FjO{Mx^GGOeA7 zL61(1o%%M@YchLv+~Nz@?CU~x>7=ki!qXW;@t#WKAZlG(<u%wZhrXoZx#jQDS-O*> z7^OySqOCIXz?2-^HenL~Gsj_M@-KE*xCZ@kO+@&yZd<FTW#}w>w$8Jtg_f2`I7h!0 z)5SE_8~@fN_6r=&p<n-NdGQDLl!#5h40IJ8AX9B;+Ou}>-M#2_B7O8>Ouq^bjg|?P zq>(aPMa9MRsmeq-+<8J!M?j!tX_77TOE8x-USq%5U!4DhmD_u8G9q``Ezi4pml@qN zD%@?iH&y?-a4)3hd2&)7hbR}@OjNNZqV(PMXa8-L95lt<GSsxz;#Op6Oo{U<YBFn8 zSi`RQ=d}^zlMl-`t7H1xPq;<rDz^1Cl!X++<2Bj#$;L<s9xm;la{&>19y<XQB2qub znd6J$Q*mEhGW~>$Jo7K^^5PcX3$iH@gFVY~kL7FKH@ZhW7P(fHVj#Jm$|(@GM7A0E zzR{h$j&tXpz6+$(9lQhEFRvZZH_mKB&@1)zCqkrm2q9Otglt>RDD~x~lj-Vx%XMZ| zew_A{d{o~U*|tpYFj5D@1SRU8e$Vm<<xxV^^fUM^+WaEV6oqSac~R5%uW|FvzP$f} zW)yj3=Q=tubFA;8d9ZL%TJcO;b?MUGX39^DGm{~Bj$K5F$H(%u!;j@GJ_h77PF%U) zS+ugF{4I5licUNum~$Laz838w#!8k2CwvYsLtpQY*X&IY#<wdEW|IocI81WDC%e+f zV5PhhlM#~VkY#XpR#0F+XwF+JqqVT3q)A01n7k)vAs-XVc_+a0<L1sh)5r_We6>;V zPh;78R=?k(eLc|go?h7ET~iq2n3*Um_@#CFdpa(|pE);tzpOigbX$B%?ChS)Vzz9U zS9Zu7O3xKN>>eI@hd%uEK{AY9`~__o=TgstEljGSbjjO!hhV4op*b0c87cA(N<j~$ ztBoQJo+0mA_<uGMaw%#GyEDeqfbR&B9d_$F`=|CV92!5hur&DNuVbzAn=liUNj{S> zLre&B6u&=3O5(TB;DdX*R`EY(s*2Uf^}@rJQu)R*{P$%oQJx(~1%LFt@zEBB=c+;z z=97J9{!k<G4zkN}k|-OKXZe*e%6}p3A&3I?OA?{~_q?N7h&e;C#PG|~&J@2~f_hI5 zZFXlBb17nvV9NQba24O;hJ*SV3#`k4xBb})A1GS(HLjzSNsfr8R&k$9%9lD$dQ#_% zgnoDEJ^l6zP?nscyBg8W*ZXIS8{GHf%*KxmmX{ag8+W<Y5)PlHy*D4uV89A>41xN= zF;v(Lk8C|9LsCXxHn7&98+G`VbS)9$-a1A;Qk(4E-)y(Gvw4(8c0*w4wv4<1cVa?R z&`#4&VMLz4suQCgWNx6<pdQ!d<1g{jmpcZ_{=;W5vphw*Lu#BpzPQl&D>s6<KL?@c z_GmvLl(muJL1vzXv6ZE}-jK{YxP#5Tm8sZ5$l$atg9K4wMryJJwqjFtkB5u5ZzbPc z$h+gs6Wy+x@mJFCJ~T8$d-wCLMGiJ~EgOuNB2+0+JnLmW%Ql#6od)IQM(y}mBzS9> z#=}+Udzm;lIWLUWPmHk#@9EE%wQH|lk^KnD%(lP0)}Y2VQ{fs@USe)&Z|LQ0Bbzfl ztp&u<!_e@uOHll={G9K1yY0G3ZpVqp2W(nVH;>04-YEr26=WXUj0=l@5NsV$naBGL z!e%XdLUpsFV4vwp?t7$>z9ZkpEp7jAbMmCv=N}&aA)|Upe9=A#w>xeiRA-GWH|RhI z7k9Jm+z$JM6C^z<tu*KwI-(sNhey7XO`2#R9-nT=J|v~D1T&XDoICQ_ipK<_`4#3c z&=H(1C8A?b*kAdw!JW5^n*rwpcqvo76h!p%vUO{YgRijNl=67FTbN^tfP$z7lgcRn z8MjA#QW4yOPiy(TpC;~+q-%>7Xh(ESbM#VTo<GN{RZv+yg9On1_`xLgWxP&N{yYEi zl~2cQK{>MFt-gW!R2+&88VLnc9BNS9)D@|E>tGXg-tV*$SzehI#^CKf-grrT1iI60 zlw^lhvrC@5kCC5IxQ?$`nz>wpUF!7d`PmNk)%UmB>pLHjdr|pq31Y=Mp2h)}&3=;S z*@fDTd{87qr4d3lxI0)rSPX~=*&T-vPxoftSlFbLBVy`YN6DUGvfsGpLMoel?Y5VL zLeNG5r1>$=PhH&xh|g5=iSE7xC4_mHP)Hy5Xe%nx?NKzk%+}h<q9D@!h)Ch!!}hHC zj`vo@dXS=mK;+(}Li-6*yg7WIIv}+A^24#VPx}5v^R0I>&(<p1Zs|+o<=H$JoqS`L z_s3OkMXc!FXR_!uxO60Su7G(q1;^kHwr$*HQdDQ9hmA%;$Z_^1PrM*pIbzLi9K}ue z#?X(mG%Uf&+sGU=RhKjH$Q9W;RDqskd+5dD9_IW{=kbiHI3|zei*7QAz?OFp2i?3! zz3oi-98Iwbdj(^8hmOf@<oEQa!w(1ZO0ZDZTvNH~#UQ;pw9#I{NZ#-g-e5xZ-lgN0 zyR1KPy9vaR%0mvH?1PGsSvCU%s-VC^Qa^iy(SVLlKb{q*+7!*G(VGXSh9|jkWMGa% z0)yFGOHT*2vbUPD_vI=PF1uQ{q1(E@TXj2@vh^NF*WRD@B{#-nOG=Izc}9<)wwq2p zikc{&bkvXYO<=#iU)Pl4Q<^gAT9`75(F=a=j>SB>5BW}U{W<H8<$I!PrMJ-o%OyPH z$Hn&GPzLA98`rTgbZwA$o{tS^fYPm;>{q^UD;|Sk)VU9PS17>J;LNvkHiJ(zy92{7 z6^awYUVy4T3QFw*WmCN>mREr8Wpice>C|qrnb4(mb+CG$j1$H>_i~RrpF}4}S%#iA zkT>bw;QR#$-tK1zF@e8W$F-1A<6EGJx91y-<;jfC?rPu&v>F;27o)12Z?Q9Ei!6T> z9_rqQazkf`L3`sk=(ynDR7<`eG^y*>*Zc&4Mu+5cO*1t~8z;JFK@3SwGp*Ya#<5Ro zNixIQzP7_51aFr<UH#tY;TbvKedG_hr5EIgof7i$Rcy<XhYyK-cXFtGlk<Po^joOT zK3}tX(48|2v&x3lj7+t>@ecUoC!-$V=d<BSERHT5bgf>;yH>A7hT-$8Oa#=iAFeG< zT`H=4z3jmrLDv<$%Fb+X=n|xRLl+zzn_-64Zo)Nb?hD+lo}({{WgF^?^HfGgeSQ(% zSbv6%OX>JkG$KW8-G`x4;!gBDHv0FeyT(dwGkIAgLf_2GJ~TB%&)KyLJIV#mtFshR z<SYMn_VPsjK_2>NT6-Knuckkl4pMez6`g9ybHG8_nXc&DS-`b~nze<RqlsBM+TjNa z*ZW)j6bNN?Ed4(wGTmMsD-Lj2zidzY>xq0lk#Ci&9Nh62xl_QS5v8i7G+Gd|e9IH5 z^W95Um#bAsS^PoOWu^SL#C8@$|CR3kKN%WJJ9Vi&?<N+Qw@C#?`Vcy?)q)OzrPTu& zXzJMegR!0q2Scrcul?rEkx=^qG{IHMBJu`^@^>jAXTB!pI9hJ$LD^TJ?>pMUQFy%? zTXX1nJ<w<4<vYPW-B{apwYed&J$Kuon+mXw0HL12sV*Zkr+usoI3(37Y%Qgj;W%NV zME$(-^eVQbs<$hTI#VP+znLeqA2P~US&+(;X_PN}HSMP_y(Na2w#B5NYqYBqj_=!L zTST)q-)XIMuy<GK{w%=NxMd`!$u)78_%%5*U4BNWY%<r~U@`(}TA03G9T0zS6@P&8 zPtgi_T;&q2&?H`BBHq|$p_-Cv?R`uZ9W7L{+hSU@Ws#)7^xPim&}mhxwVihJngYo; z6%~>6Sf)W8tNM|GPe(ngLZAw6t-WM^%jg@faPWnn^Iwwq$*j|2#OR5<M6$bbBO4zL zQTACH`TZYluRt?)AU2evtTfWyi>kp1Qqw>#=>+-`jP`1xYNGwsgh>J>FDJc9vHW<V z$i_15t5rvm9zvopae(Wv?q#D-r)hDW;!)B{fq6*Rwil==lXBe|g&3Qr-&()oDZjmL zG%A{Y-I=7P3}Nr<YiR1<PM8p{R3|`aZJMVr{%>$euLHJcG39q#=;>xEemDAfhy0ez zPH=JaIo7+j9#Hk9Z@rX$$XBPm0~yPw(w!;p(Sq&o3t8w!2poq5;FX)&qDhA#Y_1&& zbG3s{unJt=En(K>$$jttA`wy>h?L1{y$fAS;?*aX^!k!&vLU>-`5jxMM;)50?;WPd z^+lxg{9jCQ?1c5&5r3ta+N|!bBZ>!kg$L>Om*ShVLzn~4Kvc#{eaxX9HR1+J&QuMa z)sbBZ@KXEL_VHcp;^isbrd5?e8*5#)h$~kd^~wZ#5ZM3V7MKAI#|FCnJ!7w%ZztQG zqEJvW7a%G4u_fBqTSHTy1lP^2-PKee^I&dcUvJ$(O!#uvCvb9Se%T$UFUa*c3Nn$} zfPkv$b$d{0D;3}v6O3(Z)!-U_kUU11p%?oD5kJi066XpSnp_RyS15@u;=bRn)cnJg z)LpKVMn?xAd14kk_h50<XX!`n0b#;d_->)jLb6Mk!fn(1x~kl)y>T^4dney-?hoR& zRhqh_=aBRseU=8*B;NzOBa>FWDrZD-Pw8XE5B6`#w2=Fh)|0vOrMX&uxMasW;*c19 z0H`F8cGctj%SuzYUYVa;?ozC`E{mT5u;uZTE_r?USdk4I--JGCqNPwkd;wccOpTBn z=Lv9hiv_S{9Gp5`wa1R*UVGe9rBzWM`((YA?oEXUBhcOv(E4K@(oP`%h`}Btds-ns z=gZL_1ZE1(YJNXt-luJKhFdzfzKgJ@Hoj48?cU#<I#?-Fk=+1+bm#Oryf0^y+eQ|s zerINYK!$hT@_D-$D{eMuW+#Lp655H)#wP{x42rfy22mu!tdx;DGLp3$%fl1yFxNfg zVljvCR1Z*N+ST@RA7H`N4_39UMn{D<I7s<iMejUxJ0uN@7Rp7TQywQokE)IJw?g0m zXcibUrKa35vFtFY)QWH#OTb0&FP^ahB*nnRZs8NmbF4n6IS@woNl!}F>W?pb(!G|0 zm+gbGgg$S|<?U_ef%TFjOtp3C(!EtGZ;@>4Nt3KbzPCDjjCutY_tWKMe>*kX5xKqm zi*B}W1CEJP@@Czs>c72==T8*29MTZVTjzMN4~P1<nD?dY4w6Gz{96PXmQh;Hikk;{ z2{*}!zm9#&yk@+8R^ag?+9y#g7TFCP^`zp}BM)^51je$oN9VU)6Ndeh6`&(DPgx@> z1WPCX!`&?aAc%)D;iZ`jV2MnBe;(f47^77_t_}iJDS4vqpl8ITvwC^j(KYP6)IhZa zov>RPFTL1fJC;c)r07Lv6O{fNhg_pk0B=1F2u^xD0H15hlJB;7J4jI>H!*9ZxzC;O zt8crX#e2v!%k9knlwN9en1s4-U0_RKBPdu7#7?dFpP}gltlLfbCkHXVe||A3x-Rbv zb#&H_2<dk9o}p3^1CxAxXSZ<3prQqQ0EubGEICEk?EHwQmtGuQHhokx=WIP6f(eV% zluL1kQ}gsJbRRkS&3;lcAmQzC3w7CEegmlujmm*7TIcoj_vR1hu2(N5Nm|97a!Z7_ zEEpGXr%|NZ=$@^td^RA5y*bN8@j9mN4BIeC+|p!edAdF&%CE|B%x%K?B;jepI9@V{ zf?`WY+~VC8immYdQa~mFJ1qdj!o!AWW&N4o*hR1gZB)T$+|LsM1B9#7pt7VL-TrlA zW}&TrsXV*OzizC~ElfG&YssrXZN}6N+qapYuMVhb^WII`KNAn_kXQ@QD$NZw`{OGb z``XS`RR_~qUFI>mw=-Rr+J1)%mvmXiK+Lf9prM^r41J$}X|_gVF+-+;kaTQnvk!^K z9gNUUf7*$ohj6j6X8tv+U$)&&C)d#=sf0;6ls8dgW%rAz*@k0js7KrQsr2>r3Cji1 z>`RG(-Goh1$6km>)y->B)=YF4Ygj3$URp+Co4o#@SpLKHqmmD*o&3>FVVu2{RBSv` z&%g^x)p`fTqIjgy+%e_Xo$3i#CB)K?#7(fK7hOulZ5N-C9;sY3929QCU<>RFuCD1< z@$a0)&oESY7zC;q$}arJ%mEs7aQ!oeGgF0uX(icnCJ&Igh^}NjS2Lu)kG`DXvZi@5 zHj>J)dP;QQJlOYV@lqW*tG@bS>yIrB_-PCD3hAg-g!kGuB~7uBsyO%qz{#{o&dv3l zQ#ue_lKwDnHeOvtG$bpiv|9Y03!0ZVKDX~|KO0j#OLjqC`N121WSS}Fwlrg;YGz7d zok}8tx%c<a6GTMvmOGt!xEQ5_nT16ti^zQQ!BU88?9%@D%+8_ci6;8B7J`f0?#@Q| z%CmQH`45hx2UEmo@dr2Vh*`W-xK5Wg9NlbV?T%X0*UbsS$JVchZPg%~D)tZE$OA8U z>z87ur{R{yA_1rptODq!pxx+gu;@Xs%3HT*mzIOG0noKibb4@+hSs*}d_b$W^tZ8$ zeab?ZrMp_<9#Rn2O}N5D^=~_lU+n_r){t5u$PsHhvGaBGC~kt}Y7Y1%#tYYUeRLh1 z&7B5iS{fbopG9e<Zh$`B5`Huu;=Mm)mLTPQ6&06$9V%J>x?4`y{Vxq^3Kh^7{+YvY z<N_%Ki7!tPi;8riFlrp57Cs(Ww^_+Ar3stOhJ2C~W4|9CURb$>Oz4Z~e=HEv#^1Gh zO;glgH>TiP8L6ucz8RW8U{#iz#Lr07rHA-MEcOZdXT7gg<o;s&(7dm-xFDB8y;df7 z=Qz$ELo{FtshzI4Rib>a<dW=I>GN-JzEje~g?sohgu;EnJ-W=gan-<upaV26(s<Yy z&^W}Z#^qp?0sfr78*(KC9&kQv=?5$nGiUAU2LArJ>fYtVR3sg>GI5zyQM0hU?e&r3 z7ZRV`E=+-5Ejx1zkhO%H)i@Z|KC8!KSf{RmALw?O#=wNcx`_ofmPxb2y7X5;Yx?7* z)*py&>n34^uY769=RTTfw3U}%eY?&D>GI%6Q3EQkMOpe*z1#X%^Rn7wrAA7{*=*Is zXV)|HGOAKuiKQqcZRmC$|5d@h>5)F1g1h&d={KK;L7~tT$wXWIsvhT~W?JE@klbbX zC`Y!Q|1)ntEij<89M@x9d~##7|D3owrs}k(&dpYb%=x%v;GF_>23SHIM*^zt!{EBg zj(wc|k26+@0Ry!G44Ju*0M1sY>K%JuS$5WF=3fB@Q~L?T-g+CoR7lKs{p=q4l=CfD zbU=%zjc^0eAV&qEC!os$DzHN5ttzub=oZP*jde1GJGrCN*Y{b<H5!RBGgr$+?h$bp z=RjvxayzAWQ$NV1q&Xs((EF6q?qd$$hM7%t?F;)H&UV!-uWTS#k>?bF%);iH<FRPI z1h$|Gs7dp`dlN7=mO&kD2`3vq#!}8g(m_9d>_Lw^MvJPnD4>$4VeO`(8yd6{K6u>3 z!4;|FriwC1oylh91BT6@{0i~W4J3NYCs*f|nBw=8P1a=hX|^Z<8T|*wG`IfDJcr#; z5-~QO3({4D@m85=h2@hF4il(|oy4@HBu3)0cEORJ^qj&W=lm>W`nQDz@FJ%38*J5? zw2Y6KaKAnC%k#B@YAWCzVp)17%6R4c%31cKH!bvh<5z|inoMOL4d01WjXthfxL)gQ z6PA;-PYnoPY>LEuOWvwkw0Xu>0n()SnHtMx9^Qc=Uz(#HBFa_8>ss7H0*7fZ=<Di+ zkD=Z$<FV|Bxy8G71K-{!jX7r2mL`L7QZ|dvPY^lj^>A27(PfaOeL3DEbMGf8WZ?=j z$cqWcqsncp61}L)Mi4ZHr^?+HO8E>uWRk7q%5td;v4$paxZ4t36){I$0LNFO>$CbD z^~h;xmxK2Q7lEK~{)ssnjI#<Jzx&9KdSy?Ns@x_%7BqP>dH`+-zHW2MpOcT@#6UZ` z+;>8=>sO4jq;<QZ?dW6dLzVGxVMk=e>syi3u9l2TGaRH$AP9)gDfs5X1}Qw6blJ-U z6ar{N8pnNBoyHKJ%k4yU<0{1UdW7tzGE?}v?)~Aksu@qD#zZUXIOSR^Nqp#Uj>lkq z9#fErO)e})yi~S#EJn+j3;vv36|X|+;M6`N-UqGhH_r7nWz1}U;!@Eiv7fM$>bvv~ z?U3ZAl5Q=fcISW(U;v}~i34G_%%Hg@RtG)Zo0llh6+F~renG^6b3t~Si_Ymv^&rE+ zF7(WVq-7{Ci=Zl7qx|X>a~KdyyOu|KYLu>L2&|5S<#!t-Mq^jRT!3C`Q2NIJoReEp z-4au}1ovJ3Q>A?$f+w#V4^K$;l3c5Ci~^wPj+gE*km^<wCIeTlS?h(Z|9!MkyS*>_ zTS|-_A*%*AAT_Ct;5U356X9sAZNoPYy9d;opqqUXe<rx#H6jpL7cvK$odO7JK)E)1 znTvyw@3INLJR!G?^v9>xwbCdk+V@s_w8evNcumZ#ek(se+t|f=Opi~qm}#4n=ff|_ zSs#8yyZKD%g-NZlv(>V%A`X!z(i^_DSSR@Pgu&V0S#lpO?5!|Ocyj%C8Vc$#Dz;<; z)R+g#1E`$eldGN=KQ|G-Vc*S9WQnlW2E3zvdC)EoYJW_QQ}p2M{qe@r&9vjkFMb90 z=${LhzWbib^NAC4c01VHo&4Qxx~XFm-gy-C@!Dkp2P<Qy8)1wBPwj3SAps2ZczvUP zxa3~Va^Avo>rVBfyMpX7wyh}b>c-7y5~dWs3xV88VhiE{>UgjR8%)R#H9afsTbMcV zy@P7vJ^;?~op7TTrn`c9<D404x)Dpcd?slX%K?R6emYyK3`nQGk0Xa!ZdQ|ggr@D( zL46LBs1zwnvMYu5?TnlpOh%v%9i%oY{c9~_j~9kr-NA`WT#%Z??|znEeB%;Plcjm| zMhD<$Ej23d{4cWytx5d;!b6)UA&eLnN1yUoWL&=r;FNt?g8pfSyqtp=*3^M2dBIy> z=O7gt%IX6L+a)89&D+}G3-oOCtlWkA8QFXhgYTO}EpJ_Z$qUWNew3|!n37BA_EjL; z;(g&b855cveqo&Y?Cp0R!}`XfYy0Xzo_E?8+MUlgAFb6uwwEK&{1Zf{0g1E&MCoY9 zljoC1W3e|*6>ZC}j(2Npvw;%tdBBgf3nj1n^9<Ih{+5r4>J>oU%xy0-I1D$FAv-N& zkZ1h@CZj!LH@n8X_7E=u1x3~Bo_6ylWz$hNY#$`OZj{_RU=iGqdKxdYs#KwbEbqdf z_?jnNZ$`pxz^OXYw`Fxp^T9k<l)2Dm%t>D;RlUx7((w`kX;VEftaKd8E3LB)Q!K;V zDt7i8R1p&oQcGMhN4VAzw>SCM*(RbA9|5Eew-0GiONgCXg!&Iz)RtEenMhxls9#^k ztZ2T6{tjMZB|Skxy7Y4lo9+AJq8(u}T}r1kjB#`~gv;C#g`6MB+ZB;2WaIPKDrE60 zVS8Ir?ibN2jYePDR>!$#4!*YeX)#BWb99gRR8;m|p!s>f(y$d;Im=(Yx-h?O*HPm@ z-O-+cMo2sMXy|+`_bb>ZCYBt4TA7n2P})Heo`Kk=N-Lf#9&D|E&r7&})>r814g>Ry z&_!SmTz=ab_k#Yp@Io(uYwVxeEzLhK?QIucHhx_C*1>xbI>P`!-CC_>h(}?iv1@L` zV46q)_b8PBDsI8##GJIisu48Zkh|7m8re-5Gm$@;b!bxaf{*DS*c2Wk<dEWRVXssC z7FO%3j)y5e$#-TudDxBBI-?82`y49=HUS<JM2!QQWi_#%_6hpXl)3Qx^)ckZ-%({D zu@IK<HZ`%OdyD>h*&gJ&&E8kTuap&Ze$q!D5XEJ`r+DYqxyw{N(R>@^VqOa$9aSqd z7%Dfkx6@J<QE+=)tU>8mr(;>|zZ_udy;R=gA$grT5}uo6^WG}_2-UTEs5?hw`~7V1 zbVUnzN84ncA|01UeLG`r(JpQAH%z#jOJm0mZ@UF55hh~>FJiezDkDEuKUjIp3{Y9= zlbQsfz4t$$KE%RJv|&1b%Yp*nmCT8vJTVKaXab+6(mT;5N>sM;gMwf5T|i+QzS;HA z6viC#=5%N3T<7F{ESD<W)|0r>^&eXQtDRH?>^`80KwXw90N$|Ha-dXwPt^A(*~{~^ zI3orJSdaNFUC>t-cd<`JQ}&XcxJ>`vdGYtlKsW+v{sBVW3z~7KTJ%`SQ(9U}V=W=m zliuV7_gck8ESj}-+uCCoZ7S6rry55Si2>+KYjR9mXepFsah}3tKnyf`JMmWM<_P0e z{VEsj@Ug6&-(872zY`~SBdRc3zOoO+j#VEinLb%q5U-y^wGjxE2Tpbr4|;|#6}<`V zcu4-o>wIy@@JfDww4n9amne@(FDP`-ZHZ%224?rrjHZk?(qT%saToCv;;@eO*Rmmp z?R9qJ{LYr&#ES^^FW+)8yKe1hRHnRO<ms7*2(?n>#F^eUDU|N0XBVQe2Zk5c8rSrq z{MF~kg=~vZ*6y4#TY^1m<XBjk<2q#c*6YD<j+uE|2RUw5seA-%Zvg&st#Y`2ZxN5Z z4;a;z2uClq`eB#awPS(}$^GPH@lB1v=E0Y!O;$M6>=J5X?@oM2$k*c;ajp|pW9Kdb zW52a^cdf!w_#np|%-q}I@@Gl?LGIogxF(Y4@=5K1@X4JKx0l0Rq*#7{f7-hbSo}&( z>N$bI-4uM|Rl4EbA8j{f{M#f08hs|RW-8BXwmK6JbqqVJ5hR?#SF$_2lTaC`U{_*S zh?;Ra>#x%RvJ8r5>DR(a`+Enwv6i3dsoo-va!P5aPa5QUy20Tz_%~JnuZX)JP|6B# zkbY6IVfSLWKn?LENcg?A`CP{`9<pB@=631G__vw1OH$r-5y!!9lY=r7@f~V#VwX7j z8eAk@$*g(8l?>bA>AbV4GAFlX*$<&F_cI-LgP7<9B|tD>QF;82CE+YJronQV(?m`0 z{0@KL@fB4IE6;tnrFF7bex3L6w)n|!!_$IkeLZ9UaE9Ex(_OPx>x6=*@Nbk6-#zoB z-5@;yo}UZW-G4p9AjfqsS1uLzNZkN%FwM!)n#U*~LMy3oS#;tg%<>Fbo3;8wzscpW zR`Z~WL$w{?>tWI<p45)(8#Cy^Rm@~e?tWbD_4$wQeTP20z*OKtzMW&r*ftZ?MK%A1 z-5$9K-2MSibj|a^iGZ(b$%1S;s5ls}SLplo*T;<P_4LbOq<{g?N%`Yy0h+ET>AdRB z()5DJ;Kv~}mDo2w>TS0+sx9Y~N(3D0EX$V6)~NvKAbB?jEH-yX;J=awWXK`(Hyfy0 z>FY-jJcr5G$3im%LUMxI6z3i<RcV%!N;AV@IVByXXqU`d_kI1ZZn$9xj>9wU)xKjQ zj8v-3rOD857zQE!$!Vw25I#@)DjO!A<kht2*848NDgXC!mh8o{%V(jt=|o-L{16p4 zblY|R>ei3}H@<o9?%0PsN33_-A-Nzp>4m*liaY`$e6eX)fC$U<-hr@8d1=4L`BbeX z{6gOShy#W6*@{>(Q^l1k>EU&E6yabqzhEXxGyi7(RGrhV;Jv2yxL;Hn2H?puJbSW_ zW!^Nio$RkZV~1VbWQg~Ot|xKm{kp%6*<4&+imz`mv)9~B9LMef9JXph7b6@Z$Jppo zb<mM7-S<2F1O_NzsynVcB&lOif<2=XSC7{?-sP7fb$Q}q@-%BEQmZWH%DG>*UDXi{ zQHF;6E&x#=7vJ2NQ?|FB<#L#1;gS%;u$1h$Eg?|YR_Yi;ZlDO|Rb5&+))pdUb}#LG za9*X4TjS1`GgfsHJyD{JG0pkJ@ZyVQ_$NK;uD`U#dPjwAtE;fxvu5%@iBOiX`LYG@ zDb`|*>{Oz4ZzkF46xW7)9B%-E_3&EaAy^;(#XswJxjBIRvb3Z8>+UG<)Y1V083&fY zpO0PD;x${T6+ex?i)zsIqq<&ybNIwy!@7b$J;X=qDlGpTYCxq~65h;%4m3E$AZ>ky zLguetb8-*;8VMQhEszZGj|_!6)au)L_^CLKwW*0aIMVHi+Rw@{%KKI&xE+ks!?rYd zXiRd{rgU?bxe*CD$v(4i2yuvTl15T9957;m8`V!EbY-H1fv}L^_7caz#=$+Oc+vLd z8iyP7C(VIPuNwBx?*P2w*Sc&f61ul*L}1m)r<QHSSyhP1pH82UgKQU9$T99K<pSPQ zLE(2a?n_4D;i1D3q7?4}*Qt4uBNa^a`7_t5j8%)`fB#u8Rcz+OwnNGD@4dT7>ib!h z0;Me-!I=_n^BR`!VYdrM@_@~T_%C504~X#Cm!BOAOJ-}AvksOUoZbP_Wed)%)jG4J z`ssXiri5Cqv~Qk3FqW(k*DwDJi#mtmq(Efkml{2>iUY)Bq;^s6Tes6E)}*R8a>0O( z+5TiD5WR-+PtlRPAQF%%v1Xci>Tu5g)*2V`R^{}+eigKMZH21lxV!VI@ahY780b1f z`^g3g3_i?ThbmzCsR9SRH*h>lpbR7MUdw#?8?!HwTUSIn-ODe>vS{_}=VFDXV9s2a za;n&Bz)q{oWE6po#`%@Qm_~&qypDEHGL55r68$M3ir~86ZJ?Bor*YE{fJRfh(h%T4 z@KXGEg?C^hnz#QOHE*BNegml6?TK|#iny-Y2=Ym9KQIU5>2-t@WHl=Fa*1@AH8!RJ z+xY0vk>30JKN)8#1Qe3;j;B^q^EXian4gDr0Et(j2bas0G?dtu%}4t8x_$DFR1TIE zVY#wu$lZdguR|jXSY8>s%u^1;6yVs$k#c^jXtk||bLpq5+o{e5s`;W%^p?LZLjuO$ z!Mi=oM9Dd_DePe{NKLu-e)-8_p#O2r4k&S;*kA9dkv1pJm`W9wji1GzHVNTCMVv?O z(z4iN?~X^jmFfeUQ@VO4l<j0!q1EPw1i&WGiPa}>3f}%C7?1nArjOASWRJC7gHP#o zWC9H1nDF-f>8F2%GZK7}|CR$L0vOygmWHQ>D=?}v+e;P~tl4YCd;Z48Ivr<R&*47W zXv-Rj*3Y7j{Q?9YA^#t5jrCmYBpQ&aEgmnBlYe7PP=0!?R;^ggfF@l#SsHnZS7;ZX zs^z(4^ftM_ZZ;WO>*UC@KA?=J6kUK3Xlg0tl24Ls^+Bku=zR3Bg}p_ItQe$CbiJmZ zI1xw|-9U=h_7u8Q;Nkp{*Tn+-A6xa)sGlH?hJt-Ewr+D#MJC#sf6=AwAN5P^VNJAN zMnpzrK{k>^pdHzJ{dbh8fK>c-;Ydd<@%rMmLlxmc`O(3YE9XOR|9aT3>%auu)YBLa zP`)#ZUDx`#`UCR7V9W7^I%Um0YVQDSvAUu+p-LSbwHHg;=7Hv!?DF<Q&BVtPyP&;_ zmyHJn*9$*fHNn~y`Di}v&TYG)lbmMW5D$y>SJ~@|znLKB1Wc767q9*QAbD>og>|4+ zcJryBX|Zdm=v<q{NR8`C2s7B~d%POKLSur7*3<zK+JRSnKwoZ9ms-#h6lLMjpB5*& zG3Q0P@x$pmwa~qyn?bBg@C%03h2f#Xz<feH+Pmd9Uv|>RLmNX7ls#4>Z3k6!l$Nwz zwGkCyk8-3^rF0RcqSFuPie=D6aAg2O+G?ff9&8MpI6v%OqsHRT5Uvs3y^7ckMD3~< zi(45JHJrdk1P#_VCmYKdHN$<=d1OpIF7NA7XOkkvww*^{=}$h%cL`Rb@0}p>D*j?q z)BeYC8mb$&foEaW^r`Q~*bab&cJ9Nm=I2lhw^0LI?sHNui&o_zL__WpJvmaPF4Iw{ zKc?hlV|UJ8n(lix>V{eATjQ$vLOqs6kyC`Z$gTO&Hf$OFb2;xG8QJJ<mX4j!J#8}z z>tD9B-_D+5r;*xekIv*LPlU*}N@acrzb4d4FVfOb<G#IBY|VN8XbMhjK$c!X4_G$% zgG9rK&U*{gLWH*{mDJwuD^kHxzxdEm&a}H`J$D`)C$FH{xFspZzhurakul8Tt3;b} z+`UXA@sko&FeuR7#;DjBNo>x~4XVg};0;W1;NMkU&a7C566$E5q)R&<(t4+i-kflo z-FK_a;(fg8W307hF28LY|9ljYW5h;N_;o2efyJ&N{6xKb%!O=7WrniF(?!U2piuYa zXHI-Oo5)j}H*8kv)#$`q36>cVb<U@id74jYg-zsZjA7;W3MPikFFIL$y^8=|kUgoR zES_4C+~t}_6UR_uIl1<n)~{<%bM@-F0*tTpMH%MWHhp?CzHyPR(rwUAu;poS&ew$p z>8^!|nGNwpwe?q`>-MV-y5O`JouUhL^m{r1<0L^IWE{e)M5a|vA_!CQo0_Weik3K+ zxPqzJ9&O2%!RN#Z1*^Q81@D7ZJ5k$Cv=bNn4P5y#igLK19{bWUH73M2tdGcIT-e@i zkTp@&xMT}SL>FB7gU9JfcL+d(KY!6uf_1MY7N*u8i7|!4+FLGjUh;8@zd?xp=!g$& zJc0ExwmOeMr)Ism*sd!QXS)LMv84KF^ZV~ts`-!kIa|b(OqqxhbBXUm<m?j>jqlQc zK)IBNsz#^YTJ{?&b0|CwC0UzRe0hXq0JYUHI_dDj+3c=t=7MxhT|<QC>eNd|d-7|X z(;o;g0UlM-veZ>uWVZYEUd7Wy?{3}(D)tPrx%HD^HFI6qoB78baW4?{4{J;U;sUPG z*sm6?q4rB6vubqY*uS;iRg7eWd2{1W^@f4gP*)q{M^pMRh46$ZVV{@%mfVH4d{R0l zTFAZrNarlQI%KcB=;G(?l>R@|O|7L|T+~MS<{zR}@7^g4TUwoW$DYi6)$KnjXQW>0 zQGVFGS#dHPafCcr2#un)GYpIthN2f*eZrykSY@?**(Gj)(KWvv>sLw_#2Q_aOav67 z00TxVzJoV9F~*LGV+>aay=Hhg1v5qCqZc)Mo<~Bfz|K^JZ9B=(zr}&Jfrz6;*X1 ze`D$!+~vI3l(u07gTURgn&T&|;W%V2G+cFAkh(q9v3WY&Pn81`eIE)MdxuAk8z_PB z50@WU9Hnta6&7AK&B-vyJ#1(<^p=RrA40qy$v!kaDC17VbDGfF<=fig$_p}|4`>VB z?zQ~*eUZX?5}EYe-$%G1FDsl<^@zP8D}j(H9^<1{{}^!-$!hh=@|X0W%F_45LR{T% ztL&TM15H0V^b~uIG|V;XHLD`)mdd+!nJPL&qD-RwH@Dbqi$>w9bge#;T)lIbib{^I zK|L=Q3xHAiPX>!^n>p(~#NtDqiEZ~oB*-71%TKxFgV$7~YgA4dA1Mfgl)9*cc(P9N z89K!vL119s19m2m28hWJzCPsMWQOm8s+l_8nOka~doD{oikfIKGF)dF%Hp>3H6>F} z<G>z!p~xL&=U+6n_@du~wBDYIKmOewGAKXCHGDwQlq)vUsC~t;I1;I`_(8i+8ev>S z@%eLN%ydvDVzb<4IESwd6TEYkhheB<17;hVhxRT6Z?&+qJVg$-bs1&6O1JOuJ$K<P z^i(KeoH^fP<vpt@ZR8)gTNR+4aWC)6(=-xz?J<xC^?CIZGrp#V`y9d~eu$Mf=u!Li z*}ejJA9o>6<C5<7)ph>61N`re3_oQqo~BQMox%1MdPeF;+VnHhABI%cB(dwK^u+vG zzKQ+;56SFU7z^S>*W1WBfnpm;R`|lPF3aPyIIyg31rW9qS<9aXkFI1w18+i`?l7tA z5bEmHUW6Uy+`Q&sOx3F?G^i`HW8qipmVByl#M01)VT;r{vtk}IYQy&m{I}cG{2^vf zw~LN8xDitBe0EFiw9BhGL|b%NTSECoi}3qZ=qoEPjm5U6c5J_u8#i|wB%=MlF2V}m z%1TT}K=fHCEOzN{+yWuTmt$XUI_wW8Iaaw09MKTmTWiRxE?@oWZBq!8GMuP%h4E;m z&-CKcUqc|II-Ql#;4o4S1BSu}va>rk)~{RZDeZnVew-l(sdEhkRsPjV^<nmhRlm2> zJ5Joav(Mjux<u9J!=|H2R8g|k{hGv5dPiPWb<@HRyNbGYXu&A|DrJk6gTRnExExcL zIX4`0U;W{&=22~}PK>4l`Xt_Dh?K@i?Ew2?X=(Ti2}8n`kJV<}Igg<dzohqN*E6*S zW(kPMdMFSSc_2dNLGVfJ{^6igKZGa^%Xq?GaSiAGRPp|gWf><#N?btLX?KsJ?qYzo z$KL7p&a%C_1tg0>#JYEF^?Y&E%gG}nwd;TSM=b5y^M5_d)dM30jEy+qh@h#tAOCbS zbG)b;&;S=+zWoB+!qX`Vyu(}13OqLpkRVcO^L)LVJNHLho}aEB-b-0Tg>OxtcaYr> z_sqt^0tI{`YPYp_`E9F~hQ>5jM<`BP7k6TdF87+Bhe{<iJ07bnBIa|1a>~!C(h^Wl z{ERguDB)S;PE_Yk7N-X5(&oLAqdLQ-1q-f)3cK8=k~dGObHkH~W7ZW74X8&wQTq#K ztK|WMrj$qD69^eDJX18kg3cg=;`!5cfHI&`K~W;&FskweC;uT2%FV@lWhHtM1fs85 zNVMbY7?)>`g}%~RgpGbjw<a`l-7&fTwh}n?2fN)V17d^Yot&R2H9=StAQ2$hvk=-Y zL{LT5tK`tF^jnYdc3*oLS51sjevGInB%sLb*pMQaAo%qpc2P@1re(bohBi!oEc|cQ z4Ya*=K}}2~ZGL~DNcYz0mOUZ7)_UAcKBgCe5+!K(9xFNaMSd3&$XVUaV&p)KO>n6_ zCX&+&Z?wNZ|1N&FGuQLzIm52M1^^JPeIj4pfXz)8kb#19yPK;houmQKfnRU4WG5Fz zPwMd+8cwXOc2sj$YNRP%r@PT|cL~rq7oPNf)x;A{-GF;Hbj}Pi8E*A%rVJb9FP-ei z{gYrSwPiKyAb%`ATMcrjt5;ukS&0a+-?x*xCN<Sh|4k5DRXZa6XRHMbCTq`Qxu!Vi zyg+zC!RMq$CKo*NGQ?5_mdi0;Uey}a79GCdx$;FMrg@@GH{%|nB3fhFsXAaS_3O;l zLjfAiuvXdAS?9CVBLy^cwn1g}Q5GjT{<$4BMA^C;)@zaJeISgABd1>HSkKP$goTYh zvm|9SeAwt|GkEK%Q~m?8ds$Kt$3bceG!A5DKVb!sAW{Irk1^DPO1BFi+U<z|wkhPj zvhj3}FweEhG7r3h0uWk0CvC+>_QCu3#Zr_pAWy;$GJ_X3vd^NKhms*?mv8k@okr+$ z9gPvEvB>83a+jx1eh7jq0yE>tOZx_mEGftF5gpO0hl9U?y3_k|2ii$JGFXJsZ5Si{ zXxANR#qH;sp!Cod_5?=`)MkuLln9KZtW?;V%1?v8(GEI8!e<&a>h@TZO@BMxwLu`g zukJI--~hmQo4+5W3ykx31D}Z?lIoO_Blp<+rjmSTTOEkpQR|pOupkQ_$2uByeqT?m z99~f4;66OhX+R};Pz^)^Poo&m_PMsfS*|av&E9dl(DuYRMbbmBI;f(4H1zV%tG>x6 zZ#Ga&GN>oOHc)L;k6mg@Uz2%4F6ywJGG+VCA&IR(U~mQ}+;p07L-nJvDx$mwIEPf) z<hjLfPTptW<5EgFSL}v@QwM{)_JJ|KivAUKKV(OFnGgQeGE~zJk*0dEyJ?>5ua@5= zNjFpOI4419RZ$pV9M9%CWZpZ`)*HnYaPYm331RA4FCUw)IA5nxIaBy&AqeKg_%}MX z#w~qUv>p%*iO-k{dr8EpW_h!A$ke&V$7Qz6uJLC_U2H8$TdH`QJ$o9E=)JlK%1adI z9@gYW%3ieDo#pp=bu4VFN0gE(2CilzfcWq6M?r)A$GFQ*A|L-+xPhREgvALuMQ>!y z;q->WX4p@E1LoPV)z6(0l{ZQ|06R9QL)$q{C|uA9B)ZA()$od*ubc$Ky(-Q(FJx60 zySb)&D#c<zY?S-UlQZ{BzZHZ!?^Fq%=(?QCgO#8`o^=jKxeu3j3HOzMX3pr1*VQx$ z?pivLpSz`(4{w-L^T`@0l~~_Ak@{Vc1;&|NBBfN8LlC~5^Zxq!Ine;-IP(l2|2-|K zvi+OF?7I*g<7-bZ%L3_bM8MA5&W9vahWb2N{%#O}#6|^^u$%_uttlET`MHOT-vL$; z@;vz4bKU@qY9G#7*~;qbyNKw2Zx{KLlF`pI%fa;($A>%y)6THi<A1@8`##g^RASRJ ze6MFw+M0dRJX>y_ad?`-PfguRd*V&F310I2J=2Y&eU+5Yd-X<S=BY0pc00gmVuhjj zug|M6K8_0-eRgE!{zZS~Kb|P%S4KL_y>RKq0vE^UaHHR+de>WNUg}x;#)c$>?lm#i za8_UXTifq1@iIH%!HbkmW9gHtaoHAQ(TOf2LU&K%wjDD=XtH!}NhuD-9-Gv@3M|>` zYnU2+GZBHfIr?Is73F<s=#qH3u%}i|?7WTkBmRuvlo$a~p+v~(bW2e`nV<s^t-+O6 z^T%{dFF{~c_u``$?$)|tyzzT4gI2A9u3SBN=QJJ+c9UMr;^~|2h{%s*-ps%WLLAP& zk@Cm}cdOu6Ij_8BAI_?xv}y02KR;n|C<E@7-DnxBXj@MBkt)c9Lh~~Zb?0b~FFI$E z20Kqx6>FTr=TMfQIYJwdrM&S4SbA|hr6zl_m}&ix<h^&DRmwti@YRE0UdFdbANjAd z6*v98EF+??52&vm@?Tp!6ssMtQ3(G09C?nxoJrnA>tMT_WicV*7>oIO<Sw9*Kc8po zBC<4`{MFs86;<Lw(tdScIg5U$9afJJWjINV3iEHz9VzZh3wWCmGMDT2Z0Dh0?T!+$ zizn84l-bBYztzj-7H-7h1bxl7KG#B9j@jYkqSd9M8y(jUfm>;8ZUmg!#ibA?1LJZ` z!xQgOz>9!D*Vop2cAmU!#S?)4yE1x;hBXM)z0P?0p<U&mtCwc2szA^JL`4zp%~xkK zR?dN#*J+{vtY6=d;Tpw`0ouU^50-JUDzH?1-Q8#QC0E+QZV86()Pi(RbfvRs<fYLY zb^=n>ZOIao2+u#harQDTgWjQ=hJ#&;d#|r?RqDVarOU*H#63PjO}M!WyZxmMtMsV5 z|2iU}m{NS(oh3o*x3InXnkJT`@esz}+}U24nW$FyX+l(eO$uv#RxPL$eKRZ^zxo#z zM(-7PFnjeIKNXWLVt}>qt-Nk){lPXm##Y1A^kCpG92VFsNW}F?BOa{}c!1<>Ya3^V zbd7Vh$XdNh@aH_qZnm0d6|xlf&JF&jrPqmRpQf))6D>?48?kgUOxsO<vXpklhUMjw zJ@1!f%JCP+r@zcZUoJeIT!23NxJ{Hjy?y=h2(Ua(g=+Ct{xAm3n?vQy28I);`5P0Z z0+kEB@~juP&$nuI+oJ~-z$|httT#MWh3?nT>lkGLhS3Xr4^Fpr8pj%6cvsb$Be*D% z@Zu8;Yyj|uY5-p2K^AJ;p?H~g$*O|$W`{hkZIw4^XY?)(SI{Ev6;Boxh<EAhsf)j0 zFxuft?p@e!>)f+2kf3O%2k;7CbIiA7wsr5xT2q?}op-ST>6kbQ?&ZRT1A6;_GwGRd zg77jHud(GY&urs*p3f<uIte5ujve}ex;6-*;xWD00nx5>=jeU)EonyhwZ}CA>^CPi zsPqHRP%v>*Th;oU@Fa-(z5O#viA9n39nokITblj45hZ^d-;iA`646;nW6Go$b0=k) z8_b?ATQ!=pZrWxO5tb}IAeHw91FG&TEY|(2Yt>t0@0U1NkaQVGxZh+!qxsRG1Krn% z()jFc=Bu5ARS@4iXgIP1dcD(YATjkY7Cs7kdukY+da=nP3FAwmj_mha`&(-jmyV_h zF@}HgF=PV~YNC?fj&dezGE%iO^$+5qf%Hvx^zGbRi!N+MQHfDuxL=gI!0khA3>(&o z^Y5iGpI(_+&T&t?+}WB?+^Oa{QIz&|j#`ecCY8%jzwp9wWJkLwEMX(i+L{wft5*so z32k>2l`8bxxsPRNFe*4BS~!NQ{uOWB$NR0C>UGHHXh`OlP~mgpEAHQ9-*pLi9(aKy z=)E59&s)5AJ|(R>&3-5LOqIz%V|IX_3M5;y(TX$!ap$)H>l3A%?pUjGu710FT%K(w z?vQslTl^D~$!mfsHq<e@P<&Tjkx|+W^?yJvih&k&MeT4j6yyRurXG^~0grq11JSx$ zCwj@Q#S@s-JoijR$YJXtViu^}?v#B$`J1HK-;()K@87%AIJuQ=CO0Bpqhlgn$H>M7 z1NLSovbk4JbQ`zEp_3*)OH(jp#ZjgaUwoI`uTi`e3SN-AKza0BsZgfX>o5qTvV^;M znB(Ts#j!)|wZn<7$9Q~(afz{KG;I1EOn!foD@u7{(24n}6U?;FuE0LcSy+)9v73lW zuazz|kw@PuMxmR?!fDUm7RR;RBP#=UA>UU_-%VrabJWu8rTSnpEYQL*4nlo9f16N7 zX~};`zmTCIpGQuwZiTJ|sChN!k<C`z)cdtPa3kvqao?!um0wzEyOla)XLMGgua#@| zKTUR;@-MYD=j8q(fO0B)SS!CbA;2c2>u+{_|M<}f{pq5mBh(2Gn;u6MFDGjk1k2VH zCYhwD`obQ#g~jxz2|K-oMQPfxBNE-xM3y>Ez6H~^1`k6o+NNlAQsLx9>}2Nxa!2os z_oN2NnajC^Jt!O>4T+1}x}r^=<e6Xh<RF5(MU3km;J$uA70bupdHYiSUaW8IJx^<* zFXr+J-0%WBvnze@YxpY>v+bX&L0O|x`^qmy``cx~V1^qH(VT8rfRh&IxeA!?h`5Js zGD|ygwTOv<cn+mdUNYv5WkrJ60F$4dm;25nh0ix|<cFc-PHcjtn*ir~fAI~to_W>b ztKF%akEDIgvNG|1!SdX_d?99VG@V|n={vX`EC2cz{Z?n3-pI|Zz-)0;yPjf-yYTJ~ z15RUsE8)BC;L$w@3}|~IEP6S~7)u_qnTR0%@CV2zVr0ZB!TAcF7o{mtVN_C>?Lz>t z<->!SJ!$m5C!Zsf*I(<V2epy(L@9Z64~ezfv7M8nu$aS0)c6p7q+)jFoW;KlWyr}E zO~L<>QmTq45=4#$4+hc<`*E(&nTsTr@ttB?p_&ay$eee`T()&)FZ9d18!yvU&J(#j zG#ErCB2PWSO(YMvi*{ZlqQ!~zD*6f%T%OWC7hXPb=kyLy#gn~e1{2G!)lAoqEXyD> ztC)M$Jync<C?v28!E6_H8oasiR;??gjht^>4Gh<l{g!_5RYbMhOor}AnG~a|pyD;U zp}qr;{#lA={Rg+3zVT@%?=F-4-!y{o{F!@F8)N*MYIJpaTdLKtx>BeB6%toC&W*ta z@-gKldt@FYYH;EqIK*uMyMnQpSur)Af@x&QmIaD-8T#w4V?&rZ4PkCMnpBVEOWk%A zYXaF1)kMc$2l2ll|Kv+P(nJq@8_U&keb7@b6VOtF%t*R-ps=J(&;RG^mc23+2YV~< zSdw+#<m5znslrkZeUr5|oac5uXj+Q}LIhYS&Puwz<GnG!a3fZbQvI9jD{N`dxwrlP z+cCxO$r;TkLQZP~Xk{3C6w533X6|DACzxXWXQ`315MyxFx42<co{vTFVGrEQ4$!dI zYh>x-dqB3n>J}LR@RzaL;mZom;#y_ViCX1c^^^451$rzAl-8$aACOhUj!QNUddlho zg=gEZT1^r+9Q38*YCA=pm!Q>A85)a6(}^*oqwwNh5vOhgSZmIg-Qh6qQSa1xKPD%d zSfvw}ojIz#cCV@sIUJ(sSDS7L7lJgBCtTQl8f&f5fu=}+9J5%8i>s?JF_e5~Snya4 z{Fe#vd>cEadV?<0*Kax#CwmbNrrHAWQHfWrp1=;yw{jwCe#NL0gw;!*9E7SvB<r)M z2`%n)YC#bxUE-Ts;~TvTZo_{Lbz)!{fY!{Lr;`f(82?{;=lRvt7PWhO2UJ7_DM~LQ zM|uZEx^$AzL8%f0N|lxzL_v`bq4!Q`(jih*loF682|{QJ2qg60dDr%wJKlfbjyvv$ z;~0K%2<Xb*Ypwar=lRW-bCnf%cv`KydLGTG1^&*yb1gtnJtfVPD|6n3*aY6z6V((` z6>i>h0T01j+4x$pZR;=Kc(2}8aRCa}{`=!_?qu-d1~qwff8hV|Xf3IFp5|L!)1zLE z;ydKaGvdyv!htttoUA|?&<{Nturpb#dEek3XF<+7>Z@nT87-=*ky7LPlE&*pH@|Et z^$W3Vq!BbP=yT?+EA@xB^A_dVRAebE#OLjNv1s2}Ee=CkPPUmKzMh<(5#c(&=f6<= zGyoLB7Hq@{m_pBQ+!*h#FO!3F=gLAt`D;8il<NZ4t0JjxqwNEg7tAD3yjdN-D1&m9 z4uQt}@_hx}a?o#$zG8SI*PgRg&tfbF@@DxJuj#1LB!o9kyFclJd4<vUw(2D0Bq?k} z$xDq}#>9O`)HRH(i77?ACUJZu=mP}@iljKsCGS>(&RWli?m|(?6z6L-oix97i|(|K zFJICcRo%Hj)IJX{QsAyXXC1Np$WHq<(a$xv8hHbBj?dO}m4fR;h4j{57cj&*Fu<>O z`GGeU7)fp~VGThB#%;B~?7k#a7e^Djsl!xE5p-OBdszLDN?u^73Bs)lcHXl50k@pv ze*UJYiV(Wid#$Sxq1{ioJ73!%0=MXE3uW!63^<|AwuS9>Xgx^PdNMqY=_@D$cEFS< zJu2?AY&SN^ZLLsnU?ycp3(W<GzcLE5VFunm(d_ZdBhN-%`K5kFV-TO*>WiLs3@nuR zsB2p6#Ej-276ZWxtsGl+)cnyUsk?<nC3(xo4-Fu{R<Pt<<K3UGcwvmw6b><W!p~!- ziE7G*QRmq8Q;LjlPWP-_Pk8mzSH#op=3U@d3T>Eb{AjoPiti?`ZMxG3;BJ2$`(w;J zZOZ?35lBOxV0~t@@w{*Nv~&YOnEtYF&$GFQ5tla7@eLp~M?Q-O{DkU;MaGM#_-6Qv zI?;58Et%SMm-wp@Pr%n4E3J>pZ#-8Bt{i_V=zlF5_bcvO<gN>f#LHb6(2iGX1a|mW zPU~NtJVoMYLj%{F40CwQrh`=GpK!$#zECnWrBlFtgEeW_ykf!JNK|NQcN}_S$=fPp z3_ec0Y1f);Q8q2o_^S<3e9>`T{*_j)?O%x#vj$(szE|a7bV1N|(e%^W&*?VJwB39Q z@9A43hbxlv&S=<jbMMD#bLCaDb%J0&wi%NJtUqK0x?K0-FqO#IkHsL~x)bzslbSRg zH_PF72ca!=sv!$o>IGikRg30YfkLDx2<oJ`j*OVI+RPV~&=ma&Vl<ksc>!ZQ{ZkI= z2S2;_2`CTQBVzPd1dV#7Ry$b7YGEMMJX3rB<-?N>)irnRi$KV1eEJ1webUO+K%L{! zU;Nt)HgTPPics#(09OX~z*5j}KJWG$rUKgizdaNgxP}&6lm(!AGv8#4HNi(&lWH1& zzZ;k&E||B)8T&1t9@}CL7!0V*5V>URh2NVygg43<Mh?RRRTeKr)T*lr)Qn~aev#kC zTC@&oH~_W604x)JC7D4uEKBW6rEv1nWD5t*)05)AqUkPaAsC&yO&oEmVgcrE(71C6 znn`p`>#+|+kELC*C0F;Q+ZzbGOybpx(fe2TH;R${$qu@igJ;F-^$qL%3@B+5`U7$D zS+4Jz#xaZH)zVA}9IItTh2MA3W{7Z;;=(SAoaoi=&C?C7eF3A&5wGdI;kS03>J_Z6 zZ}#3Jy=0)uG~CYwH~c5(S!w2IrfV++Nd26DUx622@<@7GhJT8*l7O@tnd~7h`m3EF z)vMGz`v>q*e_9NMrlx*K_&F+f>kEj;kZ;{00o`B5Eq^!aZ(PqPgl`bryYa3PloLTG zj6pPnnoM0d_~`g?1HVWrI40i)uEu}Lh+U8|D8Jh*d6VsCQK67s5J&MVOZm-fXrpmS z6forTNIZ%OfzJ+<j`o0q_#x~^4|>9VFyd?Q)Cb|>)SxLkEC@9fSw7uKrX-F%d7?MR zYR`#N>olm0E4-vUKuMZbD6P;=jG^^U7QcY3DW4541}&4ywVY+|<?(RHZ;V&r&i6tj zz*`&nQU<3x65U5dn10wlNHS$PT&TU?O2;up=go%hvl)3|ksxomVgLgB=5>Dh<&S%0 zMlEBMBFw?TtWff37?>Cmn;tiS#(61l;2~E)ED9LMf*KQkfNYAyZ8OFn@0WnhWTn7d z<|L7@-Av_qvN5@I`!1%--Lqy_x)9X$z}Vmqv+PWjRRPig&>8KxlT$&^1tg_$pvPQ8 z-G+2?z)1k03+oU3roy*KS*y8E%woI67$IvhXx5JxW5A(r2vlt8$#o~)=Naf1`<x?< zZdyUi(SHJ5wfe75BHi3~@K1G;BG~XvMW96?<NNb1knh`fkXKO#01?yy=r6+pt*i2r zk|8(rGQrJWgp3QYy`Oc9C*-?wo*z)k4kg3}RJguZe{3bdfF0gBVJ!dYbOV#jObh(= z^@KrK+VwRpmZ!d&LXryl_2S%!cKEzf=3Sg4mTE6#S;WWz$JK5=0~wo3JXZ;;<24<1 z1ZuRtf8b1%$U@(nUzmvO>Y58C3P(h_Gn?kOE%y(KF@_rMz>I9GrE!npHly<71M`G8 z!1Z_7lNZ#996)21HeJG=lHXEZ8aVgA`Bmz$AI3H_xHaOEc@|hU(NmU+tMw5qph?%M zgv!q~Hm~Lyxm>9aMH4}#=LQTu{@>VN_)fsVP3rE_jm@xlf&S=vAGnFnXj>4<Ya8^i zju#L>8%MThBLifTpwm&ha%yVk89uvKZ9*k>CNnZXEWdW<xO0mqd;su>RBrHl%*=kn z`pa922-<=WTH<=42JnaDz}b2V|JQw#Qbn%d3qz23Am3sWc5|yu^tu4iTEJ@q(>Kco zPf(7+tF3Wr`C}jA-2q$G%Cn7e;OU`2D$hG)2>>36iiC#24I|>*MM6Qo?+Gw?eY3kW zwA{d|eVc2NI=95h^4M>K;}AC=L_&Hlu4{;H`D>UOQTd5idfBQEvoy4~vb7gP_*v|j zE!{&Rn-t<`4uy!$C4E#AQs6~_92@Hgr&lco_Ju67OOqSS>{GV}V}t*qPYh(oD7c(6 z0}_b5N8h&{w{}l#+IJzp&Sde*3ns>1!v7SR`$;tv>`)N)jphnF`UOLO)gM`dZ{P}5 z(|*4c2%kkPyCcC_v7^=Y288gGe9i89&79-*GvVaMEY$C_0BuFB-e*$Txb>01e&bl} z?67XxL_8|whLll`(kT${EVYGe%=Y*%Znps8uw(`01Nru$Ys+_#Dm5?5QgR|SUr%(C zSQHZ|76dG$t9XeO5uPww&W|`i1_7-n|JQfG##Z%jY)bn>S+SYvYAPx-0bbLU%obhn zkg#zPlGF-h$G=_z&8|Xnto)@P<J+D-Pe(<elbyEIkzf|Lcx?$p3Ec_uzCXI-RHwD6 z;sa!$U1mHz$tL0Q9<&Oz;IetZ)c0gz?Opjnl|cS<_Z*+~nQi==G2xjujYM&mgsTdN zdUd_WHFB5>1O@F{__5`}y>`VvWVIwPd!@n3t6at`I)mYNRrEnlS!{mzbY)S!1$n2$ zFtcPGYgF+24O8asn&MZkow@OCCWS4s;3rknY2lL$A77Am0@^~|RMNVUpT`%e0KB2O zm`2V$lAlA-xYSVXjD<IOy<<Y<Tn-X}sUJNlO;T&&Ed|*V*A}W~Go}P^sg5BTWe+B< zW3_73Q~T^IO9b}=EM81sGpU%T{R$f?xp{REkPzOTAkunN0(X%%(-l8iBL>{QyaU{X z+NHb|8^>m7mJhu;bp@ti$4ZwFj0<PX<*L!1Ut;(z{}4eVzd>$aar27p4)y}8`iFAE zpaft{NMLwm=_?@vMKC;fvrZuBF(S~aZ7uQSfd1WM>XnUE3)3ZREADHO=X@otnT@GH zTNL%%P7bP^BWg~)xMbW-zzG%`0Tn=x__cZ_uGH6DM1u_ptNnReQ>Ep)xfmtRyY^Sd zkR6<_H_+q0#8g`wrF+p=mF!5GU1c-QKibf}yxF%CK$YQW69&r?S#=O1z&KlJk=Cco zHAVu?Md!h>&WoF*_oQen)|%Z>jkzareymp${PY}7p#%%tzdpv^18&DqW4}G%F6FWx z=4)LJ$n3gM8rBF06fmMY9N;%fDIu9}P1akUqFmvH+wVDy!+E^uS}$(i?u`z7ehmb8 zLB2<7c76$nEdIm1VK<~CD+Sp_j^lcOlI%P_F9q&28$Yi8fOdsUTBGedPj`M#JGLhm z_|v&J`OPNMBCkP#6VmP4YSkw3J0SE&s%prfDea}#T%Y@FytBWDJX0z^=lAhVRP3j@ zN2Y#dJROynX=P?F`|b1}>VmA94SDpG9ag_y9w(86E~s+e4`PP=Xr^TfVMSHJl6vN1 zD+ng|Us`pq)iGb|;3e7)whX1=4!b`UD5KYedhje`2vD1Zy(QcY10hx7$L$F;0FtRA z9`HQ|855Z304}>b&wc9sm;-6M+hI#RF7G&RH(iiPq^L2{^i)0YK?mb3DS4RPcySgp z96+Z?Fb?wvv@kI$V-3b}o)%>#*Ea<G4muB`Cblxn5Olf{E`5c@xrY5zH**n3tUPSb z{Hsd?Ez17ErsCgNuHU6EaH=C#OQ#C_UM6<Cy1!A12Mr!WeX}cV)eC2zrRueS5@w_J zPjE`}_geDwA|!rgABUGEfn+7E>AmW#jk*tePcxK@rujikczAYV9e9@A76lE?2rGP< zvJR>$YHVBO&X(|+y+xt#iq8{SE!DMnq|s8Hhid_%2D;l5cF<)VELjFGJ`->3F7)ex z+teFXLz5TLAaG&B@||L;FMw!od6PIn<GquDA^vJY8+I?4<O5(MNCoD%Yn{HOr+j6Z zJZaKSM`Bh0JqMS6eBd7_3<CXcJ{P)=%&hOU%(zSE9bVge0wb*>29Z+}%S~NvclB5t zd<_J|G0IK86X#fh7j^69`J47d+F+-0>KplJ?raq`Zuf>V>FseTY*jcmQ{J$Y0^kOY zsl(QsL+66q;;h51&SM9Tk4$~OSf@ypiBe6&rA?F-E4)Bo`2Jz8J7jAqDyhaleFvHx zr$*s13HJT;I37^#LHeQGLhcfX0*N~BY$@86+u8);6>6TrgXUI&X9m*WA<?kU<8#-8 z7erT(LFfaUq^K)9QK@xRx{LB|<efEp`N|sB6;tAKxD&X+P@ipMO}0A=5Cj7-{@Iy< zQp>{3`tLB8&pakl0`0sa@xGKLAH&M52N;dvTM}G@hSZG?C`$foJuIq>#d~EQ({CVy z&hI^*hqO6-Qci+_%lGBbsHmtU4Yu%!GZjV4oB&;9#}K;xDe_wP!1!odkJNrsw(E`# z45WQbH@;M$Z6lu8x<}ZXGj3zeK^_j{<&!~L-1Dz@NYU4dbTgu#OW$xvwG8#_{kTZ| z9w1V9As3%*yW|(%w9YvZ^qx#BpJRz?fYS^W7!Iq^3ciwK0kH+6`tl;xVVe*DB7|6H zJoOC&9k_DEYFBrOd{(^oFNbfK7k)Rp!-0i{5^;10w2g3(artuPYZ$0sSW_g5Tj8Re zDe@NJF6w^@3$zO&%{#cq58X}hphF*nxjcQLh*MkKur!uV#T&SuPf>FDu3a=^onC$Q zX>J6|cKs{+cB1jljgj5YMqW}r*oTtBC}zq+PKbW4aff9Bj;iXcdpO!`aw?2%Q{GtN zZ*byxFkDM6wghyf%XPb0NoMRMA#tLxeEBd{;YLTHgoesk?-=b~jrh|Krj~Nf*bT8p zoCMvz`eHvyKcz;sOctT-Er9}TwLw9Sc9V834VP8-#|yeC7BBn*Q=gRuUNO(ktmhE? zn!4UB-ul2qVOk@#s7lasQ)9h!Esy085j2drqNC<W>ut3ii7TW}j)c;&Vzn~{XkE_N z{Poh(4^5jUv;oS&Og(k@!2_4;zi5vY6}^Ar1KVioWtM*592>Ey{xTUW?xV3a9Rc8w zko14ds}o$nL5^sG#f7E|T*pB-BoU}Wq}L~9J^jE(^Hv;Hdd@e07dZGmf6#0}`vhoN z9b;2ryDBGVG+*$qhyGDD@wwId*Ey@nwu%z%8CWJG2f8rLd8e}8!OX%G!5zaR#HeRr zlZMuNUSQ|9_JrYg3JFKt2rJT#?;G6bp(dTYv7S^s@B}g0?TA|qdRN2$u?$@tMU{3e zah+_NiIL9|o6FX8|Cx?~f0io(h(h=DSuGaFp$z<QIY(_0?}B(6A=>&e;oX{ETK!Q< zl24*GK|yJMrCayW!fY!#Y0bB=`W3vd>=X8`zU?=W9oMNQr0IV2idlQ8Di@WIIR28! zIxBcG*Cxab-DJ8}mvKIZUhs@95vu^s1SKt*%AL?bD5P9>mP0`G@yYwyzz6CN&UfNo z(D~y@$S*X{HqJTb5Wr>DGik#gatML@*FSX*l(lLdHVkFVEmxLs064!2?%VNFWtGkR zukcBKdU^|@p((DG>9?kU=qcvd_L27dBXGb`K;IM6r4-3GKMaA7Dk1Mjb7#Df29^Ar zNh0$BFc0?H8gkpw@W}Q1>Godt^ZL>3ZPRhh_UQvBf?Dpn$m=4roJ3H7S5q+^JhS*- zYCn&sV&VPUn5N8f7ord*zfs=1n1ndUJ77MP7*rc}b{DON6?QQqLFLiXuE$QiDb(uR z)bVzW^l_9!?EPk&xEvgb>acqLJ@8Ur0wdx;JbT1l$f236V5q!q9Sl;`)^<ssivQx3 zimD<|lk_d8Z<`-PesKT&Hrix^Cj^F2={xU(&fpovYn`=kx=e#k=TRcx467@Tq>)hZ zw2)BOxm^p-3Z(7CwTinw=KBd#q%ckRzfK-`vIRYMqIc3^i_+4Zpiz)NeYLBvp7vb3 zG{}0Tg3Tawi6YnKtXi}p0n}g|GQ@MHu^a3S;2Vm+e|-tRGvsTtz_4dFdsH}J&=W*b zLHFhL5=Du*VTb)E?CR)RP7pp#X8e4jtlL`<HcD2@#ugr7eKf^Cc#)VfS-7LTJ#9E< zhE2Uo#A`5Sy=huWiM+!qi;zf0<bFCyzYjZjoEnm;k39X(N4z1?(oiK#p-D5f$jnQe zxYA*QAhGU_?OB#sUa~0;VL$MAh&=txRAEma|4SpxW8hFLyg^z?!S7LsMWNS2r_a2D zSM(y3hC~D|w5-S~yB2pTESut&>!+br3>!@QOR_JJkqE%SCKk(Ff1-?>8v?x-BVm+U zvU+cTMTg{xL2IDy%GErJ1>HO`0Vm-<WwAt%PFp}Z{;B3oEF0ACbh3D;yNZV*Ain0U zbY^Lw?Q8J?qiyxc)E>f5nxe&n67DZ%alp5sVx0l%bEVyd8lS(l*h+!OUZVAil>Uo- zM8-bYqT%qW-!$Rf3%2E3i!~5ykn&D$s-^qEl()M1vz_(CXB0ZDK}6K^p-YbwVxnmD z=5?O-b$2La4gDSwo^>oGEj8Z)*-ST$wBDT^)x&H)CDxv^UiSPTK^~buU3%h2izy<@ zZQVdRgs>+(`-!T0C~=7RQd%ustZ)ZHf@om6--LvWN>{?^V7__^UI)hj8}2>ueS;2> z&C|l;O?2qw1IM>O$6$(=FtHRe&+F*Mn*w*ptpD=CftwhzA=Xi@8^6;*K3}y}I!#^2 zkMV*PjT1iFeMCt-<Mm(Xp;{JTQNU8wfi^p9Td-@2U-Vt)ov*(7Oz#0>hHh@pt#$ef zN^{_ZNay~~^%P+`8=yx(?n!abf(KfW(xEIXD3YMXd)|qaDxod|vxGmb`xxL80)-BG z`U{#jF#sW(DD}J&y1kherMGv-qy~^`NP8iCeE_<0!EVu?UHc)>fA_}8F>W{3uC4ls z0S{a$Y92|-j&TTa#2nb|&*i*xU(X*az<e@BC6-OrT=5nbmR_7hie_%HtqsU&t__nt zsm~T@>(u!eJ@+oQcxM!JE!&%V2{Kr=NIC+PHP)}G*V1#WbcCjx@K&Qlz$=I&YIr=T zQj@^<Y^wGoerD1cIXqj#$JD;wTq)i)ckV!P+uuCbe5p8qy4H$vt&*tgWwTh!u}@=6 z&3l0X;S6-NDDe0~YVI;l7_=6cC`WsTk9a1xN;ttFX9yYZMfu_6bpcqbnAFZ&fzBaV zwYf^F8^{Ffo;H?sCjSOTiR0i_`GTkd$i?r!A0zGlen_mJy+%!i*?K#G#5ub0qS<=- zrVKzEx!&gs7z{sND0F{Cz+E<}&%SF5QD<@AcBk9z%~UlXAm;E5UhmDQmsqceYenwV zHNn+;d4{e$wzYd`Oy%d%PuEE~2#1h?`Sp$osbdX>#NW2cnfjUPQPd#e;uI{=0)25p zeKunvp+_UigD6+Jf(xpuqaYmJJlZwY+wGzcR{stVKmx}@<ZukLs&wJvwY9;F^M+>6 zs<W3m@zUJ2!hbHPn36q-2D9~u5RRP0eQ|w8T*(rET6+HtwOPUc*L{pxq0Pv=TKNV) z|MBypLs|bM=_a_d0!~Wp;y$4DWqb%fK87`e$7}t|9#Y!<P~;x``mtH41twQ!2#$v- zFETAenkcIozBYqg2G6J4jP9oA4X}YiCP=_nfozSHfO&Ms{FN0bM4?w7p~K8FgCqiv zZ^?QD-&{(o)du|FLV}E+>@7CV9K_K|^c%6+&XZ9ggi6I_kJm=CpBBm*cD%mYujPnf zO7xDGss-_)-&s*N?)F{womAd+>@1L&eQDs-f8%soe+R5%&6{$TYn4_lO8<Gg7Lyc! zd3HRvLH$KEhQrIn>6<GrxJanNL}6lv4jl)rRdqW904y#swH6h1wq0{O{9em>(OOWb za<kKG@$o3+pu5ia+09^Pk`E5v9BX=AMlCEUT4(#9_n_qgG2%z5y{BNmtMizk5WE!J zJzLZa%`+Il8pi|25i;QrY7*)=k7m#?V7>963p;WF;%X1KUDjfiNjBz80TwXAN1O-f z<&U7kn}KZ|{5j-wsyvK`&&`zI7%DlJtr`3dSVjK|y&)ApjZ%b8?Ow0%qTm$rZ#aPB zNJD$7Fpo`|6ee+yT}Kt{fQa%Rn6&#KNxS%ZGQb-{()&2M;h(k}4zQMN<#pc_ZFMm) zznWNsVgbOc^X9m}wNixj{i5w)6&H{LYyxa`8}rg{h4grJ)l_o6Wuv^-=|qcxyr4Zz zX~XBHEcw?N8R_M6Urra%3-to-M`oZ+)u`l_Dr)4gwwldXB`C!__%}C~02h-v<3zT- zV9scjOS;s`RyeImALg-b_)gL+0k<~x%~!d?v`}tci1O_?rk{E`wI877W8xP1urc-7 zS9Fy32jNE%SGHFRL5c=DAd_R}nckA(@u4NzJ33Rlq)4_M*HKuqXFZdn)cEGIQ@{b< z{;hcZK8IM+NH7oASB}{UKzpfN@v;gC&g-3rm`H$B1~Z0b<w+oLpl3dkmJP%Kh;+`+ zBCH6m26O#{zr)}F{tgVKr<6~6v3Ng(O0cU=Zkys|H^Y_HpX=qzuaAK>rb+U208J%+ zotoS#u`BJe&O%IjeJk}e->r)Q3@Gu)v9$MQ-S^~D-&>?5T=WA{8tB)%IlP86QlOMs zT|I=*%fRI*nBfV&Y5FHCT?M7jxGYTd(KEbH-yb-7g}rrb4r7}Q|8Ni<^<4Gf>9TnB zlre{tN`tqLbj7B^%=zY6UWGhMO<P^lz$~^w1STzvw)yhHBM4X{gG@89op;5R_-P?9 zYZ4U8o&&mJ*(5`hZyfH11u)Mx6|D5QLMF6CSdK&3UY*&uC_T{z=T9}lb}t2xW>XAm z8f&C@p#Q!OI575eIi0)teSRmnFzcm?x`x*`@8y)!l|Sd%3Pu|<Y@#P~GNasOQ0Rm* z6>dlDwb{}|bF**s^5-vF{j7CX3>)SJ5M|1u(%+!GsxEr?^#<Z5a~Q3vIBKkLsJZnN z7uWG%QQihezHU>uSm2HVSUCdi;0DNwuFniVnLoD#op3bg5eMeua)4q7?j2WoE-I4R zI}3Nn3u)9EXA2&osdjv%M^z)xGRQJH@?8l#zuxCCd4JxDy@=a?^iGRTXJ8B^FeQd; zALHgtr0+djCSn*Pq2}kRqj#^!sNu0P;q4myOM9gC-k@fQ7XOr30iSVJ%Oo1K>PQ*6 zEYdyo=2f9GhH*axqv;V}7T>RtkDIHuNY7@hZp0Ic$DR83;r9|^T+VX}rRJ?_*Qrcs zH)-+w#$->`SMglA5GZFi3jd7i@9<&ktN3uWpv6zC;MF9zuxp95gf~Dk$U|er(!aag zyn#jvcp*X|f2hg2JK%mQxVe7?njgfLPgXo)%tQYeyk4i}@KYLGBhop)^Z;fWT~UzF zF2$!Fc87IMDDkh!4=xWYZQW(*KQ3i;>bfK4n%s5a3chyvQ6RUer5-jRfioVUOPB3F zv`2C=wo69Qs~>83UNFfybRv|Nmy3(+5(ul(l5g&!CAnMaN}krosn8{7KnE889Z8=3 z_z^dx&A>?n`fCC<lI^BA7jn&osKgIA)K#NY)t80ZtmT-ee~9wX)HKDonYN3XE93(^ z9hR(i>%b;w<$tW4dkN;PG8~IR13HfGlBbT0+~fW-WWE{2>a{L_a~;$F^~{izJyZr$ zRe^i?745X%>9J+oX2V|bTZv!1b^=)(au;y3_ctr1XWoBMDzJG#T5YDcE|N`RC7=zD z*aGHwNK@Q~+D)4fERVp%p!O55Re{f(Jiqy4d8FR5r+BUqnS6$xro<@R-oI|Ho@+~N z?uso)7ip>Nyju8fk#v4>uM|3!wYta$y8Cx%OTy%9P8b1s7R+~ZO9-Pa69&06Q3u7| zyN4)%rA?at1t4HJzy_H*ajZ=`LAL;kJk{9-dWe-8)XVoR5IBHeqd|W~KTO_hNDyCZ zlX}iYJ8JT@NNx)1b;6O3D)s#Vk!IMUlL7y%o7bC_Pco=IhHEGdscrO0BmYy>J%dKv zs?Gr(V0U!V=q2R(M`v*?a=BW%QKM3O<p+450>WlVM3O77+yp=KCs>CV2+g_wv;5wm z3j={Kzr&kp?mxQ6DnNg%%_JdXJk@<2AX)S<<V|a?L{6{yq<36WQL<C(k=}#f*JnSi zx*dEh1z0vtz6MmDR`Kf*u8+c`Ep;p>&o6$GriQpW03r8n=lN<)ZycTm5I1Hi)@tfY z0R>3|&02@z!T~zjj8LD2@6=sPse=&W?WuO}1nf1`OqkeFxW_GMq>On9AdrKwPdfRv z5vT-s-eb=mz4>r2L0=`R_ni-G4@JT`76}L{KSpEkH!*d*%?0!=?T|3iR+KZ+W*K4f zk_jVO_Z>IR-G4MzOgQ0@Sy*AR#Q~-ZfQjB5wd@CzKHR;>IErV{3}z3^?@ka*gyb9! z)v93TzTx69h0M57FU8$oNj4!@oY%Uo?MwK7P^ckC1gOv$l)rWJ!S)R#G?c5UCE_}u ztpd?E_TqU(_=-L2cCqzhzjL3nWs^3sy$M$!&(f05@>3UI&YMUjyjA-uH4Vi+dqK~P z_xILWo!nz;zncroKVPu|DEMvH%pzH-OFCt;7{z+^E0hp4y`l7yM#`Xb)JkRoW2m^? z^^vnSwSI-#ulK4I3ONd;O^{Vt9t{>ltLYYlo2GSAK`|O?1+^2WlStGE;<W%88PJ0J zGcV>0<mdv+sR%@>`K!C8U>gBKK>cFGiz98P66%cjBud0UFKBvWFWiPpqPG!t&JTU_ z^0((x4{{p262MIq36mb@Pw7Fn>Ftgat~WSqnj=mbwJ;6Fe)^4`x%Lg4DRtl&D7B!@ z)aRTG(gG(_o`1IQm)MNq*ezbO@^E)b8jtj!b2L`hjiMEs?-AI=6vu7e85j+`#_%oj za_Fr1JugRu!{F?r(?{Xee;$Ageb9VGX{Pl+{hhG^9&m>Qs+#1JBju^sfy?FfXsb|G z%!Dbf#yP*BYb!^2o>qL1kfj#JcED?qUZGw8Am?~#A0y90U5m<@9}Vhs;)o6*ckRDz z_gj;suA<LO@<nkd@9S9vOGq>6KC2GgxKS#ivzM%KP9bOShq_>rgO;sv`iE2t|K1^M z(-RX;4WqJK*@Qw?63I`8Fv${|6cP1p_I;0c28w=f{C&U?0rEeO2Ht*M1!@30Y=&dc z99<J7nHW<E&ohBMMA0EP<xP8x3G%S#Bpzp)L@_f`)wBs|47NFDKIQU#&MyPg-0HwT zfLJa))+<ZZD0e~WAFj^v5_78CwE&Eq`*z=Mbv@%D-M)hR9>yaivP$(cmvx`OvU0YX zq08d~OLv2)YuyHiqxKXC`#w&8r+?P36<0g{ltr$YzXFpYN2cuG7Z~7%8Lx)$<1hsS z8ww@dyVW)^tfaAhT=A&P95`#lp|j>@B~&VrGO-zse7Ax24*K4DUMJIA2}Sz6>SWsD z0ea_=63XPNhN!wY19r07M_%8qN}fag5<<!=sw(PNgS*C9FO%=*JU8z#9S6n5OVYPW zC*z;}9!q256)M$OR^gKyRZsX};cCc>E#TMa#%+>knK6-y^y)%a;}59Nu$>%>UV2!J zCtjQXdal843}sS23ug8#EO<p@bV4%6CgzFP+?O5=wAIvUJJqmvRjD3Cg;K=kKD>0^ zG-rQ#05G8t_bQz@<w!+7aMOk{u?K%+&Hrq9GlE8C79je&xUvtuyRn@KI8g39(?7E2 zfL5Gp=VkB4^ON1fQ%m-A#8fx<(MD0BYUdn!Jna^+kv3*uUATBCK^ji7s{7v9e9MCb z{w}s$bc1~6d{8P}YekDFv4C*Rgg-CUOVz48q2IFQAFCB)3R3pTW&rpw_0?NIq7MPm zu{h@iMTQM&EoH9&xBC`vwP(bPUVG&gAS%apnZXYJu0wsXVs=<0$|+9tciTe%)UNz+ z;OvbWb8M)_RN-z2fb9-27#RTQfE`)?tcY~|1$3tRLE~w_8Fc*LVIP&i*cs=02!M3Z zXqe<PM<fZoM5FcPhM}bmx~k`!e!^ucVr*R(&d@o1m9`EInP@ZNu-@~Zjf@{7U3;rh z@XC!GFGq>?Dc84%zU-6*u8v$IfL>_lWuYMqR|yMw%lp{nin|NLyET1nPD{PKxXi8~ zkX|dcwDnkHF6p{Z6y`)D+9G9l#<vgEUxJ@rA37io;SbLO>I<yQ;-E}j%-+*s-E-jF zQFv^M0W>nTClrGE1AwEaNrc$Hb33r7j*cI<f%C^?`_Y&}mr6>GT*sAmP5#lF?WaUJ zs3Q`U(&fj}Bd^@OJF@dui-LHj^5Imry~&dBrzAbQ7rT)e%PHSXgjh^i$V|NIU@8`_ z$WO&|V_(~uWv7CoFLULa7a|9CwX@2RSOpgG^}ma#1QxOK1uOxWX<;ZO*Ku+hC`|!f zNAttYBg_&>7R5cKZ9_gUqEknzbf*?&*`o)tA7t5#gfU)RIQ<a*zw?H^6CY{gP52su z#6>m<%nfA0LnjgPxsK&ZG?;=BX}tmDIT%gS`tMIw-V-0Ahm0%qEQ(ZGBBMZUx|Xa_ zxY@uBcJZa;%h1u|v;YXWf09C@W`n=|7ooU>tVcY+eH#HAGy()+X>T8?yvOa<UU_u^ zIgFe394iFc0QQYxhn8A<?n8m}Yicl(&q<?%4g7-JurSPWvC8BTY7aGE<frY-ycf++ zCzk~rJ0L~SeN6K!m)9j@q_>-cd#Bj{E{shA@FZ1L;8n0Nv8ZeatL<uth3f%0d5%CK z2x}FAF;*rgj^4CNP~;Xd+<TU3G6kcf<}}dZaLZiEk5>?P*4Pgm{pZhA;7$LYs^PY? zGfIfXRb{bg&k+}Pu2s(Wc*97tS)LRLbtxKQZn<v$pLFRGEd;w>ivK;}P-t=0_;(W6 z%>*lonws@GDZ|~{Yq5FAW!zIEo?l(R+!$5De$MmnDFm#l=rZrL+-9M8qrnHNg`w>? zOGD$`<k5oCh)`1dTL9vvE3)CZ41>3NY5~qy3hzG?e|z-8UWtjz#qr}r0R98|4SIqN zUQ6NLwqvF1DlRF*!^efY${19lY(jagQC5YF9w(@AkyVBWb;l<sMTJ{m!JpS?@7}N+ zSioOf_dq3h5F68vhdQg(X}PdR#YO3tOmd~TjoWf{M~gZAPC6<_`|nUU`s-5M{78}J zQE&>qWfB|L2xWSf!xXh!nPnFMaG|GB3bprk4NM^|vnncSsW5_ho53V%@6i&8;P$I? zee+xar$WATx&F_xM1v~nAC+3LAPJ<-z9tYbGI7+J{N6%+?bJih;p~_d&hL{7jSo%J zLwE#qNNIQI)*SvBUi`PV>s%)f`Et*dFFVxX1Ixa;{U*+CZWwVXm>-!2o64}S{IH<R z@(>jr9cReN?v-kpGYJrnzY{cgTHg{XN@SCws^DRInq4-dJhP4oIO{!(c;6Vzn=!iN zm3LZ%MpTqj7Uh?Z+k3AhP-wznBLX-lU)b)AF+*#dNts2|-P!#O&Lq*`JoeeFaYVe= z>^XsB0^^I9z~c{o;oq>?Z4c^uYsW+~(?gjT>f~sa*hYU6h-n9WBg00Pf=3I421c8c zs+xYf6JLDjpJX-U9Ds>(*A>Kge+{0DpNTv&qx3R8E1<Yjp>ZruG>_6BKU})AB?Fer zJSef6s`%Y>XlyN)R%}k!uU@0KK8F47;bKkYF+8X`@F_h;UKVy%emGll?8kFk<J0^~ z!+-u^j~*9eAKER|sUwW`8*=+^0hBH=BR2)7Ij4_Wb(&HRHvB;aLuyj<>m4EiZjHfx z1#FzQ4>`@%xtjDfOU#5aVg`y{k@FwmEVSC0#ByjU&mN~ST_)l}o3aAGSP;23aJL$D zwB7~?OQ|cnaJFs{^;45dPHC!>c8DfXqYUs2k-J~yc6I-~iE(8Nz^8+UD5_<T53 zv$>rCFP%9{VUWAGf4<9UdkEu$Gs?9}`$dC(Kj{^g$<3V=&(6)>`nIhCUJm5!sJs|` zap0kte89=WFBQf)fp~0;LF0>(oXka|w4`0=59D`tkyGsiBZ2lbQ?A}~XHNW|5r~cn zikjY@tdplrQm5Omw^yl8slGELztDB++bW1&p5(uiRcod``;>2=sA}{14$l*lQ(xJ( z55!r#Z3A0;T76NurEjGL(kGzH6!dBHad3bME{xVTwo{;qfiHLAG-gC{>MWW_{Iv?G z|5|ph?=8;w7Akj)vnZ*ZbYp;y5KvW;%F7qYEvnZ~y0QH~nBo1-<qY&wj|_gkE?~`R zU2G%CDmS1vaJ2l`KX3I-A14>BROTuE%WvDfSx;vNxiE9I^E0(iSlOJl7JSb6=ZlYg ze#iLV@bG_@;=h^D|ILK{Zzl9V@529wGokkmJ?8#wRaOyA>!Kc4R6ZvDnF4I3^=H?9 z&;94KGot_VcZ$yb*^)^ou0sDG<S|g59Qj-9&nflam;JXS|2-w(8Th~Y;+*W0ysC}3 SH?9OdT<Xf&4@&M^z5E{qy9+x2 literal 29955 zcmeFZcQ~7G_&%(=)q!eC&7!3>OYPZVv{kD_Y(*7STf_=&joR9(y{VNT_Kc{JXeo-u z9wjAaBKAu1K0e>yd%VZ{|NGZ_eE)FpM0oD|ey;nv&g(qSJCXXjT9+9)7#SECE<b&u z{(^zwbOi&$Nw4!~fme8Am&w4l6J9U09x;^naV-HCryU;ZJY-;~jK6qfa|XD+;Qqwa zi-F-v+ws?lhR@Dx3=G~WPt_k9`C6?}FJ@TU!zE~H#YN-BXIwxP&pu#I3qO6ZCVAn} zBLneAC-IDYlSjNyKO`c}G{o!7bgsF*dzZ+(%JTKr%ZXDL>T^IRzl3_BKb<~7)xKKc z=_I1=f~;G1gO9AfXO=pYsvgdAAp5miqkgPPrj7-aIh3_z_0v>mYNy;TUI50%AhlhJ z3qAq-a8vuF=<y3xg5OUbUpoKq<^Qh6{|3YV?uGwN1^=4~|3A)zbwKrrMV-i6*x61W z42f6yEUR*$Zq__Iu+`a0=XVjOmBRmi#?3goPHMxRG_N*1-ru%rCZ*KTsl)=RU>xrr zO}k#Am1!&K9PdPiEQlC3G2$ZHe-6e*3}=p?U?INyoAIE07-Xl2^F@zfgXKVWn5kV1 z`%r>aqv8H`5G$^LJIh*m8d|gwFhQU8>LH(E=n(jR@|hYn-nuXmds<pBS7gNPjnX%c z$dm@$Em@jU+1_S5hXhF=#u@fOB?*g(cnZ<Am1=yu4Ug3lNG3S{GJQ)=Tp>(WlqhR; zs$;H5QsOti2eEb)II-f2BC(Bpa^P&OIQY=Clf~<{DPl6}soqiP0bJRxo5$%z_@VUV zz$l6`%|<U<X_x;n4v+Tg|1KZ@w@&TR1QJsz>k{~ng3JGW_;+Avu)1!doN}Hai~suv zNs<WN8)jB_KznxT!)%mZaS@1Zw+ocegb+eqygrk(z!vOC$`~6O8pCF1aJBqhe%9si zoS$s!Z6>9{VHRp^O*??~cs(}Ci3uOoyI-_w)wBPyK^61ruks6g;!y0S-kpvZ3-pTD zNaA73vPg#=)2N80|G}(NbIha26*7nKOtd7evw!7+y?Lq$n#c|N{!Q9zgSW^-X~#7M zI{LBvd41WG{#e7<Q9QAbsBE6h%8>Q+-5EQ5(GyMon(#~As2NLh8SE3ViXZ4@tx!FK z2yU6Tzp;W+ta!0sJ}<*)^J{TCdShiqC)uL;^`A$`T=fR{#%#jStl>^^?ThNfpeq&2 zjHtYgH$P3aUb9$X_y2A741XmA)&Or^Rk8_Gr0FDdZ@$odXsvYGguy!+c8>k=+#L1W zMU>d7_t7Zx1Q%bB?Md!_kM5=9!V(8jQ4uVAz=8y(mIAKjN83NhVB`NgMd-XZbWXfk zp?O`n^UFelctc%a9Lr4?TD-L^jTf=r)&u!-)k<SM<?%dNlqG{oaUOJDuu2hc@`3uy zf*b6pxH;;6Qw?!4I%*e#H*Hlr_1%%>Wg9yS>!0%>n8^^<-4t}6h#(4;x~cGRnEfi~ zVI{ig$^cRD;6|){C7gg}e(!UGar=9yLYCcr#u?MZ#$`@eGVk?2ELIv}V^><~XdJ9b z;sdfiBfwtq->O8xit&{BzH{m0(?1-<%?!AbvqeHgFW!#ulEGK1<knxP$m!RRNIxIs zZ~tNZxy9(kDqLJNs;r)oPgoa+&`v7zt4b?jyL{HvP_MbB?vs~j#QK}*Gb3Q0FEKv8 zAl5%7SN(n{SU(f7b229!w%o$`o;Ef33^kWdO16tN4Q@UvuOSCqFA!<nncCt!Wz*@S zLc2d-`!8IJ2WIh*>FUdeywOkJ7+KCY+;Y5iHl)<#%2PU`+3a3W&?HZ=Xyk){?EBY~ zw9f>n{J!ELF7MwqST#Uj2;MF67XqI1oa>k9e#JL`+L8Ti3Djb%sGmV<&vor$c>Vi8 z^X$QSOmU{+4pTU-!Db1wB*9<J@|J;X9CkLL*Msd`(!2+;ON;RmI`w6-?@Yd&X?gVS z3|zQ9Gv(V(wd0m<a1>*+>uFSWt1Fa%q_Mr<`7<P;15;anLQtX#kObMZ`5@(-6FrY6 zzz)8kL<j-4N^4X=lwVQV?cRDHCRZR7M9YpP@5IkLlSGj5C=py!<Id=|J_X}D%m(>( z!As&9uZg$U_}&jz6;qp(XwKn4wcfqoiA!Qc3rYRi9ZqvrPoeK0RIkl~C3c#YjV5zH z(XOfZHRYmN9kO>jA|l}y8Cp40{mBak20KY!80p{rB@~scyZ){C8&+%E-I*LSOIeFh z(5$YX5E{38U=TwYyI8L4Al~%zMU|vDu6;(lSwu&9DQ_c<OyX7LALV-QHof^b0p!Z2 z5oR7P=g)BVJP;Q#iR*6`zN!q0OH5%X5kXg3R~;v3E=yimBwCqNzPfjyUS?5WNy((a z7V^@2HgkSX-pBez6gWaflW&x*3nyLT@$3UFQB+HtIJ$55ke(f)iBbt~pGDK1T*h}> zk_#U9?|+$h7ufpUs{FYxj<Md4tsveKI`JSZz4wAC3lJKSg*ZDtG-Fqb6AA~}O4n{O zg3By^aXzfJ6>5)iv~8)ps4eNWnK-BHJ4g&QG3Q`sg8ZpMlLm*F^b&m5f_y=-<7)0> zI(DAz7}9&K?jRrgc^yJPj0<dX^JOEKYrh{`k%)94@8>=D6?B0}cB%W&I`;-2u<k5i zkrscgN?i>y@<sy8O*t=Hd2e)~D%(I#1677RSS?Q)cr1Eg89UE-nQz!|`3fpd<t4dh z$|u&%`)Me|Kt&;G*Da%Y+LHuwDr1foQ_n6<07B45VQ0vR2Cgsp!<pL_POel}NxFOS ztc^FY1@$t#+eRA&vX_xGnP5s;EUF1<u2SE`*N&9uZRosiduA3KEE3Rqp>i~woip2{ zsmkJt9IBLma2<XtPj5Je39g`%!U=Mn8Cd7mjAXcY@IaJ%6~{f{>Cw$%$YDL8mp8Uo zh2NFqfkL(>ql9r*Y&IHW^b$%+CATeB5~S0*avr6drJ%qa@ZG8%dFgzmqaaRe>u1^@ zlPhd0EZaXhFpCM$4UL|jaI(SdP6MOdqVS39TMa2WTZY?DL=52D?K1(c1QzPQIcG>R z+jxG#L`yxw*myjHdYd)i8D*L|5yHs>M^iGF)!m`f86kr{mb$1=$m3`);%dB>iIY_C zZ~h;OtCJ!_x!A_p?m3exF4sN&A5o0;k(=Ve<PCG<hOrENrQ>_L>KyE*%d2MI5AZkh z?<@5l`T+YD+)6^F(M;j9Pv>V2|4oJr-TkO1PKSfy0*0nzQHyf<+?|@_GM#uASLJ0f z7UNE#6}=c+h7@E%^k#oS5%<9Mv)ln`cB?6B$4AbY65UWprFX@|EFL`5(2RZ>d13DN z*#KMW_@JO!L^zpDo2;sey2F79AhTl{&eA95VJhI+I-mTP%x`L@-0+_s=>_y=^yBLS z?>#Ca%+x^A6zt=>5m~mW!)q(Dh4#)QiDVZje_DO8+kjK7R%RsT0pxl@wyW>@fRON% z&@mtxr|o8s_!^-`XCxo4)s3ocN-YwugMyN?g478H<OqA)5oqH+HAi0WdHOxlPmd;R z%C<hgNn^7-X~gvot+T2Zn*PR;#&x(cYMX5gstpYM=`!Cdg=q3@@}OOCGSir)<tTO_ zZ(sx3zEsDp`ul?LVIEyA11Z;V4RMk!5Xy{Y)NT$u8uihC+k-WVy&ras>;YrzSD0SW z6kwO%dG~bbB6c*`IC*EthPSEet*a%T^nWV)gu`k`U-Q9E6<9q}C3$X=%65NR|13>O zxm9U|Gk>0m7WnW0A53qe6!W-EdL?g>QWK)R7D$##S8Pg|Up{0q$1KpKooR!({N>KD zUquT%76G3OrafGH;qyhyYoVqFy&yQmlZ`D6Jk25{JeC%AlA6<ZvyN4Ahum_sRRd=d zGi-S^mgc$tNKT_zrMlrBihnZBoj)l|gI+D%^#DH${-N?6aUUIZQz(mk#gcL89M*Z9 zxD{3_8pibuJ)Gcx;aijQ7?CCwOvquBlt*Tu!KPC;2+ip|hu5>AMt*@lb|lg72#DOt zQn6mumoF5Zhqt7IinxVUf*0~QPYmZk(62sjwdL>Xba7X}{D-Sgo9dq-U-{iJH#CL7 zh6RYyS2RI=;@HlcCriL=zqEJ76<bP!oQ$2k(eokjyNC_X^QcFnXBz&E<72h<qnUl% z!1%C&-p<M!J?{x7mYzEX^9p%U-M=CM?Aw>_<!)-(xE>=gxR*@&y%!uVl;yw;6pX#^ zdFeyr=MIF>jFKKRqXnBC7}l<2)MnqD%H1Snyfm8eV~fr1R@hM7o%nRG_%XG$^`jY= zBem_QAe*ExNv@E~GfXOn+Dmn{9GLjdmmRy7afjXqDdA-O3%~}fNCeHuhzSPCN%(5r z5QUl_^`&@E!}gc#QDtQzqP-J`kVO0&@SVd|X-uDG{ecyhQor1u(4AA#xA{2Kc31jC z>8z+-<R(rB0F&8dlZ&YCvqWnorfuIb9C93J9$sNhLcc>$k~m$XPQ0Yg9Cf8Mzo;M} zn!^3ic&g`~Kuj>iBgh>Y94>P3>c5&9>tK;oF4`w{pm^DuE1oE3nF=IYL;L2?%kj!q z`;8npMqt>*CdLC!OeMy74-Xwbs#6a8vs9=z9u5PE;x1h~IFd0BA$$SZWbnW!#By72 zYAIRv>VRBnobWF(jhRMHHgx`_WMr|X69fP^m7aTlR5)gwT<)Qx?%9_5Nul2;mp^+u zWD+IIF$?w`2^+zyI;kEmIxY2W5{Iu_xVYT=VFqtQ*X$yF%C}*f>F<l(Wei^58g>bk zZaK_*A5LboZq~G)IWI=jG-|NSh_kAwDRpPP^vL0~$?yC;7SBZ6!DPei0<n<NVqAp1 z=2rH8w3|zyjFjX6<{-mV?`)QU3>`61g=&u~07F%~7PG6Dy@V1kk83^7IK{6VNoWOE zK0ECq*BktC9r4IRR0BM?$E{WO&8tDR^{Ct|`3i0&y5IxRJD1~)x!^Uj(~NSkt0Jv8 zVC3MCp2yBB_`_&6cg|ONC0b-Kw2>{bCs9syL%rWfgt!>qjIlOu;0DmvDUd7TcCOe- z(M1C$<3JlVuMJWxYU66csOuIX?=UawUeXGf&;LHwBoa3VzC*rcOu0HGoCtr<Q|9K$ ztG#|b8*X&Hca^Yb4Q+e+c;`yg?>G3c%_w?Y%co}2x-bbX$1yj_+%mOnrpRt5=wBW? zyfQI3ljY-kV{jN+R8^I?#R(h1TuP`ENa~=jRW%QGCWs3sSI$s7v|>;!dkZQ|s;09( z1GUKQpC7Ituc|Cq*{|%)KB#78jxoJJt7G21Z<X3ZH|DFKwg|EH<c0B+_7q@WDJEU= zX%)10G<bib=T!ZbO8$rlG6d{5qHUY%%uOBFR6;Wj>>|qTpGm&fL>7(c$L$Y2o%eu1 zBDN`5k%YM`%gmQ&cHv}ud(h`_vH<JlnSR=wnA03Oda$d!37XU1yAbNY{PM&-VR3Q6 z5^zL;Ye*~>cwAwX1J-Yb?9w^oH(2Wb%~%Wx)fo6CI%5gLe8#Ip6IprV4x}HO6{P1C zCBf^;vjiXRsqSy*9anr^6v81P{GEz!q_)~n6GVmoM5@+WGRA#;*2#a%i8E}ze2x9> z9)^gH9s;Gx1=2}uy1GQ3=3sxy#U?MU-@2Ej16!#-8Rag|%r2cad2o07UaooG2|uu% z_@iVo?p8eEvx&Yze7P_le<=LnyTmJFzuMY1W|5?r>AlKgG)DkTu<Sm%X=|%vsPde; zULj6S^WkYRy+6#qHGkjWdk{B^&w=&(c6{fSb{;)(Ji1l2%&$qot9#zWGhRcKb0kai z+UX}6{|{KQm-wj|H~-lmt6eAYxJ}2J)>E^tqV>%Z=1(ck+DyCgc8>;t-><Ib%@5U- z?wqf9_hJfmKST^0<^sy|+l?tZsMk1S00t{msylB6A5~Etx3Jt;gq13nt<pl>TlYIG zwwZFozi)-Opv$}K!WN!WmbGZirc|-0vsTPni&d@ReAnDdYqiapX<3`2xTVdaU(cB= zw`o;TiyAi|EO6VUZfToo4XlC)B4PsoWC8T2PHP21MV!P|0q)9vp0Tqb147QYkC+U> zU$Kn!<Zss6`8PU%g<a~l&Esi-=D6CQH+)`*aNl4_;Ivk;G+H#8|H2pmjr{|`Siw6; z0BW+UOe;yYXkDO<w<D|Lv$8aNxBuD!**%I}!TI|6bpEBf0KTo5bOQ_jWuOap0MlQ! zZs>W??ormxN$TcBEw&Z&D-t4(Q%|2~pw=f4yh>0esiW*yjovWl?&NLw{x5-{gC1R- zBI?-Jw;^r+gYt$t0bmRuadZD8B7JNx_~j~4o8vhkl(Jp|KY^M&^~d-0c1e}O0VQ@} z%{;o01h(waLX}&H*C&@Xwo<@Q+oit%(;>t2IUmZ&QznLvdP!Uz8>&h<3R3mAmcf)i zGqTg%2A3y-CZudexQFiE7h*g7Hcmtb_U=|+Vq#A<vGP51Abtg_ceN_a%!gHSkt&!h zO=SaHr4C-%n`m6?xk#j=P7NJ|6&33BD&1OZ8j7yEbXMSpqT5op)DM5Uz1&IyHU;2A zcxrpJk(VnTi6%$s{V=jMNG`4@e$)77D=JbixBhloV}DAO7GdCrdIP6+z2?M*%<jk_ znu=y+B1IO2*nvYKAFr`ugx>6ZQ)x$<D5hxJEf)8cD!x?kTi_gQ!0GV#|1_;GDq>S< z9S^ef5O21Mz}Ew7zFE{K+L3ISALWQ_u3O;ez_cFb**iVTpAE2tadAgB)cKCs(C?SE zY<;cSS~Yc|KP6OOI!j2QwQn?ctD06C-6x$c(YsF7eRoC$QEr~06(KWUqunDop<lZX zlGRX~U%wlRs$2WVn9QQtUp|1j74sLhOl0Q!E3ULN{V%ALU3(VH-E%JgVENyi^5>Pz ziL}TITg}cT?M?ms?W(&`$*$Sg)j<RHMM*sudxZ0F^yGy1^X@(WC3kXVyu;|a3VQx> zbAdgt3T84(h-+_rtCS;Y*VyK#+;9@?Lkwd*Kq#c!hjAJ`1V$(<?wU{W<jzwYKwm7^ z0XU1s4W9+!s^Uj6`RAV?nd>{^Ur+b0%Gp=|U5KRAD1)E02J{)ePt`vd4@o^nVg#b0 zS3XOSY5+Yh;LUkQrj$QJEmQojO8v_NyAIBY$#4kFDM}`>X@Uk~FHRd6v&^$EXo3u+ z183$(^%6(28f63H=fjdSqy$v95_gN3xSNAHvX?g69ruD(g)oZxvp&(`<SpJ~;L>zB z-1&`qDtRiyNA&>hz4ZavgAld3-U0Op>-|09GDsuwrJ<R$5?h)TL0wbhm+{6$t8yNJ zjeouzb<%>gV`uRIW+`6P%><h^ik}>RBV^X4DS_rG#c&vjhh?F)3KIVLTF1YU!zGzm zv4hojMPr2XTB<Fr*x^-qvxm9Fz!Hlq$pp`l^JmrE{{%Tr6%>8b?w9A+>G$@t0m>6) zLz>i}cf9YAz=$s&kJu42Db`~=0|}D4ZZrJn{`JB$*jJdiDCPr*^kdYc=jaLU!-0SB zk5Pilm7x*{Tg{HC${NJn%ASepXouG!1~dycvcgM_{g6R3db|ZIKwOHRRkLv&7Cv=q zj#{}j;^M2$TPi7>#AfB${mWBf62RM1`Wk=s=$=>MRkjL~oc#@=6X9f=9a_TRMm$fp zt7spxi?;y=1WtbY8oHpq$TE)Von~&)rM6xHj9K=0%s{`4a=Br1f1v0V!r+PmfFpOA z=;@wSw}0oQ7Eeb<7YlREeDgaTo+J0BR0RN=&oa;w3VxMYoKMFG1;n`pYKWihKsE>O zxf7J|k-vonO@X48yUf^e!)>%oBB_fc$Cm_`;W4^ZSG&J5dYv3gPNS%0Bly!&h#T!t zPF{G`?4ia;`BS}D<3i5ajyb$-f7=a*8oNl@R!1L{MJ9oE*^1mG&)xFUsmW#S?B$uI zrvPm6Fwl@3xAknX&jEqV0Ggx`?VNV|W2obAvqZ=4$w=egX(bjFv}|nqM*2D4fIJFV zCQlK&(T4uRZKW{}2IC{ZB8NR-<@oXXlux^lBW+G!rkEiD@7muk@e{cW6oLJ&I6auv zJy=fEoeqLvQb#5g3!4A<L}AxEO4ZbXr`CFWYrggQ#TnMiTh<x#PRGzH`*q-A&r&Px za3q%efP9>RmF6Svj=}SIKxUN|Z-<Wx^u!fn9%zRRk6wHDddsq;-TgooE0uTtEn*`P z6<kjN?;3HZ=>VXxMXjF9IdvX|P(F*ej!y;aJ>8w~vY5F<@f8E}ROlTwGbQ;JULe3k zkr6yi%T#;NK(tgD|1zi&?GBVPHsTEIo50SPz(h0KBNRZ(#7FBn5M+NUa9*m(d$eL- zt+xN_v2X0Fu5g6Eb(l|jy_-t|-PL?<`z^`S-UbgcVYO~dI1&~Rvh=kyQ_}1}R@BW+ zd(N+{<)2VpN>nmF@Fbb=YJW+5S?S_oc>}D@1Z-~)c;kO1%g+WCF&}2Fy7|M?Z`LVT zR^#4zfm;AS!`xEgY4U6|Ztoksg74^<A};M~dNsyjW1JmTAY9p5!#F?|!yUMHt}P<X zR6%yWev;wMB?!j4hY2_$w`0t0a?|>F&0Bm+ZRZ7+e_M|QHg(rFzL0jqOASr!#nfJ2 z>)dFcP*ZZqdAgszX<;=gV(T}1M2Eh-@e2NCn$Ky(F~`m8Q5S$Dg~U~;5uScvROE6g zlZDS_f{n4!>!ozO8se?L>fook?oV?5{@b3^cE`!1_YR7i8=(J4?g^8qb@{%M#@!|E z^Nz@XF9|+yC+m5Y!{G|9!9&qZUpwi$YEa<jB?cN>fnfCxu<UQO)!@R~<g71ASt=rH zYEI~v%!)UGmGInFsIIaW9()co$Emelk!(pS)kgN)b)&%pTWH|{vdgW!{Qz)sgybwH zsFxb6)uMH3SGiLG<vPF78AV=))NWYJ^hCNdnH_%5cP-HCvNAx!L?eXrdUVB-*^<EO zvGn-9mj72dFoRd+Tn4s`0Hvg__u};D*Scf*l+5XC+BJFozrO-BDIhc~B+T(_&oicH zYHb_EkUvNKeythSrJ2~$lE(5+>P0o1MP}BWJ|qJ;Vwdn=u9Ukzl4+pvO>cM|yV0(# zoBEmOp!;y>V;t46=VI=0*O}T-Yyxz@iLzxpVl1zEtpm-|JjV-2FGub8y-TJ3Dv)#n z<S-nm!pSVSjZ)W`9#6l-XBRYY;`Aq#3H5g0{=GgV5}^)Oiw>3Odx!{<DUhE7%&p{4 zdR(Tz&)*RXX*<ruEykzdzGs2Em256>Wh7<Ych1>&j*tEcnQXg<s9d}}P^@<Hhp>8U zAyu%`<)4;#+V^-=1>G<a{93>0yhXo7jqR^clLxT>nS!bK$7sQMf|vx?=dnY*XCi7! zMd*aLr$hSd(9F+(<+GDCZ6$9EiIgec&@qUG4u*}$@_ep#^t4L!ic6i|LvVB%`zou) zqjY2>C=((F<BhHbCq24GtQ?nBU!(`SHr|R!D&~(8oL>=Fxy_A24MnU~6UFWC`F8DZ z4kCSmDhtA5{D9kddGN8o?x0}?!KY1G*gK~fx3S$L0MKC)4M09HVm6){5=(1?_)&NF z8Ob#bVjh<sgH<aWHO!Lz3}HDi?Dp84Td7WhZj-#FUk_~1EhvB4>lV*Ja_`c==;Wfu z{Vn{|_1Wx({gZZC3>R?`jxSZ%Uma6(dNZ18q)F(Xqk>qie}&!CkYh2)?;Wces#~~J zq%{aOK56$Jk>zOz5nYQ7GEtC$X4kC5B^uu_t_@URg9g5=CWl%YdFq#Z<eA9mGxrZj zyGPF3h#TbO@v}I@u{2QVL2A86zmtc6mb5^`bzj&2$l*Vz`j!=tQdl1jj{(4pET$+{ zhFSksH5MQdZaUD9^=v;Xomh8lbVGOo{T`<^7>Ouc=M(Jlw;9mRd$a+_Ks|-L!w*on z<-xDba;n1+R$?tD56kIKWdJ+=(tlS2KuHPW&v=`cjUV=$|B836*W4bz?F6LarQur6 zLAS3KZA0fPUS3LXSc$W*-fg?LlHkRpn~*o78y_(rT4@m*Xkjty*#rod5~oHK)eZNA zyAE!Tl$St1C^(J0iSJPwhOkKurYE5=5@IH3sp$DT6KbvF!aW~()=)|?Rd)D}aG(m+ z-HT1rT9kE?+!8%#-q*-)xnD~*6P7<&`FuU2_0TMh9q&xk+D<F@aPQiQ>-tgmR{o_X z3?VKq6nsq1NWGrrp+0tBWOuprj^PNC2$ST`DE&&|u93-VF$5FxDo6}MHH4zz&R{+H z5m#R$jdM<IUnT~DfQdaYNdc&?XNQAW%BUXs;tEf3-AU)U^2(Mn-fvzW7MZZ^wd2-y z=qYx41O}9E*~E;N#l8TZ=UtgFoyOG-FS-NxAaYs85m5Y;ACCzvzH8~uGBwBq!K*zl z*Vyh4V@HN3)YEs28e_yyrn84YqZZbcjMy(}NR&2xRrw%%4gT+zNvO#)_7guH#|y%D z6BAeDc682kbO*?Sx}2dBuP3#w7yAmmZylIt22!fFqU=-?Rd*82hj3ck^&F8Vg7Ry? zg7Fb8K9{#_s^Xo0pEz;-_X|-1hw$%io1Zp`IvqE%_KfPfsrvTNKl=Q|nUeOqfW#U- zZ4H&tnz8SCBeZ9bdzIRKQ}wj`lGjM=8^We%i97av_XfTajouXsGZ-_2o-yWr&qrOt z{ZIMst|6iwZ_zBNDVjHvE&#F8Kv1<5XFZBrmSIm?i#pZy`Bcmki<dK)AUm@gtb5S( z?w=m@Vk!>CX_Adi_iS%n7sZJ6O3;kv3(t`61jx>>9;>^J8D6E)`f?wp5gPY)lB!#c zmTt*DYS;UvV8W+)?pUiGCG8{{8r{NOCC5vYkzq`MPdt3bUB9~Oz!n=Jg^A8`MzXkk zGhZqIi>kBm69Pw@J>+K&Rz6+@ZEcr%mH2eh<uO&w%se}}B10~fWMTiPbUI~nE5qS1 z242&7?gfN8H17SgO2*0XHSDUg*Kp7hK+qLA?Edy>2_o1nxh13Snv4E3cG^Z+tB9!V z1}hg)&ijYJ&b{ocEC0<A8@>)e+L67efqQhs^2uha>ukm8JQI_?MwwFIOZWWYrbfm8 zpklqU>b}sSBi2EMuICcuEYp!1u}6z36>-B|Y4cKJjMf%`pQ?_^54F~|jc)H~<FjS- z{O98m!ysGnCW5{@GgDs#f3@6cp;x63;(oOwtyp_b=lie4I*4)=TU9@27UuhYQn=p! z@t%n*JNPbiX8VqCD?7J`(2s%QrXKtUY`rW7F$}l@<S+=$)#|1s<rlGS>u=UO-brNm z_@-?kGJ8-f?hARKQ!V)%@y$*--8JJz^CH&P=IEs9OzHBOb;mJOc{k)<CA+r7kqV6O z-`yEBvCaE!{^vanx&svGtM_HD#(T}CRu>i|FlB#%Zi9_baH+J(Z0X<sXmz!m)fPVc zI2G7a>;1nILv-JrYR;MW)4-tLfbc+_2Z2plUg2*G5~$uIC02Ro#)dTPhZZ<+w%k2W z2;$x?R=I=ywok23Uonq*;CvJ(@kSXjy?O>xq!aI>_Gwxosphx`pR}R0X(3S&t4WH& zbA=#Q2p$rOoiRxl%=GqXRHimL-pZOyZxgYqdffEyPpT8uzNpYEJ~hi~>qxm{WYG<} zf$iy8u8r4BI4rj6S#Q~1{Ey7p+Vg%)Q3WVcHPZg=;TWBhqB$afuDeJyg2)U{<p&Ct zRo>xvueIr!b+xxbqGYx&#bcxsAtAH!R=NL&y045K=b^HzYQ?|R{J|^z^eG$+0V2S5 zx=^}$-i;-P-*rGyBj%KwY5<T@8S_;{pfDC48*LqeT`5vd+(_Hhzkb?odd=zr6rdU9 zl(H0Ta5Lreeq|Osc6TXMj%>Na9fG{3LvjdO?3QY1noA<TGH=-_zv1@8SwiKum}q%N zkse2O)@^Lz#|stj%A<t8q&qWKYHo^~+2OGxVBSAlA&X()?Qb`e7UGb5uA#HPdfbe| z5>wBk;#>yF!npRL1ui4=j%|~=o%cPq7T&OzzcQ-KDXn-+VR3uZr@E2wy>pm`yp1(p za`U0C{(G70SgAIcbxo;-;9e!tRVSV<+M09w7j5Y2(t(gj=*|x*$H+JI_sg}~gQaJ* zhssjLS!0%KO?(<%XYVc<0;Q#yw8h`03I`f-Z_DSHx$^hm=%;K`tg!5uoN$Mz+hss9 z-<~LpQ*yz1u);<Jn9ACb54*T3AbvtWn*?tSC<o@e_a$&z-V;ECyzx~D_Lzk()vNq@ zpg>ag4UoKB?mxi`SUAQX>1|wl*c0Q0dhVt`jPjlz!KB;&zS_3DYWudlW$RDXi{SBZ z4Ub<35u}qYWU=ayh?akftqz|i@zTEbi0h>qoQ0g~5nm}84jbVAeo|Az$X27D)qmtR z0+kju{Ss_Fp?PXTv3!Lnfe|Z%{~f^PA8GiG$B$n|orTYJh7A6?8*DN0p&~&XEnYVD zyM^hj?Ty)A9FI!Re^oOv=2+mh#g1C(bHzhXU+&`4j}bdzJQK~ByP5ZS53MOcfwF`z z$n6L??*A=yaso15Pk~D_sphd5*-ZdSRADM4<o%>hMh_D6e!>g!&I2j%{TVK~iq(zp zBd@1cc{Bl2KulVyAp#|st2B3V{}~>lqhW7|rxxTTTi{^=TmXqs;I!FF3>FBDXG=IN zDY71ifs!);7Itn1@8{57Jh}K<trXTD__*>iBHP!pYPDQbuLLJ2b&ZH0%WhCqG3Yq$ zH#3KpbQ<AyzNmBqJ}|Qk0ILEB*JjC9B~UsXv#4cRZ+~Idzk2sc4h>yNm3?g;xH2yN zUn#>XtdBoWpZw_fi-%g~nn90~hNCRE>+{G!@EY8A8Y!BwjGp$GA8ADrO*mDpJGeOj z)uScpsiRQ|muFvc)s;%yrxQoF>l5EUdoFx%yHn9`;h*<gqb_M47(XIOTxD(DEWJr9 z0$=uX0s}atJS566Bj)m615xG1U!lvEY*xu6+H6N{=#{RPyGcy4Jij5ps>d){rtW00 z#ddC52(sr%227qHXKC8)aFO4!@ofm9Fe<Upg1bcPbU>4`3!k{3WSOPl-0C?t|6n_f zW*ozP+*nBFMo+lLgC`sg?pmoe{Tr`T>Qk%)j8#sC*q*6niy+ST`sIAX#AvUHr)*Y- zug>V47BTEM8Qp}B0)8s1C3F>E0D-fE8GeS)7Ydby#=94ovo==8ryBP--?&8ZMBA-d z2a=k+Ej=*BcC1=AeSc+>z!Q5phy0HF?HlxT!7Oi&G?`$hrn1%4BnNj;>==1(b+YPs zDiU2D4M2@Mg?H`>5{7Sy)E8#IYI=STF>)Qf`Mt(<wq$A2Zl~X8?Dii3<iPopgt1~2 zLZ1Q4tFnnt!D{Kg81Rb$Jh#CaR=i@3L))A=06~k&g-bu#MQoS%Tc%H2PlHgDSTXft zJd)4&*hm1zhKhga)$1!G_k~WqUFNar*-JxIoPAu{)SjoS!R+y?3w0N1w!(O`FHJ?v z>EjSDkOIdBo&=HrR+>^+L;0+nd_glzf2%$!XMXU0+>?NoH$|c$NE1N-B)Tcv%|6&R zE0ha}pcz-LN^w+Y`*(ib;^!Te3O}|aSX5zO6r2w)%m{K)^cv`$$9j|}{m1Xh_}mds zDbAjTWJbE%dttk5rsN(*Ft5ZDEmDljk#!#-MRP~nNnQk!X>XSWD%_-tTi*rztJ&eX zE)Xa|uL+!>!v}21f8n!R9nLHBSNVp4+LS!I;b>e|I<vm`Af;}3dc3`65e_X~MrQ5y z9z#fAD+BJ3Xdu4&@0T(AFI`z8kd=$y9tS>--0;{3KGMBhyFzzM^L~;4lR6$dCf=;P z1(2BYyej3TR?+s!9MvI!E#lE+?VTiH7ctU@y5m+ECfzOe!wk@zyAMY?r8t&lOqR49 z#2f1llw^ZE``T)CFP#+zV~nPA-KG0@J>u>>uCetTh&x|dXJIREjBQBS>h@1-Vmhlf z<+#k#Qo;YN%qvF1q)Lk0la%O0$e%*pp&o5C54Hi26Ju`Jk9<hX^wl5l`&M6s<vzot zvK!@XiHq$Nikp#yV+K;FUj+mmCQ?*ZspZ;(hiubdWz~U)LuUK$$w(*!7^kT|weuPM z0!-ukk)ZZh+jbV#-{-6H_(eWW^mlFG{Malee2roikp{lq$*r_09K@Ty{T~9AAW)&Q zzy32;Ydex5u-hp)3Ff{MF0ZDJ2X8_B=7^bRZX1L_2Z=bJ2$0T{TUziVe*+zzDZBmk z(lZd4JwG*!BYlXe$!-c)(|_aQ&=JyAY(`?mr|UomyN8j2|E)@oqFB0tdVk)Z`6Spf zn0c<GKQ{rUJrcaNx7B-bp^%U-8NhT}Y)ZcGqg{pMVTkoUAmUt#9kaPJL6see3w~gp zC&k}hqC5RbU{!&p6Ht(9xN}EHY3f?SP)L6qO%ZSPAkdT4HlK<1WM-wEzl`(*93Nk` zahm3#*#<0ziR>SVzp|!%zh<A;M{pH+JoH~Z5g@|@7Ko#l6j`Rp`jiNnN{6T(rYtS3 zbM$c=OtGDC0%@N(=daCeu#cs8C12v209z_d$<srn%L><3`f6Ez{Q*g1_kD8q16%Hw z78^xP$4xa@#9nw6s@m1ERO>Vu2Y3U_V^_#cYL<ahmP<QO&ZessxXJ@yw$K7dAK;0Q znyRa78mZmq?bqq|tLq;<r*X#E0`l)qw$sjughA8l!XnCmI-1gAML8FYxk+7a4W9Cq zKFE_iJQqJL#|?Xs1$!Mj2^g@tVsD8?MsKGY`bY@rLqD1VitpYyKJl!Qc@u14$tgM6 zSZS8MJm_*o-UkWcNW=@R9K!;{uHExH$Bxc<wnLU9^!%y>wDvRkZ=*mTrw5Il)F|*M z322-O`>mS`H<(=qMPR}rpXVBl3zAQky5r?Yx|`y~WYT-UYvSv1iEJ5=_&t|sm1?Z{ zV9<B+@_j)v<sbVDZTF)ZCZ7TqrI2@|ux?puZaE%41dq(qCfnV&zejm3S^x5VYzi=E zSKEv|FH`{YYIe}oy&tt1bNj<@Re)b<NbaS*vIp}^&ZaB)?QXORq<(e1dobFGJp@cj zBgS>yiOP}&y&7s~O*%@poCU>0gVB4ZVzvCDqN+!JHC7Bh-HgRzGK@PgrT)L5!hJUq ze5NWdEzPauKFSB!S$-E`!41HzD;)3_57lKif=1w-PZ;n0ofjFzj+B+JD!ARPb4G`^ zM6FpA$<xuV`-qxl9?)ij633()ZC|2Wf1e~CL(UDf?R&WN)z)^h47Ub8XENZ6VO!Yj z;<;CH#9T;Px2ZW*>iCP+W_noAQA8SGlk2&$#vpQFj=ikBlPRz3ex?Ip=XkDXuNqHj zztQ&i%)_=40AeFiwi~zs1M@XDsmC`mGBo4A>R|u1n)hP7O7uDY#Ge?x4cJwCd=Xc* z&-M5D?*GlnXR~PO<-BzX5?UrXiz0lHNprS_%zCY{fx}H&*k6V%HeLfgheoV%qVh?R zE>qh4hZ>>6*7DSda@`o@l?s0>5NwHLJE+7VM;U|j4A4<@p`B3Wq25!{94Cy?bgs>! zghA_H8OrVsnvI}K=?oYBO#=D3Z3aw|%(uadT@1+O%A}z${jc*r-1D~qF9l$oc_AIn z@xqCZ`)Dsr_uGaNd*mdPpq-$*EgUbgqoaVC#;GGeUJheecEfPziFTi2)lO7)Q?mL_ zQzXl9&}wM81o`Sqyb`II`=v%OvY0t)CC(L0ff~x4DqVB~<!&@HWltssdEdKk^74v` zu;8$r3Yt+t?gW|5U<opB5}hU0!fX`=hzxp!bR+I7T^|Htm$@TNHaKk@wpwPFFzyGl za0M1;NK7o&ffqc%O$EplRL08@Zc*;dqJV-hhnO|E!q)*t)FP7s-?cXUxVE0ov9an# zsZw7!;F{Ie&HOwpp?o{j>zDT|$mq$j2-p33yk+@ohmb?9cZId3X`AJ2o%dw=hRY;I zjI5eB-fWJu+_8;x;pPW8%3;xjQL)ZfqQWv=O~)>s>%;8-#7wHHj$Rg!I9T|G?_WT% zm!B_Jm3KBXYhC{{cjT@<UVDx#oRZ-93v-m;Rj{3$`9;@v(|HQa{N^}>uC+X9!dnYN zDsL@j*zEvTMDc-`hVIJihhm5{|DP1M@#c+-2dF@5b1VwMhIc`V%a`on##?T-Bkg8t zk}sHc*kCJReXC9-<*P)1;1W5!Ijj@0{WY>(B%F_<+S+sZ*VbPMt*Vq+Do9h1qZ$Rs zlHP<P*tewwAAAP)8-Q)+xd!{n(KE-|Q9%5K_$MAIy*nQjl9V7){(3o_-GSwU(Ouy? za`Y|<&UgeH->`|b?j7`aU3FYmR$R1xUHD~I*i<@|f*fMCY>f*7nsP0tw+*P6Ak1 z(4&BhW|}w4HTpAT#LApSn<t?~Z1|m7hIN3t+Dd7t4HkXK(Zi39n!oo48CQ87|Gedn z;1M_~GHB~E!f=e$nWhxwGHtFct0gQ5((cOwi-Tp7N9*+Z6y$aM=lf!{@BptZFwd>s zJm9GEsPx!!C4nfZhxFx1dQW~=_tj9!YsGVCXQsQ}5eeM_SfWL@+P|6S5_`n^RbKmZ z@b-wi=q_>`52d)29U0qWXWIn$t+ra0zi11WZ$&@Ig&-Gff9W86pH2gX5!qs`|CZcP zKocVJC=0e{jB2rr_ht;5_ZT&c;jn<$4k5M|$*E>h^;QQ$dd9~4IuNh`&R1ntN_{-) z%n0d@isz2nRcC)@ai5C)C8uo4cMa6|A!#<6W}K}CeLa>!{UacFG2Z4YP#Ml)UD6@e zzAxrkmou<oqsKfvU_pHgPKZfrSPR1UPUtBFJ|iHfugP65ela;lIgkO&pZNb_0_QRY z`r(yxq$CzA9sh#mUp}25`8*ujn}j9%ENb}6ELtmfKFO-zgmrYqNgVR;c-jB#oZD;J z{NOj=XmsZC<4Bq@Z#-izAP^wMdKhzYbS>hQOtd+`@P+RSeIwY772sCyA&y-(bB06{ zMV3Sm3u&wR{4#$<_1lVo@+07cfxRm@5<a?eC~@)&LWC!e%~(!wkFPHHdC+0m2QT-Z zf4@}63uA`aP^<=~CJwwMfOVPl%y9Ri1Gh?9pmoOZN4$wcm$Oo^>y1b0s?}nwUF5A- zVZZMh@cki<ghM$2R0!LNwNE|>d&mO}gOFD>hw0Ii5GtTve}!F%909R@DZZW)Al~Ss zLqG!F^A>52yl#P{hsJkF>+CSlT4C{D^l^C|@1(?%x5`I(DQ2QKxG;+X;GK&|8&}!U zKUBFX6YWvvhikFCN~&Uk{VYx&RTpDx$)S{`tRCH!!)2*(31Dy02M9xQ5-Iof`CesQ zGPi&MZP2;a4O*3b7;g2`u_XOI#iZ*S;D{^!!Ld8Y%|X{AN4-fdZi*VwfN9XvOs0(! z8*au>$Cz~E3Y20|$QMvlrH}f}K*AAgw-Sgn67tYknFwafFxr6{KxI6w<=570Ah9}A zGtgP6rPDH|;5=Zh^fpu6O`!%z{fPRDP}YoA1FY)QU2g<i>{xy){xa4tFb%gVa5Z*J zLIJAjzupsUD*HP4GtKyu7%;xi|G`U+aa^agDwtf0C{0PhdBx8^K$L50i8>=+OrDXz zy;h5mY;?oE*PC4O_|LP{B$D(Ad%6+wp;W#I>lI5Z9Rbcxh?Z2B1RO1ShJ&+Uwx%|x zO|#Qr?i{UzXkgNqInsxaHn7pt?pvcTEQa9j!!=v_M&~nwLTSbV*J8(7H`@L)sXP@z z@7ErfKV$;5(Cny4CnF(su<_T2M6TD^O%4mjYiw&IDS3Za>(-Lel;RggV%rJl{~>n% zlS1)}?3b$M*kk6i6f#Bf@}!flc6mj6rENY|;a@Ge->JCNzA^|1{#oYZAk^B_eZist zaU~f`IH}Yd@cLCThTFzu%Mo+7T6*TF2mQiK<vd&k?=qHGH@<M6JunB^?Pb^%HlLb4 z4-_;LpBqH9Jg<q*g%-Q!8K34tPIfShzWPjNVk|u_DdnctOj?6JxnAj_xCx+PSs#@= zGvyvCczQSh*z=EhQD13KdkssE_oHq*8JmqYm2>t<yH-K|<Er`3YJtN95?$?pix}MW zt%h4NH-59j!);s%xj^T&mU4d!fzDq`D4O*DY`GoVJcPcuY`VclP!<mLaunx=nOR~M zFt#x>*~aBlDOttqg`iCNV;hUm0++?a>4Ufc*+k-YeCy_SZwrc*d6!gmhpM+dAdrWb zLq=oks$c7fOmO|Ntlj(#xQ}|Qn_8YBqm;KKuscT`wgKZgzY|WI+`}b;<T!cmB3*57 z7+U5UKYv2d^*+?$N-or4pBaH&<GOSKc{O3rRjepxz3kb*A%b@o8ma__AfR4qFky~f z6p(lVd!3_E$e=Y3*A%0eg!5iIB7IDat{)NcYj)9aRq>7y4!&WW*75~0y9=(THyV4n z$&RZN&76QiH+PLqR}G!yzJvhuDj`evwFI55RzDiLW(0|7jkY<;ij7yE_LcToHIE^9 zifTV%Xwp2EAw=aOqIb_ltA*4*i0@k4S{g&9gkBL><5(@R`^mJGeZDsDjs3mfPDCyi zo8G@Vf^$dAiSksg*F(*K@=ZF&b9d&P8laZ>&;93<S~h^*9yU!zJz=w~UvNtFrc873 z4VNo9F)}@HyZZ73!*^!>Qh1L7<Xe~XmCCuk5CC`VMUWKPwa?B#+n@k!nkbJ*+w0C8 z)ZtZn$aI^*AL#WM7}6GvBS7F6fJO*-`Ljx2yLN5Ern1E`q;l`Wrs0-izy_uwrn+(m zW^pQqcpf;2o)hL8W)cFFgBNMC9wSv+7NWINQm$s!%E=9%)ur>|ImO<-72S1%O!X2@ z<XkyE%INsG{&A@y9<R*9unbUi4DV#O4I{uKnHPZH_rEz}1Kz=xv<U~Ql@l4VHo2!u zR@|Bt864+T{SugV`GExBVPtr4&T229Uq`M_EtmMXw3kkc_8!z2Dd<(BYY>zeK1rOo z4xDkn^QaVP7vwV67g`J@>OY(9eiv|>Z;E{iVPOEyy8t(~IhYu_qL-Z!@T6b%alF#i zzLcuw*Cd8ldaN)82KHQ~VYg>m5)Dm7Y0bO=-@gGK=J+T5SFKL`J_Q`-V$gqoeEM&C zyK!Z(yOy)cErur%lAYpJvCjA|3*gQf-Z8=he|Ad;Q(VS&5)ay!J{A$KjP_JLWbltV zUTEPYJDK5zWYVW&tM@U<|7DT!ofU8jkl|gL#dd7%@zITf*m%|Hy}m{H6~N#7N1*WA zS}@%&mdx<LjpcX^dNoCUL}{)$^iQkB&Uk#p!5DJnE*w7+?K#&lYg$qB5YXTp9}bGf z!H^)ZaToW!yP1J|U!{SD;X(HCGJe0)Kr25SIzB3pxFTCn%cLxoXJtAt^JeA(0iZ&g zi*6+BJ~^m9_1o=u#`n5|4tQHdAD03$<z12LVHaO%6&m?5#8GD)+Evp*R+Cr*PQ5iM zyC)~R&g=y<<ft8whJoS7cr^$8_>&0UiT<A#(vDYv;a%zf4=!DHCms=;8Saz??agkq zN(8rE9PG)aA8o8y4ZESvF)-i&K*vy!O<jg8p&(PKuHy}o)S5m2-y&A)AEX`HJH6*Z zF93x<JSac~Sm7jKMecND)k|0>k@o9@odb!fapNxaTVqRyay;{8GgeFt3^7pumnZa% zg=H=VwBu*!K~05wLl+O$wiy_{n*d?WPRKL6+n(W5bGWN%*xJIw!0_PRnR^Sh2%}{g z>W)9K?kBE)PuXps+0Vp5sJZ|B%bUQTZCY)f3)Y`bMR6Ni*Le|;f!h-+zy~t`5B{2} zGV~1rnG481lNVS4pYZ>gnIbT=rN178q5Yv<H)a3AV#kB!nAD{+Dpks;|1;7FYTfTW zj(3tIEj7Ad)4}0x5m+s#A@C@QO<7H6YTth8$CQr<?{3=v%-;C_j)&W!z%UtJ>AX9R zng_$8e5bQ&4rV_NJytt3^<N~aIR^?Az<q*D{p#yRj@o#oG4~HJyKeNPpaZ0Jff6sx z!ymh8t^ZUlKO3Y*&YB~-((n>J^ef}lzEczQKCd47n?1|SHn@C4?>Q_j=IlyiY@=?c z$2Hr)D;$BA67g#N!9j#(ztIg}4rzH((JI=Dpk!ybrGIGPp*!iBaV3i>gH=(^H*4wu zE_g8Ll07Eby6vUnSw9s`kVo0o^LF~gdHrU^Qb6=6&lgt-w#{>`lHzkJxtzn-h~%<t z?IRj@6d}mdLp6qYpW|%(&|lxlgGQ(q=XO<DJt4c*zkZ{|@7p1?S0MhIP|$w#R!jEL zt;@P))|+!|Mci43XlcKq%t4=t*x?`VX##*PXLF<Hx-4eAuHh#7H7*91|FwLdwma0D zE?bx`>-sj(VPdX*@e_qGWPsH;dLmStP2H&<bZFf!!{xg~D|Nc;2ZZ})nYU)?c53{> z$7XY~-7o9Z(4Cwj6;JuB_~t?XZOl92ub*hE3w*V#y3~1rl_Nf!*it`bhAGVLbT*;X zsRiRYl^!JnQ9JBg<03FN%yN3tVzqfRxU8-tiT_r_jMBEfQt|}G655(2b{SLWc)itr zPvL8u-O}H^p*Cj@;4q9p^vL*X?@<dX817GAv6}IfUU!?@$I&9z5vjiAUV_iL?%Nn= zu+0T}8FCWC*t1#Qb}HDoZ}<igj)va`E6Y2$`WthyruhU7%Y5v;6BnN>!&6(tb$>)6 z*fXzIjO-MX`dPR6Y`sH<1MgdcvXZYw=Q&mZ>Qu96lPI<Dr*p=Oj8o;Rs}(}K8eBce zDD(PWqCeD5iAl9+vvqUrJ$&dNvCFw}wf9_IE$ZV2-gcq|Ht(Wi-KFCOHy__*qPzcT zPt+~DQ|Fd(9|9s&WJ<Ek?M1Ee64yeyVnt?p5X^^x*g~CCL~<~7q_E2@VwWah-D2+d z%Z)xsl*O3GpC2mUZ`&QpRHJ$LiN7H>>P$Hiz2`b3I~eW79b=YW+qwMA{a7G}^Z4DC z66fw<?19-Q&m0v}G947DP?Si&T)!)UNb=v$+p^XP8vbg_DS9_<g{bWOGIv0&3sB0b z-#w^9*{Uu|SBTr8d#NFW*Kj4m0#+huqa}~zaf;e^^$~l%?aBMlpL1JT6Rs{dtin?M zY2Le<`yf=3LT=6-B96s*ZWyD(Luj+)p}g&taYodmqn5ox3R!XLtjECMv!m6|5qj6t z!ytTuVN<0Xkv|`XzA?ORok;V?XL19tp3EH;7b-XTY_(ZHx1^Qsr7Dab)Yh_Eg|*q; zwK9xZOPPdehhESE*~!Hbe6Ik~A#>N%Uk|#z-~{GM$b?`Vxo2EiqEnUbUP-pQr2ZFc zICsQ8vH2Ib^H#1n;-x?wQYD%|y+7m1GY!7om&t2dE36~7W7pgd?aN{{JA0a9rs<Dq zI?CGCd0cgVmcL<9x|IF0HMNatkTY5QDOt1+t{uIp*KEh%*(hA+z~$yK9YgS5qVCE~ z$@X>z?e`?sC#tQWNJp>D`P3seJGG2a&jPF{1>U%_nJ4MN`$lIxz%)!{<{Y~Dn{RAo z<~ZC{(rPEtxp1zr_K<u4<{II(Y-yV8x;Rp%lU~P&3K#f*+?B)ievI;{E}!z)OvqMt znN+4kTT9b;a|}<4vWM8VbFpczos~0>X6C0+KSp1qDaLO3xr&LuUYM-PJ4($wd)J(E z@+@U@j#ziK%>bzvLx9HJVvmW0h!{K^5v!zMIXFbsUBZvcupg<L{O*%Q85*(RHrbb) zqv1TWZ=Y}2Z5R~oomLF$2TnXIvDnf6+6M2~>9Z#43XI80$`Y?7Y>Xz``L(m3?Z_!+ zj9F8dTw|HoI&y=HaKBhhE{-YDR-VZ(x3<bsQ}QdPJba)8wjBu!-s96Y`m6qAeAPNz z-ll&wSqLke1*LA=7hmOj1ey!n$0XJlw2I@*s-tpU_L~Dpce}u$k2|L1_)a#SmvS9# zuu)fY&<_>RVw+fsF?Zwk7`@srW@Q%|nCY4w#B4`e<Sds6K_aZ^bk~@4tiWVprQ42a z(=E%^+4n$O`10FvUog4pMmN)~LNF&vN-iM<o<~%zBC;GJqNjcu+%_-(jpXe4QJ%Uh z%|2FYX_|vFL6Fa~ichW>(+hmXE9v7U>q|!HxPfJrYj!HQK;-R;%&4btPUn^F%({!2 z)t9F%PASZ}+uti*Dq>!NW940HpQ9`*>9*$a_`5&dJ91vnjYiDJL9|AH?^%I^c97Od z{c?yq;e^iO_BSj%8t%%IMDCuhv@-%BJ>y<+sI%?J`K3Nyx|dj&hG_E2tH{?zmQ=8Z zcwk;$cZs}EU-NvD%^4?iGs@pWDXzx+NnQNg5?@z}e|{ci#O}_W{iWc`p%7>KytOc= z7jFaHUcr?I<vy9QRf|d_ER5(RJwDkFP->Ee%MWba=PYXx2%krx+7vFJ=LyM+5)2AL zGXG!gefL+A{r`VED@SIIa^32k-JxlY+@sXAVVWsuE*y6`0m%e6t=l~+@3fq$IRa5h z1-F%gr75W?DyRvmIS>&yDxa(O_k6zR`#*f&KXN#SbDfLV>vcWW^Kk_&K21!mij%5} zGI-==o9hO~hT*nATeeQ8%;4;nDnSOtc}$XjW-T;j)2L%3g$=Pu0Iv>XIC#<;5O5Q! zV!p!N4|JwQsG^b4R^N0P7s_7`m-Zc=n=XG45M6Z?sh<8bTq8=9z3l|8fF;f-bUrAf z8Wa6+nDsU1HY0w?6LHVFrmt8>8>y<c49b@HbVolKge@Vik)wvPz_aZ~2tHqaFeKGL z$83mFlI9L~jUd<<rmK3|Jk}Eic$RqQ&NY6Mj6Tl!7~#$Sed=BvOpC(Bsi*CdF&cBi zRfovb^oarW=p<|*D$={I=440^eqWov-WXn$5tjB39P%87?_CPKA?|Y}l$A>kHy5}G zsxq$ykfM=0TV3rqLLe}AXJ!!=$$^mu8*@Vpl&!9v2R#H1YcV6yn^KYzbco}q#97;~ zk(*uz&d#d|pCF<r^MbeRIUF$bdRg3uY*>=<MkO;5RctZ$7=dXDJ_Mba=h%e(XLM=~ zkOf_UzN>uI$7z#{B*RRJw6_>X4?A}xulf^i!>PrQ8&zZo(_uSZ4s(4Zq2z(f_e4rJ z!2QcksCV>dh1(%#$n~tBKMI!N5#)kGB8KGIIi&ortX=p;1}mVRMa*G7j(RJCwYg!! zp$h9fl<jROoFJe0ih5E~uLG51(R9-`d1V}^0<EbQ>D*wTTEua%lV~Avh;H38t&Ile zq?)hMH<0Te?|ECQUsLRDD9O?AubDebv0|*=@4I~1bkp-VOPO*l+Mj@D%c7No*V|KE z@|__ybzJu%?4oH^)K~^}YMI%_QOoaqs>fO00RE?!oJZ`GZ$hy%vFyyWcHA(hueoht zX&Et8q2PGqh|OH452IFAom_9ILg{&Q*z6*F_osb-hm1aKp)6gBf6p<8b%@f)PReNT zJ-GF`ThncL18a&@()D9@XuFJT`CQ0+3~ba^cHE5k^$Md%6szxB(cZO?C?PT@e3Mtu z_$u|`k9Nm0Jq1&b6@|oBb9O?3EGfk7ZT++H_ieY`y{rpx;l1nwI!YSNIjc=c3fJ+U zp4D$8j;pd0>=7*GpuY&|w6A8R0Tbmyip8JGU%#q{>iAl-`iOOr8im5|l3-(9KZxlC z(!SMs6XxYunuHJYR7~%v!xZ<V1c@r;`|f2pzVAZQfIe?yGivvvVrJ*91g<>wJTana z@{X;MFLc^%|9e=Tx_nA#dsGr_BNN{%ayMj~rI>Xi)TklHH9Vx3K?K<_{YZ1vupV!n z{_j~~QrMTi(_2$F&#tf+=>}$^o1GYc!!OB4);9;rvgo0IIY_S4aL#qYr_GFEkw*8| z$K1?F9#S593)R5%{b^{tnEmS)YwD`S^!vN$R@3T&?Cr{M`wd%eGkt`kmJ~|Pb%O_N zF%XgS^sbqKt+LcK1GDk^zmWqU{#4x|XwoC(*QHnsbBfz<4B#A1&Niu5W}SbM)jHUg zy#AbYk`?NkJk8b8F!wOYx@WF~En!m5<1@F&{k_zaGmCztVH#4usr+b=UyAj?)#p{? zcoVUfr3NZ28vTYFwQ@aqJPN-Rd2=LSX65zHy5|0mFw>f2r&;wQygT=QdC#U2QjLVD zLng~t8~$Bs%TdoT{y%^SPrNg{x_o7}Ew16G2JvGib*Czc73ntlcS=tCF4eqLBu8K0 zRM2Wd>4_c4hG&HDgeC)zVJWmi3R1#%$&h**y06E;!b><gG3bCSvacF%udQ+^@ks0e zZFa(u5ZnIw<At4b%m(XAQq+JY>a9s|!qH?@hm~0@-1Y)dG=hnYHs2L&M6na9aj#L> zgi-vb)4~zii5E)lgo8`sV~3iR&r;ltC&4m|H9`SPq9<K<gccT9XMPwQV{+xgZJUC3 zLIEt7q>u#wZ+9g+7#f0zVbPkN?N6=C2fLD_d^K&f2x*BS^XFKXeuen4h9|aUl49fp zf*u5)r;FP_@CO=pPfXs#eRyY*CT3g_5H2}>C#5rIVvAVYE+w%73z$KR+Q_v#T;_gb zM34<<-mSmh&~XZvoVL<gr_d}L8Vn%J=&`hJ+Qh)h>Xmw_N&8;k#R9reSaJWmvEz&B z$uvIAvGnaAnH&Cb7n8kquJ;amyUB$z4Dw2YMfhqhb{#L`w!mJyZ}%D~+6HoSS!g2m z(`ljn*l&>VRcFW2Qk+=M^Ly-8{=g^Pk_|cHR|>7Qve|lM{Vt}q=lB_m%zw!BX-E?| zzyJ!!yQwrqMY-s(>91w-w7dT}u{f}ETQBMwCH^*q?=Ij2Cd^0IP>TQIMf!g7d26v> zZe;Ja+-IC*6>aIru1N2dN^w9IDimHa{%CD$Hk$VU-MEc^S?+(w!S;Ck(Sva(sKt4p z7bu)N0BTVd6_CrG2ZXqd*@?HXc~f`9@7G4=If(z8EWK;TOPsx>?3I{Ih9}2-1N|W! zCU2irHQ%i0s-qRFX}t8NwDWdzoXhxN?~6+K$^o2f!%g}tT}o_{Z|mUSnnY(Ow+^Cw zkVLzInewXu;zgC(tq`rf2t6eIw%iP|6|uI?l9L5r2ivXqU~IqxN-Q)x+?*nlfSFjB zAV(PWp26pb1`m`!4PIL>;y{|{I)3dD<_Rzly($E671|o>(f#Z%5Q~Tq&lUxxuj_$k zi?XZl2#qW*ca?vBt>bOcJt0jE`r;jLdfq+x2Pl6&uO`hdo>IT~L~G!kjGDMMc^*N6 zx+cWl!>>`x)^ajY;p4p1>DkFUym#f5fxe7wYfH5Mb)ZA(`_y51_trw9nno}E2x9d0 z0!hsxU+7?*gnO;y5vfAUCSdw@gOA4wS=i3SouIem0TnJzMK6Du4%t4vn|A;cmYjH} zti{XPv1Z5MFG_$%r(+6h$T4^A-^-uA$Bbs@b_Q+EzjLH-HMP{5TjE0g_;)7G=Y8Lo z2bx5-n&-wRN-;qRwB!o5xH9;42&{s)Is?J&2^(xrua&eS77MHSV$!`HV|<*v>o(R2 zR=B}6(35lujeepNiL0(~wz_)D=FHd|7nF>*pAJWT%}tJz7fdZbl*~idT>5)eMNB^i zrjHo?uKh>i%+TC=@cGP*)QMRBdqqbl9qU2JSwU;Tzc&n%Sz9CW8ee4P^n2EN1)#N? zO)-6kb^r+PuF%x8)|t)RxfXq}=LitcPdZjK`Sdg=W~V^6HLwzUZ_&X}mx0YeJ+5`h zG>~JfKMGpq)88cpf_tRs4TIzeQcga=3x|~KRx*;zy!whOu!P%LC`uo3%cD*utqdaF zM!?{XCNR_P;z0u9ceof4#lJhn%rDq}%N_hyBycSAwtgDRiDA!gDZBX7Zj%3O9{E#~ zLcdHlINhrkASrakcLh|G9-fxxlpu0u99LB3SyKRb6uG>($Z<l)1+#j8spx+PZBna3 zhk6@S&Hi{5LeA<kt{Sfm@SVC*iioY=+z`GiV~`S~IC;AUBRRt^>`m>vp|%xXcjAV+ zu}A^a<N@EIrXMQB(PTqjt`^H+2rKUgmOxem0?4F~TzvbHLn<4ALo@SHWd49XT}Jk| z?giW@<6U7J+kRF?7X<4H(M7+SykT5;)tymme0jpv>0;dp>B^qWJrrW_YN*fq0rieR zaExTZ_s;$%c;LDyOv}3HW2~-gx~!P3$9n_$hUkb91PGfpddF-;MC%&7B=0&F7O)<U z1${W(i=0^8U67n=C?t2hHPK(tuH=^MOzA0jAMd{b=tw;r6PcMeuPQoGoE3ZAk3#JF zYZWxT1z%kv&sJwA$I&ehI*I?PJ^EB7K_OsxNW`J!doL=LCd&y8g;ZR1l!k&^6`Nba zH4|hXtGg=dxA>b%#hrMmi{FK9?@p%l^_*XGOt|3V)`ltPAkK|98ROl5o<m?(;q9VJ zi!fh-)v!qga=_X^l2x2HRdN9k#k_=1!$TxSUw;F1tk34ANr^FMZ@f2>L_=jOfeP0H zV&;Jk@{$GHMD6cDPrz)?cL04J_wEf*eIh<Y?ys!h-=9dfx_4dcdEzZKRV}TC0MaJc zKOu26<ciKTL}4pp{@!PNhuJB+m%}bj`Lc1Rj@L%Pe@Wv%WeUA!!sErA&|7EsEke4x zu|jA-3v;|%$f76nptv*BNHbZ`o3>{1i^gzjIVgBOPU5Vc9OUKo=#b-_7)1@rC5HE^ zWa_PXorztDR_SgX`%(~3GnqT$BTOFS5-;wKZVoJnCM!{9h--evw5#G?Q;Lq$LHCjF zVrV|OKHwrHt#xt>mX?Uxt!;ebV+cPD-4F1YeMZZl^fD8`-hXC%Fs7GhN05(M>%CTl z>nxwY@@zQpy+mOzQPmjPy>QRxg$|?Z&GUpK+cu?(1L3;b;(_EpRWq|}J)^-5KdW<? z1N{)`=LCVZ_LpDdT;1jmsJZT~pc9gvj%u3JAB=CuMh(s8r1p+pEwBWR<utAk!4={S z^L_2*6l(Q@wy;_|;HP$$8_h~91)H#h>Usr3r2dbBC9%78aGde6xc6dU)_mUur(1Pf zon&61cx>uR-c=7ziO$sv=`Syy-^v<fmkC~S4x^s!-z)X3q&~_nZ*F&!9awff(9Ii+ zJH#QF5PFXi?-gBtGuE_Fr>2T^c&;^*DR~F%+p@hGk)ndl=x%tlSl+0Ov`Zepsszt! zTV1Ii>Hl=xl*qK_bU5!<^j9|xw$2{*u9=4@e>M84xNA06kF+Gn+vpTwsri^CX8uvN zP@WAL37fx+0bHXPKfaz>Lj|_#+ts?7pYZu=Q0ALj*Tw;O`%a@(LLC!^@r)2FanalC zl~g;OJ~!BVJI^k&=EByfp}y5buICA`LSEX(`w={$!*Dr8)dcFv!kf9Y99T}d#@MoG z@%|oq+r)#c71!0lH^U10&8x847|in7fcT?PM&zg;3^({SwDm<tR+L+JSi{|jnhYua zaz2Ltr5v(XWU8#)Wa8(BYuxf<0oVLAbg$tFVD?J)#nDViOy2!(z02+I^(jKz<&Rsf zlr$FIE{3KbTRorCKnfgJD0C3rNh@;wk$p<1-`Vf0x>}Fx`K(}P_5JkwQQu4Q0^=c< zebib)Oja|7%kV$%!~LC&(O|~tC1~CAn}5+qGQ+y->~BTHH%jd#Pt9{8?%!_vD-!w= z3UfQ4HPzoiVR=5F1VOVP@}|Z+J!S}7U{CX~k>@cD%S0tv&$elDu^T~(L#CfT+^0_% z<R!iN%LdsxyYjV<9m>3#`uC={Wa+|N!71Gu5AL+#do`Iq)R2b@AU+Y!#v&c0GpB<( z%Q|~%w>FVw4gN!8U!$Oct(9?FODk|>Ie3J9GvAH@D9&O`rvTy7y-;)(ta}PkGFC9r z%S$~rDfFa>W2?ItcF%xM$}2G5kh50)H1LaeBBqNOX5;eB4qAl2ay5cS-)-jpdX0@V zjf$PckecbgpYFN~vMLLXa`yPh26a&EuF}oe*ybVs2aJUt6VLfUau9o^Xk(i~7+vrK z_|H8quPKVuJ(;A14nbDbH7;$AAK}Oh$$tQfRAxRyvLIr;uj!D`c@z=Dc)1ABFH|ie zy>WNz!A!cKf$L8nA22wq&u@^Z+_)WC^u?o2Is6VZxO-A}x$=`nvPMvZeidr{O4+@O zL}blG>`Y(HfQDxH<w#clnScR%%;?6VPRmSKmF%!|vBA4aODAIr|KpDWA&8p?@FSo0 ziv>URv7azI8^g|g&`wFcncgW2pkUoX=9x77_KsNWt?@T+??`M2B_K9xNI+2}E~@U3 zbo2~;YO{1iOJZ^XDm|0qhrS@?HxXjlsFL=Ns`>f~MFuhRAH6j*^_!vr(rzoy8{UMD z*$JAB6Oqk^$ImCn=**tcoSm!Rd#D^xVEoIC>2)V0rcfFhHhc|t<Rq=P{}BYumA#JJ zbyUKpj*4_LH?2Q>vwdo!wFzHsVy%nn=Ptwzt2$g1m&PWGnv@Gai`7MYx|;G|X$u9C zZmX#pk6l>3i_f}5!E@q^cUS=%=&wI#yRe0Ns#o=40C@R1n(5!`@wNYSdZWtL-mqn3 z6)O$F&4bJhf8xbr3oh<_CS?_;0^OO@!&U=br7+)a-iPN+>~S<eWv;(1S5Ln5=f1V_ zZ%OM<+6uIEc6z?Y9I|+)=ZS9ChtD5RXlf>I(V*&Umr3T`n4V;}by5=T<fDy{{1J08 z-b7t-aEf^f?<R@Fy;|$IcNM)}Vc!N9FWS3$9N4rcy|3El8?U~W0y`=_E|$y8taZ(l zE;<)p)_sn}AvNyz`c<o3mS=p(ddd~Iq%{LL04~cibal|RA~eL9k1+79cVsVg4xeq0 z(7=O&ES`QeR6mTruD+9Ez3p&N62qK_s~;Zg|L$|Y|2m^p;CB<0Ogy8SlRTskJv#Jm zx&5J(#F$X1@hQwyJ<eY{Vo8JLYS#8!=3f~QCEYbo@G1q%DEbPP!^p1!-kURX$7c=y z7%yveNg)?!YHF(OV^zjDaBJo|%@-3dAeVcM%g}bOo@oHse`T=!UTsC!ot-5WdbG#k zG+CN<LjCk%^S{yy;qWY>MW5i>NO(`Cjp!NdXi*X8^WE<L(t@3eVw&U(00!#}CTgQZ z8-CCy;I09g#WMPMtTxM9cuYaxEeX^b0c|R2eto$)E8nF#OQS`wo7Q=3Mfo?a;kYA1 zBb53pmzktgdp7-uLgOUh+aRJZ)|QJV+`Y$+bK$NtIi!L0^1MrdH?*z=fG-Z&k%t*a z@SMP55tSoZMb~k8O*$yclo=FuGcMGGtlb6ikt1dQTzPDO^3mSOXNGkeq#YA%NI*N+ zeIA?k$NI37VnzdVD4~YSTWbZ5&8>!HnPGS2t${@k4fEzmu$z*DlO_1ndwKWZZnm48 zqJzgtD#D=fj+`S$jbft-Mg+fGa2xzvS&pSP?wr%or~)0^_6t70FU4|~tJn|4H`bVR zcC4jOh+mFMnH8Ie@N+)fAih8;m`u8$2KqNXQ~@X<$;0pgF<E4OIF)6Vc}~yG+W22{ zM6reDxQ*{NNp=sJ_j-M`>gCJJ4(C=WXOah^;5*h0wk>%DOUn}oPHzmR=3bavm7zuE zuaS|U!t0EW)fMAG1k5;w-?h@A8QT~By>-~0V9Vut@6ugfoZ{pVz9M5-ExMqOzH*&W zvmvn>D<}R#DktT<ZE<gu#?^h_k1f7$cYhr3QaZGFyLMO<uTjksq_;_9+FsUsDcDJl z<|eApQR3MmWo6EThe+V)Wpl<{HtJIz>T${QB=(5iUv8b;lT}sDYIDRPP<8SV)OH@+ zHngj{K6Mv@tgt~4;$3rPmH$p`la@%tk|W-NFP-d~iQHLM$|@q)^FL$3Q*UQTlJF^j zTy_LroK59jdJ1Bzzm`9_(^mA}D}alba07%&t&VJo9)>Jb%w|DgcY3fhHlJ7Lmc2Ic z+Z>r)7Sd{}HP!rU&9_-v_|Un$B--~mcopE8enY1QNh-$~#1$(}>Km8easwpk<q7vT zZ%ZSr!J3f>fm!*2&3LH=ikTjJUo=I9@;<A~o+oP&k-X`$mbi^|hZ5dv#7<kLl7~}V zU1)0}`{I1ud^eJaXG`)IigC_aGdZ5P*3&D1EZlf^3K|?=j%s2R<gBlc_Ma!$Ct_;0 zA06(m@L_DfZLdCOQG?jsD2Nw6NHbXuIraArX)1Mv;D@OPyyjo~312Hb+O}7#x)WEh zKK=5D0c0O{S-Sa+@E^=nL$i13$DSd~*M>is`zt-p$ygt6;`;k@`AmDAKDQDuv>c)e z7|KM+liS^xUBAt9-VtTFK9<|qVGYgAmI*b|N0MNQu(H|I<_3=k)SY@S!A>`O_?>g} zkAJ3kGL`=03e+eAp90b-L|lmIct@(c%Ev;!(2fBz^BfS<H+O*3<&$UD8GhzXTz%4c z)h5E%a}+-v#R+s9#hL0fH9t}&lk7asZ^@*V&9Tm<mFz%wlPJZ7WGX`PBqb>IN9pF& zhR&5gXmc*9Ai_OwWb>L>mFr-*ZmmEdVgI%mHPM1U^8ISZMzU{n9_XXNbg{jIZdO{u zS7NV--x$&+vZ5!n{muG=Z_oJgWK`k=t?NUm2XwK@AWJ0Q&zz4(l!=Waqv$O7w;zV} zgEfq@4P$64XM81Ds<ZP4PmS}?W&7KV>5L&&sL;2dW5ST1gEql4bv-dDyeGcbTyp5= za|LV!N%&8r5$U`ng49mJ=;jY!H?s}%iEj>1xK#`^v~e-sJa{u(ak$xVr|O7AAfi%{ zzYs$bQGdc8w~xKONdL9D+AY`(i-Z#dESJDFVdg}EW6D2}$)&H(Em*mD`e?fNzRHM= z=b4iMxovG*Pag5mPsO=4#MoGeG2+6b!(H4{_yfB&TGPJ46I;cKC9kWZ!G@J|abH$e z+bILFx>2aP`Wh{Z(?T+^G4nLrovOk(nvt3mBL2kha?`u-HXd7S4Ep>`&C_i=f8$hq z%ks+r{)`#=Gkf<E*HfO49SlvPZIh#tcsIFx)~mFns$tX&hHpGu;ltl<vr&X?>JU#} zhUFqgPi06;Rgu78XWf4|Z~L}~x{!{+6OW9EqA)MU_M2hR{d}!h){WS8bb+1}=RDEx z07MI}p_cYYu+0%@v?<b;h>E68iy0FzUq%OYGiMOz8uwVsb9`;i8At)FHxsGy-)=De zIlg6Uj8>|!w6%h4Z_?>=gAVH+LZt84R$U~E_MP7{5TS(>AaG5~0DUGoT>ftB?oMnB zf<D#DkcJLEm<2zTC+LFmdB+O)-w)_%>|tfB-4md09k4IRYsIkobik{Thpt>YIq691 zAU3=kE?~PyQ-XRnHJ-A!Q!Xp!H`*H!Ub)a>`s7&;x?Yf9YHkKOpGCK-t#ekpn>-(V z@AVKmOz!Vke^7XRu4bULOa+a=++q8V{}XcSDZ(LUXjU5=ZtsEqWNeiEloUGCep$a| z6&66v=Csm!J=i|)hD6EyOHKk|vn<7(1-~g&GH~$ImV1i*%8)lLR)q44uFr9^)7Q&K zH*LAC-@lj{F9^1MUHO`V{-Jrfcm8&*Kdalb$44$$<dh4~p$^*Hp_SxLvQ$AmM)((V zPANI|(lbN|IydEqMp_vPJ8GsIasAGq`HSOX_wOE2x|NuIQi3X%bF-5Nl2t-q-p+si z)VVNk+=Kq2yT7M<s4D2xC6Tqi6T2$vWn{M{CW3$t%(2)OhnDXF(3;7l#QCBpqLro{ zU;3t@VP|h8l_0Vd!*AIKvp#k`%_VE&4b0}o^9lbhW%D_luD{zr4qwFiRRb`I%kVtu zS$2L<yqX2Gn^w1oIf*V$4s7C)07XFzSu}^u+mQoD;44j)<@obV*EfqvHRT<%Z~ee7 z8`Jv-l7W>$Dc<Vfca@dd+f(7<FKovH${uk+8!|Hbj-^E5OluJ3rtU(Ow(j;UW-uzc z-5=n6DpC?z?oq29R;xIjdqWC7zil&}+w8T)(cA8?rmJ^+KlS&@pSA&Ec|Ny?VGdj{ zIzf`J4a)X>?k&SWFkO;kMvo2DQl%uQE^8SzRNEX+jlKA&C~L7YPdAeg=2KH+(F18I zvIZ+53CH;Xp*>1>ay9Ar@FY-{!T7u=0TMjw1bJ3xY*FmJ(QhdR#O60Q(w0Ej@1qf` z1^IgTwV466qLJ8K`W!Gt%CKr9j~mr|{Pi14I^BIG@$y1X=KU$J3msTol2UebCvfeK z|JY^OrPTsuG)%{pM)Se+J@1lAO4=oTTPo+OJ|3@KtgfRQ9g!6~MQc<Ff2q8I*X~F< z5>~eNfpO8NpV{sAoTPlnGB{SWj6{pjtNGD*0z;i>Ii_SaC<>y4on<MXW{H&*HJG4l z2{4~r%Gk~vBZ*K^J8(B6FM(EF+wQAuQE}z4{C5a%WilZ@o|}t`m^@}YN_3c&xIsBP zSp8Oq=%{Y5M#aMv^q&-tCaYnEquw7Sbf(b(%g_V$<Izi4I-XpA=XNlMdww5fIE@W& ze}X#Y_riWco9Hc!^?4yDeI-j;`mu_KHtoE)#+9~Wm)kPbmZRKI=FEAcr8iwbe&UhK zSt_!=TNEcnHCC+x!zRv)z~|*Y^~>;(!r)U*R)0yEhw6g5=TIS9$iSIs35ndk@EyPi z9i(fhFbcG+4`XMrV$~MGIUtLQ@Rqxnx@^^qzLTazOI^jP+bchlLc@*G&%Qb^!YapL z<6kDm`i;-p`p>Hhao6X74w}RZyi`qov1_dTf!A7bXGK+(5))&#>6YlRx_;k3GPSLt zgh`XK<Ar@9<TlJi!S=Pgdttdc%C~ar_>1y_uR?=ZA%e1QGa=j~%=y9~`-2aoW8NT` z<_tOgMiJP!vI0Q$@4w;Mf8T@>`s&s~76gM>wlhYbL|q12qkeOY8@k&HcEiUp=DTCr zBc1<B40uY!Twyk(|LH$+U$%pab6qGvS-ulWy+3OT+#qbRPg94yIIjH9B$)i99pjHT zX)sfF!glarUrjg7@Wmf$pe~3sUCn|3vi!!dS{e@ak>_vL@YBcdw+<H|?V_Q8YBi&g zAbyk_8%)}FuioeO`$idbXtHn7z{ClbF4i7fVIX@wnEL7~^wxIe@?uCTN6aRe4ki<0 zph);BJlEl$aCvqL9zdNtaXeR63*b_g>g9QL$|Ug~jDdq4ChJzJ+xwH4^+|h5lA4mO zfl=Y@s&lc6SNF{f+x11w;Zj5V{*>4Ww{w;@Kf5IbaTo~$WC`b1lAJs}_?5XPC{p>7 z+_g7S${kzN6~zP1i5W%;np`<4g>bKk*4Zp;rnt7}*0g@s-k61g=W>?f+E?mj6d$7c z_p=?zu`$RDq&TO9;9g7HZ|P6*5GthBhDv`@?8&2T1inEy=-Q@ELHmG~Bc=$lAgiT9 zxI+2DsaY%I#a}~nc2Q$<xG-L6>g+VLu5&Ccdu+}`wUm1{6ZJr)KA9fhHZwGYZb?3Z zwnbTk7B^OCILJi>m|OF%o!X*L^w^yg+#_RQiXJ>B>tlIG;>1NDOC}cOMq7=HJJF^| zdC*KLOe;Q~F>qfF{6PI5BWRFuXW%wtV-w%uvay6U9_Yu%ddkfMCbj|fr*fwGOV-+C ze0=jxtf6%>ArgpK+0WlWIkD_QdYq6mO~d&F43i;G4RiC!$(*U6L<DtDY&`e*YE`^Y z*s-a<>!h`s!W&7VMA>fl77_zwghPDjDA&}+x_UJz?ryO7`|tA8!b#RWH{5g!tBSH* z7^duYoU=JQ?I}T?W%;oD+5FJ_n5#*ZL8*_N$#DIER}D<uS7{$f=9pI8{G5nPXFrhI zljJxGwtv=rxJ6YXvc5AT%cJf3F13cIg~58t@@eVa>%I4=IEI}u+g(BD?jBdJS=!8r z9?D^=K0VuvLQG65`pE0aWGxhv!`;`b1V%r3>DTc9xzy47tzdM=%_NJN)~+2tOT4yH znZ!ogb4M39zu3nuP^IbjmYN}HQ{pK(8!d_+HAd&p^`3FdpYV~j9@vx)n=IXPAsZNR z@iP*sCQ2bvkk56?lS1BR1@CP6z8Iyx)G9usTHE&vbz?_w2qG;}cUkMpmy+8Who8_( zo!264YY#u6LHO_8_6`k2vKe)&hF<D&D)@aBK+bISCb*^7$F^fQ6?uG6cQCDfuHszp zVK;b&9OcswqHMG$0dapgPQWmLA1ZJ@;LK$-!sgjJu2dEMDb$GaXHaJk;JVQ7w*naM ztuSG{dcdw&%GUBfFPliw{jkq#!&>cwGD3WqT?3fbN!7n%BqdWLX?s2p@B9JeklR<D z58}Greu$mHYEO>?<mEoaB@NWP?_uHZII5S7&nA6po>uZiu#3B^*?2w+87B!OD^;qX zo@;^t)h&U`J>fk)cPxZrC?_l)_W2%}96piCBn4-hxuX?KqpZ+F`yUc69sExq9b3gr zi&PP*VlF-m8}k<1vjw#0@7ZItGJ?QFeWp*7)E1>S0d3EdqqfH%m>>tfx^-n0%<vKD z0N9CLz-Is%?}zt(XR*IM!eN$n#KF)O=0VM?&Wd^}H#geNgQE}c@xSsrH7lRc^)B6Z z%+F=e5!v|>uzmF=CHFk|{Cnfd0oDkR=Jog;TTt7BU3m`1^>1PLBp?miv{l`{VlpRT z&L6Dm?~&Cn&C!S1qIWks146msZbh`gfAgT3(^l;$wCsV0-v0@qAB<h$6_ou(XQ?*( zRXNR}C!F_v`24>?UIpM%|DPc5?<@cB$N!Br|MzbEcQO3mjQf8V!+#gU|L==Iy+j~Z Y#5x*y>S=)4?+3-TD|S|u7G9742QxT=#{d8T diff --git a/website/static/img/undraw_docusaurus_mountain.svg b/website/static/img/undraw_docusaurus_mountain.svg deleted file mode 100644 index af961c4..0000000 --- a/website/static/img/undraw_docusaurus_mountain.svg +++ /dev/null @@ -1,171 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962"> - <title>Easy to Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/static/img/undraw_docusaurus_react.svg b/website/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index 94b5cf0..0000000 --- a/website/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,170 +0,0 @@ - - Powered by React - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/static/img/undraw_docusaurus_tree.svg b/website/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index d9161d3..0000000 --- a/website/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1,40 +0,0 @@ - - Focus on What Matters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/static/site.webmanifest b/website/static/site.webmanifest index c0f898a..20055da 100644 --- a/website/static/site.webmanifest +++ b/website/static/site.webmanifest @@ -1,6 +1,6 @@ { - "name": "StackQL AWS Provider", - "short_name": "StackQL AWS", + "name": "StackQL NVIDIA NGC Provider", + "short_name": "StackQL nvidia", "icons": [ { "src": "/favicon-32x32.png", "sizes": "32x32", "type": "image/png" }, { "src": "/favicon-16x16.png", "sizes": "16x16", "type": "image/png" }